]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Input: synaptics-rmi4 - fix a locking bug in an error path
authorBart Van Assche <bvanassche@acm.org>
Mon, 23 Feb 2026 23:05:15 +0000 (15:05 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 23 Feb 2026 23:07:58 +0000 (15:07 -0800)
Lock f54->data_mutex when entering the function statement since jumping
to the 'error' label when checking report_size fails causes that mutex
to be unlocked.

This bug has been detected by the Clang thread-safety checker.

Fixes: 3a762dbd5347 ("[media] Input: synaptics-rmi4 - add support for F54 diagnostics")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://patch.msgid.link/20260223215118.2154194-16-bvanassche@acm.org
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/rmi4/rmi_f54.c

index ac4041a69fcd3acf766ac8189ea0ecccb9b7ac93..61909e1a39e248729c2f5c7e33788b0d69919c10 100644 (file)
@@ -538,6 +538,8 @@ static void rmi_f54_work(struct work_struct *work)
        int error;
        int i;
 
+       mutex_lock(&f54->data_mutex);
+
        report_size = rmi_f54_get_report_size(f54);
        if (report_size == 0) {
                dev_err(&fn->dev, "Bad report size, report type=%d\n",
@@ -546,8 +548,6 @@ static void rmi_f54_work(struct work_struct *work)
                goto error;     /* retry won't help */
        }
 
-       mutex_lock(&f54->data_mutex);
-
        /*
         * Need to check if command has completed.
         * If not try again later.