|
@@ -2777,6 +2777,13 @@ static int cam_sync_component_bind(struct device *dev,
|
|
|
if (!sync_dev)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
+ sync_dev->sync_table = vzalloc(sizeof(struct sync_table_row) * CAM_SYNC_MAX_OBJS);
|
|
|
+ if (!sync_dev->sync_table) {
|
|
|
+ CAM_ERR(CAM_SYNC, "Mem Allocation failed for sync table");
|
|
|
+ kfree(sync_dev);
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+
|
|
|
mutex_init(&sync_dev->table_lock);
|
|
|
spin_lock_init(&sync_dev->cam_sync_eventq_lock);
|
|
|
|
|
@@ -2878,6 +2885,7 @@ mcinit_fail:
|
|
|
video_unregister_device(sync_dev->vdev);
|
|
|
video_device_release(sync_dev->vdev);
|
|
|
vdev_fail:
|
|
|
+ vfree(sync_dev->sync_table);
|
|
|
mutex_destroy(&sync_dev->table_lock);
|
|
|
kfree(sync_dev);
|
|
|
return rc;
|
|
@@ -2903,6 +2911,7 @@ static void cam_sync_component_unbind(struct device *dev,
|
|
|
for (i = 0; i < CAM_SYNC_MAX_OBJS; i++)
|
|
|
spin_lock_init(&sync_dev->row_spinlocks[i]);
|
|
|
|
|
|
+ vfree(sync_dev->sync_table);
|
|
|
kfree(sync_dev);
|
|
|
sync_dev = NULL;
|
|
|
}
|