return;
 
        mutex_lock(&priv->mutex);
-       if (test_bit(STATUS_SCANNING, &priv->status) ||
-           test_bit(STATUS_SCAN_ABORTING, &priv->status)) {
-               IWL_DEBUG_SCAN(priv, "Scan completion watchdog resetting "
-                       "adapter (%dms)\n",
-                       jiffies_to_msecs(IWL_SCAN_CHECK_WATCHDOG));
+       if (test_bit(STATUS_SCANNING, &priv->status) &&
+           !test_bit(STATUS_SCAN_ABORTING, &priv->status)) {
+               IWL_DEBUG_SCAN(priv, "Scan completion watchdog (%dms)\n",
+                              jiffies_to_msecs(IWL_SCAN_CHECK_WATCHDOG));
 
                if (!test_bit(STATUS_EXIT_PENDING, &priv->status))
                        iwl_send_scan_abort(priv);
            !test_bit(STATUS_GEO_CONFIGURED, &priv->status))
                return;
 
-       mutex_lock(&priv->mutex);
-
-       cancel_delayed_work_sync(&priv->scan_check);
-       set_bit(STATUS_SCAN_ABORTING, &priv->status);
-       iwl_send_scan_abort(priv);
+       cancel_delayed_work(&priv->scan_check);
 
+       mutex_lock(&priv->mutex);
+       if (test_bit(STATUS_SCAN_ABORTING, &priv->status))
+               iwl_send_scan_abort(priv);
        mutex_unlock(&priv->mutex);
 }
 EXPORT_SYMBOL(iwl_bg_abort_scan);