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

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

index d0ab644be0069b5ab29ed037fa090a4279870193..ba8ff65f7ea671ed2a806aa1d9c7136fdd6536ff 100644 (file)
@@ -380,16 +380,13 @@ static ssize_t edt_ft5x06_setting_show(struct device *dev,
                        container_of(dattr, struct edt_ft5x06_attribute, dattr);
        u8 *field = (u8 *)tsdata + attr->field_offset;
        unsigned int val;
-       size_t count = 0;
-       int error = 0;
+       int error;
        u8 addr;
 
-       mutex_lock(&tsdata->mutex);
+       guard(mutex)(&tsdata->mutex);
 
-       if (tsdata->factory_mode) {
-               error = -EIO;
-               goto out;
-       }
+       if (tsdata->factory_mode)
+               return -EIO;
 
        switch (tsdata->version) {
        case EDT_M06:
@@ -407,8 +404,7 @@ static ssize_t edt_ft5x06_setting_show(struct device *dev,
                break;
 
        default:
-               error = -ENODEV;
-               goto out;
+               return -ENODEV;
        }
 
        if (addr != NO_REGISTER) {
@@ -417,7 +413,7 @@ static ssize_t edt_ft5x06_setting_show(struct device *dev,
                        dev_err(&tsdata->client->dev,
                                "Failed to fetch attribute %s, error %d\n",
                                dattr->attr.name, error);
-                       goto out;
+                       return error;
                }
        } else {
                val = *field;
@@ -430,10 +426,7 @@ static ssize_t edt_ft5x06_setting_show(struct device *dev,
                *field = val;
        }
 
-       count = sysfs_emit(buf, "%d\n", val);
-out:
-       mutex_unlock(&tsdata->mutex);
-       return error ?: count;
+       return sysfs_emit(buf, "%d\n", val);
 }
 
 static ssize_t edt_ft5x06_setting_store(struct device *dev,
@@ -449,21 +442,17 @@ static ssize_t edt_ft5x06_setting_store(struct device *dev,
        int error;
        u8 addr;
 
-       mutex_lock(&tsdata->mutex);
+       guard(mutex)(&tsdata->mutex);
 
-       if (tsdata->factory_mode) {
-               error = -EIO;
-               goto out;
-       }
+       if (tsdata->factory_mode)
+               return -EIO;
 
        error = kstrtouint(buf, 0, &val);
        if (error)
-               goto out;
+               return error;
 
-       if (val < attr->limit_low || val > attr->limit_high) {
-               error = -ERANGE;
-               goto out;
-       }
+       if (val < attr->limit_low || val > attr->limit_high)
+               return -ERANGE;
 
        switch (tsdata->version) {
        case EDT_M06:
@@ -481,8 +470,7 @@ static ssize_t edt_ft5x06_setting_store(struct device *dev,
                break;
 
        default:
-               error = -ENODEV;
-               goto out;
+               return -ENODEV;
        }
 
        if (addr != NO_REGISTER) {
@@ -491,14 +479,12 @@ static ssize_t edt_ft5x06_setting_store(struct device *dev,
                        dev_err(&tsdata->client->dev,
                                "Failed to update attribute %s, error: %d\n",
                                dattr->attr.name, error);
-                       goto out;
+                       return error;
                }
        }
        *field = val;
 
-out:
-       mutex_unlock(&tsdata->mutex);
-       return error ?: count;
+       return count;
 }
 
 /* m06, m09: range 0-31, m12: range 0-5 */
@@ -714,21 +700,17 @@ static int edt_ft5x06_debugfs_mode_get(void *data, u64 *mode)
 static int edt_ft5x06_debugfs_mode_set(void *data, u64 mode)
 {
        struct edt_ft5x06_ts_data *tsdata = data;
-       int retval = 0;
 
        if (mode > 1)
                return -ERANGE;
 
-       mutex_lock(&tsdata->mutex);
+       guard(mutex)(&tsdata->mutex);
 
-       if (mode != tsdata->factory_mode) {
-               retval = mode ? edt_ft5x06_factory_mode(tsdata) :
-                               edt_ft5x06_work_mode(tsdata);
-       }
-
-       mutex_unlock(&tsdata->mutex);
+       if (mode == tsdata->factory_mode)
+               return 0;
 
-       return retval;
+       return mode ? edt_ft5x06_factory_mode(tsdata) :
+                     edt_ft5x06_work_mode(tsdata);
 };
 
 DEFINE_SIMPLE_ATTRIBUTE(debugfs_mode_fops, edt_ft5x06_debugfs_mode_get,
@@ -750,18 +732,16 @@ static ssize_t edt_ft5x06_debugfs_raw_data_read(struct file *file,
        if (*off < 0 || *off >= tsdata->raw_bufsize)
                return 0;
 
-       mutex_lock(&tsdata->mutex);
+       guard(mutex)(&tsdata->mutex);
 
-       if (!tsdata->factory_mode || !tsdata->raw_buffer) {
-               error = -EIO;
-               goto out;
-       }
+       if (!tsdata->factory_mode || !tsdata->raw_buffer)
+               return -EIO;
 
        error = regmap_write(tsdata->regmap, 0x08, 0x01);
        if (error) {
                dev_err(&client->dev,
                        "failed to write 0x08 register, error %d\n", error);
-               goto out;
+               return error;
        }
 
        do {
@@ -771,7 +751,7 @@ static ssize_t edt_ft5x06_debugfs_raw_data_read(struct file *file,
                        dev_err(&client->dev,
                                "failed to read 0x08 register, error %d\n",
                                error);
-                       goto out;
+                       return error;
                }
 
                if (val == 1)
@@ -781,8 +761,7 @@ static ssize_t edt_ft5x06_debugfs_raw_data_read(struct file *file,
        if (retries == 0) {
                dev_err(&client->dev,
                        "timed out waiting for register to settle\n");
-               error = -ETIMEDOUT;
-               goto out;
+               return -ETIMEDOUT;
        }
 
        rdbuf = tsdata->raw_buffer;
@@ -792,21 +771,17 @@ static ssize_t edt_ft5x06_debugfs_raw_data_read(struct file *file,
                rdbuf[0] = i;  /* column index */
                error = regmap_bulk_read(tsdata->regmap, 0xf5, rdbuf, colbytes);
                if (error)
-                       goto out;
+                       return error;
 
                rdbuf += colbytes;
        }
 
        read = min_t(size_t, count, tsdata->raw_bufsize - *off);
-       if (copy_to_user(buf, tsdata->raw_buffer + *off, read)) {
-               error = -EFAULT;
-               goto out;
-       }
+       if (copy_to_user(buf, tsdata->raw_buffer + *off, read))
+               return -EFAULT;
 
        *off += read;
-out:
-       mutex_unlock(&tsdata->mutex);
-       return error ?: read;
+       return read;
 };
 
 static const struct file_operations debugfs_raw_data_fops = {