From df582cc15abb460d6fa57c0f183488b3db673afe Mon Sep 17 00:00:00 2001 From: Gopi Botlagunta Date: Wed, 7 Jan 2026 15:37:06 +0530 Subject: [PATCH] disp: msm: dsi: Fix potential data race in ctrl isr Use atomic operations for shared variables to ensure safe concurrent access from both ISR and task context. Change-Id: I02d4bde88692d0be7027b158648a3ab8a5704b2d Signed-off-by: Gopi Botlagunta --- msm/dsi/dsi_ctrl.c | 10 +++++----- msm/dsi/dsi_ctrl.h | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/msm/dsi/dsi_ctrl.c b/msm/dsi/dsi_ctrl.c index 278e3dcbe921..5dc027912f13 100644 --- a/msm/dsi/dsi_ctrl.c +++ b/msm/dsi/dsi_ctrl.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ #include @@ -229,10 +229,10 @@ static ssize_t debugfs_line_count_read(struct file *file, dsi_ctrl->cmd_trigger_frame); len += scnprintf((buf + len), max_len - len, "Command successful at line: %04x\n", - dsi_ctrl->cmd_success_line); + atomic_read(&dsi_ctrl->cmd_success_line)); len += scnprintf((buf + len), max_len - len, "Command successful at frame: %04x\n", - dsi_ctrl->cmd_success_frame); + atomic_read(&dsi_ctrl->cmd_success_frame)); mutex_unlock(&dsi_ctrl->ctrl_lock); @@ -2891,8 +2891,8 @@ static irqreturn_t dsi_ctrl_isr(int irq, void *ptr) if (dsi_ctrl->enable_cmd_dma_stats) { u32 reg = dsi_ctrl->hw.ops.log_line_count(&dsi_ctrl->hw, dsi_ctrl->cmd_mode); - dsi_ctrl->cmd_success_line = (reg & 0xFFFF); - dsi_ctrl->cmd_success_frame = ((reg >> 16) & 0xFFFF); + atomic_set(&dsi_ctrl->cmd_success_line, (reg & 0xFFFF)); + atomic_set(&dsi_ctrl->cmd_success_frame, ((reg >> 16) & 0xFFFF)); SDE_EVT32(dsi_ctrl->cell_index, SDE_EVTLOG_FUNC_CASE1, dsi_ctrl->cmd_success_line, dsi_ctrl->cmd_success_frame); diff --git a/msm/dsi/dsi_ctrl.h b/msm/dsi/dsi_ctrl.h index a3290750520b..944debaa28a4 100644 --- a/msm/dsi/dsi_ctrl.h +++ b/msm/dsi/dsi_ctrl.h @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. * Copyright (c) 2015-2020, The Linux Foundation. All rights reserved. */ @@ -309,8 +310,8 @@ struct dsi_ctrl { bool cmd_mode; u32 cmd_trigger_line; u32 cmd_trigger_frame; - u32 cmd_success_line; - u32 cmd_success_frame; + atomic_t cmd_success_line; + atomic_t cmd_success_frame; }; /**