diff options
Diffstat (limited to 'drivers/usb/gadget/f_fs.c')
-rw-r--r-- | drivers/usb/gadget/f_fs.c | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c index 1e12b3ee56fd..74202d67f911 100644 --- a/drivers/usb/gadget/f_fs.c +++ b/drivers/usb/gadget/f_fs.c | |||
@@ -33,36 +33,11 @@ | |||
33 | #include <linux/poll.h> | 33 | #include <linux/poll.h> |
34 | 34 | ||
35 | #include "u_fs.h" | 35 | #include "u_fs.h" |
36 | #include "u_f.h" | ||
36 | #include "configfs.h" | 37 | #include "configfs.h" |
37 | 38 | ||
38 | #define FUNCTIONFS_MAGIC 0xa647361 /* Chosen by a honest dice roll ;) */ | 39 | #define FUNCTIONFS_MAGIC 0xa647361 /* Chosen by a honest dice roll ;) */ |
39 | 40 | ||
40 | /* Variable Length Array Macros **********************************************/ | ||
41 | #define vla_group(groupname) size_t groupname##__next = 0 | ||
42 | #define vla_group_size(groupname) groupname##__next | ||
43 | |||
44 | #define vla_item(groupname, type, name, n) \ | ||
45 | size_t groupname##_##name##__offset = ({ \ | ||
46 | size_t align_mask = __alignof__(type) - 1; \ | ||
47 | size_t offset = (groupname##__next + align_mask) & ~align_mask;\ | ||
48 | size_t size = (n) * sizeof(type); \ | ||
49 | groupname##__next = offset + size; \ | ||
50 | offset; \ | ||
51 | }) | ||
52 | |||
53 | #define vla_item_with_sz(groupname, type, name, n) \ | ||
54 | size_t groupname##_##name##__sz = (n) * sizeof(type); \ | ||
55 | size_t groupname##_##name##__offset = ({ \ | ||
56 | size_t align_mask = __alignof__(type) - 1; \ | ||
57 | size_t offset = (groupname##__next + align_mask) & ~align_mask;\ | ||
58 | size_t size = groupname##_##name##__sz; \ | ||
59 | groupname##__next = offset + size; \ | ||
60 | offset; \ | ||
61 | }) | ||
62 | |||
63 | #define vla_ptr(ptr, groupname, name) \ | ||
64 | ((void *) ((char *)ptr + groupname##_##name##__offset)) | ||
65 | |||
66 | /* Reference counter handling */ | 41 | /* Reference counter handling */ |
67 | static void ffs_data_get(struct ffs_data *ffs); | 42 | static void ffs_data_get(struct ffs_data *ffs); |
68 | static void ffs_data_put(struct ffs_data *ffs); | 43 | static void ffs_data_put(struct ffs_data *ffs); |
@@ -190,7 +165,7 @@ ffs_sb_create_file(struct super_block *sb, const char *name, void *data, | |||
190 | /* Devices management *******************************************************/ | 165 | /* Devices management *******************************************************/ |
191 | 166 | ||
192 | DEFINE_MUTEX(ffs_lock); | 167 | DEFINE_MUTEX(ffs_lock); |
193 | EXPORT_SYMBOL(ffs_lock); | 168 | EXPORT_SYMBOL_GPL(ffs_lock); |
194 | 169 | ||
195 | static struct ffs_dev *_ffs_find_dev(const char *name); | 170 | static struct ffs_dev *_ffs_find_dev(const char *name); |
196 | static struct ffs_dev *_ffs_alloc_dev(void); | 171 | static struct ffs_dev *_ffs_alloc_dev(void); |
@@ -2883,7 +2858,7 @@ int ffs_name_dev(struct ffs_dev *dev, const char *name) | |||
2883 | 2858 | ||
2884 | return ret; | 2859 | return ret; |
2885 | } | 2860 | } |
2886 | EXPORT_SYMBOL(ffs_name_dev); | 2861 | EXPORT_SYMBOL_GPL(ffs_name_dev); |
2887 | 2862 | ||
2888 | int ffs_single_dev(struct ffs_dev *dev) | 2863 | int ffs_single_dev(struct ffs_dev *dev) |
2889 | { | 2864 | { |
@@ -2900,7 +2875,7 @@ int ffs_single_dev(struct ffs_dev *dev) | |||
2900 | ffs_dev_unlock(); | 2875 | ffs_dev_unlock(); |
2901 | return ret; | 2876 | return ret; |
2902 | } | 2877 | } |
2903 | EXPORT_SYMBOL(ffs_single_dev); | 2878 | EXPORT_SYMBOL_GPL(ffs_single_dev); |
2904 | 2879 | ||
2905 | /* | 2880 | /* |
2906 | * ffs_lock must be taken by the caller of this function | 2881 | * ffs_lock must be taken by the caller of this function |