On Sun, 2020-10-04 at 02:36 +0100, Matthew Wilcox wrote: > On Sat, Oct 03, 2020 at 06:19:18PM -0700, Joe Perches wrote: > > These patches came up because I was looking for > > the location of the declaration of the buffer used > > in kernel/params.c struct kernel_param_ops .get > > functions. > > > > I didn't find it. > > > > I want to see if it's appropriate to convert the > > sprintf family of functions used in these .get > > functions to sysfs_emit. > > > > Patches submitted here: > > https://lore.kernel.org/lkml/5d606519698ce4c8f1203a2b35797d8254c6050a.1600285923.git.joe@xxxxxxxxxxx/T/ > > > > Anyone know if it's appropriate to change the > > sprintf-like uses in these functions to sysfs_emit > > and/or sysfs_emit_at? > > There's a lot of preprocessor magic to wade through. > > I'm pretty sure this comes through include/linux/moduleparam.h > and kernel/module.c. Dunno, looked there, still can't find it. btw: The __module_param_call macro looks very dodgy as it uses both __used and __attribute__((unused)) and likely one of them should be removed (unused?) It looks like the comes from varying definitions of __attribute_used__ eventually converted to __used for old gcc versions 2, 3, and 4. 1da177e4c3f4:include/linux/compiler-gcc2.h:#define __attribute_used__ __attribute__((__unused__)) 1da177e4c3f4:include/linux/compiler-gcc3.h:# define __attribute_used__ __attribute__((__used__)) 1da177e4c3f4:include/linux/compiler-gcc3.h:# define __attribute_used__ __attribute__((__unused__)) 1da177e4c3f4:include/linux/compiler-gcc4.h:#define __attribute_used__ __attribute__((__used__)) Maybe: --- include/linux/moduleparam.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h index 47879fc7f75e..fc820b27fb00 100644 --- a/include/linux/moduleparam.h +++ b/include/linux/moduleparam.h @@ -288,10 +288,10 @@ struct kparam_array /* Default value instead of permissions? */ \ static const char __param_str_##name[] = prefix #name; \ static struct kernel_param __moduleparam_const __param_##name \ - __used \ - __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \ - = { __param_str_##name, THIS_MODULE, ops, \ - VERIFY_OCTAL_PERMISSIONS(perm), level, flags, { arg } } + __used __section("__param") __aligned(sizeof(void *)) = { \ + __param_str_##name, THIS_MODULE, ops, \ + VERIFY_OCTAL_PERMISSIONS(perm), level, flags, { arg } \ + } /* Obsolete - use module_param_cb() */ #define module_param_call(name, _set, _get, arg, perm) \