* [PATCH] moduleparam: Resolve missing-field-initializer warning
@ 2014-08-29 13:08 Jeff Kirsher
2014-09-01 0:52 ` Rusty Russell
0 siblings, 1 reply; 4+ messages in thread
From: Jeff Kirsher @ 2014-08-29 13:08 UTC (permalink / raw)
To: rusty; +Cc: Mark Rustad, linux-kernel, Jeff Kirsher
From: Mark Rustad <mark.d.rustad@intel.com>
Resolve a missing-field-initializer warning, that is produced
by every reference to module_param_call, by using designated
initialization for the first field. That is enough to silence
the complaint.
Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
include/linux/moduleparam.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
index 494f99e..d99a9e9 100644
--- a/include/linux/moduleparam.h
+++ b/include/linux/moduleparam.h
@@ -196,7 +196,7 @@ struct kparam_array
/* Obsolete - use module_param_cb() */
#define module_param_call(name, set, get, arg, perm) \
static struct kernel_param_ops __param_ops_##name = \
- { 0, (void *)set, (void *)get }; \
+ { .flags = 0, (void *)set, (void *)get }; \
__module_param_call(MODULE_PARAM_PREFIX, \
name, &__param_ops_##name, arg, \
(perm) + sizeof(__check_old_set_param(set))*0, -1)
--
1.9.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] moduleparam: Resolve missing-field-initializer warning
2014-08-29 13:08 [PATCH] moduleparam: Resolve missing-field-initializer warning Jeff Kirsher
@ 2014-09-01 0:52 ` Rusty Russell
2014-09-02 18:01 ` Rustad, Mark D
0 siblings, 1 reply; 4+ messages in thread
From: Rusty Russell @ 2014-09-01 0:52 UTC (permalink / raw)
To: Jeff Kirsher; +Cc: Mark Rustad, linux-kernel, Jeff Kirsher
Jeff Kirsher <jeffrey.t.kirsher@intel.com> writes:
> From: Mark Rustad <mark.d.rustad@intel.com>
>
> Resolve a missing-field-initializer warning, that is produced
> by every reference to module_param_call, by using designated
> initialization for the first field. That is enough to silence
> the complaint.
>
> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> ---
> include/linux/moduleparam.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Strange, I haven't seen this warning. Compiler version? And it's good
to quote the error message, so people can google it.
Cheers,
Rusty.
> diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
> index 494f99e..d99a9e9 100644
> --- a/include/linux/moduleparam.h
> +++ b/include/linux/moduleparam.h
> @@ -196,7 +196,7 @@ struct kparam_array
> /* Obsolete - use module_param_cb() */
> #define module_param_call(name, set, get, arg, perm) \
> static struct kernel_param_ops __param_ops_##name = \
> - { 0, (void *)set, (void *)get }; \
> + { .flags = 0, (void *)set, (void *)get }; \
> __module_param_call(MODULE_PARAM_PREFIX, \
> name, &__param_ops_##name, arg, \
> (perm) + sizeof(__check_old_set_param(set))*0, -1)
> --
> 1.9.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] moduleparam: Resolve missing-field-initializer warning
2014-09-01 0:52 ` Rusty Russell
@ 2014-09-02 18:01 ` Rustad, Mark D
2014-09-05 1:52 ` Rusty Russell
0 siblings, 1 reply; 4+ messages in thread
From: Rustad, Mark D @ 2014-09-02 18:01 UTC (permalink / raw)
To: Rusty Russell; +Cc: Kirsher, Jeffrey T, linux-kernel@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 2980 bytes --]
On Aug 31, 2014, at 5:52 PM, Rusty Russell <rusty@rustcorp.com.au> wrote:
> Jeff Kirsher <jeffrey.t.kirsher@intel.com> writes:
>> From: Mark Rustad <mark.d.rustad@intel.com>
>>
>> Resolve a missing-field-initializer warning, that is produced
>> by every reference to module_param_call, by using designated
>> initialization for the first field. That is enough to silence
>> the complaint.
>>
>> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
>> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>> ---
>> include/linux/moduleparam.h | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> Strange, I haven't seen this warning. Compiler version? And it's good
> to quote the error message, so people can google it.
The message is only seen when doing a W=2 build. I happened to be using gcc 4.8.3, but I think most versions would produce the warning when it is enabled. It can either be silenced by using even a single designated initializer as I did here, or providing values for all of the fields. Because of the number of references to the macro, this change silences many warnings in W=2 builds.
One instance of the full warning message looks like this:
/home/share/git/nn-mdr/include/linux/moduleparam.h:198:16: warning: missing initializer for field ‘free’ of ‘struct kernel_param_ops’ [-Wmissing-field-initializers]
static struct kernel_param_ops __param_ops_##name = \
^
/home/share/git/nn-mdr/fs/fuse/inode.c:35:1: note: in expansion of macro ‘module_param_call’
module_param_call(max_user_bgreq, set_global_limit, param_get_uint,
^
/home/share/git/nn-mdr/include/linux/moduleparam.h:56:9: note: ‘free’ declared here
void (*free)(void *arg);
> Cheers,
> Rusty.
>
>> diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
>> index 494f99e..d99a9e9 100644
>> --- a/include/linux/moduleparam.h
>> +++ b/include/linux/moduleparam.h
>> @@ -196,7 +196,7 @@ struct kparam_array
>> /* Obsolete - use module_param_cb() */
>> #define module_param_call(name, set, get, arg, perm) \
>> static struct kernel_param_ops __param_ops_##name = \
>> - { 0, (void *)set, (void *)get }; \
>> + { .flags = 0, (void *)set, (void *)get }; \
This could also be resolved by adding a ", NULL" to the initializer above instead of the designated initializer. The designated initializer means that if additional "optional" fields were to be added in the future, this would not have to be touched to avoid generating the warning. However you prefer it. If instead you would prefer to designate all fields, the formal parameter names would have to change, since get and set would get substituted for the field designators .get and .set.
>> __module_param_call(MODULE_PARAM_PREFIX, \
>> name, &__param_ops_##name, arg, \
>> (perm) + sizeof(__check_old_set_param(set))*0, -1)
>> --
>> 1.9.3
--
Mark Rustad, Networking Division, Intel Corporation
[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 841 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] moduleparam: Resolve missing-field-initializer warning
2014-09-02 18:01 ` Rustad, Mark D
@ 2014-09-05 1:52 ` Rusty Russell
0 siblings, 0 replies; 4+ messages in thread
From: Rusty Russell @ 2014-09-05 1:52 UTC (permalink / raw)
To: Rustad, Mark D; +Cc: Kirsher, Jeffrey T, linux-kernel@vger.kernel.org
"Rustad, Mark D" <mark.d.rustad@intel.com> writes:
> On Aug 31, 2014, at 5:52 PM, Rusty Russell <rusty@rustcorp.com.au> wrote:
>
>> Jeff Kirsher <jeffrey.t.kirsher@intel.com> writes:
>>> From: Mark Rustad <mark.d.rustad@intel.com>
>>>
>>> Resolve a missing-field-initializer warning, that is produced
>>> by every reference to module_param_call, by using designated
>>> initialization for the first field. That is enough to silence
>>> the complaint.
>>>
>>> Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
>>> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>>> ---
>>> include/linux/moduleparam.h | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> Strange, I haven't seen this warning. Compiler version? And it's good
>> to quote the error message, so people can google it.
>
> The message is only seen when doing a W=2 build. I happened to be using gcc 4.8.3, but I think most versions would produce the warning when it is enabled. It can either be silenced by using even a single designated initializer as I did here, or providing values for all of the fields. Because of the number of references to the macro, this change silences many warnings in W=2 builds.
>
> One instance of the full warning message looks like this:
>
> /home/share/git/nn-mdr/include/linux/moduleparam.h:198:16: warning: missing initializer for field ‘free’ of ‘struct kernel_param_ops’ [-Wmissing-field-initializers]
> static struct kernel_param_ops __param_ops_##name = \
> ^
> /home/share/git/nn-mdr/fs/fuse/inode.c:35:1: note: in expansion of macro ‘module_param_call’
> module_param_call(max_user_bgreq, set_global_limit, param_get_uint,
> ^
> /home/share/git/nn-mdr/include/linux/moduleparam.h:56:9: note: ‘free’ declared here
> void (*free)(void *arg);
OK, I pasted this into your commit message, and applied it. See below.
Thanks!
Rusty.
From: Mark Rustad <mark.d.rustad@intel.com>
Subject: moduleparam: Resolve missing-field-initializer warning
Resolve a missing-field-initializer warning, that is produced
by every reference to module_param_call, by using designated
initialization for the first field. That is enough to silence
the complaint.
The message is only seen when doing a W=2 build. I happened to be using gcc
4.8.3, but I think most versions would produce the warning when it is
enabled. It can either be silenced by using even a single designated
initializer as I did here, or providing values for all of the fields. Because
of the number of references to the macro, this change silences many warnings
in W=2 builds.
One instance of the full warning message looks like this:
/home/share/git/nn-mdr/include/linux/moduleparam.h:198:16: warning: missing
initializer for field ‘free’ of ‘struct kernel_param_ops’
[-Wmissing-field-initializers]
static struct kernel_param_ops __param_ops_##name = \
^
/home/share/git/nn-mdr/fs/fuse/inode.c:35:1: note: in expansion of macro
‘module_param_call’
module_param_call(max_user_bgreq, set_global_limit, param_get_uint,
^
/home/share/git/nn-mdr/include/linux/moduleparam.h:56:9: note: ‘free’
declared here
void (*free)(void *arg);
Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
include/linux/moduleparam.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
index 593501996574..b43f4752304e 100644
--- a/include/linux/moduleparam.h
+++ b/include/linux/moduleparam.h
@@ -224,7 +224,7 @@ struct kparam_array
/* Obsolete - use module_param_cb() */
#define module_param_call(name, set, get, arg, perm) \
static struct kernel_param_ops __param_ops_##name = \
- { 0, (void *)set, (void *)get }; \
+ { .flags = 0, (void *)set, (void *)get }; \
__module_param_call(MODULE_PARAM_PREFIX, \
name, &__param_ops_##name, arg, \
(perm) + sizeof(__check_old_set_param(set))*0, -1, 0)
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-09-05 2:34 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-29 13:08 [PATCH] moduleparam: Resolve missing-field-initializer warning Jeff Kirsher
2014-09-01 0:52 ` Rusty Russell
2014-09-02 18:01 ` Rustad, Mark D
2014-09-05 1:52 ` Rusty Russell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox