| From 9a5729f68d3a82786aea110b1bfe610be318f80a Mon Sep 17 00:00:00 2001 |
| From: Oliver Neukum <oneukum@suse.com> |
| Date: Thu, 9 May 2019 14:41:50 +0200 |
| Subject: USB: sisusbvga: fix oops in error path of sisusb_probe |
| |
| From: Oliver Neukum <oneukum@suse.com> |
| |
| commit 9a5729f68d3a82786aea110b1bfe610be318f80a upstream. |
| |
| 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> |
| |
| --- |
| drivers/usb/misc/sisusbvga/sisusb.c | 15 ++++++++------- |
| 1 file changed, 8 insertions(+), 7 deletions(-) |
| |
| --- a/drivers/usb/misc/sisusbvga/sisusb.c |
| +++ b/drivers/usb/misc/sisusbvga/sisusb.c |
| @@ -3029,6 +3029,13 @@ static int sisusb_probe(struct usb_inter |
| |
| mutex_init(&(sisusb->lock)); |
| |
| + sisusb->sisusb_dev = dev; |
| + sisusb->vrambase = SISUSB_PCI_MEMBASE; |
| + sisusb->mmiobase = SISUSB_PCI_MMIOBASE; |
| + sisusb->mmiosize = SISUSB_PCI_MMIOSIZE; |
| + sisusb->ioportbase = SISUSB_PCI_IOPORTBASE; |
| + /* Everything else is zero */ |
| + |
| /* Register device */ |
| retval = usb_register_dev(intf, &usb_sisusb_class); |
| if (retval) { |
| @@ -3039,13 +3046,7 @@ static int sisusb_probe(struct usb_inter |
| goto error_1; |
| } |
| |
| - sisusb->sisusb_dev = dev; |
| - sisusb->minor = intf->minor; |
| - sisusb->vrambase = SISUSB_PCI_MEMBASE; |
| - sisusb->mmiobase = SISUSB_PCI_MMIOBASE; |
| - sisusb->mmiosize = SISUSB_PCI_MMIOSIZE; |
| - sisusb->ioportbase = SISUSB_PCI_IOPORTBASE; |
| - /* Everything else is zero */ |
| + sisusb->minor = intf->minor; |
| |
| /* Allocate buffers */ |
| sisusb->ibufsize = SISUSB_IBUF_SIZE; |