From: Olaf Kirch Date: Mon, 9 Jan 2006 16:00:37 +0000 (+0100) Subject: [PATCH] ipw2200: do not sleep in ipw_request_direct_scan X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=d834a41c966c6a20368fadb59248740935e6fbae;p=GitHub%2FLineageOS%2Fandroid_kernel_samsung_universal7580.git [PATCH] ipw2200: do not sleep in ipw_request_direct_scan Drivers should not sleep for very long inside an ioctl - so return EAGAIN and let wpa_supplicant handle the problem. Signed-off-by: Olaf Kirch Signed-off-by: John W. Linville --- diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c index 819be2b6b7d..4c28e332ecc 100644 --- a/drivers/net/wireless/ipw2200.c +++ b/drivers/net/wireless/ipw2200.c @@ -8936,14 +8936,12 @@ static int ipw_request_direct_scan(struct ipw_priv *priv, char *essid, IPW_DEBUG_HC("starting request direct scan!\n"); if (priv->status & (STATUS_SCANNING | STATUS_SCAN_ABORTING)) { - err = wait_event_interruptible(priv->wait_state, - !(priv-> - status & (STATUS_SCANNING | - STATUS_SCAN_ABORTING))); - if (err) { - IPW_DEBUG_HC("aborting direct scan"); - goto done; - } + /* We should not sleep here; otherwise we will block most + * of the system (for instance, we hold rtnl_lock when we + * get here). + */ + err = -EAGAIN; + goto done; } memset(&scan, 0, sizeof(scan));