From 0110b73bfb632a1f4d3d6d2d84b28713529dbf99 Mon Sep 17 00:00:00 2001 From: Ram Nagesh Date: Tue, 13 Dec 2022 15:29:52 +0530 Subject: [PATCH] msm: synx: protect clean up with mutex lock While cleaning up synx table entry, hold the lock for that particular entry. This will make sure that any other read/write for same entry waits till cleaning is done. Also, Change log level of empty table entries from warning to debug. Change-Id: Ib092f41a12fb943ed184c031dca481a75d3446e3 Signed-off-by: Ram Nagesh --- drivers/media/platform/msm/synx/synx_debugfs.c | 4 ++-- drivers/media/platform/msm/synx/synx_util.c | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/msm/synx/synx_debugfs.c b/drivers/media/platform/msm/synx/synx_debugfs.c index 8ae284d7fad8..9a41ee5ef1f9 100644 --- a/drivers/media/platform/msm/synx/synx_debugfs.c +++ b/drivers/media/platform/msm/synx/synx_debugfs.c @@ -67,14 +67,14 @@ static ssize_t synx_table_read(struct file *file, if (columns & STATE_COLUMN) cur += scnprintf(cur, end - cur, "| Status |"); cur += scnprintf(cur, end - cur, "\n"); - for (i = 0; i < SYNX_MAX_OBJS; i++) { + for (i = 1; i < SYNX_MAX_OBJS; i++) { row = &dev->synx_table[i]; index = row->index; mutex_lock(&dev->row_locks[index]); if (!row->index) { mutex_unlock(&dev->row_locks[index]); - pr_warn("synx obj at %d invalid\n", index); + pr_debug("synx obj at %d invalid\n", index); continue; } diff --git a/drivers/media/platform/msm/synx/synx_util.c b/drivers/media/platform/msm/synx/synx_util.c index 3ecd67fff190..269b6506261c 100644 --- a/drivers/media/platform/msm/synx/synx_util.c +++ b/drivers/media/platform/msm/synx/synx_util.c @@ -252,7 +252,9 @@ int synx_deinit_object(struct synx_table_row *row) } } + mutex_lock(&synx_dev->row_locks[index]); memset(row, 0, sizeof(*row)); + mutex_unlock(&synx_dev->row_locks[index]); clear_bit(index, synx_dev->bitmap); pr_debug("destroying synx obj at %d successful\n", index);