Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3ba782c7 authored by Jeyaprakash Soundrapandian's avatar Jeyaprakash Soundrapandian Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: sync: Check for duplicate register first" into dev/msm-4.9-camx

parents ab4a77ab a76fd1fa
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -55,7 +55,6 @@ int cam_sync_register_callback(sync_callback cb_func,
{
	struct sync_callback_info *sync_cb;
	struct sync_callback_info *cb_info;
	struct sync_callback_info *temp_cb;
	struct sync_table_row *row = NULL;

	if (sync_obj >= CAM_SYNC_MAX_OBJS || sync_obj <= 0 || !cb_func)
@@ -72,6 +71,17 @@ int cam_sync_register_callback(sync_callback cb_func,
		return -EINVAL;
	}

	/* Don't register if callback was registered earlier */
	list_for_each_entry(cb_info, &row->callback_list, list) {
		if (cb_info->callback_func == cb_func &&
			cb_info->cb_data == userdata) {
			CAM_ERR(CAM_SYNC, "Duplicate register for sync_obj %d",
				sync_obj);
			spin_unlock_bh(&sync_dev->row_spinlocks[sync_obj]);
			return -EALREADY;
		}
	}

	sync_cb = kzalloc(sizeof(*sync_cb), GFP_ATOMIC);
	if (!sync_cb) {
		spin_unlock_bh(&sync_dev->row_spinlocks[sync_obj]);
@@ -94,16 +104,6 @@ int cam_sync_register_callback(sync_callback cb_func,
		return 0;
	}

	/* Don't register if callback was registered earlier */
	list_for_each_entry_safe(cb_info, temp_cb, &row->callback_list, list) {
		if (cb_info->callback_func == cb_func &&
			cb_info->cb_data == userdata) {
			kfree(sync_cb);
			spin_unlock_bh(&sync_dev->row_spinlocks[sync_obj]);
			return -EALREADY;
		}
	}

	sync_cb->callback_func = cb_func;
	sync_cb->cb_data = userdata;
	sync_cb->sync_obj = sync_obj;