return err;
        }
        timeout = brcmf_usb_ioctl_resp_wait(devinfo);
-       clear_bit(0, &devinfo->ctl_op);
        if (!timeout) {
                brcmf_err("Txctl wait timed out\n");
+               usb_kill_urb(devinfo->ctl_urb);
                err = -EIO;
        }
+       clear_bit(0, &devinfo->ctl_op);
        return err;
 }
 
        }
        timeout = brcmf_usb_ioctl_resp_wait(devinfo);
        err = devinfo->ctl_urb_status;
-       clear_bit(0, &devinfo->ctl_op);
        if (!timeout) {
                brcmf_err("rxctl wait timed out\n");
+               usb_kill_urb(devinfo->ctl_urb);
                err = -EIO;
        }
+       clear_bit(0, &devinfo->ctl_op);
        if (!err)
                return devinfo->ctl_urb_actual_length;
        else