[PATCH 20/21] USB, Mass Storage, composite, gadget: Fix build failure and memset of a struct

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Jesper Juhl <jj@xxxxxxxxxxxxx>

Trying to compile drivers/usb/gadget/f_mass_storage.o currently fails and
spews a ton of warnings :

  CC      drivers/usb/gadget/f_mass_storage.o
drivers/usb/gadget/f_mass_storage.c:436:22: error: field âfunctionâ has incomplete type
drivers/usb/gadget/f_mass_storage.c: In function âfsg_from_funcâ:
drivers/usb/gadget/f_mass_storage.c:466:9: warning: type defaults to âintâ in declaration of â__mptrâ
drivers/usb/gadget/f_mass_storage.c:466:9: warning: initialization from incompatible pointer type
drivers/usb/gadget/f_mass_storage.c: At top level:
drivers/usb/gadget/f_mass_storage.c:2743:15: warning: âstruct usb_composite_devâ declared inside parameter list
drivers/usb/gadget/f_mass_storage.c:2743:15: warning: its scope is only this definition or declaration, which is probably not what you want
drivers/usb/gadget/f_mass_storage.c: In function âfsg_common_initâ:
drivers/usb/gadget/f_mass_storage.c:2745:34: error: dereferencing pointer to incomplete type
drivers/usb/gadget/f_mass_storage.c:2775:23: error: dereferencing pointer to incomplete type
drivers/usb/gadget/f_mass_storage.c:2779:3: error: implicit declaration of function âusb_string_idâ
drivers/usb/gadget/f_mass_storage.c: At top level:
drivers/usb/gadget/f_mass_storage.c:2984:60: warning: âstruct usb_configurationâ declared inside parameter list
drivers/usb/gadget/f_mass_storage.c:3003:57: warning: âstruct usb_configurationâ declared inside parameter list
drivers/usb/gadget/f_mass_storage.c: In function âfsg_bindâ:
drivers/usb/gadget/f_mass_storage.c:3006:31: error: dereferencing pointer to incomplete type
drivers/usb/gadget/f_mass_storage.c:3013:2: error: implicit declaration of function âusb_interface_idâ
drivers/usb/gadget/f_mass_storage.c:3033:3: error: dereferencing pointer to incomplete type
drivers/usb/gadget/f_mass_storage.c:3034:6: error: dereferencing pointer to incomplete type
drivers/usb/gadget/f_mass_storage.c:3043:4: error: dereferencing pointer to incomplete type
drivers/usb/gadget/f_mass_storage.c:3044:7: error: dereferencing pointer to incomplete type
drivers/usb/gadget/f_mass_storage.c:3045:26: error: dereferencing pointer to incomplete type
drivers/usb/gadget/f_mass_storage.c: At top level:
drivers/usb/gadget/f_mass_storage.c:3067:14: warning: âstruct usb_configurationâ declared inside parameter list
drivers/usb/gadget/f_mass_storage.c:3067:14: warning: âstruct usb_composite_devâ declared inside parameter list
drivers/usb/gadget/f_mass_storage.c: In function âfsg_bind_configâ:
drivers/usb/gadget/f_mass_storage.c:3093:2: error: implicit declaration of function âusb_add_functionâ
drivers/usb/gadget/f_mass_storage.c: At top level:
drivers/usb/gadget/f_mass_storage.c:3103:9: warning: âstruct usb_configurationâ declared inside parameter list
drivers/usb/gadget/f_mass_storage.c:3103:9: warning: âstruct usb_composite_devâ declared inside parameter list
drivers/usb/gadget/f_mass_storage.c: In function âfsg_addâ:
drivers/usb/gadget/f_mass_storage.c:3105:2: warning: passing argument 1 of âfsg_bind_configâ from incompatible pointer type
drivers/usb/gadget/f_mass_storage.c:3065:12: note: expected âstruct usb_composite_dev *â but argument is of type âstruct usb_composite_dev *â
drivers/usb/gadget/f_mass_storage.c:3105:2: warning: passing argument 2 of âfsg_bind_configâ from incompatible pointer type
drivers/usb/gadget/f_mass_storage.c:3065:12: note: expected âstruct usb_configuration *â but argument is of type âstruct usb_configuration *â
drivers/usb/gadget/f_mass_storage.c: At top level:
drivers/usb/gadget/f_mass_storage.c:3190:23: warning: âstruct usb_composite_devâ declared inside parameter list
drivers/usb/gadget/f_mass_storage.c:3195:23: warning: âstruct usb_composite_devâ declared inside parameter list
drivers/usb/gadget/f_mass_storage.c:3193:1: error: conflicting types for âfsg_common_from_paramsâ
drivers/usb/gadget/f_mass_storage.c:3188:1: note: previous declaration of âfsg_common_from_paramsâ was here
drivers/usb/gadget/f_mass_storage.c: In function âfsg_common_from_paramsâ:
drivers/usb/gadget/f_mass_storage.c:3199:2: warning: passing argument 2 of âfsg_common_initâ from incompatible pointer type
drivers/usb/gadget/f_mass_storage.c:2741:27: note: expected âstruct usb_composite_dev *â but argument is of type âstruct usb_composite_dev *â
make[1]: *** [drivers/usb/gadget/f_mass_storage.o] Error 1
make: *** [drivers/usb/gadget/f_mass_storage.o] Error 2

This is due to the missing include of linux/usb/composite.h - this patch
adds the missing include.

In addition there's also a problem in fsg_common_init() where we memset
'common', but we use the size of a pointer to 'struct fsg_common' as the
size argument to memset(), not the actual size of the struct. This patch
fixes the sizeof so we zero the entire struct as intended.

Signed-off-by: Jesper Juhl <jj@xxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>
---
 drivers/usb/gadget/f_mass_storage.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c
index b5dbb23..6d8e533 100644
--- a/drivers/usb/gadget/f_mass_storage.c
+++ b/drivers/usb/gadget/f_mass_storage.c
@@ -293,6 +293,7 @@
 
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
+#include <linux/usb/composite.h>
 
 #include "gadget_chips.h"
 
@@ -2763,7 +2764,7 @@ static struct fsg_common *fsg_common_init(struct fsg_common *common,
 			return ERR_PTR(-ENOMEM);
 		common->free_storage_on_release = 1;
 	} else {
-		memset(common, 0, sizeof common);
+		memset(common, 0, sizeof *common);
 		common->free_storage_on_release = 0;
 	}
 
-- 
1.7.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux