]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Input: exc3000 - use guard notation when acquiring mutex
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Sun, 18 Aug 2024 00:26:09 +0000 (17:26 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 25 Mar 2026 04:14:26 +0000 (21:14 -0700)
Guard notation simplifies code.

Note that callers of exc3000_vendor_data_request() always expect
response, so it was adjusted to always wait for it.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/exc3000.c

index 28da7ba55a4bbfd305fcf34e95b075a530eac33f..78c0911ba6e263ccd284143fa80b97f079f6e9fb 100644 (file)
@@ -234,7 +234,7 @@ static int exc3000_vendor_data_request(struct exc3000_data *data, u8 *request,
        int ret;
        unsigned long time_left;
 
-       mutex_lock(&data->query_lock);
+       guard(mutex)(&data->query_lock);
 
        reinit_completion(&data->wait_event);
 
@@ -243,29 +243,18 @@ static int exc3000_vendor_data_request(struct exc3000_data *data, u8 *request,
 
        ret = i2c_master_send(data->client, buf, EXC3000_LEN_VENDOR_REQUEST);
        if (ret < 0)
-               goto out_unlock;
-
-       if (response) {
-               time_left = wait_for_completion_timeout(&data->wait_event,
-                                                       timeout * HZ);
-               if (time_left == 0) {
-                       ret = -ETIMEDOUT;
-                       goto out_unlock;
-               }
-
-               if (data->buf[3] >= EXC3000_LEN_FRAME) {
-                       ret = -ENOSPC;
-                       goto out_unlock;
-               }
+               return ret;
 
-               memcpy(response, &data->buf[4], data->buf[3]);
-               ret = data->buf[3];
-       }
+       time_left = wait_for_completion_timeout(&data->wait_event,
+                                               timeout * HZ);
+       if (time_left == 0)
+               return -ETIMEDOUT;
 
-out_unlock:
-       mutex_unlock(&data->query_lock);
+       if (data->buf[3] >= EXC3000_LEN_FRAME)
+               return -ENOSPC;
 
-       return ret;
+       memcpy(response, &data->buf[4], data->buf[3]);
+       return data->buf[3];
 }
 
 static ssize_t fw_version_show(struct device *dev,