| From ad84e4a9efb7c8ed322bafb6ebdb9c3a49a3d3a8 Mon Sep 17 00:00:00 2001 |
| From: Alan Stern <stern@rowland.harvard.edu> |
| Date: Mon, 10 Jan 2011 11:24:14 -0500 |
| Subject: USB: g_printer: fix bug in module parameter definitions |
| |
| From: Alan Stern <stern@rowland.harvard.edu> |
| |
| commit ad84e4a9efb7c8ed322bafb6ebdb9c3a49a3d3a8 upstream. |
| |
| This patch (as1442) fixes a bug in g_printer: Module parameters should |
| not be marked "__initdata" if they are accessible in sysfs (i.e., if |
| the mode value in the module_param() macro is nonzero). Otherwise |
| attempts to access the parameters will cause addressing violations. |
| |
| Character-string module parameters must not be marked "__initdata" |
| if the module can be unloaded, because the kernel needs to access the |
| parameter variable at unload time in order to free the |
| dynamically-allocated string. |
| |
| Signed-off-by: Alan Stern <stern@rowland.harvard.edu> |
| CC: Roland Kletzing <devzero@web.de> |
| CC: Craig W. Nadler <craig@nadler.us> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/usb/gadget/printer.c | 14 +++++++------- |
| 1 file changed, 7 insertions(+), 7 deletions(-) |
| |
| --- a/drivers/usb/gadget/printer.c |
| +++ b/drivers/usb/gadget/printer.c |
| @@ -130,31 +130,31 @@ static struct printer_dev usb_printer_ga |
| * parameters are in UTF-8 (superset of ASCII's 7 bit characters). |
| */ |
| |
| -static ushort __initdata idVendor; |
| +static ushort idVendor; |
| module_param(idVendor, ushort, S_IRUGO); |
| MODULE_PARM_DESC(idVendor, "USB Vendor ID"); |
| |
| -static ushort __initdata idProduct; |
| +static ushort idProduct; |
| module_param(idProduct, ushort, S_IRUGO); |
| MODULE_PARM_DESC(idProduct, "USB Product ID"); |
| |
| -static ushort __initdata bcdDevice; |
| +static ushort bcdDevice; |
| module_param(bcdDevice, ushort, S_IRUGO); |
| MODULE_PARM_DESC(bcdDevice, "USB Device version (BCD)"); |
| |
| -static char *__initdata iManufacturer; |
| +static char *iManufacturer; |
| module_param(iManufacturer, charp, S_IRUGO); |
| MODULE_PARM_DESC(iManufacturer, "USB Manufacturer string"); |
| |
| -static char *__initdata iProduct; |
| +static char *iProduct; |
| module_param(iProduct, charp, S_IRUGO); |
| MODULE_PARM_DESC(iProduct, "USB Product string"); |
| |
| -static char *__initdata iSerialNum; |
| +static char *iSerialNum; |
| module_param(iSerialNum, charp, S_IRUGO); |
| MODULE_PARM_DESC(iSerialNum, "1"); |
| |
| -static char *__initdata iPNPstring; |
| +static char *iPNPstring; |
| module_param(iPNPstring, charp, S_IRUGO); |
| MODULE_PARM_DESC(iPNPstring, "MFG:linux;MDL:g_printer;CLS:PRINTER;SN:1;"); |
| |