INIT_DELAYED_WORK(&rtwdev->cfo_track_work, rtw89_phy_cfo_track_work);
        INIT_DELAYED_WORK(&rtwdev->forbid_ba_work, rtw89_forbid_ba_work);
        rtwdev->txq_wq = alloc_workqueue("rtw89_tx_wq", WQ_UNBOUND | WQ_HIGHPRI, 0);
+       if (!rtwdev->txq_wq)
+               return -ENOMEM;
        spin_lock_init(&rtwdev->ba_lock);
        spin_lock_init(&rtwdev->rpwm_lock);
        mutex_init(&rtwdev->mutex);
        ret = rtw89_load_firmware(rtwdev);
        if (ret) {
                rtw89_warn(rtwdev, "no firmware loaded\n");
+               destroy_workqueue(rtwdev->txq_wq);
                return ret;
        }
        rtw89_ser_init(rtwdev);