ieee80211_led_exit(local);
        destroy_workqueue(local->workqueue);
  fail_workqueue:
-       if (local->wiphy_ciphers_allocated)
+       if (local->wiphy_ciphers_allocated) {
                kfree(local->hw.wiphy->cipher_suites);
+               local->wiphy_ciphers_allocated = false;
+       }
        kfree(local->int_scan_req);
        return result;
 }
        mutex_destroy(&local->iflist_mtx);
        mutex_destroy(&local->mtx);
 
-       if (local->wiphy_ciphers_allocated)
+       if (local->wiphy_ciphers_allocated) {
                kfree(local->hw.wiphy->cipher_suites);
+               local->wiphy_ciphers_allocated = false;
+       }
 
        idr_for_each(&local->ack_status_frames,
                     ieee80211_free_ack_frame, NULL);