summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamera Software Integration <camswint@quicinc.com>2020-04-20 01:06:30 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2020-04-20 01:06:30 -0700
commitca43bc275dc0b8e0b1021f2053a3358e318e8012 (patch)
treee4b3eb25f476c286de909ded43217c01721b274a
parentbfdb41121d46b59d68b66fede4ce51d2fb6f4c28 (diff)
parentaf374fc4976c45a9a54b96391fd12fe994be5e50 (diff)
downloadcamera-kernel-ca43bc275dc0b8e0b1021f2053a3358e318e8012.tar.gz
Merge "msm: camera: sync: Prevent spin lock recursion" into camera-kernel.lnx.1.0
-rw-r--r--drivers/cam_sync/cam_sync_util.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/cam_sync/cam_sync_util.c b/drivers/cam_sync/cam_sync_util.c
index d7e0f41..05e59dd 100644
--- a/drivers/cam_sync/cam_sync_util.c
+++ b/drivers/cam_sync/cam_sync_util.c
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
*/
#include "cam_sync_util.h"
@@ -72,6 +72,12 @@ int cam_sync_init_group_object(struct sync_table_row *table,
* If any child state is ERROR or SUCCESS, it will not be added to list.
*/
for (i = 0; i < num_objs; i++) {
+ if (idx == sync_objs[i]) {
+ CAM_ERR(CAM_SYNC,
+ "Invalid, same as parent fence : %i", idx);
+ rc = -EINVAL;
+ goto clean_children_info;
+ }
child_row = table + sync_objs[i];
spin_lock_bh(&sync_dev->row_spinlocks[sync_objs[i]]);