Kalle Valo <kvalo@xxxxxxxxxxxxxx> writes: > + rajkumar > > Bo YU <tsu.yubo@xxxxxxxxx> writes: > >> Return value form wait_for_completion_timeout should to be checked. >> >> This is detected by Coverity,#CID:1464479 (CHECKED_RETURN) >> >> FIXES: d5c65159f2895(ath11k: driver for Qualcomm IEEE 802.11ax devices) > > This should be > > Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices") > > But I can fix that. > >> --- a/drivers/net/wireless/ath/ath11k/ahb.c >> +++ b/drivers/net/wireless/ath/ath11k/ahb.c >> @@ -981,12 +981,16 @@ static int ath11k_ahb_probe(struct platform_device *pdev) >> static int ath11k_ahb_remove(struct platform_device *pdev) >> { >> struct ath11k_base *ab = platform_get_drvdata(pdev); >> - >> + int ret = 0; >> reinit_completion(&ab->driver_recovery); >> >> if (test_bit(ATH11K_FLAG_RECOVERY, &ab->dev_flags)) >> - wait_for_completion_timeout(&ab->driver_recovery, >> - ATH11K_AHB_RECOVERY_TIMEOUT); >> + if (!wait_for_completion_timeout(&ab->driver_recovery, >> + ATH11K_AHB_RECOVERY_TIMEOUT)) { >> + ath11k_warn(ab, "fail to receive recovery response >> completion.\n"); >> + ret = -ETIMEDOUT; >> + } > > This is a good find. Rajkumar, can you take a look if this is ok? > >> >> set_bit(ATH11K_FLAG_UNREGISTERING, &ab->dev_flags); >> cancel_work_sync(&ab->restart_work); >> @@ -999,7 +1003,7 @@ static int ath11k_ahb_remove(struct platform_device *pdev) >> ath11k_core_free(ab); >> platform_set_drvdata(pdev, NULL); >> >> - return 0; >> + return ret; >> } > > Especially I wonder what happens if ath11k_ahb_remove() returns an > error. Should we just print a warning and return 0 instead? I changed this patch so that we return 0 even if timeout happens, just to be on the safe side. The patch is now in the pending branch. -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches