Messages in this thread | | | From | Nick Desaulniers <> | Date | Mon, 26 Aug 2019 14:22:29 -0700 | Subject | a bug in genksysms/CONFIG_MODVERSIONS w/ __attribute__((foo))? |
| |
I'm looking into a linkage failure for one of our device kernels, and it seems that genksyms isn't producing a hash value correctly for aggregate definitions that contain __attribute__s like __attribute__((packed)).
Example: $ echo 'struct foo { int bar; };' | ./scripts/genksyms/genksyms -d Defn for struct foo == <struct foo { int bar ; } > Hash table occupancy 1/4096 = 0.000244141 $ echo 'struct __attribute__((packed)) foo { int bar; };' | ./scripts/genksyms/genksyms -d Hash table occupancy 0/4096 = 0
I assume the __attribute__ part isn't being parsed correctly (looks like genksyms is a lex/yacc based C parser).
The issue we have in our out of tree driver (*sadface*) is basically a EXPORT_SYMBOL'd function whose signature contains a packed struct.
Theoretically, there should be nothing wrong with exporting a function that requires packed structs, and this is just a bug in the lex/yacc based parser, right? I assume that not having CONFIG_MODVERSIONS coverage of packed structs in particular could lead to potentially not-fun bugs? Or is using packed structs in exported function symbols with CONFIG_MODVERSIONS forbidden in some documentation somewhere I missed? -- Thanks, ~Nick Desaulniers
| |