diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index b0d195d1721a6b490107c864043596d0a0768d10..374b682e4d6ac19a130c676ad8deb4dcc711372e 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -8926,6 +8926,10 @@ static int ipw_request_direct_scan(struct ipw_priv *priv, char *essid,
 	struct ipw_scan_request_ext scan;
 	int err = 0, scan_type;
 
+	if (!(priv->status & STATUS_INIT) ||
+	    (priv->status & STATUS_EXIT_PENDING))
+		return 0;
+
 	down(&priv->sem);
 
 	if (priv->status & STATUS_RF_KILL_MASK) {