Re: [PATCH-ugly] kmemtrace: casting a gfp_t requires __force

From: Eduard - Gabriel Munteanu
Date: Fri Nov 07 2008 - 18:05:47 EST


On Fri, Nov 07, 2008 at 10:58:41AM -0800, Harvey Harrison wrote:
> gfp_t is a bitwise type, casting to unsigned long produces a
> warning. Suppress it with __force.
>
> Otherwise sparse complains thusly:
> include/linux/kmemtrace.h:33:2: warning: cast from restricted gfp_t
>
> Signed-off-by: Harvey Harrison <harvey.harrison@xxxxxxxxx>
> ---
> Eduard, this is a local patch I've had sitting around in my sparse testing
> tree. I'm really not sure what the appropriate format specifier is for a
> gfp_t, but I don't think the trace infrastructure has support for it
> anyway...so if you are going to keep casting to unsigned long you'll need
> this...perhaps with a comment why added.
>
> include/linux/kmemtrace.h | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/kmemtrace.h b/include/linux/kmemtrace.h
> index 5bea8ea..9d82085 100644
> --- a/include/linux/kmemtrace.h
> +++ b/include/linux/kmemtrace.h
> @@ -34,7 +34,7 @@ static inline void kmemtrace_mark_alloc_node(enum kmemtrace_type_id type_id,
> "bytes_req %lu bytes_alloc %lu gfp_flags %lu node %d",
> type_id, call_site, (unsigned long) ptr,
> (unsigned long) bytes_req, (unsigned long) bytes_alloc,
> - (unsigned long) gfp_flags, node);
> + (__force unsigned long)gfp_flags, node);
> }
>
> static inline void kmemtrace_mark_free(enum kmemtrace_type_id type_id,
> --
> 1.6.0.3.756.gb776d

Thanks. It looks like the right thing to do, especially that linux/gfp.h does
it, IIRC. Although there's a missing whitespace and the commit name is a
bit longish. I would recommend "kmemtrace: Suppress gfp_t casting
warning with __force.", and telling that __bitwise & sparse story within
the commit description. Could you fix it so Pekka can cleanly send it
to Linus?


Thanks,
Eduard

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/