--- x/drivers/net/usb/usbnet.c +++ y/drivers/net/usb/usbnet.c @@ -231,6 +231,8 @@ static int init_status (struct usbnet *d if (!dev->driver_info->status) return 0; + if (!dev->status) + return -EINVAL; pipe = usb_rcvintpipe (dev->udev, dev->status->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); @@ -254,6 +256,8 @@ static int init_status (struct usbnet *d "status ep%din, %d bytes period %d\n", usb_pipeendpoint(pipe), maxp, period); } + } else { + return -ENOMEM; } return 0; } @@ -1812,7 +1816,7 @@ usbnet_probe (struct usb_interface *udev if (status == 0 && !usb_check_bulk_endpoints(udev, ep_addrs)) status = -EINVAL; } - if (status >= 0 && dev->status) + if (status >= 0) status = init_status (dev, udev); if (status < 0) goto out3;