[PATCH] ipw2200: do not sleep in ipw_request_direct_scan
authorOlaf Kirch <okir@suse.de>
Mon, 9 Jan 2006 16:00:37 +0000 (17:00 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 16 Jan 2006 21:51:53 +0000 (16:51 -0500)
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 <okir@suse.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ipw2200.c

index 819be2b6b7df03e87036217cf26d573cef4f3b43..4c28e332ecc33c656e0b9d55372db514cd9d7798 100644 (file)
@@ -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));