Jelajahi Sumber

msm: camera: sync: Handle dangling pointers in monitor dump

This change appropriately handles dangling pointer generated
by sync/dma/synx when closing the drivers.

CRs-Fixed: 3350863
Change-Id: Id5353814f4908f17706cebc04b3f02ccc1488813
Signed-off-by: Haochen Yang <[email protected]>
Haochen Yang 2 tahun lalu
induk
melakukan
28439b686e

+ 4 - 1
drivers/cam_sync/cam_sync.c

@@ -2488,10 +2488,13 @@ static int cam_sync_close(struct file *filep)
 		}
 
 		if (sync_dev->mon_data) {
-			for (i = 0; i < CAM_SYNC_MONITOR_TABLE_SIZE; i++)
+			for (i = 0; i < CAM_SYNC_MONITOR_TABLE_SIZE; i++) {
 				kfree(sync_dev->mon_data[i]);
+				sync_dev->mon_data[i] = NULL;
+			}
 		}
 		kfree(sync_dev->mon_data);
+		sync_dev->mon_data = NULL;
 	}
 
 	/* Clean dma fence table */

+ 4 - 1
drivers/cam_sync/cam_sync_dma_fence.c

@@ -798,10 +798,13 @@ void cam_dma_fence_close(void)
 	}
 
 	if (g_cam_dma_fence_dev->monitor_data) {
-		for (i = 0; i < CAM_DMA_FENCE_TABLE_SZ; i++)
+		for (i = 0; i < CAM_DMA_FENCE_TABLE_SZ; i++) {
 			kfree(g_cam_dma_fence_dev->monitor_data[i]);
+			g_cam_dma_fence_dev->monitor_data[i] = NULL;
+		}
 	}
 	kfree(g_cam_dma_fence_dev->monitor_data);
+	g_cam_dma_fence_dev->monitor_data = NULL;
 
 	mutex_unlock(&g_cam_dma_fence_dev->dev_lock);
 	CAM_DBG(CAM_DMA_FENCE, "Close on Camera DMA fence driver");

+ 4 - 1
drivers/cam_sync/cam_sync_synx.c

@@ -810,10 +810,13 @@ void cam_synx_obj_close(void)
 	}
 
 	if (g_cam_synx_obj_dev->monitor_data) {
-		for (i = 0; i < CAM_SYNX_TABLE_SZ; i++)
+		for (i = 0; i < CAM_SYNX_TABLE_SZ; i++) {
 			kfree(g_cam_synx_obj_dev->monitor_data[i]);
+			g_cam_synx_obj_dev->monitor_data[i] = NULL;
+		}
 	}
 	kfree(g_cam_synx_obj_dev->monitor_data);
+	g_cam_synx_obj_dev->monitor_data = NULL;
 
 	mutex_unlock(&g_cam_synx_obj_dev->dev_lock);
 	CAM_DBG(CAM_SYNX, "Close on Camera SYNX driver");