2013-04-30 08:39:42

by Vincent Stehlé

[permalink] [raw]
Subject: [PATCH] memory hotplug: fix warnings

Fix the following compilation warnings:

mm/slab.c: In function ‘kmem_cache_init_late’:
mm/slab.c:1778:2: warning: statement with no effect [-Wunused-value]

mm/page_cgroup.c: In function ‘page_cgroup_init’:
mm/page_cgroup.c:305:2: warning: statement with no effect [-Wunused-value]

Signed-off-by: Vincent Stehlé <[email protected]>
---
include/linux/memory.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/memory.h b/include/linux/memory.h
index 73817af..85c31a8 100644
--- a/include/linux/memory.h
+++ b/include/linux/memory.h
@@ -137,7 +137,7 @@ enum mem_add_context { BOOT, HOTPLUG };
#define register_hotmemory_notifier(nb) register_memory_notifier(nb)
#define unregister_hotmemory_notifier(nb) unregister_memory_notifier(nb)
#else
-#define hotplug_memory_notifier(fn, pri) (0)
+#define hotplug_memory_notifier(fn, pri) ({ 0; })
/* These aren't inline functions due to a GCC bug. */
#define register_hotmemory_notifier(nb) ({ (void)(nb); 0; })
#define unregister_hotmemory_notifier(nb) ({ (void)(nb); })
--
1.7.10.4


2013-04-30 16:17:18

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH] memory hotplug: fix warnings

On Tue, 30 Apr 2013, Vincent Stehlé wrote:

> diff --git a/include/linux/memory.h b/include/linux/memory.h
> index 73817af..85c31a8 100644
> --- a/include/linux/memory.h
> +++ b/include/linux/memory.h
> @@ -137,7 +137,7 @@ enum mem_add_context { BOOT, HOTPLUG };
> #define register_hotmemory_notifier(nb) register_memory_notifier(nb)
> #define unregister_hotmemory_notifier(nb) unregister_memory_notifier(nb)
> #else
> -#define hotplug_memory_notifier(fn, pri) (0)
> +#define hotplug_memory_notifier(fn, pri) ({ 0; })
> /* These aren't inline functions due to a GCC bug. */
> #define register_hotmemory_notifier(nb) ({ (void)(nb); 0; })
> #define unregister_hotmemory_notifier(nb) ({ (void)(nb); })

You can't use the standard do {} while (0)?

2013-04-30 16:29:43

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] memory hotplug: fix warnings

On Tue, 30 Apr 2013 09:17:11 -0700 (PDT) David Rientjes <[email protected]> wrote:

> On Tue, 30 Apr 2013, Vincent Stehl__ wrote:
>
> > diff --git a/include/linux/memory.h b/include/linux/memory.h
> > index 73817af..85c31a8 100644
> > --- a/include/linux/memory.h
> > +++ b/include/linux/memory.h
> > @@ -137,7 +137,7 @@ enum mem_add_context { BOOT, HOTPLUG };
> > #define register_hotmemory_notifier(nb) register_memory_notifier(nb)
> > #define unregister_hotmemory_notifier(nb) unregister_memory_notifier(nb)
> > #else
> > -#define hotplug_memory_notifier(fn, pri) (0)
> > +#define hotplug_memory_notifier(fn, pri) ({ 0; })
> > /* These aren't inline functions due to a GCC bug. */
> > #define register_hotmemory_notifier(nb) ({ (void)(nb); 0; })
> > #define unregister_hotmemory_notifier(nb) ({ (void)(nb); })
>
> You can't use the standard do {} while (0)?

register_memory_notifier() (and hence hotplug_memory_notifier())
returns an errno. Which nobody bothers checking.

2013-04-30 16:54:27

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH] memory hotplug: fix warnings

On Tue, 30 Apr 2013, Andrew Morton wrote:

> > > diff --git a/include/linux/memory.h b/include/linux/memory.h
> > > index 73817af..85c31a8 100644
> > > --- a/include/linux/memory.h
> > > +++ b/include/linux/memory.h
> > > @@ -137,7 +137,7 @@ enum mem_add_context { BOOT, HOTPLUG };
> > > #define register_hotmemory_notifier(nb) register_memory_notifier(nb)
> > > #define unregister_hotmemory_notifier(nb) unregister_memory_notifier(nb)
> > > #else
> > > -#define hotplug_memory_notifier(fn, pri) (0)
> > > +#define hotplug_memory_notifier(fn, pri) ({ 0; })
> > > /* These aren't inline functions due to a GCC bug. */
> > > #define register_hotmemory_notifier(nb) ({ (void)(nb); 0; })
> > > #define unregister_hotmemory_notifier(nb) ({ (void)(nb); })
> >
> > You can't use the standard do {} while (0)?
>
> register_memory_notifier() (and hence hotplug_memory_notifier())
> returns an errno. Which nobody bothers checking.
>

The notifier itself is statically allocated so there's no memory
allocations in this path, there's no chance it'll fail. Should we just
make register_memory_notifier() return void?

2013-04-30 17:04:23

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] memory hotplug: fix warnings

On Tue, 30 Apr 2013 09:54:18 -0700 (PDT) David Rientjes <[email protected]> wrote:

> On Tue, 30 Apr 2013, Andrew Morton wrote:
>
> > > > diff --git a/include/linux/memory.h b/include/linux/memory.h
> > > > index 73817af..85c31a8 100644
> > > > --- a/include/linux/memory.h
> > > > +++ b/include/linux/memory.h
> > > > @@ -137,7 +137,7 @@ enum mem_add_context { BOOT, HOTPLUG };
> > > > #define register_hotmemory_notifier(nb) register_memory_notifier(nb)
> > > > #define unregister_hotmemory_notifier(nb) unregister_memory_notifier(nb)
> > > > #else
> > > > -#define hotplug_memory_notifier(fn, pri) (0)
> > > > +#define hotplug_memory_notifier(fn, pri) ({ 0; })
> > > > /* These aren't inline functions due to a GCC bug. */
> > > > #define register_hotmemory_notifier(nb) ({ (void)(nb); 0; })
> > > > #define unregister_hotmemory_notifier(nb) ({ (void)(nb); })
> > >
> > > You can't use the standard do {} while (0)?
> >
> > register_memory_notifier() (and hence hotplug_memory_notifier())
> > returns an errno. Which nobody bothers checking.
> >
>
> The notifier itself is statically allocated so there's no memory
> allocations in this path, there's no chance it'll fail. Should we just
> make register_memory_notifier() return void?

Drill down and we end up in notifier_chain_register(), which
unconditionally returns 0.

So we can either leave things as they are under the assumption that
notifier_chain_register() might one day be changed to return an errno
or we can change everything to return void.