mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 22:26:12 +00:00 
			
		
		
		
	 7d720c3e4f
			
		
	
	
		7d720c3e4f
		
	
	
	
	
		
			
			Add __percpu sparse annotations to net. These annotations are to make sparse consider percpu variables to be in a different address space and warn if accessed without going through percpu accessors. This patch doesn't affect normal builds. The macro and type tricks around snmp stats make things a bit interesting. DEFINE/DECLARE_SNMP_STAT() macros mark the target field as __percpu and SNMP_UPD_PO_STATS() macro is updated accordingly. All snmp_mib_*() users which used to cast the argument to (void **) are updated to cast it to (void __percpu **). Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: David S. Miller <davem@davemloft.net> Cc: Patrick McHardy <kaber@trash.net> Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> Cc: Vlad Yasevich <vladislav.yasevich@hp.com> Cc: netdev@vger.kernel.org Signed-off-by: David S. Miller <davem@davemloft.net>
		
			
				
	
	
		
			36 lines
		
	
	
		
			907 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			907 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __NETNS_CONNTRACK_H
 | |
| #define __NETNS_CONNTRACK_H
 | |
| 
 | |
| #include <linux/list.h>
 | |
| #include <linux/list_nulls.h>
 | |
| #include <asm/atomic.h>
 | |
| 
 | |
| struct ctl_table_header;
 | |
| struct nf_conntrack_ecache;
 | |
| 
 | |
| struct netns_ct {
 | |
| 	atomic_t		count;
 | |
| 	unsigned int		expect_count;
 | |
| 	unsigned int		htable_size;
 | |
| 	struct kmem_cache	*nf_conntrack_cachep;
 | |
| 	struct hlist_nulls_head	*hash;
 | |
| 	struct hlist_head	*expect_hash;
 | |
| 	struct hlist_nulls_head	unconfirmed;
 | |
| 	struct hlist_nulls_head	dying;
 | |
| 	struct ip_conntrack_stat __percpu *stat;
 | |
| 	int			sysctl_events;
 | |
| 	unsigned int		sysctl_events_retry_timeout;
 | |
| 	int			sysctl_acct;
 | |
| 	int			sysctl_checksum;
 | |
| 	unsigned int		sysctl_log_invalid; /* Log invalid packets */
 | |
| #ifdef CONFIG_SYSCTL
 | |
| 	struct ctl_table_header	*sysctl_header;
 | |
| 	struct ctl_table_header	*acct_sysctl_header;
 | |
| 	struct ctl_table_header	*event_sysctl_header;
 | |
| #endif
 | |
| 	int			hash_vmalloc;
 | |
| 	int			expect_vmalloc;
 | |
| 	char			*slabname;
 | |
| };
 | |
| #endif
 |