From: Markus Elfring <elfr...@users.sourceforge.net>
Date: Sat, 4 Nov 2017 19:36:56 +0100

* Adjust jump targets so that two error messages are stored only once
  at the end of these function implementations.

* Replace 11 calls of the function "dev_err" and 11 assignments to
  the variable "rv" by goto statements.

* Replace string literals by references to two global constant variables
  in eight functions.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfr...@users.sourceforge.net>
---
 drivers/usb/class/usbtmc.c | 157 +++++++++++++++++++++------------------------
 1 file changed, 74 insertions(+), 83 deletions(-)

diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
index 6adceacaa919..d8ed132965d8 100644
--- a/drivers/usb/class/usbtmc.c
+++ b/drivers/usb/class/usbtmc.c
@@ -133,6 +133,9 @@ static const struct usbtmc_ID_rigol_quirk usbtmc_id_quirk[] 
= {
        { 0, 0 }
 };
 
+static char const bulk_msg[] = "usb_bulk_msg returned %d\n";
+static char const control_msg[] = "usb_control_msg returned %d\n";
+
 /* Forward declarations */
 static struct usb_driver usbtmc_driver;
 
@@ -196,23 +199,20 @@ static int usbtmc_ioctl_abort_bulk_in(struct 
usbtmc_device_data *data)
                             data->bTag_last_read, data->bulk_in,
                             buffer, 2, USBTMC_TIMEOUT);
 
-       if (rv < 0) {
-               dev_err(dev, "usb_control_msg returned %d\n", rv);
-               goto exit;
-       }
+       if (rv < 0)
+               goto report_control_failure;
 
        dev_dbg(dev, "INITIATE_ABORT_BULK_IN returned %x\n", buffer[0]);
 
        if (buffer[0] == USBTMC_STATUS_FAILED) {
                rv = 0;
-               goto exit;
+               goto free_buffer;
        }
 
        if (buffer[0] != USBTMC_STATUS_SUCCESS) {
                dev_err(dev, "INITIATE_ABORT_BULK_IN returned %x\n",
                        buffer[0]);
-               rv = -EPERM;
-               goto exit;
+               goto e_perm;
        }
 
        max_size = 0;
@@ -224,8 +224,7 @@ static int usbtmc_ioctl_abort_bulk_in(struct 
usbtmc_device_data *data)
 
        if (max_size == 0) {
                dev_err(dev, "Couldn't get wMaxPacketSize\n");
-               rv = -EPERM;
-               goto exit;
+               goto e_perm;
        }
 
        dev_dbg(&data->intf->dev, "wMaxPacketSize is %d\n", max_size);
@@ -243,18 +242,15 @@ static int usbtmc_ioctl_abort_bulk_in(struct 
usbtmc_device_data *data)
 
                n++;
 
-               if (rv < 0) {
-                       dev_err(dev, "usb_bulk_msg returned %d\n", rv);
-                       goto exit;
-               }
+               if (rv < 0)
+                       goto report_bulk_failure;
        } while ((actual == max_size) &&
                 (n < USBTMC_MAX_READS_TO_CLEAR_BULK_IN));
 
        if (actual == max_size) {
                dev_err(dev, "Couldn't clear device buffer within %d cycles\n",
                        USBTMC_MAX_READS_TO_CLEAR_BULK_IN);
-               rv = -EPERM;
-               goto exit;
+               goto e_perm;
        }
 
        n = 0;
@@ -266,23 +262,19 @@ static int usbtmc_ioctl_abort_bulk_in(struct 
usbtmc_device_data *data)
                             USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_ENDPOINT,
                             0, data->bulk_in, buffer, 0x08,
                             USBTMC_TIMEOUT);
-
-       if (rv < 0) {
-               dev_err(dev, "usb_control_msg returned %d\n", rv);
-               goto exit;
-       }
+       if (rv < 0)
+               goto report_control_failure;
 
        dev_dbg(dev, "INITIATE_ABORT_BULK_IN returned %x\n", buffer[0]);
 
        if (buffer[0] == USBTMC_STATUS_SUCCESS) {
                rv = 0;
-               goto exit;
+               goto free_buffer;
        }
 
        if (buffer[0] != USBTMC_STATUS_PENDING) {
                dev_err(dev, "INITIATE_ABORT_BULK_IN returned %x\n", buffer[0]);
-               rv = -EPERM;
-               goto exit;
+               goto e_perm;
        }
 
        if (buffer[1] == 1)
@@ -297,26 +289,34 @@ static int usbtmc_ioctl_abort_bulk_in(struct 
usbtmc_device_data *data)
 
                        n++;
 
-                       if (rv < 0) {
-                               dev_err(dev, "usb_bulk_msg returned %d\n", rv);
-                               goto exit;
-                       }
+                       if (rv < 0)
+                               goto report_bulk_failure;
                } while ((actual == max_size) &&
                         (n < USBTMC_MAX_READS_TO_CLEAR_BULK_IN));
 
        if (actual == max_size) {
                dev_err(dev, "Couldn't clear device buffer within %d cycles\n",
                        USBTMC_MAX_READS_TO_CLEAR_BULK_IN);
-               rv = -EPERM;
-               goto exit;
+               goto e_perm;
        }
 
        goto usbtmc_abort_bulk_in_status;
 
-exit:
+free_buffer:
        kfree(buffer);
        return rv;
 
+e_perm:
+       rv = -EPERM;
+       goto free_buffer;
+
+report_bulk_failure:
+       dev_err(dev, bulk_msg, rv);
+       goto free_buffer;
+
+report_control_failure:
+       dev_err(dev, control_msg, rv);
+       goto free_buffer;
 }
 
 static int usbtmc_ioctl_abort_bulk_out(struct usbtmc_device_data *data)
@@ -338,19 +338,15 @@ static int usbtmc_ioctl_abort_bulk_out(struct 
usbtmc_device_data *data)
                             USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_ENDPOINT,
                             data->bTag_last_write, data->bulk_out,
                             buffer, 2, USBTMC_TIMEOUT);
-
-       if (rv < 0) {
-               dev_err(dev, "usb_control_msg returned %d\n", rv);
-               goto exit;
-       }
+       if (rv < 0)
+               goto report_control_failure;
 
        dev_dbg(dev, "INITIATE_ABORT_BULK_OUT returned %x\n", buffer[0]);
 
        if (buffer[0] != USBTMC_STATUS_SUCCESS) {
                dev_err(dev, "INITIATE_ABORT_BULK_OUT returned %x\n",
                        buffer[0]);
-               rv = -EPERM;
-               goto exit;
+               goto e_perm;
        }
 
        n = 0;
@@ -363,10 +359,8 @@ static int usbtmc_ioctl_abort_bulk_out(struct 
usbtmc_device_data *data)
                             0, data->bulk_out, buffer, 0x08,
                             USBTMC_TIMEOUT);
        n++;
-       if (rv < 0) {
-               dev_err(dev, "usb_control_msg returned %d\n", rv);
-               goto exit;
-       }
+       if (rv < 0)
+               goto report_control_failure;
 
        dev_dbg(dev, "CHECK_ABORT_BULK_OUT returned %x\n", buffer[0]);
 
@@ -377,22 +371,26 @@ static int usbtmc_ioctl_abort_bulk_out(struct 
usbtmc_device_data *data)
            (n < USBTMC_MAX_READS_TO_CLEAR_BULK_IN))
                goto usbtmc_abort_bulk_out_check_status;
 
-       rv = -EPERM;
-       goto exit;
+       goto e_perm;
 
 usbtmc_abort_bulk_out_clear_halt:
        rv = usb_clear_halt(data->usb_dev,
                            usb_sndbulkpipe(data->usb_dev, data->bulk_out));
+       if (rv < 0)
+               goto report_control_failure;
 
-       if (rv < 0) {
-               dev_err(dev, "usb_control_msg returned %d\n", rv);
-               goto exit;
-       }
        rv = 0;
-
-exit:
+free_buffer:
        kfree(buffer);
        return rv;
+
+e_perm:
+       rv = -EPERM;
+       goto free_buffer;
+
+report_control_failure:
+       dev_err(dev, control_msg, rv);
+       goto free_buffer;
 }
 
 static int usbtmc488_ioctl_read_stb(struct usbtmc_device_data *data,
@@ -643,7 +641,7 @@ static ssize_t usbtmc_read(struct file *filp, char __user 
*buf,
 
                        retval = send_request_dev_dep_msg_in(data, this_part);
                        if (retval < 0) {
-                       dev_err(dev, "usb_bulk_msg returned %d\n", retval);
+                               dev_err(dev, bulk_msg, retval);
                                if (data->auto_abort)
                                        usbtmc_ioctl_abort_bulk_out(data);
                                goto exit;
@@ -890,17 +888,14 @@ static int usbtmc_ioctl_clear(struct usbtmc_device_data 
*data)
                             USBTMC_REQUEST_INITIATE_CLEAR,
                             USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
                             0, 0, buffer, 1, USBTMC_TIMEOUT);
-       if (rv < 0) {
-               dev_err(dev, "usb_control_msg returned %d\n", rv);
-               goto exit;
-       }
+       if (rv < 0)
+               goto report_control_failure;
 
        dev_dbg(dev, "INITIATE_CLEAR returned %x\n", buffer[0]);
 
        if (buffer[0] != USBTMC_STATUS_SUCCESS) {
                dev_err(dev, "INITIATE_CLEAR returned %x\n", buffer[0]);
-               rv = -EPERM;
-               goto exit;
+               goto e_perm;
        }
 
        max_size = 0;
@@ -913,8 +908,7 @@ static int usbtmc_ioctl_clear(struct usbtmc_device_data 
*data)
 
        if (max_size == 0) {
                dev_err(dev, "Couldn't get wMaxPacketSize\n");
-               rv = -EPERM;
-               goto exit;
+               goto e_perm;
        }
 
        dev_dbg(dev, "wMaxPacketSize is %d\n", max_size);
@@ -930,10 +924,8 @@ static int usbtmc_ioctl_clear(struct usbtmc_device_data 
*data)
                             USBTMC_REQUEST_CHECK_CLEAR_STATUS,
                             USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
                             0, 0, buffer, 2, USBTMC_TIMEOUT);
-       if (rv < 0) {
-               dev_err(dev, "usb_control_msg returned %d\n", rv);
-               goto exit;
-       }
+       if (rv < 0)
+               goto report_control_failure;
 
        dev_dbg(dev, "CHECK_CLEAR_STATUS returned %x\n", buffer[0]);
 
@@ -942,8 +934,7 @@ static int usbtmc_ioctl_clear(struct usbtmc_device_data 
*data)
 
        if (buffer[0] != USBTMC_STATUS_PENDING) {
                dev_err(dev, "CHECK_CLEAR_STATUS returned %x\n", buffer[0]);
-               rv = -EPERM;
-               goto exit;
+               goto e_perm;
        }
 
        if (buffer[1] == 1)
@@ -957,19 +948,15 @@ static int usbtmc_ioctl_clear(struct usbtmc_device_data 
*data)
                                          &actual, USBTMC_TIMEOUT);
                        n++;
 
-                       if (rv < 0) {
-                               dev_err(dev, "usb_control_msg returned %d\n",
-                                       rv);
-                               goto exit;
-                       }
+                       if (rv < 0)
+                               goto report_control_failure;
                } while ((actual == max_size) &&
                          (n < USBTMC_MAX_READS_TO_CLEAR_BULK_IN));
 
        if (actual == max_size) {
                dev_err(dev, "Couldn't clear device buffer within %d cycles\n",
                        USBTMC_MAX_READS_TO_CLEAR_BULK_IN);
-               rv = -EPERM;
-               goto exit;
+               goto e_perm;
        }
 
        goto usbtmc_clear_check_status;
@@ -978,15 +965,21 @@ static int usbtmc_ioctl_clear(struct usbtmc_device_data 
*data)
 
        rv = usb_clear_halt(data->usb_dev,
                            usb_sndbulkpipe(data->usb_dev, data->bulk_out));
-       if (rv < 0) {
-               dev_err(dev, "usb_control_msg returned %d\n", rv);
-               goto exit;
-       }
-       rv = 0;
+       if (rv < 0)
+               goto report_control_failure;
 
-exit:
+       rv = 0;
+free_buffer:
        kfree(buffer);
        return rv;
+
+e_perm:
+       rv = -EPERM;
+       goto free_buffer;
+
+report_control_failure:
+       dev_err(dev, control_msg, rv);
+       goto free_buffer;
 }
 
 static int usbtmc_ioctl_clear_out_halt(struct usbtmc_device_data *data)
@@ -997,8 +990,7 @@ static int usbtmc_ioctl_clear_out_halt(struct 
usbtmc_device_data *data)
                            usb_sndbulkpipe(data->usb_dev, data->bulk_out));
 
        if (rv < 0) {
-               dev_err(&data->usb_dev->dev, "usb_control_msg returned %d\n",
-                       rv);
+               dev_err(&data->usb_dev->dev, control_msg, rv);
                return rv;
        }
        return 0;
@@ -1012,8 +1004,7 @@ static int usbtmc_ioctl_clear_in_halt(struct 
usbtmc_device_data *data)
                            usb_rcvbulkpipe(data->usb_dev, data->bulk_in));
 
        if (rv < 0) {
-               dev_err(&data->usb_dev->dev, "usb_control_msg returned %d\n",
-                       rv);
+               dev_err(&data->usb_dev->dev, control_msg, rv);
                return rv;
        }
        return 0;
@@ -1034,7 +1025,7 @@ static int get_capabilities(struct usbtmc_device_data 
*data)
                             USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
                             0, 0, buffer, 0x18, USBTMC_TIMEOUT);
        if (rv < 0) {
-               dev_err(dev, "usb_control_msg returned %d\n", rv);
+               dev_err(dev, control_msg, rv);
                goto err_out;
        }
 
@@ -1174,7 +1165,7 @@ static int usbtmc_ioctl_indicator_pulse(struct 
usbtmc_device_data *data)
                             0, 0, buffer, 0x01, USBTMC_TIMEOUT);
 
        if (rv < 0) {
-               dev_err(dev, "usb_control_msg returned %d\n", rv);
+               dev_err(dev, control_msg, rv);
                goto exit;
        }
 
-- 
2.15.0

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to