lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Date:	Wed, 10 Apr 2013 07:46:47 +0800
From:	Fengguang Wu <fengguang.wu@...el.com>
To:	Steven Rostedt <rostedt@...dmis.org>
Cc:	Frederic Weisbecker <fweisbec@...il.com>, kbuild-all@...org,
	Christopher Li <sparse@...isli.org>,
	LKML <linux-kernel@...r.kernel.org>
Subject: Re: include/trace/events/kmem.h:47:1: sparse: cast from restricted
 gfp_t

On Tue, Apr 09, 2013 at 11:51:19AM -0400, Steven Rostedt wrote:
> On Sat, 2013-04-06 at 12:08 +0800, kbuild test robot wrote:
> > tree:   git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux master
> > head:   d08d528dc1848fb369a0b27cdb0749d8f6f38063
> > commit: 62ba180e80f4194a498585ac0e4c07daa8ca08d1 tracing: add flag output for kmem events
> > date:   3 years, 10 months ago
> > 
> > 
> > sparse warnings: (new ones prefixed by >>)
> 
> These are meaningless errors. I don't see anything here that we should
> be concerned about.

Sorry. It's the second time I see such gfp_t warnings commented as
harmless.

Should I blacklist "sparse: cast from restricted gfp_t", or the more
general pattern "sparse: cast from restricted"?

Thanks,
Fengguang
 
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:47:1: sparse: incorrect type in argument 3 (different base types)
> >    include/trace/events/kmem.h:47:1:    expected unsigned long [unsigned] flags
> >    include/trace/events/kmem.h:47:1:    got restricted gfp_t [usertype] gfp_flags
> >    include/trace/events/kmem.h:47:1: sparse: symbol 'ftrace_raw_output_kmalloc' was not declared. Should it be static?
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:81:1: sparse: incorrect type in argument 3 (different base types)
> >    include/trace/events/kmem.h:81:1:    expected unsigned long [unsigned] flags
> >    include/trace/events/kmem.h:81:1:    got restricted gfp_t [usertype] gfp_flags
> >    include/trace/events/kmem.h:81:1: sparse: symbol 'ftrace_raw_output_kmem_cache_alloc' was not declared. Should it be static?
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:115:1: sparse: incorrect type in argument 3 (different base types)
> >    include/trace/events/kmem.h:115:1:    expected unsigned long [unsigned] flags
> >    include/trace/events/kmem.h:115:1:    got restricted gfp_t [usertype] gfp_flags
> >    include/trace/events/kmem.h:115:1: sparse: symbol 'ftrace_raw_output_kmalloc_node' was not declared. Should it be static?
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: cast from restricted gfp_t
> > >> include/trace/events/kmem.h:153:1: sparse: incorrect type in argument 3 (different base types)
> >    include/trace/events/kmem.h:153:1:    expected unsigned long [unsigned] flags
> >    include/trace/events/kmem.h:153:1:    got restricted gfp_t [usertype] gfp_flags
> > >> include/trace/events/kmem.h:153:1: sparse: too many warnings
> >    include/trace/events/kmem.h:47:1: sparse: incompatible types for operation (<)
> >    include/trace/events/kmem.h:47:1:    left side has type void const *<noident>
> >    include/trace/events/kmem.h:47:1:    right side has type int
> >    include/trace/events/kmem.h:81:1: sparse: incompatible types for operation (<)
> >    include/trace/events/kmem.h:81:1:    left side has type void const *<noident>
> >    include/trace/events/kmem.h:81:1:    right side has type int
> >    include/trace/events/kmem.h:115:1: sparse: incompatible types for operation (<)
> >    include/trace/events/kmem.h:115:1:    left side has type void const *<noident>
> >    include/trace/events/kmem.h:115:1:    right side has type int
> >    include/trace/events/kmem.h:153:1: sparse: incompatible types for operation (<)
> >    include/trace/events/kmem.h:153:1:    left side has type void const *<noident>
> >    include/trace/events/kmem.h:153:1:    right side has type int
> >    include/trace/events/kmem.h:191:1: sparse: incompatible types for operation (<)
> >    include/trace/events/kmem.h:191:1:    left side has type void const *<noident>
> >    include/trace/events/kmem.h:191:1:    right side has type int
> >    include/trace/events/kmem.h:210:1: sparse: incompatible types for operation (<)
> >    include/trace/events/kmem.h:210:1:    left side has type void const *<noident>
> >    include/trace/events/kmem.h:210:1:    right side has type int
> >    In file included from arch/x86/include/asm/smp.h:13:0,
> >                     from arch/x86/include/asm/mmzone_64.h:12,
> >                     from arch/x86/include/asm/mmzone.h:4,
> >                     from include/linux/mmzone.h:775,
> >                     from include/linux/gfp.h:4,
> >                     from include/linux/mm.h:8,
> >                     from mm/util.c:1:
> >    arch/x86/include/asm/apic.h: In function 'native_apic_msr_read':
> >    arch/x86/include/asm/apic.h:135:11: warning: variable 'high' set but not used [-Wunused-but-set-variable]
> >    arch/x86/include/asm/apic.h: In function 'x2apic_enabled':
> >    arch/x86/include/asm/apic.h:176:11: warning: variable 'msr2' set but not used [-Wunused-but-set-variable]
> >    In file included from include/trace/ftrace.h:162:0,
> >                     from include/trace/define_trace.h:56,
> >                     from include/trace/events/kmem.h:231,
> >                     from mm/util.c:10:
> >    include/trace/events/kmem.h: In function 'ftrace_raw_output_kfree':
> >    include/trace/events/kmem.h:191:1: warning: variable 'p' set but not used [-Wunused-but-set-variable]
> >    include/trace/events/kmem.h: In function 'ftrace_raw_output_kmem_cache_free':
> >    include/trace/events/kmem.h:210:1: warning: variable 'p' set but not used [-Wunused-but-set-variable]
> > 
> > vim +47 include/trace/events/kmem.h
> > 
> >     41		{(unsigned long)__GFP_HARDWALL,		"GFP_HARDWALL"},	\
> >     42		{(unsigned long)__GFP_THISNODE,		"GFP_THISNODE"},	\
> >     43		{(unsigned long)__GFP_RECLAIMABLE,	"GFP_RECLAIMABLE"},	\
> >     44		{(unsigned long)__GFP_MOVABLE,		"GFP_MOVABLE"}		\
> >     45		) : "GFP_NOWAIT"
> >     46	
> >   > 47	TRACE_EVENT(kmalloc,
> >     48	
> >     49		TP_PROTO(unsigned long call_site,
> >     50			 const void *ptr,
> >     51			 size_t bytes_req,
> >     52			 size_t bytes_alloc,
> >     53			 gfp_t gfp_flags),
> >     54	
> >     55		TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
> >     56	
> >     57		TP_STRUCT__entry(
> >     58			__field(	unsigned long,	call_site	)
> >     59			__field(	const void *,	ptr		)
> >     60			__field(	size_t,		bytes_req	)
> >     61			__field(	size_t,		bytes_alloc	)
> >     62			__field(	gfp_t,		gfp_flags	)
> >     63		),
> >     64	
> >     65		TP_fast_assign(
> >     66			__entry->call_site	= call_site;
> >     67			__entry->ptr		= ptr;
> >     68			__entry->bytes_req	= bytes_req;
> >     69			__entry->bytes_alloc	= bytes_alloc;
> >     70			__entry->gfp_flags	= gfp_flags;
> >     71		),
> >     72	
> >     73		TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s",
> >     74			__entry->call_site,
> >     75			__entry->ptr,
> >     76			__entry->bytes_req,
> >     77			__entry->bytes_alloc,
> >     78			show_gfp_flags(__entry->gfp_flags))
> >     79	);
> >     80	
> >     81	TRACE_EVENT(kmem_cache_alloc,
> >     82	
> >     83		TP_PROTO(unsigned long call_site,
> >     84			 const void *ptr,
> >     85			 size_t bytes_req,
> >     86			 size_t bytes_alloc,
> >     87			 gfp_t gfp_flags),
> >     88	
> >     89		TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
> >     90	
> >     91		TP_STRUCT__entry(
> >     92			__field(	unsigned long,	call_site	)
> >     93			__field(	const void *,	ptr		)
> >     94			__field(	size_t,		bytes_req	)
> >     95			__field(	size_t,		bytes_alloc	)
> >     96			__field(	gfp_t,		gfp_flags	)
> >     97		),
> >     98	
> >     99		TP_fast_assign(
> >    100			__entry->call_site	= call_site;
> >    101			__entry->ptr		= ptr;
> >    102			__entry->bytes_req	= bytes_req;
> >    103			__entry->bytes_alloc	= bytes_alloc;
> >    104			__entry->gfp_flags	= gfp_flags;
> >    105		),
> >    106	
> >    107		TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s",
> >    108			__entry->call_site,
> >    109			__entry->ptr,
> >    110			__entry->bytes_req,
> >    111			__entry->bytes_alloc,
> >    112			show_gfp_flags(__entry->gfp_flags))
> >    113	);
> >    114	
> >    115	TRACE_EVENT(kmalloc_node,
> >    116	
> >    117		TP_PROTO(unsigned long call_site,
> >    118			 const void *ptr,
> >    119			 size_t bytes_req,
> >    120			 size_t bytes_alloc,
> >    121			 gfp_t gfp_flags,
> >    122			 int node),
> >    123	
> >    124		TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
> >    125	
> >    126		TP_STRUCT__entry(
> >    127			__field(	unsigned long,	call_site	)
> >    128			__field(	const void *,	ptr		)
> >    129			__field(	size_t,		bytes_req	)
> >    130			__field(	size_t,		bytes_alloc	)
> >    131			__field(	gfp_t,		gfp_flags	)
> >    132			__field(	int,		node		)
> >    133		),
> >    134	
> >    135		TP_fast_assign(
> >    136			__entry->call_site	= call_site;
> >    137			__entry->ptr		= ptr;
> >    138			__entry->bytes_req	= bytes_req;
> >    139			__entry->bytes_alloc	= bytes_alloc;
> >    140			__entry->gfp_flags	= gfp_flags;
> >    141			__entry->node		= node;
> >    142		),
> >    143	
> >    144		TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s node=%d",
> >    145			__entry->call_site,
> >    146			__entry->ptr,
> >    147			__entry->bytes_req,
> >    148			__entry->bytes_alloc,
> >    149			show_gfp_flags(__entry->gfp_flags),
> >    150			__entry->node)
> >    151	);
> >    152	
> >    153	TRACE_EVENT(kmem_cache_alloc_node,
> >    154	
> >    155		TP_PROTO(unsigned long call_site,
> >    156			 const void *ptr,
> > 
> > ---
> > 0-DAY kernel build testing backend              Open Source Technology Center
> > http://lists.01.org/mailman/listinfo/kbuild                 Intel Corporation
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ