Re: [patch] mm, oom: header nodemask is NULL when cpusets are disabled

From: David Rientjes
Date: Fri Jan 20 2017 - 05:02:55 EST


On Fri, 20 Jan 2017, Vlastimil Babka wrote:

> Could we simplify both patches with something like this?
> Although the sizeof("null") is not the nicest thing, because it relies on knowledge
> that pointer() in lib/vsprintf.c uses this string. Maybe Rasmus has some better idea?
>
> Thanks,
> Vlastimil
>
> diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h
> index f746e44d4046..4add88ef63f0 100644
> --- a/include/linux/nodemask.h
> +++ b/include/linux/nodemask.h
> @@ -103,7 +103,7 @@ extern nodemask_t _unused_nodemask_arg_;
> *
> * Can be used to provide arguments for '%*pb[l]' when printing a nodemask.
> */
> -#define nodemask_pr_args(maskp) MAX_NUMNODES, (maskp)->bits
> +#define nodemask_pr_args(maskp) ((maskp) ? MAX_NUMNODES : (int) sizeof("null")), ((maskp) ? (maskp)->bits : NULL)
>
> /*
> * The inline keyword gives the compiler room to decide to inline, or
>

That's creative. I'm not sure if it's worth it considering
nodemask_pr_args() is usually used in a context where we know we have a
nodemask :) These would be the only two exceptions.