All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: "Rustad\, Mark D" <mark.d.rustad@intel.com>
Cc: "Kirsher\, Jeffrey T" <jeffrey.t.kirsher@intel.com>,
	"linux-kernel\@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] moduleparam: Resolve missing-field-initializer warning
Date: Fri, 05 Sep 2014 11:22:57 +0930	[thread overview]
Message-ID: <87ppfakf46.fsf@rustcorp.com.au> (raw)
In-Reply-To: <F8A4F5BF-C490-4099-9360-0C771451FF1D@intel.com>

"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)

      reply	other threads:[~2014-09-05  2:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ppfakf46.fsf@rustcorp.com.au \
    --to=rusty@rustcorp.com.au \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.d.rustad@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.