summaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorOliver Neukum <oneukum@suse.com>2019-05-09 08:41:50 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-05-21 04:08:56 -0400
commit9a5729f68d3a82786aea110b1bfe610be318f80a (patch)
tree464c00422a1f3ed1e261be91e8a33df3145b2cf6 /drivers/usb
parentea261113385ac0a71c2838185f39e8452d54b152 (diff)
USB: sisusbvga: fix oops in error path of sisusb_probe
The pointer used to log a failure of usb_register_dev() must be set before the error is logged. v2: fix that minor is not available before registration Signed-off-by: oliver Neukum <oneukum@suse.com> Reported-by: syzbot+a0cbdbd6d169020c8959@syzkaller.appspotmail.com Fixes: 7b5cd5fefbe02 ("USB: SisUSB2VGA: Convert printk to dev_* macros") Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/misc/sisusbvga/sisusb.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/usb/misc/sisusbvga/sisusb.c b/drivers/usb/misc/sisusbvga/sisusb.c
index 9560fde621ee..ea06f1fed6fa 100644
--- a/drivers/usb/misc/sisusbvga/sisusb.c
+++ b/drivers/usb/misc/sisusbvga/sisusb.c
@@ -3029,6 +3029,13 @@ static int sisusb_probe(struct usb_interface *intf,
3029 3029
3030 mutex_init(&(sisusb->lock)); 3030 mutex_init(&(sisusb->lock));
3031 3031
3032 sisusb->sisusb_dev = dev;
3033 sisusb->vrambase = SISUSB_PCI_MEMBASE;
3034 sisusb->mmiobase = SISUSB_PCI_MMIOBASE;
3035 sisusb->mmiosize = SISUSB_PCI_MMIOSIZE;
3036 sisusb->ioportbase = SISUSB_PCI_IOPORTBASE;
3037 /* Everything else is zero */
3038
3032 /* Register device */ 3039 /* Register device */
3033 retval = usb_register_dev(intf, &usb_sisusb_class); 3040 retval = usb_register_dev(intf, &usb_sisusb_class);
3034 if (retval) { 3041 if (retval) {
@@ -3039,13 +3046,7 @@ static int sisusb_probe(struct usb_interface *intf,
3039 goto error_1; 3046 goto error_1;
3040 } 3047 }
3041 3048
3042 sisusb->sisusb_dev = dev; 3049 sisusb->minor = intf->minor;
3043 sisusb->minor = intf->minor;
3044 sisusb->vrambase = SISUSB_PCI_MEMBASE;
3045 sisusb->mmiobase = SISUSB_PCI_MMIOBASE;
3046 sisusb->mmiosize = SISUSB_PCI_MMIOSIZE;
3047 sisusb->ioportbase = SISUSB_PCI_IOPORTBASE;
3048 /* Everything else is zero */
3049 3050
3050 /* Allocate buffers */ 3051 /* Allocate buffers */
3051 sisusb->ibufsize = SISUSB_IBUF_SIZE; 3052 sisusb->ibufsize = SISUSB_IBUF_SIZE;