| From 59bf5cf94f0fa3b08fb1258b52649077b7d0914d Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@suse.de> |
| Date: Mon, 5 Dec 2011 14:02:59 -0800 |
| Subject: USB: isight: fix kernel bug when loading firmware |
| |
| From: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| commit 59bf5cf94f0fa3b08fb1258b52649077b7d0914d upstream. |
| |
| We were sending data on the stack when uploading firmware, which causes |
| some machines fits, and is not allowed. Fix this by using the buffer we |
| already had around for this very purpose. |
| |
| Reported-by: Wouter M. Koolen <wmkoolen@cwi.nl> |
| Tested-by: Wouter M. Koolen <wmkoolen@cwi.nl> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/usb/misc/isight_firmware.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/usb/misc/isight_firmware.c |
| +++ b/drivers/usb/misc/isight_firmware.c |
| @@ -54,8 +54,9 @@ static int isight_firmware_load(struct u |
| |
| ptr = firmware->data; |
| |
| + buf[0] = 0x01; |
| if (usb_control_msg |
| - (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, "\1", 1, |
| + (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, buf, 1, |
| 300) != 1) { |
| printk(KERN_ERR |
| "Failed to initialise isight firmware loader\n"); |
| @@ -99,8 +100,9 @@ static int isight_firmware_load(struct u |
| } |
| } |
| |
| + buf[0] = 0x00; |
| if (usb_control_msg |
| - (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, "\0", 1, |
| + (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, buf, 1, |
| 300) != 1) { |
| printk(KERN_ERR "isight firmware loading completion failed\n"); |
| ret = -ENODEV; |