From: Wei Yongjun Date: Fri, 30 Sep 2016 16:38:08 +0000 (+0800) Subject: staging: rtl8188eu: fix double unlock error in rtw_resume_process() X-Git-Tag: v3.16.40~219 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=273f111f0e29eef958dd50d9fa71e87d8a8a4ffe;p=thirdparty%2Fkernel%2Fstable.git staging: rtl8188eu: fix double unlock error in rtw_resume_process() commit 23bf40424a0f641ca7ff4225add4aa592086bdd5 upstream. Fix following static checker warning: drivers/staging/rtl8188eu/os_dep/usb_intf.c:311 rtw_resume_process() error: double unlock 'mutex:&pwrpriv->mutex_lock' Fixes: eaf47b713b60 ("staging: rtl8188eu: fix missing unlock on error in rtw_resume_process()") Reported-By: Dan Carpenter Signed-off-by: Wei Yongjun Signed-off-by: Greg Kroah-Hartman [bwh: Backported to 3.16: - Adjust context - Unlock pwrctrl_priv::lock] Signed-off-by: Ben Hutchings --- diff --git a/drivers/staging/rtl8188eu/os_dep/usb_intf.c b/drivers/staging/rtl8188eu/os_dep/usb_intf.c index 36899dd15188b..d9552ba2c15d0 100644 --- a/drivers/staging/rtl8188eu/os_dep/usb_intf.c +++ b/drivers/staging/rtl8188eu/os_dep/usb_intf.c @@ -494,8 +494,10 @@ int rtw_resume_process(struct adapter *padapter) pwrpriv->bkeepfwalive = false; DBG_88E("bkeepfwalive(%x)\n", pwrpriv->bkeepfwalive); - if (pm_netdev_open(pnetdev, true) != 0) + if (pm_netdev_open(pnetdev, true) != 0) { + _exit_pwrlock(&pwrpriv->lock); goto exit; + } netif_device_attach(pnetdev); netif_carrier_on(pnetdev); @@ -511,10 +513,8 @@ int rtw_resume_process(struct adapter *padapter) ret = 0; exit: - if (pwrpriv) { + if (pwrpriv) pwrpriv->bInSuspend = false; - _exit_pwrlock(&pwrpriv->lock); - } DBG_88E("<=== %s return %d.............. in %dms\n", __func__, ret, rtw_get_passing_time_ms(start_time));