From: Mariusz Kozlowski In many places usb_(unlink,kill,free)_urb() are called this way: if (urb) usb_something_urb(...); which is not needed because functions like usb_unlink_urb() and usb_free_urb() are defined this way: void usb_free_urb(struct urb *urb) { if (urb) kref_put(&urb->kref, urb_destroy); } int usb_unlink_urb(struct urb *urb) { if (!urb) return -EINVAL; ... } We do not need to check for urb != NULL before we call them. Signed-off-by: Mariusz Kozlowski Cc: Greg KH Cc: Alan Stern Cc: David Brownell Signed-off-by: Andrew Morton --- Documentation/DocBook/writing_usb_driver.tmpl | 3 drivers/char/watchdog/pcwd_usb.c | 3 drivers/input/joystick/iforce/iforce-usb.c | 6 - drivers/isdn/gigaset/usb-gigaset.c | 12 +-- drivers/isdn/hisax/hfc_usb.c | 48 ++++-------- drivers/media/dvb/cinergyT2/cinergyT2.c | 3 drivers/media/dvb/ttusb-dec/ttusb_dec.c | 3 drivers/media/video/pvrusb2/pvrusb2-hdw.c | 10 +- drivers/media/video/pvrusb2/pvrusb2-io.c | 2 drivers/media/video/pwc/pwc-if.c | 3 drivers/media/video/sn9c102/sn9c102_core.c | 2 drivers/media/video/usbvideo/quickcam_messenger.c | 3 drivers/media/video/zc0301/zc0301_core.c | 2 drivers/net/irda/irda-usb.c | 6 - drivers/net/wireless/zd1201.c | 6 - drivers/usb/input/ati_remote.c | 7 - drivers/usb/input/ati_remote2.c | 3 drivers/usb/input/hid-core.c | 13 +-- drivers/usb/input/usbkbd.c | 6 - drivers/usb/misc/auerswald.c | 10 -- drivers/usb/misc/legousbtower.c | 8 -- drivers/usb/misc/phidgetkit.c | 3 drivers/usb/misc/phidgetmotorcontrol.c | 3 drivers/usb/net/catc.c | 12 +-- drivers/usb/serial/ftdi_sio.c | 6 - drivers/usb/serial/keyspan.c | 18 +--- drivers/usb/serial/mct_u232.c | 6 - drivers/usb/serial/option.c | 12 +-- drivers/usb/serial/sierra.c | 12 +-- drivers/usb/serial/usb-serial.c | 12 +-- sound/usb/usbmixer.c | 3 31 files changed, 86 insertions(+), 160 deletions(-) diff -puN Documentation/DocBook/writing_usb_driver.tmpl~usb-urb-unlink-free-clenup Documentation/DocBook/writing_usb_driver.tmpl --- a/Documentation/DocBook/writing_usb_driver.tmpl~usb-urb-unlink-free-clenup +++ a/Documentation/DocBook/writing_usb_driver.tmpl @@ -345,8 +345,7 @@ static inline void skel_delete (struct u usb_buffer_free (dev->udev, dev->bulk_out_size, dev->bulk_out_buffer, dev->write_urb->transfer_dma); - if (dev->write_urb != NULL) - usb_free_urb (dev->write_urb); + usb_free_urb (dev->write_urb); kfree (dev); } diff -puN drivers/char/watchdog/pcwd_usb.c~usb-urb-unlink-free-clenup drivers/char/watchdog/pcwd_usb.c --- a/drivers/char/watchdog/pcwd_usb.c~usb-urb-unlink-free-clenup +++ a/drivers/char/watchdog/pcwd_usb.c @@ -561,8 +561,7 @@ static struct notifier_block usb_pcwd_no */ static inline void usb_pcwd_delete (struct usb_pcwd_private *usb_pcwd) { - if (usb_pcwd->intr_urb != NULL) - usb_free_urb (usb_pcwd->intr_urb); + usb_free_urb (usb_pcwd->intr_urb); if (usb_pcwd->intr_buffer != NULL) usb_buffer_free(usb_pcwd->udev, usb_pcwd->intr_size, usb_pcwd->intr_buffer, usb_pcwd->intr_dma); diff -puN drivers/input/joystick/iforce/iforce-usb.c~usb-urb-unlink-free-clenup drivers/input/joystick/iforce/iforce-usb.c --- a/drivers/input/joystick/iforce/iforce-usb.c~usb-urb-unlink-free-clenup +++ a/drivers/input/joystick/iforce/iforce-usb.c @@ -178,9 +178,9 @@ static int iforce_usb_probe(struct usb_i fail: if (iforce) { - if (iforce->irq) usb_free_urb(iforce->irq); - if (iforce->out) usb_free_urb(iforce->out); - if (iforce->ctrl) usb_free_urb(iforce->ctrl); + usb_free_urb(iforce->irq); + usb_free_urb(iforce->out); + usb_free_urb(iforce->ctrl); kfree(iforce); } diff -puN drivers/isdn/gigaset/usb-gigaset.c~usb-urb-unlink-free-clenup drivers/isdn/gigaset/usb-gigaset.c --- a/drivers/isdn/gigaset/usb-gigaset.c~usb-urb-unlink-free-clenup +++ a/drivers/isdn/gigaset/usb-gigaset.c @@ -818,11 +818,9 @@ error: if (ucs->read_urb) usb_kill_urb(ucs->read_urb); kfree(ucs->bulk_out_buffer); - if (ucs->bulk_out_urb != NULL) - usb_free_urb(ucs->bulk_out_urb); + usb_free_urb(ucs->bulk_out_urb); kfree(cs->inbuf[0].rcvbuf); - if (ucs->read_urb != NULL) - usb_free_urb(ucs->read_urb); + usb_free_urb(ucs->read_urb); usb_set_intfdata(interface, NULL); ucs->read_urb = ucs->bulk_out_urb = NULL; cs->inbuf[0].rcvbuf = ucs->bulk_out_buffer = NULL; @@ -850,11 +848,9 @@ static void gigaset_disconnect(struct us usb_kill_urb(ucs->bulk_out_urb); /* FIXME: only if active? */ kfree(ucs->bulk_out_buffer); - if (ucs->bulk_out_urb != NULL) - usb_free_urb(ucs->bulk_out_urb); + usb_free_urb(ucs->bulk_out_urb); kfree(cs->inbuf[0].rcvbuf); - if (ucs->read_urb != NULL) - usb_free_urb(ucs->read_urb); + usb_free_urb(ucs->read_urb); ucs->read_urb = ucs->bulk_out_urb = NULL; cs->inbuf[0].rcvbuf = ucs->bulk_out_buffer = NULL; diff -puN drivers/isdn/hisax/hfc_usb.c~usb-urb-unlink-free-clenup drivers/isdn/hisax/hfc_usb.c --- a/drivers/isdn/hisax/hfc_usb.c~usb-urb-unlink-free-clenup +++ a/drivers/isdn/hisax/hfc_usb.c @@ -574,22 +574,18 @@ stop_isoc_chain(usb_fifo * fifo) int i; for (i = 0; i < 2; i++) { - if (fifo->iso[i].purb) { #ifdef CONFIG_HISAX_DEBUG - DBG(USB_DBG, - "HFC-S USB: Stopping iso chain for fifo %i.%i", - fifo->fifonum, i); + DBG(USB_DBG, + "HFC-S USB: Stopping iso chain for fifo %i.%i", + fifo->fifonum, i); #endif - usb_unlink_urb(fifo->iso[i].purb); - usb_free_urb(fifo->iso[i].purb); - fifo->iso[i].purb = NULL; - } - } - if (fifo->urb) { - usb_unlink_urb(fifo->urb); - usb_free_urb(fifo->urb); - fifo->urb = NULL; - } + usb_unlink_urb(fifo->iso[i].purb); + usb_free_urb(fifo->iso[i].purb); + fifo->iso[i].purb = NULL; + } + usb_unlink_urb(fifo->urb); + usb_free_urb(fifo->urb); + fifo->urb = NULL; fifo->active = 0; } @@ -1629,11 +1625,9 @@ hfc_usb_probe(struct usb_interface *intf #endif /* init the chip and register the driver */ if (usb_init(context)) { - if (context->ctrl_urb) { - usb_unlink_urb(context->ctrl_urb); - usb_free_urb(context->ctrl_urb); - context->ctrl_urb = NULL; - } + usb_unlink_urb(context->ctrl_urb); + usb_free_urb(context->ctrl_urb); + context->ctrl_urb = NULL; kfree(context); return (-EIO); } @@ -1685,21 +1679,17 @@ hfc_usb_disconnect(struct usb_interface i); #endif } - if (context->fifos[i].urb) { - usb_unlink_urb(context->fifos[i].urb); - usb_free_urb(context->fifos[i].urb); - context->fifos[i].urb = NULL; - } + usb_unlink_urb(context->fifos[i].urb); + usb_free_urb(context->fifos[i].urb); + context->fifos[i].urb = NULL; } context->fifos[i].active = 0; } /* wait for all URBS to terminate */ mdelay(10); - if (context->ctrl_urb) { - usb_unlink_urb(context->ctrl_urb); - usb_free_urb(context->ctrl_urb); - context->ctrl_urb = NULL; - } + usb_unlink_urb(context->ctrl_urb); + usb_free_urb(context->ctrl_urb); + context->ctrl_urb = NULL; hisax_unregister(&context->d_if); kfree(context); /* free our structure again */ } /* hfc_usb_disconnect */ diff -puN drivers/media/dvb/cinergyT2/cinergyT2.c~usb-urb-unlink-free-clenup drivers/media/dvb/cinergyT2/cinergyT2.c --- a/drivers/media/dvb/cinergyT2/cinergyT2.c~usb-urb-unlink-free-clenup +++ a/drivers/media/dvb/cinergyT2/cinergyT2.c @@ -275,8 +275,7 @@ static void cinergyt2_free_stream_urbs ( int i; for (i=0; istream_urb[i]) - usb_free_urb(cinergyt2->stream_urb[i]); + usb_free_urb(cinergyt2->stream_urb[i]); usb_buffer_free(cinergyt2->udev, STREAM_URB_COUNT*STREAM_BUF_SIZE, cinergyt2->streambuf, cinergyt2->streambuf_dmahandle); diff -puN drivers/media/dvb/ttusb-dec/ttusb_dec.c~usb-urb-unlink-free-clenup drivers/media/dvb/ttusb-dec/ttusb_dec.c --- a/drivers/media/dvb/ttusb-dec/ttusb_dec.c~usb-urb-unlink-free-clenup +++ a/drivers/media/dvb/ttusb-dec/ttusb_dec.c @@ -1135,8 +1135,7 @@ static void ttusb_dec_free_iso_urbs(stru dprintk("%s\n", __FUNCTION__); for (i = 0; i < ISO_BUF_COUNT; i++) - if (dec->iso_urb[i]) - usb_free_urb(dec->iso_urb[i]); + usb_free_urb(dec->iso_urb[i]); pci_free_consistent(NULL, ISO_FRAME_SIZE * (FRAMES_PER_ISO_BUF * diff -puN drivers/media/video/pvrusb2/pvrusb2-hdw.c~usb-urb-unlink-free-clenup drivers/media/video/pvrusb2/pvrusb2-hdw.c --- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c~usb-urb-unlink-free-clenup +++ a/drivers/media/video/pvrusb2/pvrusb2-hdw.c @@ -1953,8 +1953,8 @@ struct pvr2_hdw *pvr2_hdw_create(struct return hdw; fail: if (hdw) { - if (hdw->ctl_read_urb) usb_free_urb(hdw->ctl_read_urb); - if (hdw->ctl_write_urb) usb_free_urb(hdw->ctl_write_urb); + usb_free_urb(hdw->ctl_read_urb); + usb_free_urb(hdw->ctl_write_urb); if (hdw->ctl_read_buffer) kfree(hdw->ctl_read_buffer); if (hdw->ctl_write_buffer) kfree(hdw->ctl_write_buffer); if (hdw->controls) kfree(hdw->controls); @@ -2575,12 +2575,10 @@ static void pvr2_ctl_timeout(unsigned lo struct pvr2_hdw *hdw = (struct pvr2_hdw *)data; if (hdw->ctl_write_pend_flag || hdw->ctl_read_pend_flag) { hdw->ctl_timeout_flag = !0; - if (hdw->ctl_write_pend_flag && hdw->ctl_write_urb) { + if (hdw->ctl_write_pend_flag) usb_unlink_urb(hdw->ctl_write_urb); - } - if (hdw->ctl_read_pend_flag && hdw->ctl_read_urb) { + if (hdw->ctl_read_pend_flag) usb_unlink_urb(hdw->ctl_read_urb); - } } } diff -puN drivers/media/video/pvrusb2/pvrusb2-io.c~usb-urb-unlink-free-clenup drivers/media/video/pvrusb2/pvrusb2-io.c --- a/drivers/media/video/pvrusb2/pvrusb2-io.c~usb-urb-unlink-free-clenup +++ a/drivers/media/video/pvrusb2/pvrusb2-io.c @@ -289,7 +289,7 @@ static void pvr2_buffer_done(struct pvr2 pvr2_buffer_set_none(bp); bp->signature = 0; bp->stream = NULL; - if (bp->purb) usb_free_urb(bp->purb); + usb_free_urb(bp->purb); pvr2_trace(PVR2_TRACE_BUF_POOL,"/*---TRACE_FLOW---*/" " bufferDone %p",bp); } diff -puN drivers/media/video/pwc/pwc-if.c~usb-urb-unlink-free-clenup drivers/media/video/pwc/pwc-if.c --- a/drivers/media/video/pwc/pwc-if.c~usb-urb-unlink-free-clenup +++ a/drivers/media/video/pwc/pwc-if.c @@ -867,8 +867,7 @@ int pwc_isoc_init(struct pwc_device *pde if (ret) { /* De-allocate in reverse order */ while (i >= 0) { - if (pdev->sbuf[i].urb != NULL) - usb_free_urb(pdev->sbuf[i].urb); + usb_free_urb(pdev->sbuf[i].urb); pdev->sbuf[i].urb = NULL; i--; } diff -puN drivers/media/video/sn9c102/sn9c102_core.c~usb-urb-unlink-free-clenup drivers/media/video/sn9c102/sn9c102_core.c --- a/drivers/media/video/sn9c102/sn9c102_core.c~usb-urb-unlink-free-clenup +++ a/drivers/media/video/sn9c102/sn9c102_core.c @@ -775,7 +775,7 @@ static int sn9c102_start_transfer(struct return 0; free_urbs: - for (i = 0; (i < SN9C102_URBS) && cam->urb[i]; i++) + for (i = 0; i < SN9C102_URBS; i++) usb_free_urb(cam->urb[i]); free_buffers: diff -puN drivers/media/video/usbvideo/quickcam_messenger.c~usb-urb-unlink-free-clenup drivers/media/video/usbvideo/quickcam_messenger.c --- a/drivers/media/video/usbvideo/quickcam_messenger.c~usb-urb-unlink-free-clenup +++ a/drivers/media/video/usbvideo/quickcam_messenger.c @@ -190,8 +190,7 @@ static int qcm_alloc_int_urb(struct qcm static void qcm_free_int(struct qcm *cam) { - if (cam->button_urb) - usb_free_urb(cam->button_urb); + usb_free_urb(cam->button_urb); } #endif /* CONFIG_INPUT */ diff -puN drivers/media/video/zc0301/zc0301_core.c~usb-urb-unlink-free-clenup drivers/media/video/zc0301/zc0301_core.c --- a/drivers/media/video/zc0301/zc0301_core.c~usb-urb-unlink-free-clenup +++ a/drivers/media/video/zc0301/zc0301_core.c @@ -489,7 +489,7 @@ static int zc0301_start_transfer(struct return 0; free_urbs: - for (i = 0; (i < ZC0301_URBS) && cam->urb[i]; i++) + for (i = 0; i < ZC0301_URBS; i++) usb_free_urb(cam->urb[i]); free_buffers: diff -puN drivers/net/irda/irda-usb.c~usb-urb-unlink-free-clenup drivers/net/irda/irda-usb.c --- a/drivers/net/irda/irda-usb.c~usb-urb-unlink-free-clenup +++ a/drivers/net/irda/irda-usb.c @@ -1793,10 +1793,8 @@ err_out_3: err_out_2: usb_free_urb(self->tx_urb); err_out_1: - for (i = 0; i < self->max_rx_urb; i++) { - if (self->rx_urb[i]) - usb_free_urb(self->rx_urb[i]); - } + for (i = 0; i < self->max_rx_urb; i++) + usb_free_urb(self->rx_urb[i]); free_netdev(net); err_out: return ret; diff -puN drivers/net/wireless/zd1201.c~usb-urb-unlink-free-clenup drivers/net/wireless/zd1201.c --- a/drivers/net/wireless/zd1201.c~usb-urb-unlink-free-clenup +++ a/drivers/net/wireless/zd1201.c @@ -1828,10 +1828,8 @@ err_start: /* Leave the device in reset state */ zd1201_docmd(zd, ZD1201_CMDCODE_INIT, 0, 0, 0); err_zd: - if (zd->tx_urb) - usb_free_urb(zd->tx_urb); - if (zd->rx_urb) - usb_free_urb(zd->rx_urb); + usb_free_urb(zd->tx_urb); + usb_free_urb(zd->rx_urb); kfree(zd); return err; } diff -puN drivers/usb/input/ati_remote2.c~usb-urb-unlink-free-clenup drivers/usb/input/ati_remote2.c --- a/drivers/usb/input/ati_remote2.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/input/ati_remote2.c @@ -372,8 +372,7 @@ static void ati_remote2_urb_cleanup(stru int i; for (i = 0; i < 2; i++) { - if (ar2->urb[i]) - usb_free_urb(ar2->urb[i]); + usb_free_urb(ar2->urb[i]); if (ar2->buf[i]) usb_buffer_free(ar2->udev, 4, ar2->buf[i], ar2->buf_dma[i]); diff -puN drivers/usb/input/ati_remote.c~usb-urb-unlink-free-clenup drivers/usb/input/ati_remote.c --- a/drivers/usb/input/ati_remote.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/input/ati_remote.c @@ -630,11 +630,8 @@ static int ati_remote_alloc_buffers(stru */ static void ati_remote_free_buffers(struct ati_remote *ati_remote) { - if (ati_remote->irq_urb) - usb_free_urb(ati_remote->irq_urb); - - if (ati_remote->out_urb) - usb_free_urb(ati_remote->out_urb); + usb_free_urb(ati_remote->irq_urb); + usb_free_urb(ati_remote->out_urb); if (ati_remote->inbuf) usb_buffer_free(ati_remote->udev, DATA_BUFSIZE, diff -puN drivers/usb/input/hid-core.c~usb-urb-unlink-free-clenup drivers/usb/input/hid-core.c --- a/drivers/usb/input/hid-core.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/input/hid-core.c @@ -2071,13 +2071,9 @@ static struct hid_device *usb_hid_config return hid; fail: - - if (hid->urbin) - usb_free_urb(hid->urbin); - if (hid->urbout) - usb_free_urb(hid->urbout); - if (hid->urbctrl) - usb_free_urb(hid->urbctrl); + usb_free_urb(hid->urbin); + usb_free_urb(hid->urbout); + usb_free_urb(hid->urbctrl); hid_free_buffers(dev, hid); hid_free_device(hid); @@ -2108,8 +2104,7 @@ static void hid_disconnect(struct usb_in usb_free_urb(hid->urbin); usb_free_urb(hid->urbctrl); - if (hid->urbout) - usb_free_urb(hid->urbout); + usb_free_urb(hid->urbout); hid_free_buffers(hid->dev, hid); hid_free_device(hid); diff -puN drivers/usb/input/usbkbd.c~usb-urb-unlink-free-clenup drivers/usb/input/usbkbd.c --- a/drivers/usb/input/usbkbd.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/input/usbkbd.c @@ -208,10 +208,8 @@ static int usb_kbd_alloc_mem(struct usb_ static void usb_kbd_free_mem(struct usb_device *dev, struct usb_kbd *kbd) { - if (kbd->irq) - usb_free_urb(kbd->irq); - if (kbd->led) - usb_free_urb(kbd->led); + usb_free_urb(kbd->irq); + usb_free_urb(kbd->led); if (kbd->new) usb_buffer_free(dev, 8, kbd->new, kbd->new_dma); if (kbd->cr) diff -puN drivers/usb/misc/auerswald.c~usb-urb-unlink-free-clenup drivers/usb/misc/auerswald.c --- a/drivers/usb/misc/auerswald.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/misc/auerswald.c @@ -704,9 +704,7 @@ static void auerbuf_free (pauerbuf_t bp) { kfree(bp->bufp); kfree(bp->dr); - if (bp->urbp) { - usb_free_urb(bp->urbp); - } + usb_free_urb(bp->urbp); kfree(bp); } @@ -1085,10 +1083,8 @@ exit: */ static void auerswald_int_free (pauerswald_t cp) { - if (cp->inturbp) { - usb_free_urb(cp->inturbp); - cp->inturbp = NULL; - } + usb_free_urb(cp->inturbp); + cp->inturbp = NULL; kfree(cp->intbufp); cp->intbufp = NULL; } diff -puN drivers/usb/misc/legousbtower.c~usb-urb-unlink-free-clenup drivers/usb/misc/legousbtower.c --- a/drivers/usb/misc/legousbtower.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/misc/legousbtower.c @@ -317,12 +317,8 @@ static inline void tower_delete (struct tower_abort_transfers (dev); /* free data structures */ - if (dev->interrupt_in_urb != NULL) { - usb_free_urb (dev->interrupt_in_urb); - } - if (dev->interrupt_out_urb != NULL) { - usb_free_urb (dev->interrupt_out_urb); - } + usb_free_urb (dev->interrupt_in_urb); + usb_free_urb (dev->interrupt_out_urb); kfree (dev->read_buffer); kfree (dev->interrupt_in_buffer); kfree (dev->interrupt_out_buffer); diff -puN drivers/usb/misc/phidgetkit.c~usb-urb-unlink-free-clenup drivers/usb/misc/phidgetkit.c --- a/drivers/usb/misc/phidgetkit.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/misc/phidgetkit.c @@ -650,8 +650,7 @@ out2: device_remove_file(kit->dev, &dev_output_attrs[i]); out: if (kit) { - if (kit->irq) - usb_free_urb(kit->irq); + usb_free_urb(kit->irq); if (kit->data) usb_buffer_free(dev, URB_INT_SIZE, kit->data, kit->data_dma); if (kit->dev) diff -puN drivers/usb/misc/phidgetmotorcontrol.c~usb-urb-unlink-free-clenup drivers/usb/misc/phidgetmotorcontrol.c --- a/drivers/usb/misc/phidgetmotorcontrol.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/misc/phidgetmotorcontrol.c @@ -392,8 +392,7 @@ out2: device_remove_file(mc->dev, &dev_attrs[i]); out: if (mc) { - if (mc->irq) - usb_free_urb(mc->irq); + usb_free_urb(mc->irq); if (mc->data) usb_buffer_free(dev, URB_INT_SIZE, mc->data, mc->data_dma); if (mc->dev) diff -puN drivers/usb/net/catc.c~usb-urb-unlink-free-clenup drivers/usb/net/catc.c --- a/drivers/usb/net/catc.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/net/catc.c @@ -786,14 +786,10 @@ static int catc_probe(struct usb_interfa if ((!catc->ctrl_urb) || (!catc->tx_urb) || (!catc->rx_urb) || (!catc->irq_urb)) { err("No free urbs available."); - if (catc->ctrl_urb) - usb_free_urb(catc->ctrl_urb); - if (catc->tx_urb) - usb_free_urb(catc->tx_urb); - if (catc->rx_urb) - usb_free_urb(catc->rx_urb); - if (catc->irq_urb) - usb_free_urb(catc->irq_urb); + usb_free_urb(catc->ctrl_urb); + usb_free_urb(catc->tx_urb); + usb_free_urb(catc->rx_urb); + usb_free_urb(catc->irq_urb); free_netdev(netdev); return -ENOMEM; } diff -puN drivers/usb/serial/ftdi_sio.c~usb-urb-unlink-free-clenup drivers/usb/serial/ftdi_sio.c --- a/drivers/usb/serial/ftdi_sio.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/serial/ftdi_sio.c @@ -1202,10 +1202,8 @@ static int ftdi_sio_attach (struct usb_s INIT_WORK(&priv->rx_work, ftdi_process_read, port); /* Free port's existing write urb and transfer buffer. */ - if (port->write_urb) { - usb_free_urb (port->write_urb); - port->write_urb = NULL; - } + usb_free_urb (port->write_urb); + port->write_urb = NULL; kfree(port->bulk_out_buffer); port->bulk_out_buffer = NULL; diff -puN drivers/usb/serial/keyspan.c~usb-urb-unlink-free-clenup drivers/usb/serial/keyspan.c --- a/drivers/usb/serial/keyspan.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/serial/keyspan.c @@ -2306,22 +2306,16 @@ static void keyspan_shutdown (struct usb } /* Now free them */ - if (s_priv->instat_urb) - usb_free_urb(s_priv->instat_urb); - if (s_priv->glocont_urb) - usb_free_urb(s_priv->glocont_urb); + usb_free_urb(s_priv->instat_urb); + usb_free_urb(s_priv->glocont_urb); for (i = 0; i < serial->num_ports; ++i) { port = serial->port[i]; p_priv = usb_get_serial_port_data(port); - if (p_priv->inack_urb) - usb_free_urb(p_priv->inack_urb); - if (p_priv->outcont_urb) - usb_free_urb(p_priv->outcont_urb); + usb_free_urb(p_priv->inack_urb); + usb_free_urb(p_priv->outcont_urb); for (j = 0; j < 2; j++) { - if (p_priv->in_urbs[j]) - usb_free_urb(p_priv->in_urbs[j]); - if (p_priv->out_urbs[j]) - usb_free_urb(p_priv->out_urbs[j]); + usb_free_urb(p_priv->in_urbs[j]); + usb_free_urb(p_priv->out_urbs[j]); } } diff -puN drivers/usb/serial/mct_u232.c~usb-urb-unlink-free-clenup drivers/usb/serial/mct_u232.c --- a/drivers/usb/serial/mct_u232.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/serial/mct_u232.c @@ -358,10 +358,8 @@ static int mct_u232_startup (struct usb_ /* Puh, that's dirty */ port = serial->port[0]; rport = serial->port[1]; - if (port->read_urb) { - /* No unlinking, it wasn't submitted yet. */ - usb_free_urb(port->read_urb); - } + /* Unlinking, if submitted. */ + usb_free_urb(port->read_urb); port->read_urb = rport->interrupt_in_urb; rport->interrupt_in_urb = NULL; port->read_urb->context = port; diff -puN drivers/usb/serial/option.c~usb-urb-unlink-free-clenup drivers/usb/serial/option.c --- a/drivers/usb/serial/option.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/serial/option.c @@ -696,16 +696,12 @@ static void option_shutdown(struct usb_s portdata = usb_get_serial_port_data(port); for (j = 0; j < N_IN_URB; j++) { - if (portdata->in_urbs[j]) { - usb_free_urb(portdata->in_urbs[j]); - portdata->in_urbs[j] = NULL; - } + usb_free_urb(portdata->in_urbs[j]); + portdata->in_urbs[j] = NULL; } for (j = 0; j < N_OUT_URB; j++) { - if (portdata->out_urbs[j]) { - usb_free_urb(portdata->out_urbs[j]); - portdata->out_urbs[j] = NULL; - } + usb_free_urb(portdata->out_urbs[j]); + portdata->out_urbs[j] = NULL; } } diff -puN drivers/usb/serial/sierra.c~usb-urb-unlink-free-clenup drivers/usb/serial/sierra.c --- a/drivers/usb/serial/sierra.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/serial/sierra.c @@ -587,16 +587,12 @@ static void sierra_shutdown(struct usb_s portdata = usb_get_serial_port_data(port); for (j = 0; j < N_IN_URB; j++) { - if (portdata->in_urbs[j]) { - usb_free_urb(portdata->in_urbs[j]); - portdata->in_urbs[j] = NULL; - } + usb_free_urb(portdata->in_urbs[j]); + portdata->in_urbs[j] = NULL; } for (j = 0; j < N_OUT_URB; j++) { - if (portdata->out_urbs[j]) { - usb_free_urb(portdata->out_urbs[j]); - portdata->out_urbs[j] = NULL; - } + usb_free_urb(portdata->out_urbs[j]); + portdata->out_urbs[j] = NULL; } } diff -puN drivers/usb/serial/usb-serial.c~usb-urb-unlink-free-clenup drivers/usb/serial/usb-serial.c --- a/drivers/usb/serial/usb-serial.c~usb-urb-unlink-free-clenup +++ a/drivers/usb/serial/usb-serial.c @@ -983,32 +983,28 @@ probe_error: port = serial->port[i]; if (!port) continue; - if (port->read_urb) - usb_free_urb (port->read_urb); + usb_free_urb (port->read_urb); kfree(port->bulk_in_buffer); } for (i = 0; i < num_bulk_out; ++i) { port = serial->port[i]; if (!port) continue; - if (port->write_urb) - usb_free_urb (port->write_urb); + usb_free_urb (port->write_urb); kfree(port->bulk_out_buffer); } for (i = 0; i < num_interrupt_in; ++i) { port = serial->port[i]; if (!port) continue; - if (port->interrupt_in_urb) - usb_free_urb (port->interrupt_in_urb); + usb_free_urb (port->interrupt_in_urb); kfree(port->interrupt_in_buffer); } for (i = 0; i < num_interrupt_out; ++i) { port = serial->port[i]; if (!port) continue; - if (port->interrupt_out_urb) - usb_free_urb (port->interrupt_out_urb); + usb_free_urb (port->interrupt_out_urb); kfree(port->interrupt_out_buffer); } diff -puN sound/usb/usbmixer.c~usb-urb-unlink-free-clenup sound/usb/usbmixer.c --- a/sound/usb/usbmixer.c~usb-urb-unlink-free-clenup +++ a/sound/usb/usbmixer.c @@ -1620,8 +1620,7 @@ static void snd_usb_mixer_free(struct us kfree(mixer->urb->transfer_buffer); usb_free_urb(mixer->urb); } - if (mixer->rc_urb) - usb_free_urb(mixer->rc_urb); + usb_free_urb(mixer->rc_urb); kfree(mixer->rc_setup_packet); kfree(mixer); } _