USB: Fix unload oops and memory leak in yealink driver

This patch fixes a memory leak and a kernel oops when trying to unload
the driver, due to an unbalanced cleanup.
Thanks Ivar Jensen for spotting my mistake.

Signed-off-by: Henk Vergonet <henk.vergonet@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by Henk Vergonet and committed by Greg Kroah-Hartman 3e2aac36 59925838

+6 -6
+6 -6
drivers/usb/input/yealink.c
··· 810 if (yld == NULL) 811 return err; 812 813 - if (yld->urb_irq) { 814 - usb_kill_urb(yld->urb_irq); 815 - usb_free_urb(yld->urb_irq); 816 - } 817 - if (yld->urb_ctl) 818 - usb_free_urb(yld->urb_ctl); 819 if (yld->idev) { 820 if (err) 821 input_free_device(yld->idev); ··· 828 if (yld->irq_data) 829 usb_buffer_free(yld->udev, USB_PKT_LEN, 830 yld->irq_data, yld->irq_dma); 831 kfree(yld); 832 return err; 833 }
··· 810 if (yld == NULL) 811 return err; 812 813 + usb_kill_urb(yld->urb_irq); /* parameter validation in core/urb */ 814 + usb_kill_urb(yld->urb_ctl); /* parameter validation in core/urb */ 815 + 816 if (yld->idev) { 817 if (err) 818 input_free_device(yld->idev); ··· 831 if (yld->irq_data) 832 usb_buffer_free(yld->udev, USB_PKT_LEN, 833 yld->irq_data, yld->irq_dma); 834 + 835 + usb_free_urb(yld->urb_irq); /* parameter validation in core/urb */ 836 + usb_free_urb(yld->urb_ctl); /* parameter validation in core/urb */ 837 kfree(yld); 838 return err; 839 }