diff options
| author | Horst Schirmeier <horst@schirmeier.com> | 2006-03-09 14:10:49 +0100 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-03-20 14:50:01 -0800 | 
| commit | f48219db93eaee644e9fd9f22fb6421f38059cc5 (patch) | |
| tree | df29efdc95c79a57ff31b7d768c739da0e8ba6bc /drivers/usb/core/message.c | |
| parent | 6aa35675bbc370e5f11baae7e01a9ab255d8030c (diff) | |
[PATCH] USB: usbcore: usb_set_configuration oops (NULL ptr dereference)
When trying to deconfigure a device via usb_set_configuration(dev, 0),
2.6.16-rc kernels after 55c527187c9d78f840b284d596a0b298bc1493af oops
with "Unable to handle NULL pointer dereference at...". This is due to
an unchecked dereference of cp in the power budget part.
Signed-off-by: Horst Schirmeier <horst@schirmeier.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/core/message.c')
| -rw-r--r-- | drivers/usb/core/message.c | 12 | 
1 files changed, 7 insertions, 5 deletions
| diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index 2f6009b0cff..08fb20f06f3 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c @@ -1388,11 +1388,13 @@ free_interfaces:  	if (dev->state != USB_STATE_ADDRESS)  		usb_disable_device (dev, 1);	// Skip ep0 -	i = dev->bus_mA - cp->desc.bMaxPower * 2; -	if (i < 0) -		dev_warn(&dev->dev, "new config #%d exceeds power " -				"limit by %dmA\n", -				configuration, -i); +	if (cp) { +		i = dev->bus_mA - cp->desc.bMaxPower * 2; +		if (i < 0) +			dev_warn(&dev->dev, "new config #%d exceeds power " +					"limit by %dmA\n", +					configuration, -i); +	}  	if ((ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),  			USB_REQ_SET_CONFIGURATION, 0, configuration, 0, | 
