| From 8d0698428822ce63f7269e7fe81fc4580807b9ac Mon Sep 17 00:00:00 2001 |
| From: Lothar Waßmann <LW@KARO-electronics.de> |
| 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 <LW@KARO-electronics.de> |
| |
| commit 8d0698428822ce63f7269e7fe81fc4580807b9ac upstream. |
| |
| commit 28824b18ac4705e876a282a15ea0de8fc957551f: |
| |Author: Michal Nazarewicz <m.nazarewicz@samsung.com> |
| |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 <LW@KARO-electronics.de> |
| Acked-by: Michal Nazarewicz <mina86@mina86.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| 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; |