Messages in this thread | | | Date | Tue, 14 Sep 2021 12:32:58 +0300 | From | Dan Carpenter <> | Subject | Re: [PATCH v4 17/18] staging: r8188eu: Shorten calls chain of rtw_read8/16/32() |
| |
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
| |