Re: [PATCH] staging: r8188eu: Remove _enter/_exit_critical_mutex()

From: Fabio M. De Francesco
Date: Thu Aug 19 2021 - 03:07:28 EST


On Thursday, August 19, 2021 8:30:21 AM CEST Greg Kroah-Hartman wrote:
> On Thu, Aug 19, 2021 at 08:08:37AM +0200, Fabio M. De Francesco wrote:
> > Remove _enter_critical_mutex() and _exit_critical_mutex(). They are
> > unnecessary wrappers, respectively to mutex_lock_interruptible and to
> > mutex_unlock(). They also have an odd interface that takes an unused
> > second parameter "unsigned long *pirqL".
> >
> > Use directly the in-kernel API; check and manage the return value of
> > mutex_lock_interruptible().
> >
> > Signed-off-by: Fabio M. De Francesco <fmdefrancesco@xxxxxxxxx>
> > ---
> > drivers/staging/r8188eu/core/rtw_mlme_ext.c | 5 +++--
> > drivers/staging/r8188eu/hal/usb_ops_linux.c | 7 +++++--
> > drivers/staging/r8188eu/include/osdep_service.h | 13 -------------
> > drivers/staging/r8188eu/os_dep/os_intfs.c | 5 +++--
> > 4 files changed, 11 insertions(+), 19 deletions(-)
> >
> > diff --git a/drivers/staging/r8188eu/core/rtw_mlme_ext.c b/drivers/staging/r8188eu/core/rtw_mlme_ext.c
> > index f6ee72d5af09..484083468ebb 100644
> > --- a/drivers/staging/r8188eu/core/rtw_mlme_ext.c
> > +++ b/drivers/staging/r8188eu/core/rtw_mlme_ext.c
> > @@ -4358,7 +4358,8 @@ s32 dump_mgntframe_and_wait_ack(struct adapter *padapter, struct xmit_frame *pmg
> > if (padapter->bSurpriseRemoved || padapter->bDriverStopped)
> > return -1;
> >
> > - _enter_critical_mutex(&pxmitpriv->ack_tx_mutex, NULL);
> > + if (mutex_lock_interruptible(&pxmitpriv->ack_tx_mutex))
> > + return -EINTR;
>
> But the code never would return this value if the lock function returned
> an error. Why do that here now?

I read from the documentation that "[mutex_lock_interruptible()] Return: 0 if
the lock was successfully acquired or -EINTR if a signal arrived.".

After reading that, I thought that if I got -EINTR I should return it. Shouldn't I?

Now I've just checked its usage pattern in another file where we have exactly 12
times the same management of the error (the example I'm talking about is in
drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c):

"if (mutex_lock_interruptible(&instance->vchiq_mutex))
return -EINTR;".

Unless you mean that I should return the "ret" variable, which is already set to
"_FAIL", I am really confused. Please, can you further elaborate what I'm doing
wrong?

Thanks,

Fabio





>
> thanks,
>
> greg k-h
>