actual_length != wlen is the only error path which does not generate an
error message. Adding an error message here allows to report a more
specific error and to remove the error reporting from the call sites.

Also clean up the error paths - in case of an error, the remaining
code is skipped, and ret is returned. Skip setting ret and return
immediately (no cleanup necessary).

Signed-off-by: Stefan Brüns <stefan.bru...@rwth-aachen.de>
---
 drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c 
b/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c
index 5bafeb6486be..5b32d159f968 100644
--- a/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c
+++ b/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c
@@ -37,14 +37,19 @@ static int dvb_usb_v2_generic_io(struct dvb_usb_device *d,
        ret = usb_bulk_msg(d->udev, usb_sndbulkpipe(d->udev,
                        d->props->generic_bulk_ctrl_endpoint), wbuf, wlen,
                        &actual_length, 2000);
-       if (ret < 0)
+       if (ret) {
                dev_err(&d->udev->dev, "%s: usb_bulk_msg() failed=%d\n",
                                KBUILD_MODNAME, ret);
-       else
-               ret = actual_length != wlen ? -EIO : 0;
+               return ret;
+       }
+       if (actual_length != wlen) {
+               dev_err(&d->udev->dev, "%s: usb_bulk_msg() write length=%d, 
actual=%d\n",
+                               KBUILD_MODNAME, wlen, actual_length);
+               return -EIO;
+       }
 
-       /* an answer is expected, and no error before */
-       if (!ret && rbuf && rlen) {
+       /* an answer is expected */
+       if (rbuf && rlen) {
                if (d->props->generic_bulk_ctrl_delay)
                        usleep_range(d->props->generic_bulk_ctrl_delay,
                                        d->props->generic_bulk_ctrl_delay
-- 
2.21.0

Reply via email to