From: Greg Kroah-Hartman Date: Thu, 22 Mar 2012 22:34:30 +0000 (-0700) Subject: 3.3-stable patches X-Git-Tag: v3.0.26~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2bd48e9538eaf8d51ef1d03a81f448e672386739;p=thirdparty%2Fkernel%2Fstable-queue.git 3.3-stable patches added patches: usb-gadget-fix-a-section-mismatch-when-compiling-g_ffs-with-config_usb_functionfs_eth.patch --- diff --git a/queue-3.3/series b/queue-3.3/series index 72b43662753..8e15ba9ccbc 100644 --- a/queue-3.3/series +++ b/queue-3.3/series @@ -74,3 +74,4 @@ scsi-iscsi-fix-setting-of-pid-from-netlink-skb.patch iscsi-target-fix-iscsit_alloc_buffs-failure-cases.patch iscsi-target-fix-dynamic-explict-nodeacl-pointer-reference.patch alsa-hda-fix-printing-of-high-hdmi-sample-rates.patch +usb-gadget-fix-a-section-mismatch-when-compiling-g_ffs-with-config_usb_functionfs_eth.patch diff --git a/queue-3.3/usb-gadget-fix-a-section-mismatch-when-compiling-g_ffs-with-config_usb_functionfs_eth.patch b/queue-3.3/usb-gadget-fix-a-section-mismatch-when-compiling-g_ffs-with-config_usb_functionfs_eth.patch new file mode 100644 index 00000000000..716c5c508e8 --- /dev/null +++ b/queue-3.3/usb-gadget-fix-a-section-mismatch-when-compiling-g_ffs-with-config_usb_functionfs_eth.patch @@ -0,0 +1,187 @@ +From 8d0698428822ce63f7269e7fe81fc4580807b9ac Mon Sep 17 00:00:00 2001 +From: Lothar Waßmann +Date: Sun, 11 Mar 2012 15:08:46 +0100 +Subject: usb gadget: fix a section mismatch when compiling g_ffs with CONFIG_USB_FUNCTIONFS_ETH +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Lothar Waßmann + +commit 8d0698428822ce63f7269e7fe81fc4580807b9ac upstream. + + commit 28824b18ac4705e876a282a15ea0de8fc957551f: + |Author: Michal Nazarewicz + |Date: Wed May 5 12:53:13 2010 +0200 + | + | USB: gadget: __init and __exit tags removed + | + | __init, __initdata and __exit tags have have been removed from + | various files to make it possible for gadgets that do not use + | the __init/__exit tags to use those. + obviously missed (at least) this case leading to a section mismatch in + g_ffs.c when compiling with CONFIG_USB_FUNCTIONFS_ETH enabled. + +Signed-off-by: Lothar Waßmann +Acked-by: Michal Nazarewicz +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/f_subset.c | 34 +++++++++++++++++----------------- + 1 file changed, 17 insertions(+), 17 deletions(-) + +--- a/drivers/usb/gadget/f_subset.c ++++ b/drivers/usb/gadget/f_subset.c +@@ -74,7 +74,7 @@ static inline struct f_gether *func_to_g + + /* interface descriptor: */ + +-static struct usb_interface_descriptor subset_data_intf __initdata = { ++static struct usb_interface_descriptor subset_data_intf = { + .bLength = sizeof subset_data_intf, + .bDescriptorType = USB_DT_INTERFACE, + +@@ -87,7 +87,7 @@ static struct usb_interface_descriptor s + /* .iInterface = DYNAMIC */ + }; + +-static struct usb_cdc_header_desc mdlm_header_desc __initdata = { ++static struct usb_cdc_header_desc mdlm_header_desc = { + .bLength = sizeof mdlm_header_desc, + .bDescriptorType = USB_DT_CS_INTERFACE, + .bDescriptorSubType = USB_CDC_HEADER_TYPE, +@@ -95,7 +95,7 @@ static struct usb_cdc_header_desc mdlm_h + .bcdCDC = cpu_to_le16(0x0110), + }; + +-static struct usb_cdc_mdlm_desc mdlm_desc __initdata = { ++static struct usb_cdc_mdlm_desc mdlm_desc = { + .bLength = sizeof mdlm_desc, + .bDescriptorType = USB_DT_CS_INTERFACE, + .bDescriptorSubType = USB_CDC_MDLM_TYPE, +@@ -111,7 +111,7 @@ static struct usb_cdc_mdlm_desc mdlm_des + * can't really use its struct. All we do here is say that we're using + * the submode of "SAFE" which directly matches the CDC Subset. + */ +-static u8 mdlm_detail_desc[] __initdata = { ++static u8 mdlm_detail_desc[] = { + 6, + USB_DT_CS_INTERFACE, + USB_CDC_MDLM_DETAIL_TYPE, +@@ -121,7 +121,7 @@ static u8 mdlm_detail_desc[] __initdata + 0, /* network data capabilities ("raw" encapsulation) */ + }; + +-static struct usb_cdc_ether_desc ether_desc __initdata = { ++static struct usb_cdc_ether_desc ether_desc = { + .bLength = sizeof ether_desc, + .bDescriptorType = USB_DT_CS_INTERFACE, + .bDescriptorSubType = USB_CDC_ETHERNET_TYPE, +@@ -136,7 +136,7 @@ static struct usb_cdc_ether_desc ether_d + + /* full speed support: */ + +-static struct usb_endpoint_descriptor fs_subset_in_desc __initdata = { ++static struct usb_endpoint_descriptor fs_subset_in_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = USB_DT_ENDPOINT, + +@@ -144,7 +144,7 @@ static struct usb_endpoint_descriptor fs + .bmAttributes = USB_ENDPOINT_XFER_BULK, + }; + +-static struct usb_endpoint_descriptor fs_subset_out_desc __initdata = { ++static struct usb_endpoint_descriptor fs_subset_out_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = USB_DT_ENDPOINT, + +@@ -152,7 +152,7 @@ static struct usb_endpoint_descriptor fs + .bmAttributes = USB_ENDPOINT_XFER_BULK, + }; + +-static struct usb_descriptor_header *fs_eth_function[] __initdata = { ++static struct usb_descriptor_header *fs_eth_function[] = { + (struct usb_descriptor_header *) &subset_data_intf, + (struct usb_descriptor_header *) &mdlm_header_desc, + (struct usb_descriptor_header *) &mdlm_desc, +@@ -165,7 +165,7 @@ static struct usb_descriptor_header *fs_ + + /* high speed support: */ + +-static struct usb_endpoint_descriptor hs_subset_in_desc __initdata = { ++static struct usb_endpoint_descriptor hs_subset_in_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = USB_DT_ENDPOINT, + +@@ -173,7 +173,7 @@ static struct usb_endpoint_descriptor hs + .wMaxPacketSize = cpu_to_le16(512), + }; + +-static struct usb_endpoint_descriptor hs_subset_out_desc __initdata = { ++static struct usb_endpoint_descriptor hs_subset_out_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = USB_DT_ENDPOINT, + +@@ -181,7 +181,7 @@ static struct usb_endpoint_descriptor hs + .wMaxPacketSize = cpu_to_le16(512), + }; + +-static struct usb_descriptor_header *hs_eth_function[] __initdata = { ++static struct usb_descriptor_header *hs_eth_function[] = { + (struct usb_descriptor_header *) &subset_data_intf, + (struct usb_descriptor_header *) &mdlm_header_desc, + (struct usb_descriptor_header *) &mdlm_desc, +@@ -194,7 +194,7 @@ static struct usb_descriptor_header *hs_ + + /* super speed support: */ + +-static struct usb_endpoint_descriptor ss_subset_in_desc __initdata = { ++static struct usb_endpoint_descriptor ss_subset_in_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = USB_DT_ENDPOINT, + +@@ -202,7 +202,7 @@ static struct usb_endpoint_descriptor ss + .wMaxPacketSize = cpu_to_le16(1024), + }; + +-static struct usb_endpoint_descriptor ss_subset_out_desc __initdata = { ++static struct usb_endpoint_descriptor ss_subset_out_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = USB_DT_ENDPOINT, + +@@ -210,7 +210,7 @@ static struct usb_endpoint_descriptor ss + .wMaxPacketSize = cpu_to_le16(1024), + }; + +-static struct usb_ss_ep_comp_descriptor ss_subset_bulk_comp_desc __initdata = { ++static struct usb_ss_ep_comp_descriptor ss_subset_bulk_comp_desc = { + .bLength = sizeof ss_subset_bulk_comp_desc, + .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, + +@@ -219,7 +219,7 @@ static struct usb_ss_ep_comp_descriptor + /* .bmAttributes = 0, */ + }; + +-static struct usb_descriptor_header *ss_eth_function[] __initdata = { ++static struct usb_descriptor_header *ss_eth_function[] = { + (struct usb_descriptor_header *) &subset_data_intf, + (struct usb_descriptor_header *) &mdlm_header_desc, + (struct usb_descriptor_header *) &mdlm_desc, +@@ -290,7 +290,7 @@ static void geth_disable(struct usb_func + + /* serial function driver setup/binding */ + +-static int __init ++static int + geth_bind(struct usb_configuration *c, struct usb_function *f) + { + struct usb_composite_dev *cdev = c->cdev; +@@ -404,7 +404,7 @@ geth_unbind(struct usb_configuration *c, + * Caller must have called @gether_setup(). Caller is also responsible + * for calling @gether_cleanup() before module unload. + */ +-int __init geth_bind_config(struct usb_configuration *c, u8 ethaddr[ETH_ALEN]) ++int geth_bind_config(struct usb_configuration *c, u8 ethaddr[ETH_ALEN]) + { + struct f_gether *geth; + int status;