On Mon, Sep 13, 2021 at 08:10:01PM +0200, Fabio M. De Francesco wrote: > diff --git a/drivers/staging/r8188eu/hal/usb_ops_linux.c b/drivers/staging/r8188eu/hal/usb_ops_linux.c > index 04402bab805e..75475b0083db 100644 > --- a/drivers/staging/r8188eu/hal/usb_ops_linux.c > +++ b/drivers/staging/r8188eu/hal/usb_ops_linux.c > @@ -89,6 +89,56 @@ static int usbctrl_vendorreq(struct intf_hdl *intfhdl, u16 value, void *data, u1 > return status; > } > > +static int usb_read(struct intf_hdl *intfhdl, u16 addr, void *data, u8 size) > +{ > + int status; > + u8 *io_buf; /* pointer to I/O buffer */ > + struct adapter *adapt = intfhdl->padapter; > + struct dvobj_priv *dvobjpriv = adapter_to_dvobj(adapt); > + struct usb_device *udev = dvobjpriv->pusbdev; > + > + if (adapt->bSurpriseRemoved || adapt->pwrctrlpriv.pnp_bstop_trx) { > + status = -EPERM; > + goto exit; > + } Just return directly. if (adapt->bSurpriseRemoved || adapt->pwrctrlpriv.pnp_bstop_trx) return -EPERM; > + > + mutex_lock(&dvobjpriv->usb_vendor_req_mutex); > + > + io_buf = dvobjpriv->usb_vendor_req_buf; > + > + status = usb_control_msg_recv(udev, 0, REALTEK_USB_VENQT_CMD_REQ, > + REALTEK_USB_VENQT_READ, addr, > + REALTEK_USB_VENQT_CMD_IDX, io_buf, > + size, RTW_USB_CONTROL_MSG_TIMEOUT, > + GFP_KERNEL); > + if (!status) { > + /* Success this control transfer. */ It's always better to do error handling instead of success handling. if (status) { Remove the comment because now it's in the standard format. > + rtw_reset_continual_urb_error(dvobjpriv); > + memcpy(data, io_buf, size); > + goto mutex_unlock; > + } > + /* error cases */ > + if (status == (-ESHUTDOWN || -ENODEV || -ENOENT)) { if (status == -ESHUTDOWN || status == -ENODEV || status == -ENOENT) { > + /* > + * device or controller has been disabled due to > + * some problem that could not be worked around, > + * device or bus doesn’t exist, endpoint does not > + * exist or is not enabled. > + */ > + adapt->bSurpriseRemoved = true; > + goto mutex_unlock; Indented wrong. > + } > + GET_HAL_DATA(adapt)->srestpriv.wifi_error_status = USB_VEN_REQ_CMD_FAIL; > + if (rtw_inc_and_chk_continual_urb_error(dvobjpriv)) { > + adapt->bSurpriseRemoved = true; > + goto mutex_unlock; > + } > +mutex_unlock: > + mutex_unlock(&dvobjpriv->usb_vendor_req_mutex); > +exit: > + return status; > +} regards, dan carpenter