mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-03 18:20:25 +02:00 
			
		
		
		
	treewide: Use sizeof_field() macro
Replace all the occurrences of FIELD_SIZEOF() with sizeof_field() except at places where these are defined. Later patches will remove the unused definition of FIELD_SIZEOF(). This patch is generated using following script: EXCLUDE_FILES="include/linux/stddef.h|include/linux/kernel.h" git grep -l -e "\bFIELD_SIZEOF\b" | while read file; do if [[ "$file" =~ $EXCLUDE_FILES ]]; then continue fi sed -i -e 's/\bFIELD_SIZEOF\b/sizeof_field/g' $file; done Signed-off-by: Pankaj Bharadiya <pankaj.laxminarayan.bharadiya@intel.com> Link: https://lore.kernel.org/r/20190924105839.110713-3-pankaj.laxminarayan.bharadiya@intel.com Co-developed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Kees Cook <keescook@chromium.org> Acked-by: David Miller <davem@davemloft.net> # for net
This commit is contained in:
		
							parent
							
								
									e43723292d
								
							
						
					
					
						commit
						c593642c8b
					
				
					 115 changed files with 298 additions and 298 deletions
				
			
		| 
						 | 
				
			
			@ -988,7 +988,7 @@ Similarly, if you need to calculate the size of some structure member, use
 | 
			
		|||
 | 
			
		||||
.. code-block:: c
 | 
			
		||||
 | 
			
		||||
	#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
 | 
			
		||||
	#define sizeof_field(t, f) (sizeof(((t*)0)->f))
 | 
			
		||||
 | 
			
		||||
There are also min() and max() macros that do strict type checking if you
 | 
			
		||||
need them.  Feel free to peruse that header file to see what else is already
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1005,7 +1005,7 @@ struttura, usate
 | 
			
		|||
 | 
			
		||||
.. code-block:: c
 | 
			
		||||
 | 
			
		||||
	#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
 | 
			
		||||
	#define sizeof_field(t, f) (sizeof(((t*)0)->f))
 | 
			
		||||
 | 
			
		||||
Ci sono anche le macro min() e max() che, se vi serve, effettuano un controllo
 | 
			
		||||
rigido sui tipi.  Sentitevi liberi di leggere attentamente questo file
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -826,7 +826,7 @@ inline gcc 也可以自动使其内联。而且其他用户可能会要求移除
 | 
			
		|||
 | 
			
		||||
.. code-block:: c
 | 
			
		||||
 | 
			
		||||
	#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
 | 
			
		||||
	#define sizeof_field(t, f) (sizeof(((t*)0)->f))
 | 
			
		||||
 | 
			
		||||
还有可以做严格的类型检查的 min() 和 max() 宏,如果你需要可以使用它们。你可以
 | 
			
		||||
自己看看那个头文件里还定义了什么你可以拿来用的东西,如果有定义的话,你就不应
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,10 +42,10 @@ do {						\
 | 
			
		|||
 | 
			
		||||
#define EXTRA_INFO(f) { \
 | 
			
		||||
		BUILD_BUG_ON_ZERO(offsetof(struct unwind_frame_info, f) \
 | 
			
		||||
				% FIELD_SIZEOF(struct unwind_frame_info, f)) \
 | 
			
		||||
				% sizeof_field(struct unwind_frame_info, f)) \
 | 
			
		||||
				+ offsetof(struct unwind_frame_info, f) \
 | 
			
		||||
				/ FIELD_SIZEOF(struct unwind_frame_info, f), \
 | 
			
		||||
				FIELD_SIZEOF(struct unwind_frame_info, f) \
 | 
			
		||||
				/ sizeof_field(struct unwind_frame_info, f), \
 | 
			
		||||
				sizeof_field(struct unwind_frame_info, f) \
 | 
			
		||||
	}
 | 
			
		||||
#define PTREGS_INFO(f) EXTRA_INFO(regs.f)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -97,12 +97,12 @@ DECLARE_LOAD_FUNC(sk_load_byte_msh);
 | 
			
		|||
#ifdef CONFIG_SMP
 | 
			
		||||
#ifdef CONFIG_PPC64
 | 
			
		||||
#define PPC_BPF_LOAD_CPU(r)		\
 | 
			
		||||
	do { BUILD_BUG_ON(FIELD_SIZEOF(struct paca_struct, paca_index) != 2);	\
 | 
			
		||||
	do { BUILD_BUG_ON(sizeof_field(struct paca_struct, paca_index) != 2);	\
 | 
			
		||||
		PPC_LHZ_OFFS(r, 13, offsetof(struct paca_struct, paca_index));	\
 | 
			
		||||
	} while (0)
 | 
			
		||||
#else
 | 
			
		||||
#define PPC_BPF_LOAD_CPU(r)     \
 | 
			
		||||
	do { BUILD_BUG_ON(FIELD_SIZEOF(struct task_struct, cpu) != 4);		\
 | 
			
		||||
	do { BUILD_BUG_ON(sizeof_field(struct task_struct, cpu) != 4);		\
 | 
			
		||||
		PPC_LHZ_OFFS(r, 2, offsetof(struct task_struct, cpu));		\
 | 
			
		||||
	} while(0)
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -321,7 +321,7 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
 | 
			
		|||
			ctx->seen |= SEEN_XREG | SEEN_MEM | (1<<(K & 0xf));
 | 
			
		||||
			break;
 | 
			
		||||
		case BPF_LD | BPF_W | BPF_LEN: /*	A = skb->len; */
 | 
			
		||||
			BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, len) != 4);
 | 
			
		||||
			BUILD_BUG_ON(sizeof_field(struct sk_buff, len) != 4);
 | 
			
		||||
			PPC_LWZ_OFFS(r_A, r_skb, offsetof(struct sk_buff, len));
 | 
			
		||||
			break;
 | 
			
		||||
		case BPF_LDX | BPF_W | BPF_ABS: /* A = *((u32 *)(seccomp_data + K)); */
 | 
			
		||||
| 
						 | 
				
			
			@ -333,16 +333,16 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
 | 
			
		|||
 | 
			
		||||
			/*** Ancillary info loads ***/
 | 
			
		||||
		case BPF_ANC | SKF_AD_PROTOCOL: /* A = ntohs(skb->protocol); */
 | 
			
		||||
			BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff,
 | 
			
		||||
			BUILD_BUG_ON(sizeof_field(struct sk_buff,
 | 
			
		||||
						  protocol) != 2);
 | 
			
		||||
			PPC_NTOHS_OFFS(r_A, r_skb, offsetof(struct sk_buff,
 | 
			
		||||
							    protocol));
 | 
			
		||||
			break;
 | 
			
		||||
		case BPF_ANC | SKF_AD_IFINDEX:
 | 
			
		||||
		case BPF_ANC | SKF_AD_HATYPE:
 | 
			
		||||
			BUILD_BUG_ON(FIELD_SIZEOF(struct net_device,
 | 
			
		||||
			BUILD_BUG_ON(sizeof_field(struct net_device,
 | 
			
		||||
						ifindex) != 4);
 | 
			
		||||
			BUILD_BUG_ON(FIELD_SIZEOF(struct net_device,
 | 
			
		||||
			BUILD_BUG_ON(sizeof_field(struct net_device,
 | 
			
		||||
						type) != 2);
 | 
			
		||||
			PPC_LL_OFFS(r_scratch1, r_skb, offsetof(struct sk_buff,
 | 
			
		||||
								dev));
 | 
			
		||||
| 
						 | 
				
			
			@ -365,17 +365,17 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
 | 
			
		|||
 | 
			
		||||
			break;
 | 
			
		||||
		case BPF_ANC | SKF_AD_MARK:
 | 
			
		||||
			BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, mark) != 4);
 | 
			
		||||
			BUILD_BUG_ON(sizeof_field(struct sk_buff, mark) != 4);
 | 
			
		||||
			PPC_LWZ_OFFS(r_A, r_skb, offsetof(struct sk_buff,
 | 
			
		||||
							  mark));
 | 
			
		||||
			break;
 | 
			
		||||
		case BPF_ANC | SKF_AD_RXHASH:
 | 
			
		||||
			BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, hash) != 4);
 | 
			
		||||
			BUILD_BUG_ON(sizeof_field(struct sk_buff, hash) != 4);
 | 
			
		||||
			PPC_LWZ_OFFS(r_A, r_skb, offsetof(struct sk_buff,
 | 
			
		||||
							  hash));
 | 
			
		||||
			break;
 | 
			
		||||
		case BPF_ANC | SKF_AD_VLAN_TAG:
 | 
			
		||||
			BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, vlan_tci) != 2);
 | 
			
		||||
			BUILD_BUG_ON(sizeof_field(struct sk_buff, vlan_tci) != 2);
 | 
			
		||||
 | 
			
		||||
			PPC_LHZ_OFFS(r_A, r_skb, offsetof(struct sk_buff,
 | 
			
		||||
							  vlan_tci));
 | 
			
		||||
| 
						 | 
				
			
			@ -388,7 +388,7 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
 | 
			
		|||
				PPC_ANDI(r_A, r_A, 1);
 | 
			
		||||
			break;
 | 
			
		||||
		case BPF_ANC | SKF_AD_QUEUE:
 | 
			
		||||
			BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff,
 | 
			
		||||
			BUILD_BUG_ON(sizeof_field(struct sk_buff,
 | 
			
		||||
						  queue_mapping) != 2);
 | 
			
		||||
			PPC_LHZ_OFFS(r_A, r_skb, offsetof(struct sk_buff,
 | 
			
		||||
							  queue_mapping));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -180,19 +180,19 @@ do {									\
 | 
			
		|||
 | 
			
		||||
#define emit_loadptr(BASE, STRUCT, FIELD, DEST)				\
 | 
			
		||||
do {	unsigned int _off = offsetof(STRUCT, FIELD);			\
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(void *));	\
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(STRUCT, FIELD) != sizeof(void *));	\
 | 
			
		||||
	*prog++ = LDPTRI | RS1(BASE) | S13(_off) | RD(DEST);		\
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define emit_load32(BASE, STRUCT, FIELD, DEST)				\
 | 
			
		||||
do {	unsigned int _off = offsetof(STRUCT, FIELD);			\
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(u32));	\
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(STRUCT, FIELD) != sizeof(u32));	\
 | 
			
		||||
	*prog++ = LD32I | RS1(BASE) | S13(_off) | RD(DEST);		\
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define emit_load16(BASE, STRUCT, FIELD, DEST)				\
 | 
			
		||||
do {	unsigned int _off = offsetof(STRUCT, FIELD);			\
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(u16));	\
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(STRUCT, FIELD) != sizeof(u16));	\
 | 
			
		||||
	*prog++ = LD16I | RS1(BASE) | S13(_off) | RD(DEST);		\
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -202,7 +202,7 @@ do {	unsigned int _off = offsetof(STRUCT, FIELD);			\
 | 
			
		|||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define emit_load8(BASE, STRUCT, FIELD, DEST)				\
 | 
			
		||||
do {	BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(u8));	\
 | 
			
		||||
do {	BUILD_BUG_ON(sizeof_field(STRUCT, FIELD) != sizeof(u8));	\
 | 
			
		||||
	__emit_load8(BASE, STRUCT, FIELD, DEST);			\
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -259,7 +259,7 @@ static void __init setup_xstate_features(void)
 | 
			
		|||
						   xmm_space);
 | 
			
		||||
 | 
			
		||||
	xstate_offsets[XFEATURE_SSE]	= xstate_sizes[XFEATURE_FP];
 | 
			
		||||
	xstate_sizes[XFEATURE_SSE]	= FIELD_SIZEOF(struct fxregs_state,
 | 
			
		||||
	xstate_sizes[XFEATURE_SSE]	= sizeof_field(struct fxregs_state,
 | 
			
		||||
						       xmm_space);
 | 
			
		||||
 | 
			
		||||
	for (i = FIRST_EXTENDED_XFEATURE; i < XFEATURE_MAX; i++) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1792,9 +1792,9 @@ int __init blk_dev_init(void)
 | 
			
		|||
{
 | 
			
		||||
	BUILD_BUG_ON(REQ_OP_LAST >= (1 << REQ_OP_BITS));
 | 
			
		||||
	BUILD_BUG_ON(REQ_OP_BITS + REQ_FLAG_BITS > 8 *
 | 
			
		||||
			FIELD_SIZEOF(struct request, cmd_flags));
 | 
			
		||||
			sizeof_field(struct request, cmd_flags));
 | 
			
		||||
	BUILD_BUG_ON(REQ_OP_BITS + REQ_FLAG_BITS > 8 *
 | 
			
		||||
			FIELD_SIZEOF(struct bio, bi_opf));
 | 
			
		||||
			sizeof_field(struct bio, bi_opf));
 | 
			
		||||
 | 
			
		||||
	/* used for unplugging and affects IO latency/throughput - HIGHPRI */
 | 
			
		||||
	kblockd_workqueue = alloc_workqueue("kblockd",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -436,10 +436,10 @@ static int adiantum_init_tfm(struct crypto_skcipher *tfm)
 | 
			
		|||
 | 
			
		||||
	BUILD_BUG_ON(offsetofend(struct adiantum_request_ctx, u) !=
 | 
			
		||||
		     sizeof(struct adiantum_request_ctx));
 | 
			
		||||
	subreq_size = max(FIELD_SIZEOF(struct adiantum_request_ctx,
 | 
			
		||||
	subreq_size = max(sizeof_field(struct adiantum_request_ctx,
 | 
			
		||||
				       u.hash_desc) +
 | 
			
		||||
			  crypto_shash_descsize(hash),
 | 
			
		||||
			  FIELD_SIZEOF(struct adiantum_request_ctx,
 | 
			
		||||
			  sizeof_field(struct adiantum_request_ctx,
 | 
			
		||||
				       u.streamcipher_req) +
 | 
			
		||||
			  crypto_skcipher_reqsize(streamcipher));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -347,7 +347,7 @@ static int essiv_aead_init_tfm(struct crypto_aead *tfm)
 | 
			
		|||
	if (IS_ERR(aead))
 | 
			
		||||
		return PTR_ERR(aead);
 | 
			
		||||
 | 
			
		||||
	subreq_size = FIELD_SIZEOF(struct essiv_aead_request_ctx, aead_req) +
 | 
			
		||||
	subreq_size = sizeof_field(struct essiv_aead_request_ctx, aead_req) +
 | 
			
		||||
		      crypto_aead_reqsize(aead);
 | 
			
		||||
 | 
			
		||||
	tctx->ivoffset = offsetof(struct essiv_aead_request_ctx, aead_req) +
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -681,7 +681,7 @@ device_initcall(efi_load_efivars);
 | 
			
		|||
		{ name },				   \
 | 
			
		||||
		{ prop },				   \
 | 
			
		||||
		offsetof(struct efi_fdt_params, field),    \
 | 
			
		||||
		FIELD_SIZEOF(struct efi_fdt_params, field) \
 | 
			
		||||
		sizeof_field(struct efi_fdt_params, field) \
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
struct params {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -145,7 +145,7 @@ static inline bool is_rdma_read_cap(struct efa_dev *dev)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#define field_avail(x, fld, sz) (offsetof(typeof(x), fld) + \
 | 
			
		||||
				 FIELD_SIZEOF(typeof(x), fld) <= (sz))
 | 
			
		||||
				 sizeof_field(typeof(x), fld) <= (sz))
 | 
			
		||||
 | 
			
		||||
#define is_reserved_cleared(reserved) \
 | 
			
		||||
	!memchr_inv(reserved, 0, sizeof(reserved))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -848,7 +848,7 @@ static const struct rhashtable_params sdma_rht_params = {
 | 
			
		|||
	.nelem_hint = NR_CPUS_HINT,
 | 
			
		||||
	.head_offset = offsetof(struct sdma_rht_node, node),
 | 
			
		||||
	.key_offset = offsetof(struct sdma_rht_node, cpu_id),
 | 
			
		||||
	.key_len = FIELD_SIZEOF(struct sdma_rht_node, cpu_id),
 | 
			
		||||
	.key_len = sizeof_field(struct sdma_rht_node, cpu_id),
 | 
			
		||||
	.max_size = NR_CPUS,
 | 
			
		||||
	.min_size = 8,
 | 
			
		||||
	.automatic_shrinking = true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,9 +107,9 @@ enum {
 | 
			
		|||
	HFI1_HAS_GRH = (1 << 0),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define LRH_16B_BYTES (FIELD_SIZEOF(struct hfi1_16b_header, lrh))
 | 
			
		||||
#define LRH_16B_BYTES (sizeof_field(struct hfi1_16b_header, lrh))
 | 
			
		||||
#define LRH_16B_DWORDS (LRH_16B_BYTES / sizeof(u32))
 | 
			
		||||
#define LRH_9B_BYTES (FIELD_SIZEOF(struct ib_header, lrh))
 | 
			
		||||
#define LRH_9B_BYTES (sizeof_field(struct ib_header, lrh))
 | 
			
		||||
#define LRH_9B_DWORDS (LRH_9B_BYTES / sizeof(u32))
 | 
			
		||||
 | 
			
		||||
/* 24Bits for qpn, upper 8Bits reserved */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,7 +63,7 @@ struct vnic_stats {
 | 
			
		|||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define VNIC_STAT(m)            { FIELD_SIZEOF(struct opa_vnic_stats, m),   \
 | 
			
		||||
#define VNIC_STAT(m)            { sizeof_field(struct opa_vnic_stats, m),   \
 | 
			
		||||
				  offsetof(struct opa_vnic_stats, m) }
 | 
			
		||||
 | 
			
		||||
static struct vnic_stats vnic_gstrings_stats[] = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1360,7 +1360,7 @@ int ppl_init_log(struct r5conf *conf)
 | 
			
		|||
		return -EINVAL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	max_disks = FIELD_SIZEOF(struct ppl_log, disk_flush_bitmap) *
 | 
			
		||||
	max_disks = sizeof_field(struct ppl_log, disk_flush_bitmap) *
 | 
			
		||||
		BITS_PER_BYTE;
 | 
			
		||||
	if (conf->raid_disks > max_disks) {
 | 
			
		||||
		pr_warn("md/raid:%s PPL doesn't support over %d disks in the array\n",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -753,7 +753,7 @@ static const struct preview_update update_attrs[] = {
 | 
			
		|||
		preview_config_luma_enhancement,
 | 
			
		||||
		preview_enable_luma_enhancement,
 | 
			
		||||
		offsetof(struct prev_params, luma),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, luma),
 | 
			
		||||
		sizeof_field(struct prev_params, luma),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, luma),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_INVALAW */ {
 | 
			
		||||
		NULL,
 | 
			
		||||
| 
						 | 
				
			
			@ -762,55 +762,55 @@ static const struct preview_update update_attrs[] = {
 | 
			
		|||
		preview_config_hmed,
 | 
			
		||||
		preview_enable_hmed,
 | 
			
		||||
		offsetof(struct prev_params, hmed),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, hmed),
 | 
			
		||||
		sizeof_field(struct prev_params, hmed),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, hmed),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_CFA */ {
 | 
			
		||||
		preview_config_cfa,
 | 
			
		||||
		NULL,
 | 
			
		||||
		offsetof(struct prev_params, cfa),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, cfa),
 | 
			
		||||
		sizeof_field(struct prev_params, cfa),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, cfa),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_CHROMA_SUPP */ {
 | 
			
		||||
		preview_config_chroma_suppression,
 | 
			
		||||
		preview_enable_chroma_suppression,
 | 
			
		||||
		offsetof(struct prev_params, csup),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, csup),
 | 
			
		||||
		sizeof_field(struct prev_params, csup),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, csup),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_WB */ {
 | 
			
		||||
		preview_config_whitebalance,
 | 
			
		||||
		NULL,
 | 
			
		||||
		offsetof(struct prev_params, wbal),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, wbal),
 | 
			
		||||
		sizeof_field(struct prev_params, wbal),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, wbal),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_BLKADJ */ {
 | 
			
		||||
		preview_config_blkadj,
 | 
			
		||||
		NULL,
 | 
			
		||||
		offsetof(struct prev_params, blkadj),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, blkadj),
 | 
			
		||||
		sizeof_field(struct prev_params, blkadj),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, blkadj),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_RGB2RGB */ {
 | 
			
		||||
		preview_config_rgb_blending,
 | 
			
		||||
		NULL,
 | 
			
		||||
		offsetof(struct prev_params, rgb2rgb),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, rgb2rgb),
 | 
			
		||||
		sizeof_field(struct prev_params, rgb2rgb),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, rgb2rgb),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_COLOR_CONV */ {
 | 
			
		||||
		preview_config_csc,
 | 
			
		||||
		NULL,
 | 
			
		||||
		offsetof(struct prev_params, csc),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, csc),
 | 
			
		||||
		sizeof_field(struct prev_params, csc),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, csc),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_YC_LIMIT */ {
 | 
			
		||||
		preview_config_yc_range,
 | 
			
		||||
		NULL,
 | 
			
		||||
		offsetof(struct prev_params, yclimit),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, yclimit),
 | 
			
		||||
		sizeof_field(struct prev_params, yclimit),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, yclimit),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_DEFECT_COR */ {
 | 
			
		||||
		preview_config_dcor,
 | 
			
		||||
		preview_enable_dcor,
 | 
			
		||||
		offsetof(struct prev_params, dcor),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, dcor),
 | 
			
		||||
		sizeof_field(struct prev_params, dcor),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, dcor),
 | 
			
		||||
	}, /* Previously OMAP3ISP_PREV_GAMMABYPASS, not used anymore */ {
 | 
			
		||||
		NULL,
 | 
			
		||||
| 
						 | 
				
			
			@ -828,13 +828,13 @@ static const struct preview_update update_attrs[] = {
 | 
			
		|||
		preview_config_noisefilter,
 | 
			
		||||
		preview_enable_noisefilter,
 | 
			
		||||
		offsetof(struct prev_params, nf),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, nf),
 | 
			
		||||
		sizeof_field(struct prev_params, nf),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, nf),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_GAMMA */ {
 | 
			
		||||
		preview_config_gammacorrn,
 | 
			
		||||
		preview_enable_gammacorrn,
 | 
			
		||||
		offsetof(struct prev_params, gamma),
 | 
			
		||||
		FIELD_SIZEOF(struct prev_params, gamma),
 | 
			
		||||
		sizeof_field(struct prev_params, gamma),
 | 
			
		||||
		offsetof(struct omap3isp_prev_update_config, gamma),
 | 
			
		||||
	}, /* OMAP3ISP_PREV_CONTRAST */ {
 | 
			
		||||
		preview_config_contrast,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2652,7 +2652,7 @@ struct v4l2_ioctl_info {
 | 
			
		|||
/* Zero struct from after the field to the end */
 | 
			
		||||
#define INFO_FL_CLEAR(v4l2_struct, field)			\
 | 
			
		||||
	((offsetof(struct v4l2_struct, field) +			\
 | 
			
		||||
	  FIELD_SIZEOF(struct v4l2_struct, field)) << 16)
 | 
			
		||||
	  sizeof_field(struct v4l2_struct, field)) << 16)
 | 
			
		||||
#define INFO_FL_CLEAR_MASK	(_IOC_SIZEMASK << 16)
 | 
			
		||||
 | 
			
		||||
#define DEFINE_V4L_STUB_FUNC(_vidioc)				\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -129,13 +129,13 @@ struct xgbe_stats {
 | 
			
		|||
 | 
			
		||||
#define XGMAC_MMC_STAT(_string, _var)				\
 | 
			
		||||
	{ _string,						\
 | 
			
		||||
	  FIELD_SIZEOF(struct xgbe_mmc_stats, _var),		\
 | 
			
		||||
	  sizeof_field(struct xgbe_mmc_stats, _var),		\
 | 
			
		||||
	  offsetof(struct xgbe_prv_data, mmc_stats._var),	\
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#define XGMAC_EXT_STAT(_string, _var)				\
 | 
			
		||||
	{ _string,						\
 | 
			
		||||
	  FIELD_SIZEOF(struct xgbe_ext_stats, _var),		\
 | 
			
		||||
	  sizeof_field(struct xgbe_ext_stats, _var),		\
 | 
			
		||||
	  offsetof(struct xgbe_prv_data, ext_stats._var),	\
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -205,11 +205,11 @@ static int __cvmx_bootmem_check_version(struct octeon_device *oct,
 | 
			
		|||
	major_version = (u32)__cvmx_bootmem_desc_get(
 | 
			
		||||
			oct, oct->bootmem_desc_addr,
 | 
			
		||||
			offsetof(struct cvmx_bootmem_desc, major_version),
 | 
			
		||||
			FIELD_SIZEOF(struct cvmx_bootmem_desc, major_version));
 | 
			
		||||
			sizeof_field(struct cvmx_bootmem_desc, major_version));
 | 
			
		||||
	minor_version = (u32)__cvmx_bootmem_desc_get(
 | 
			
		||||
			oct, oct->bootmem_desc_addr,
 | 
			
		||||
			offsetof(struct cvmx_bootmem_desc, minor_version),
 | 
			
		||||
			FIELD_SIZEOF(struct cvmx_bootmem_desc, minor_version));
 | 
			
		||||
			sizeof_field(struct cvmx_bootmem_desc, minor_version));
 | 
			
		||||
 | 
			
		||||
	dev_dbg(&oct->pci_dev->dev, "%s: major_version=%d\n", __func__,
 | 
			
		||||
		major_version);
 | 
			
		||||
| 
						 | 
				
			
			@ -237,13 +237,13 @@ static const struct cvmx_bootmem_named_block_desc
 | 
			
		|||
				oct, named_addr,
 | 
			
		||||
				offsetof(struct cvmx_bootmem_named_block_desc,
 | 
			
		||||
					 base_addr),
 | 
			
		||||
				FIELD_SIZEOF(
 | 
			
		||||
				sizeof_field(
 | 
			
		||||
					struct cvmx_bootmem_named_block_desc,
 | 
			
		||||
					base_addr));
 | 
			
		||||
		desc->size = __cvmx_bootmem_desc_get(oct, named_addr,
 | 
			
		||||
				offsetof(struct cvmx_bootmem_named_block_desc,
 | 
			
		||||
					 size),
 | 
			
		||||
				FIELD_SIZEOF(
 | 
			
		||||
				sizeof_field(
 | 
			
		||||
					struct cvmx_bootmem_named_block_desc,
 | 
			
		||||
					size));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -268,20 +268,20 @@ static u64 cvmx_bootmem_phy_named_block_find(struct octeon_device *oct,
 | 
			
		|||
					oct, oct->bootmem_desc_addr,
 | 
			
		||||
					offsetof(struct cvmx_bootmem_desc,
 | 
			
		||||
						 named_block_array_addr),
 | 
			
		||||
					FIELD_SIZEOF(struct cvmx_bootmem_desc,
 | 
			
		||||
					sizeof_field(struct cvmx_bootmem_desc,
 | 
			
		||||
						     named_block_array_addr));
 | 
			
		||||
		u32 num_blocks = (u32)__cvmx_bootmem_desc_get(
 | 
			
		||||
					oct, oct->bootmem_desc_addr,
 | 
			
		||||
					offsetof(struct cvmx_bootmem_desc,
 | 
			
		||||
						 nb_num_blocks),
 | 
			
		||||
					FIELD_SIZEOF(struct cvmx_bootmem_desc,
 | 
			
		||||
					sizeof_field(struct cvmx_bootmem_desc,
 | 
			
		||||
						     nb_num_blocks));
 | 
			
		||||
 | 
			
		||||
		u32 name_length = (u32)__cvmx_bootmem_desc_get(
 | 
			
		||||
					oct, oct->bootmem_desc_addr,
 | 
			
		||||
					offsetof(struct cvmx_bootmem_desc,
 | 
			
		||||
						 named_block_name_len),
 | 
			
		||||
					FIELD_SIZEOF(struct cvmx_bootmem_desc,
 | 
			
		||||
					sizeof_field(struct cvmx_bootmem_desc,
 | 
			
		||||
						     named_block_name_len));
 | 
			
		||||
 | 
			
		||||
		u64 named_addr = named_block_array_addr;
 | 
			
		||||
| 
						 | 
				
			
			@ -292,7 +292,7 @@ static u64 cvmx_bootmem_phy_named_block_find(struct octeon_device *oct,
 | 
			
		|||
					 offsetof(
 | 
			
		||||
					struct cvmx_bootmem_named_block_desc,
 | 
			
		||||
					size),
 | 
			
		||||
					 FIELD_SIZEOF(
 | 
			
		||||
					 sizeof_field(
 | 
			
		||||
					struct cvmx_bootmem_named_block_desc,
 | 
			
		||||
					size));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ struct be_ethtool_stat {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
enum {DRVSTAT_TX, DRVSTAT_RX, DRVSTAT};
 | 
			
		||||
#define FIELDINFO(_struct, field) FIELD_SIZEOF(_struct, field), \
 | 
			
		||||
#define FIELDINFO(_struct, field) sizeof_field(_struct, field), \
 | 
			
		||||
					offsetof(_struct, field)
 | 
			
		||||
#define DRVSTAT_TX_INFO(field)	#field, DRVSTAT_TX,\
 | 
			
		||||
					FIELDINFO(struct be_tx_stats, field)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10240,7 +10240,7 @@ static int hclge_get_dfx_reg_len(struct hclge_dev *hdev, int *len)
 | 
			
		|||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	data_len_per_desc = FIELD_SIZEOF(struct hclge_desc, data);
 | 
			
		||||
	data_len_per_desc = sizeof_field(struct hclge_desc, data);
 | 
			
		||||
	*len = 0;
 | 
			
		||||
	for (i = 0; i < dfx_reg_type_num; i++) {
 | 
			
		||||
		bd_num = bd_num_list[i];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -614,7 +614,7 @@ static void hclge_tm_vport_tc_info_update(struct hclge_vport *vport)
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	memcpy(kinfo->prio_tc, hdev->tm_info.prio_tc,
 | 
			
		||||
	       FIELD_SIZEOF(struct hnae3_knic_private_info, prio_tc));
 | 
			
		||||
	       sizeof_field(struct hnae3_knic_private_info, prio_tc));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void hclge_tm_vport_info_update(struct hclge_dev *hdev)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -450,7 +450,7 @@ static u32 hinic_get_rxfh_indir_size(struct net_device *netdev)
 | 
			
		|||
 | 
			
		||||
#define HINIC_FUNC_STAT(_stat_item) {	\
 | 
			
		||||
	.name = #_stat_item, \
 | 
			
		||||
	.size = FIELD_SIZEOF(struct hinic_vport_stats, _stat_item), \
 | 
			
		||||
	.size = sizeof_field(struct hinic_vport_stats, _stat_item), \
 | 
			
		||||
	.offset = offsetof(struct hinic_vport_stats, _stat_item) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -477,7 +477,7 @@ static struct hinic_stats hinic_function_stats[] = {
 | 
			
		|||
 | 
			
		||||
#define HINIC_PORT_STAT(_stat_item) { \
 | 
			
		||||
	.name = #_stat_item, \
 | 
			
		||||
	.size = FIELD_SIZEOF(struct hinic_phy_port_stats, _stat_item), \
 | 
			
		||||
	.size = sizeof_field(struct hinic_phy_port_stats, _stat_item), \
 | 
			
		||||
	.offset = offsetof(struct hinic_phy_port_stats, _stat_item) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -571,7 +571,7 @@ static struct hinic_stats hinic_port_stats[] = {
 | 
			
		|||
 | 
			
		||||
#define HINIC_TXQ_STAT(_stat_item) { \
 | 
			
		||||
	.name = "txq%d_"#_stat_item, \
 | 
			
		||||
	.size = FIELD_SIZEOF(struct hinic_txq_stats, _stat_item), \
 | 
			
		||||
	.size = sizeof_field(struct hinic_txq_stats, _stat_item), \
 | 
			
		||||
	.offset = offsetof(struct hinic_txq_stats, _stat_item) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -586,7 +586,7 @@ static struct hinic_stats hinic_tx_queue_stats[] = {
 | 
			
		|||
 | 
			
		||||
#define HINIC_RXQ_STAT(_stat_item) { \
 | 
			
		||||
	.name = "rxq%d_"#_stat_item, \
 | 
			
		||||
	.size = FIELD_SIZEOF(struct hinic_rxq_stats, _stat_item), \
 | 
			
		||||
	.size = sizeof_field(struct hinic_rxq_stats, _stat_item), \
 | 
			
		||||
	.offset = offsetof(struct hinic_rxq_stats, _stat_item) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ struct fm10k_stats {
 | 
			
		|||
 | 
			
		||||
#define FM10K_STAT_FIELDS(_type, _name, _stat) { \
 | 
			
		||||
	.stat_string = _name, \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(_type, _stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(_type, _stat), \
 | 
			
		||||
	.stat_offset = offsetof(_type, _stat) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ struct i40e_stats {
 | 
			
		|||
 */
 | 
			
		||||
#define I40E_STAT(_type, _name, _stat) { \
 | 
			
		||||
	.stat_string = _name, \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(_type, _stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(_type, _stat), \
 | 
			
		||||
	.stat_offset = offsetof(_type, _stat) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -659,7 +659,7 @@ i40e_status i40e_shutdown_lan_hmc(struct i40e_hw *hw)
 | 
			
		|||
 | 
			
		||||
#define I40E_HMC_STORE(_struct, _ele)		\
 | 
			
		||||
	offsetof(struct _struct, _ele),		\
 | 
			
		||||
	FIELD_SIZEOF(struct _struct, _ele)
 | 
			
		||||
	sizeof_field(struct _struct, _ele)
 | 
			
		||||
 | 
			
		||||
struct i40e_context_ele {
 | 
			
		||||
	u16 offset;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,7 +42,7 @@ struct iavf_stats {
 | 
			
		|||
 */
 | 
			
		||||
#define IAVF_STAT(_type, _name, _stat) { \
 | 
			
		||||
	.stat_string = _name, \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(_type, _stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(_type, _stat), \
 | 
			
		||||
	.stat_offset = offsetof(_type, _stat) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,7 @@ struct ice_stats {
 | 
			
		|||
 | 
			
		||||
#define ICE_STAT(_type, _name, _stat) { \
 | 
			
		||||
	.stat_string = _name, \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(_type, _stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(_type, _stat), \
 | 
			
		||||
	.stat_offset = offsetof(_type, _stat) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -36,10 +36,10 @@ static int ice_q_stats_len(struct net_device *netdev)
 | 
			
		|||
#define ICE_VSI_STATS_LEN	ARRAY_SIZE(ice_gstrings_vsi_stats)
 | 
			
		||||
 | 
			
		||||
#define ICE_PFC_STATS_LEN ( \
 | 
			
		||||
		(FIELD_SIZEOF(struct ice_pf, stats.priority_xoff_rx) + \
 | 
			
		||||
		 FIELD_SIZEOF(struct ice_pf, stats.priority_xon_rx) + \
 | 
			
		||||
		 FIELD_SIZEOF(struct ice_pf, stats.priority_xoff_tx) + \
 | 
			
		||||
		 FIELD_SIZEOF(struct ice_pf, stats.priority_xon_tx)) \
 | 
			
		||||
		(sizeof_field(struct ice_pf, stats.priority_xoff_rx) + \
 | 
			
		||||
		 sizeof_field(struct ice_pf, stats.priority_xon_rx) + \
 | 
			
		||||
		 sizeof_field(struct ice_pf, stats.priority_xoff_tx) + \
 | 
			
		||||
		 sizeof_field(struct ice_pf, stats.priority_xon_tx)) \
 | 
			
		||||
		 / sizeof(u64))
 | 
			
		||||
#define ICE_ALL_STATS_LEN(n)	(ICE_PF_STATS_LEN + ICE_PFC_STATS_LEN + \
 | 
			
		||||
				 ICE_VSI_STATS_LEN + ice_q_stats_len(n))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -302,7 +302,7 @@ struct ice_ctx_ele {
 | 
			
		|||
 | 
			
		||||
#define ICE_CTX_STORE(_struct, _ele, _width, _lsb) {	\
 | 
			
		||||
	.offset = offsetof(struct _struct, _ele),	\
 | 
			
		||||
	.size_of = FIELD_SIZEOF(struct _struct, _ele),	\
 | 
			
		||||
	.size_of = sizeof_field(struct _struct, _ele),	\
 | 
			
		||||
	.width = _width,				\
 | 
			
		||||
	.lsb = _lsb,					\
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ struct igb_stats {
 | 
			
		|||
 | 
			
		||||
#define IGB_STAT(_name, _stat) { \
 | 
			
		||||
	.stat_string = _name, \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(struct igb_adapter, _stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(struct igb_adapter, _stat), \
 | 
			
		||||
	.stat_offset = offsetof(struct igb_adapter, _stat) \
 | 
			
		||||
}
 | 
			
		||||
static const struct igb_stats igb_gstrings_stats[] = {
 | 
			
		||||
| 
						 | 
				
			
			@ -76,7 +76,7 @@ static const struct igb_stats igb_gstrings_stats[] = {
 | 
			
		|||
 | 
			
		||||
#define IGB_NETDEV_STAT(_net_stat) { \
 | 
			
		||||
	.stat_string = __stringify(_net_stat), \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(struct rtnl_link_stats64, _net_stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(struct rtnl_link_stats64, _net_stat), \
 | 
			
		||||
	.stat_offset = offsetof(struct rtnl_link_stats64, _net_stat) \
 | 
			
		||||
}
 | 
			
		||||
static const struct igb_stats igb_gstrings_net_stats[] = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ struct igc_stats {
 | 
			
		|||
 | 
			
		||||
#define IGC_STAT(_name, _stat) { \
 | 
			
		||||
	.stat_string = _name, \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(struct igc_adapter, _stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(struct igc_adapter, _stat), \
 | 
			
		||||
	.stat_offset = offsetof(struct igc_adapter, _stat) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +67,7 @@ static const struct igc_stats igc_gstrings_stats[] = {
 | 
			
		|||
 | 
			
		||||
#define IGC_NETDEV_STAT(_net_stat) { \
 | 
			
		||||
	.stat_string = __stringify(_net_stat), \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(struct rtnl_link_stats64, _net_stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(struct rtnl_link_stats64, _net_stat), \
 | 
			
		||||
	.stat_offset = offsetof(struct rtnl_link_stats64, _net_stat) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,10 +19,10 @@ struct ixgb_stats {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
#define IXGB_STAT(m)		IXGB_STATS, \
 | 
			
		||||
				FIELD_SIZEOF(struct ixgb_adapter, m), \
 | 
			
		||||
				sizeof_field(struct ixgb_adapter, m), \
 | 
			
		||||
				offsetof(struct ixgb_adapter, m)
 | 
			
		||||
#define IXGB_NETDEV_STAT(m)	NETDEV_STATS, \
 | 
			
		||||
				FIELD_SIZEOF(struct net_device, m), \
 | 
			
		||||
				sizeof_field(struct net_device, m), \
 | 
			
		||||
				offsetof(struct net_device, m)
 | 
			
		||||
 | 
			
		||||
static struct ixgb_stats ixgb_gstrings_stats[] = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,14 +31,14 @@ struct ixgbe_stats {
 | 
			
		|||
#define IXGBEVF_STAT(_name, _stat) { \
 | 
			
		||||
	.stat_string = _name, \
 | 
			
		||||
	.type = IXGBEVF_STATS, \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(struct ixgbevf_adapter, _stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(struct ixgbevf_adapter, _stat), \
 | 
			
		||||
	.stat_offset = offsetof(struct ixgbevf_adapter, _stat) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define IXGBEVF_NETDEV_STAT(_net_stat) { \
 | 
			
		||||
	.stat_string = #_net_stat, \
 | 
			
		||||
	.type = NETDEV_STATS, \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(struct net_device_stats, _net_stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(struct net_device_stats, _net_stat), \
 | 
			
		||||
	.stat_offset = offsetof(struct net_device_stats, _net_stat) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1432,11 +1432,11 @@ struct mv643xx_eth_stats {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
#define SSTAT(m)						\
 | 
			
		||||
	{ #m, FIELD_SIZEOF(struct net_device_stats, m),		\
 | 
			
		||||
	{ #m, sizeof_field(struct net_device_stats, m),		\
 | 
			
		||||
	  offsetof(struct net_device, stats.m), -1 }
 | 
			
		||||
 | 
			
		||||
#define MIBSTAT(m)						\
 | 
			
		||||
	{ #m, FIELD_SIZEOF(struct mib_counters, m),		\
 | 
			
		||||
	{ #m, sizeof_field(struct mib_counters, m),		\
 | 
			
		||||
	  -1, offsetof(struct mv643xx_eth_private, mib_counters.m) }
 | 
			
		||||
 | 
			
		||||
static const struct mv643xx_eth_stats mv643xx_eth_stats[] = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -611,7 +611,7 @@ static u32 ptys_get_active_port(struct mlx4_ptys_reg *ptys_reg)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#define MLX4_LINK_MODES_SZ \
 | 
			
		||||
	(FIELD_SIZEOF(struct mlx4_ptys_reg, eth_proto_cap) * 8)
 | 
			
		||||
	(sizeof_field(struct mlx4_ptys_reg, eth_proto_cap) * 8)
 | 
			
		||||
 | 
			
		||||
enum ethtool_report {
 | 
			
		||||
	SUPPORTED = 0,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -87,10 +87,10 @@ static const struct rhashtable_params rhash_sa = {
 | 
			
		|||
	 * value is not constant during the lifetime
 | 
			
		||||
	 * of the key object.
 | 
			
		||||
	 */
 | 
			
		||||
	.key_len = FIELD_SIZEOF(struct mlx5_fpga_ipsec_sa_ctx, hw_sa) -
 | 
			
		||||
		   FIELD_SIZEOF(struct mlx5_ifc_fpga_ipsec_sa_v1, cmd),
 | 
			
		||||
	.key_len = sizeof_field(struct mlx5_fpga_ipsec_sa_ctx, hw_sa) -
 | 
			
		||||
		   sizeof_field(struct mlx5_ifc_fpga_ipsec_sa_v1, cmd),
 | 
			
		||||
	.key_offset = offsetof(struct mlx5_fpga_ipsec_sa_ctx, hw_sa) +
 | 
			
		||||
		      FIELD_SIZEOF(struct mlx5_ifc_fpga_ipsec_sa_v1, cmd),
 | 
			
		||||
		      sizeof_field(struct mlx5_ifc_fpga_ipsec_sa_v1, cmd),
 | 
			
		||||
	.head_offset = offsetof(struct mlx5_fpga_ipsec_sa_ctx, hash),
 | 
			
		||||
	.automatic_shrinking = true,
 | 
			
		||||
	.min_size = 1,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -209,7 +209,7 @@ enum fs_i_lock_class {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
static const struct rhashtable_params rhash_fte = {
 | 
			
		||||
	.key_len = FIELD_SIZEOF(struct fs_fte, val),
 | 
			
		||||
	.key_len = sizeof_field(struct fs_fte, val),
 | 
			
		||||
	.key_offset = offsetof(struct fs_fte, val),
 | 
			
		||||
	.head_offset = offsetof(struct fs_fte, hash),
 | 
			
		||||
	.automatic_shrinking = true,
 | 
			
		||||
| 
						 | 
				
			
			@ -217,7 +217,7 @@ static const struct rhashtable_params rhash_fte = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
static const struct rhashtable_params rhash_fg = {
 | 
			
		||||
	.key_len = FIELD_SIZEOF(struct mlx5_flow_group, mask),
 | 
			
		||||
	.key_len = sizeof_field(struct mlx5_flow_group, mask),
 | 
			
		||||
	.key_offset = offsetof(struct mlx5_flow_group, mask),
 | 
			
		||||
	.head_offset = offsetof(struct mlx5_flow_group, hash),
 | 
			
		||||
	.automatic_shrinking = true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2652,17 +2652,17 @@ static int mem_ldx_skb(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
 | 
			
		|||
 | 
			
		||||
	switch (meta->insn.off) {
 | 
			
		||||
	case offsetof(struct __sk_buff, len):
 | 
			
		||||
		if (size != FIELD_SIZEOF(struct __sk_buff, len))
 | 
			
		||||
		if (size != sizeof_field(struct __sk_buff, len))
 | 
			
		||||
			return -EOPNOTSUPP;
 | 
			
		||||
		wrp_mov(nfp_prog, dst, plen_reg(nfp_prog));
 | 
			
		||||
		break;
 | 
			
		||||
	case offsetof(struct __sk_buff, data):
 | 
			
		||||
		if (size != FIELD_SIZEOF(struct __sk_buff, data))
 | 
			
		||||
		if (size != sizeof_field(struct __sk_buff, data))
 | 
			
		||||
			return -EOPNOTSUPP;
 | 
			
		||||
		wrp_mov(nfp_prog, dst, pptr_reg(nfp_prog));
 | 
			
		||||
		break;
 | 
			
		||||
	case offsetof(struct __sk_buff, data_end):
 | 
			
		||||
		if (size != FIELD_SIZEOF(struct __sk_buff, data_end))
 | 
			
		||||
		if (size != sizeof_field(struct __sk_buff, data_end))
 | 
			
		||||
			return -EOPNOTSUPP;
 | 
			
		||||
		emit_alu(nfp_prog, dst,
 | 
			
		||||
			 plen_reg(nfp_prog), ALU_OP_ADD, pptr_reg(nfp_prog));
 | 
			
		||||
| 
						 | 
				
			
			@ -2683,12 +2683,12 @@ static int mem_ldx_xdp(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta,
 | 
			
		|||
 | 
			
		||||
	switch (meta->insn.off) {
 | 
			
		||||
	case offsetof(struct xdp_md, data):
 | 
			
		||||
		if (size != FIELD_SIZEOF(struct xdp_md, data))
 | 
			
		||||
		if (size != sizeof_field(struct xdp_md, data))
 | 
			
		||||
			return -EOPNOTSUPP;
 | 
			
		||||
		wrp_mov(nfp_prog, dst, pptr_reg(nfp_prog));
 | 
			
		||||
		break;
 | 
			
		||||
	case offsetof(struct xdp_md, data_end):
 | 
			
		||||
		if (size != FIELD_SIZEOF(struct xdp_md, data_end))
 | 
			
		||||
		if (size != sizeof_field(struct xdp_md, data_end))
 | 
			
		||||
			return -EOPNOTSUPP;
 | 
			
		||||
		emit_alu(nfp_prog, dst,
 | 
			
		||||
			 plen_reg(nfp_prog), ALU_OP_ADD, pptr_reg(nfp_prog));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,7 @@
 | 
			
		|||
 | 
			
		||||
const struct rhashtable_params nfp_bpf_maps_neutral_params = {
 | 
			
		||||
	.nelem_hint		= 4,
 | 
			
		||||
	.key_len		= FIELD_SIZEOF(struct bpf_map, id),
 | 
			
		||||
	.key_len		= sizeof_field(struct bpf_map, id),
 | 
			
		||||
	.key_offset		= offsetof(struct nfp_bpf_neutral_map, map_id),
 | 
			
		||||
	.head_offset		= offsetof(struct nfp_bpf_neutral_map, l),
 | 
			
		||||
	.automatic_shrinking	= true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -374,7 +374,7 @@ nfp_bpf_map_alloc(struct nfp_app_bpf *bpf, struct bpf_offloaded_map *offmap)
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	use_map_size = DIV_ROUND_UP(offmap->map.value_size, 4) *
 | 
			
		||||
		       FIELD_SIZEOF(struct nfp_bpf_map, use_map[0]);
 | 
			
		||||
		       sizeof_field(struct nfp_bpf_map, use_map[0]);
 | 
			
		||||
 | 
			
		||||
	nfp_map = kzalloc(sizeof(*nfp_map) + use_map_size, GFP_USER);
 | 
			
		||||
	if (!nfp_map)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ struct nfp_app;
 | 
			
		|||
#define NFP_FL_STAT_ID_MU_NUM		GENMASK(31, 22)
 | 
			
		||||
#define NFP_FL_STAT_ID_STAT		GENMASK(21, 0)
 | 
			
		||||
 | 
			
		||||
#define NFP_FL_STATS_ELEM_RS		FIELD_SIZEOF(struct nfp_fl_stats_id, \
 | 
			
		||||
#define NFP_FL_STATS_ELEM_RS		sizeof_field(struct nfp_fl_stats_id, \
 | 
			
		||||
						     init_unalloc)
 | 
			
		||||
#define NFP_FLOWER_MASK_ENTRY_RS	256
 | 
			
		||||
#define NFP_FLOWER_MASK_ELEMENT_RS	1
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ struct pch_gbe_stats {
 | 
			
		|||
#define PCH_GBE_STAT(m)						\
 | 
			
		||||
{								\
 | 
			
		||||
	.string = #m,						\
 | 
			
		||||
	.size = FIELD_SIZEOF(struct pch_gbe_hw_stats, m),	\
 | 
			
		||||
	.size = sizeof_field(struct pch_gbe_hw_stats, m),	\
 | 
			
		||||
	.offset = offsetof(struct pch_gbe_hw_stats, m),		\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -464,7 +464,7 @@ struct qede_fastpath {
 | 
			
		|||
	struct qede_tx_queue	*txq;
 | 
			
		||||
	struct qede_tx_queue	*xdp_tx;
 | 
			
		||||
 | 
			
		||||
#define VEC_NAME_SIZE  (FIELD_SIZEOF(struct net_device, name) + 8)
 | 
			
		||||
#define VEC_NAME_SIZE  (sizeof_field(struct net_device, name) + 8)
 | 
			
		||||
	char	name[VEC_NAME_SIZE];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ struct qlcnic_stats {
 | 
			
		|||
	int stat_offset;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define QLC_SIZEOF(m) FIELD_SIZEOF(struct qlcnic_adapter, m)
 | 
			
		||||
#define QLC_SIZEOF(m) sizeof_field(struct qlcnic_adapter, m)
 | 
			
		||||
#define QLC_OFF(m) offsetof(struct qlcnic_adapter, m)
 | 
			
		||||
static const u32 qlcnic_fw_dump_level[] = {
 | 
			
		||||
	0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,7 +37,7 @@ struct fw_info {
 | 
			
		|||
	u8	chksum;
 | 
			
		||||
} __packed;
 | 
			
		||||
 | 
			
		||||
#define FW_OPCODE_SIZE FIELD_SIZEOF(struct rtl_fw_phy_action, code[0])
 | 
			
		||||
#define FW_OPCODE_SIZE sizeof_field(struct rtl_fw_phy_action, code[0])
 | 
			
		||||
 | 
			
		||||
static bool rtl_fw_format_ok(struct rtl_fw *rtl_fw)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ struct sxgbe_stats {
 | 
			
		|||
#define SXGBE_STAT(m)						\
 | 
			
		||||
{								\
 | 
			
		||||
	#m,							\
 | 
			
		||||
	FIELD_SIZEOF(struct sxgbe_extra_stats, m),		\
 | 
			
		||||
	sizeof_field(struct sxgbe_extra_stats, m),		\
 | 
			
		||||
	offsetof(struct sxgbe_priv_data, xstats.m)		\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ struct stmmac_stats {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
#define STMMAC_STAT(m)	\
 | 
			
		||||
	{ #m, FIELD_SIZEOF(struct stmmac_extra_stats, m),	\
 | 
			
		||||
	{ #m, sizeof_field(struct stmmac_extra_stats, m),	\
 | 
			
		||||
	offsetof(struct stmmac_priv, xstats.m)}
 | 
			
		||||
 | 
			
		||||
static const struct stmmac_stats stmmac_gstrings_stats[] = {
 | 
			
		||||
| 
						 | 
				
			
			@ -163,7 +163,7 @@ static const struct stmmac_stats stmmac_gstrings_stats[] = {
 | 
			
		|||
 | 
			
		||||
/* HW MAC Management counters (if supported) */
 | 
			
		||||
#define STMMAC_MMC_STAT(m)	\
 | 
			
		||||
	{ #m, FIELD_SIZEOF(struct stmmac_counters, m),	\
 | 
			
		||||
	{ #m, sizeof_field(struct stmmac_counters, m),	\
 | 
			
		||||
	offsetof(struct stmmac_priv, mmc.m)}
 | 
			
		||||
 | 
			
		||||
static const struct stmmac_stats stmmac_mmc[] = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -73,13 +73,13 @@ enum {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
#define CPSW_STAT(m)		CPSW_STATS,				\
 | 
			
		||||
				FIELD_SIZEOF(struct cpsw_hw_stats, m), \
 | 
			
		||||
				sizeof_field(struct cpsw_hw_stats, m), \
 | 
			
		||||
				offsetof(struct cpsw_hw_stats, m)
 | 
			
		||||
#define CPDMA_RX_STAT(m)	CPDMA_RX_STATS,				   \
 | 
			
		||||
				FIELD_SIZEOF(struct cpdma_chan_stats, m), \
 | 
			
		||||
				sizeof_field(struct cpdma_chan_stats, m), \
 | 
			
		||||
				offsetof(struct cpdma_chan_stats, m)
 | 
			
		||||
#define CPDMA_TX_STAT(m)	CPDMA_TX_STATS,				   \
 | 
			
		||||
				FIELD_SIZEOF(struct cpdma_chan_stats, m), \
 | 
			
		||||
				sizeof_field(struct cpdma_chan_stats, m), \
 | 
			
		||||
				offsetof(struct cpdma_chan_stats, m)
 | 
			
		||||
 | 
			
		||||
static const struct cpsw_stats cpsw_gstrings_stats[] = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -783,28 +783,28 @@ struct netcp_ethtool_stat {
 | 
			
		|||
#define GBE_STATSA_INFO(field)						\
 | 
			
		||||
{									\
 | 
			
		||||
	"GBE_A:"#field, GBE_STATSA_MODULE,				\
 | 
			
		||||
	FIELD_SIZEOF(struct gbe_hw_stats, field),			\
 | 
			
		||||
	sizeof_field(struct gbe_hw_stats, field),			\
 | 
			
		||||
	offsetof(struct gbe_hw_stats, field)				\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GBE_STATSB_INFO(field)						\
 | 
			
		||||
{									\
 | 
			
		||||
	"GBE_B:"#field, GBE_STATSB_MODULE,				\
 | 
			
		||||
	FIELD_SIZEOF(struct gbe_hw_stats, field),			\
 | 
			
		||||
	sizeof_field(struct gbe_hw_stats, field),			\
 | 
			
		||||
	offsetof(struct gbe_hw_stats, field)				\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GBE_STATSC_INFO(field)						\
 | 
			
		||||
{									\
 | 
			
		||||
	"GBE_C:"#field, GBE_STATSC_MODULE,				\
 | 
			
		||||
	FIELD_SIZEOF(struct gbe_hw_stats, field),			\
 | 
			
		||||
	sizeof_field(struct gbe_hw_stats, field),			\
 | 
			
		||||
	offsetof(struct gbe_hw_stats, field)				\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GBE_STATSD_INFO(field)						\
 | 
			
		||||
{									\
 | 
			
		||||
	"GBE_D:"#field, GBE_STATSD_MODULE,				\
 | 
			
		||||
	FIELD_SIZEOF(struct gbe_hw_stats, field),			\
 | 
			
		||||
	sizeof_field(struct gbe_hw_stats, field),			\
 | 
			
		||||
	offsetof(struct gbe_hw_stats, field)				\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -957,7 +957,7 @@ static const struct netcp_ethtool_stat gbe13_et_stats[] = {
 | 
			
		|||
#define GBENU_STATS_HOST(field)					\
 | 
			
		||||
{								\
 | 
			
		||||
	"GBE_HOST:"#field, GBENU_STATS0_MODULE,			\
 | 
			
		||||
	FIELD_SIZEOF(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	sizeof_field(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	offsetof(struct gbenu_hw_stats, field)			\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -967,56 +967,56 @@ static const struct netcp_ethtool_stat gbe13_et_stats[] = {
 | 
			
		|||
#define GBENU_STATS_P1(field)					\
 | 
			
		||||
{								\
 | 
			
		||||
	"GBE_P1:"#field, GBENU_STATS1_MODULE,			\
 | 
			
		||||
	FIELD_SIZEOF(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	sizeof_field(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	offsetof(struct gbenu_hw_stats, field)			\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GBENU_STATS_P2(field)					\
 | 
			
		||||
{								\
 | 
			
		||||
	"GBE_P2:"#field, GBENU_STATS2_MODULE,			\
 | 
			
		||||
	FIELD_SIZEOF(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	sizeof_field(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	offsetof(struct gbenu_hw_stats, field)			\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GBENU_STATS_P3(field)					\
 | 
			
		||||
{								\
 | 
			
		||||
	"GBE_P3:"#field, GBENU_STATS3_MODULE,			\
 | 
			
		||||
	FIELD_SIZEOF(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	sizeof_field(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	offsetof(struct gbenu_hw_stats, field)			\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GBENU_STATS_P4(field)					\
 | 
			
		||||
{								\
 | 
			
		||||
	"GBE_P4:"#field, GBENU_STATS4_MODULE,			\
 | 
			
		||||
	FIELD_SIZEOF(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	sizeof_field(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	offsetof(struct gbenu_hw_stats, field)			\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GBENU_STATS_P5(field)					\
 | 
			
		||||
{								\
 | 
			
		||||
	"GBE_P5:"#field, GBENU_STATS5_MODULE,			\
 | 
			
		||||
	FIELD_SIZEOF(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	sizeof_field(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	offsetof(struct gbenu_hw_stats, field)			\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GBENU_STATS_P6(field)					\
 | 
			
		||||
{								\
 | 
			
		||||
	"GBE_P6:"#field, GBENU_STATS6_MODULE,			\
 | 
			
		||||
	FIELD_SIZEOF(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	sizeof_field(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	offsetof(struct gbenu_hw_stats, field)			\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GBENU_STATS_P7(field)					\
 | 
			
		||||
{								\
 | 
			
		||||
	"GBE_P7:"#field, GBENU_STATS7_MODULE,			\
 | 
			
		||||
	FIELD_SIZEOF(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	sizeof_field(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	offsetof(struct gbenu_hw_stats, field)			\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define GBENU_STATS_P8(field)					\
 | 
			
		||||
{								\
 | 
			
		||||
	"GBE_P8:"#field, GBENU_STATS8_MODULE,			\
 | 
			
		||||
	FIELD_SIZEOF(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	sizeof_field(struct gbenu_hw_stats, field),		\
 | 
			
		||||
	offsetof(struct gbenu_hw_stats, field)			\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1607,21 +1607,21 @@ static const struct netcp_ethtool_stat gbenu_et_stats[] = {
 | 
			
		|||
#define XGBE_STATS0_INFO(field)				\
 | 
			
		||||
{							\
 | 
			
		||||
	"GBE_0:"#field, XGBE_STATS0_MODULE,		\
 | 
			
		||||
	FIELD_SIZEOF(struct xgbe_hw_stats, field),	\
 | 
			
		||||
	sizeof_field(struct xgbe_hw_stats, field),	\
 | 
			
		||||
	offsetof(struct xgbe_hw_stats, field)		\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define XGBE_STATS1_INFO(field)				\
 | 
			
		||||
{							\
 | 
			
		||||
	"GBE_1:"#field, XGBE_STATS1_MODULE,		\
 | 
			
		||||
	FIELD_SIZEOF(struct xgbe_hw_stats, field),	\
 | 
			
		||||
	sizeof_field(struct xgbe_hw_stats, field),	\
 | 
			
		||||
	offsetof(struct xgbe_hw_stats, field)		\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define XGBE_STATS2_INFO(field)				\
 | 
			
		||||
{							\
 | 
			
		||||
	"GBE_2:"#field, XGBE_STATS2_MODULE,		\
 | 
			
		||||
	FIELD_SIZEOF(struct xgbe_hw_stats, field),	\
 | 
			
		||||
	sizeof_field(struct xgbe_hw_stats, field),	\
 | 
			
		||||
	offsetof(struct xgbe_hw_stats, field)		\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,7 @@ struct fjes_stats {
 | 
			
		|||
 | 
			
		||||
#define FJES_STAT(name, stat) { \
 | 
			
		||||
	.stat_string = name, \
 | 
			
		||||
	.sizeof_stat = FIELD_SIZEOF(struct fjes_adapter, stat), \
 | 
			
		||||
	.sizeof_stat = sizeof_field(struct fjes_adapter, stat), \
 | 
			
		||||
	.stat_offset = offsetof(struct fjes_adapter, stat) \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1156,7 +1156,7 @@ static void geneve_setup(struct net_device *dev)
 | 
			
		|||
 | 
			
		||||
static const struct nla_policy geneve_policy[IFLA_GENEVE_MAX + 1] = {
 | 
			
		||||
	[IFLA_GENEVE_ID]		= { .type = NLA_U32 },
 | 
			
		||||
	[IFLA_GENEVE_REMOTE]		= { .len = FIELD_SIZEOF(struct iphdr, daddr) },
 | 
			
		||||
	[IFLA_GENEVE_REMOTE]		= { .len = sizeof_field(struct iphdr, daddr) },
 | 
			
		||||
	[IFLA_GENEVE_REMOTE6]		= { .len = sizeof(struct in6_addr) },
 | 
			
		||||
	[IFLA_GENEVE_TTL]		= { .type = NLA_U8 },
 | 
			
		||||
	[IFLA_GENEVE_TOS]		= { .type = NLA_U8 },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -571,7 +571,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
 | 
			
		|||
 | 
			
		||||
	/* Use the skb control buffer for building up the packet */
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct hv_netvsc_packet) >
 | 
			
		||||
			FIELD_SIZEOF(struct sk_buff, cb));
 | 
			
		||||
			sizeof_field(struct sk_buff, cb));
 | 
			
		||||
	packet = (struct hv_netvsc_packet *)skb->cb;
 | 
			
		||||
 | 
			
		||||
	packet->q_idx = skb_get_queue_mapping(skb);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -865,7 +865,7 @@ static struct sk_buff *sierra_net_tx_fixup(struct usbnet *dev,
 | 
			
		|||
	u16 len;
 | 
			
		||||
	bool need_tail;
 | 
			
		||||
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(struct usbnet, data)
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(struct usbnet, data)
 | 
			
		||||
				< sizeof(struct cdc_state));
 | 
			
		||||
 | 
			
		||||
	dev_dbg(&dev->udev->dev, "%s", __func__);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2184,7 +2184,7 @@ static int __init usbnet_init(void)
 | 
			
		|||
{
 | 
			
		||||
	/* Compiler should optimize this out. */
 | 
			
		||||
	BUILD_BUG_ON(
 | 
			
		||||
		FIELD_SIZEOF(struct sk_buff, cb) < sizeof(struct skb_data));
 | 
			
		||||
		sizeof_field(struct sk_buff, cb) < sizeof(struct skb_data));
 | 
			
		||||
 | 
			
		||||
	eth_random_addr(node_id);
 | 
			
		||||
	return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3069,10 +3069,10 @@ static void vxlan_raw_setup(struct net_device *dev)
 | 
			
		|||
 | 
			
		||||
static const struct nla_policy vxlan_policy[IFLA_VXLAN_MAX + 1] = {
 | 
			
		||||
	[IFLA_VXLAN_ID]		= { .type = NLA_U32 },
 | 
			
		||||
	[IFLA_VXLAN_GROUP]	= { .len = FIELD_SIZEOF(struct iphdr, daddr) },
 | 
			
		||||
	[IFLA_VXLAN_GROUP]	= { .len = sizeof_field(struct iphdr, daddr) },
 | 
			
		||||
	[IFLA_VXLAN_GROUP6]	= { .len = sizeof(struct in6_addr) },
 | 
			
		||||
	[IFLA_VXLAN_LINK]	= { .type = NLA_U32 },
 | 
			
		||||
	[IFLA_VXLAN_LOCAL]	= { .len = FIELD_SIZEOF(struct iphdr, saddr) },
 | 
			
		||||
	[IFLA_VXLAN_LOCAL]	= { .len = sizeof_field(struct iphdr, saddr) },
 | 
			
		||||
	[IFLA_VXLAN_LOCAL6]	= { .len = sizeof(struct in6_addr) },
 | 
			
		||||
	[IFLA_VXLAN_TOS]	= { .type = NLA_U8 },
 | 
			
		||||
	[IFLA_VXLAN_TTL]	= { .type = NLA_U8 },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -774,7 +774,7 @@ void lbs_debugfs_remove_one(struct lbs_private *priv)
 | 
			
		|||
 | 
			
		||||
#ifdef PROC_DEBUG
 | 
			
		||||
 | 
			
		||||
#define item_size(n)	(FIELD_SIZEOF(struct lbs_private, n))
 | 
			
		||||
#define item_size(n)	(sizeof_field(struct lbs_private, n))
 | 
			
		||||
#define item_addr(n)	(offsetof(struct lbs_private, n))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,11 +36,11 @@ struct mwifiex_cb {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
/* size/addr for mwifiex_debug_info */
 | 
			
		||||
#define item_size(n)		(FIELD_SIZEOF(struct mwifiex_debug_info, n))
 | 
			
		||||
#define item_size(n)		(sizeof_field(struct mwifiex_debug_info, n))
 | 
			
		||||
#define item_addr(n)		(offsetof(struct mwifiex_debug_info, n))
 | 
			
		||||
 | 
			
		||||
/* size/addr for struct mwifiex_adapter */
 | 
			
		||||
#define adapter_item_size(n)	(FIELD_SIZEOF(struct mwifiex_adapter, n))
 | 
			
		||||
#define adapter_item_size(n)	(sizeof_field(struct mwifiex_adapter, n))
 | 
			
		||||
#define adapter_item_addr(n)	(offsetof(struct mwifiex_adapter, n))
 | 
			
		||||
 | 
			
		||||
struct mwifiex_debug_data {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4779,7 +4779,7 @@ static int qeth_qdio_establish(struct qeth_card *card)
 | 
			
		|||
 | 
			
		||||
	QETH_CARD_TEXT(card, 2, "qdioest");
 | 
			
		||||
 | 
			
		||||
	qib_param_field = kzalloc(FIELD_SIZEOF(struct qib, parm), GFP_KERNEL);
 | 
			
		||||
	qib_param_field = kzalloc(sizeof_field(struct qib, parm), GFP_KERNEL);
 | 
			
		||||
	if (!qib_param_field) {
 | 
			
		||||
		rc =  -ENOMEM;
 | 
			
		||||
		goto out_free_nothing;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -421,7 +421,7 @@ struct qeth_ipacmd_setassparms {
 | 
			
		|||
	} data;
 | 
			
		||||
} __attribute__ ((packed));
 | 
			
		||||
 | 
			
		||||
#define SETASS_DATA_SIZEOF(field) FIELD_SIZEOF(struct qeth_ipacmd_setassparms,\
 | 
			
		||||
#define SETASS_DATA_SIZEOF(field) sizeof_field(struct qeth_ipacmd_setassparms,\
 | 
			
		||||
					       data.field)
 | 
			
		||||
 | 
			
		||||
/* SETRTG IPA Command:    ****************************************************/
 | 
			
		||||
| 
						 | 
				
			
			@ -535,7 +535,7 @@ struct qeth_ipacmd_setadpparms {
 | 
			
		|||
	} data;
 | 
			
		||||
} __attribute__ ((packed));
 | 
			
		||||
 | 
			
		||||
#define SETADP_DATA_SIZEOF(field) FIELD_SIZEOF(struct qeth_ipacmd_setadpparms,\
 | 
			
		||||
#define SETADP_DATA_SIZEOF(field) sizeof_field(struct qeth_ipacmd_setadpparms,\
 | 
			
		||||
					       data.field)
 | 
			
		||||
 | 
			
		||||
/* CREATE_ADDR IPA Command:    ***********************************************/
 | 
			
		||||
| 
						 | 
				
			
			@ -648,7 +648,7 @@ struct qeth_ipacmd_vnicc {
 | 
			
		|||
	} data;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define VNICC_DATA_SIZEOF(field)	FIELD_SIZEOF(struct qeth_ipacmd_vnicc,\
 | 
			
		||||
#define VNICC_DATA_SIZEOF(field)	sizeof_field(struct qeth_ipacmd_vnicc,\
 | 
			
		||||
						     data.field)
 | 
			
		||||
 | 
			
		||||
/* SETBRIDGEPORT IPA Command:	 *********************************************/
 | 
			
		||||
| 
						 | 
				
			
			@ -729,7 +729,7 @@ struct qeth_ipacmd_setbridgeport {
 | 
			
		|||
	} data;
 | 
			
		||||
} __packed;
 | 
			
		||||
 | 
			
		||||
#define SBP_DATA_SIZEOF(field)	FIELD_SIZEOF(struct qeth_ipacmd_setbridgeport,\
 | 
			
		||||
#define SBP_DATA_SIZEOF(field)	sizeof_field(struct qeth_ipacmd_setbridgeport,\
 | 
			
		||||
					     data.field)
 | 
			
		||||
 | 
			
		||||
/* ADDRESS_CHANGE_NOTIFICATION adapter-initiated "command" *******************/
 | 
			
		||||
| 
						 | 
				
			
			@ -790,7 +790,7 @@ struct qeth_ipa_cmd {
 | 
			
		|||
	} data;
 | 
			
		||||
} __attribute__ ((packed));
 | 
			
		||||
 | 
			
		||||
#define IPA_DATA_SIZEOF(field)	FIELD_SIZEOF(struct qeth_ipa_cmd, data.field)
 | 
			
		||||
#define IPA_DATA_SIZEOF(field)	sizeof_field(struct qeth_ipa_cmd, data.field)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * special command for ARP processing.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -535,7 +535,7 @@ static void get_container_name_callback(void *context, struct fib * fibptr)
 | 
			
		|||
	if ((le32_to_cpu(get_name_reply->status) == CT_OK)
 | 
			
		||||
	 && (get_name_reply->data[0] != '\0')) {
 | 
			
		||||
		char *sp = get_name_reply->data;
 | 
			
		||||
		int data_size = FIELD_SIZEOF(struct aac_get_name_resp, data);
 | 
			
		||||
		int data_size = sizeof_field(struct aac_get_name_resp, data);
 | 
			
		||||
 | 
			
		||||
		sp[data_size - 1] = '\0';
 | 
			
		||||
		while (*sp == ' ')
 | 
			
		||||
| 
						 | 
				
			
			@ -574,7 +574,7 @@ static int aac_get_container_name(struct scsi_cmnd * scsicmd)
 | 
			
		|||
 | 
			
		||||
	dev = (struct aac_dev *)scsicmd->device->host->hostdata;
 | 
			
		||||
 | 
			
		||||
	data_size = FIELD_SIZEOF(struct aac_get_name_resp, data);
 | 
			
		||||
	data_size = sizeof_field(struct aac_get_name_resp, data);
 | 
			
		||||
 | 
			
		||||
	cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1300,7 +1300,7 @@ struct be_cmd_get_port_name {
 | 
			
		|||
 | 
			
		||||
/* Returns the number of items in the field array. */
 | 
			
		||||
#define BE_NUMBER_OF_FIELD(_type_, _field_)	\
 | 
			
		||||
	(FIELD_SIZEOF(_type_, _field_)/sizeof((((_type_ *)0)->_field_[0])))\
 | 
			
		||||
	(sizeof_field(_type_, _field_)/sizeof((((_type_ *)0)->_field_[0])))\
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Different types of iSCSI completions to host driver for both initiator
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2746,7 +2746,7 @@ static int __init libcxgbi_init_module(void)
 | 
			
		|||
{
 | 
			
		||||
	pr_info("%s", version);
 | 
			
		||||
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, cb) <
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(struct sk_buff, cb) <
 | 
			
		||||
		     sizeof(struct cxgbi_skb_cb));
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8689,11 +8689,11 @@ static void __attribute__((unused)) verify_structures(void)
 | 
			
		|||
	BUILD_BUG_ON(offsetof(struct pqi_general_admin_request,
 | 
			
		||||
		data.delete_operational_queue.queue_id) != 12);
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct pqi_general_admin_request) != 64);
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(struct pqi_general_admin_request,
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(struct pqi_general_admin_request,
 | 
			
		||||
		data.create_operational_iq) != 64 - 11);
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(struct pqi_general_admin_request,
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(struct pqi_general_admin_request,
 | 
			
		||||
		data.create_operational_oq) != 64 - 11);
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(struct pqi_general_admin_request,
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(struct pqi_general_admin_request,
 | 
			
		||||
		data.delete_operational_queue) != 64 - 11);
 | 
			
		||||
 | 
			
		||||
	BUILD_BUG_ON(offsetof(struct pqi_general_admin_response,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ struct ql_stats {
 | 
			
		|||
	int stat_offset;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define QL_SIZEOF(m) FIELD_SIZEOF(struct ql_adapter, m)
 | 
			
		||||
#define QL_SIZEOF(m) sizeof_field(struct ql_adapter, m)
 | 
			
		||||
#define QL_OFF(m) offsetof(struct ql_adapter, m)
 | 
			
		||||
 | 
			
		||||
static const struct ql_stats ql_gstrings_stats[] = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -679,7 +679,7 @@ void wfx_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
 | 
			
		|||
	struct ieee80211_sta *sta = control ? control->sta : NULL;
 | 
			
		||||
	struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
 | 
			
		||||
	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
 | 
			
		||||
	size_t driver_data_room = FIELD_SIZEOF(struct ieee80211_tx_info,
 | 
			
		||||
	size_t driver_data_room = sizeof_field(struct ieee80211_tx_info,
 | 
			
		||||
					       rate_driver_data);
 | 
			
		||||
 | 
			
		||||
	compiletime_assert(sizeof(struct wfx_tx_priv) <= driver_data_room,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -708,7 +708,7 @@ static int __init cxgbit_init(void)
 | 
			
		|||
	pr_info("%s dcb enabled.\n", DRV_NAME);
 | 
			
		||||
	register_dcbevent_notifier(&cxgbit_dcbevent_nb);
 | 
			
		||||
#endif
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, cb) <
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(struct sk_buff, cb) <
 | 
			
		||||
		     sizeof(union cxgbit_skb_cb));
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1275,7 +1275,7 @@ EXPORT_SYMBOL_GPL(usbatm_usb_disconnect);
 | 
			
		|||
 | 
			
		||||
static int __init usbatm_usb_init(void)
 | 
			
		||||
{
 | 
			
		||||
	if (sizeof(struct usbatm_control) > FIELD_SIZEOF(struct sk_buff, cb)) {
 | 
			
		||||
	if (sizeof(struct usbatm_control) > sizeof_field(struct sk_buff, cb)) {
 | 
			
		||||
		printk(KERN_ERR "%s unusable with this kernel!\n", usbatm_driver_name);
 | 
			
		||||
		return -EIO;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3509,7 +3509,7 @@ static void ffs_free_inst(struct usb_function_instance *f)
 | 
			
		|||
 | 
			
		||||
static int ffs_set_inst_name(struct usb_function_instance *fi, const char *name)
 | 
			
		||||
{
 | 
			
		||||
	if (strlen(name) >= FIELD_SIZEOF(struct ffs_dev, name))
 | 
			
		||||
	if (strlen(name) >= sizeof_field(struct ffs_dev, name))
 | 
			
		||||
		return -ENAMETOOLONG;
 | 
			
		||||
	return ffs_name_dev(to_f_fs_opts(fi)->dev, name);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -151,7 +151,7 @@ static struct key *search_fscrypt_keyring(struct key *keyring,
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#define FSCRYPT_FS_KEYRING_DESCRIPTION_SIZE	\
 | 
			
		||||
	(CONST_STRLEN("fscrypt-") + FIELD_SIZEOF(struct super_block, s_id))
 | 
			
		||||
	(CONST_STRLEN("fscrypt-") + sizeof_field(struct super_block, s_id))
 | 
			
		||||
 | 
			
		||||
#define FSCRYPT_MK_DESCRIPTION_SIZE	(2 * FSCRYPT_KEY_IDENTIFIER_SIZE + 1)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -315,7 +315,7 @@ int fsverity_ioctl_enable(struct file *filp, const void __user *uarg)
 | 
			
		|||
	if (arg.block_size != PAGE_SIZE)
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	if (arg.salt_size > FIELD_SIZEOF(struct fsverity_descriptor, salt))
 | 
			
		||||
	if (arg.salt_size > sizeof_field(struct fsverity_descriptor, salt))
 | 
			
		||||
		return -EMSGSIZE;
 | 
			
		||||
 | 
			
		||||
	if (arg.sig_size > FS_VERITY_MAX_SIGNATURE_SIZE)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -420,7 +420,7 @@ static inline bool insn_is_zext(const struct bpf_insn *insn)
 | 
			
		|||
 | 
			
		||||
#define BPF_FIELD_SIZEOF(type, field)				\
 | 
			
		||||
	({							\
 | 
			
		||||
		const int __size = bytes_to_bpf_size(FIELD_SIZEOF(type, field)); \
 | 
			
		||||
		const int __size = bytes_to_bpf_size(sizeof_field(type, field)); \
 | 
			
		||||
		BUILD_BUG_ON(__size < 0);			\
 | 
			
		||||
		__size;						\
 | 
			
		||||
	})
 | 
			
		||||
| 
						 | 
				
			
			@ -497,7 +497,7 @@ static inline bool insn_is_zext(const struct bpf_insn *insn)
 | 
			
		|||
 | 
			
		||||
#define bpf_target_off(TYPE, MEMBER, SIZE, PTR_SIZE)				\
 | 
			
		||||
	({									\
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(TYPE, MEMBER) != (SIZE));		\
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(TYPE, MEMBER) != (SIZE));		\
 | 
			
		||||
		*(PTR_SIZE) = (SIZE);						\
 | 
			
		||||
		offsetof(TYPE, MEMBER);						\
 | 
			
		||||
	})
 | 
			
		||||
| 
						 | 
				
			
			@ -608,7 +608,7 @@ static inline void bpf_compute_data_pointers(struct sk_buff *skb)
 | 
			
		|||
{
 | 
			
		||||
	struct bpf_skb_data_end *cb = (struct bpf_skb_data_end *)skb->cb;
 | 
			
		||||
 | 
			
		||||
	BUILD_BUG_ON(sizeof(*cb) > FIELD_SIZEOF(struct sk_buff, cb));
 | 
			
		||||
	BUILD_BUG_ON(sizeof(*cb) > sizeof_field(struct sk_buff, cb));
 | 
			
		||||
	cb->data_meta = skb->data - skb_metadata_len(skb);
 | 
			
		||||
	cb->data_end  = skb->data + skb_headlen(skb);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -646,9 +646,9 @@ static inline u8 *bpf_skb_cb(struct sk_buff *skb)
 | 
			
		|||
	 * attached to sockets, we need to clear the bpf_skb_cb() area
 | 
			
		||||
	 * to not leak previous contents to user space.
 | 
			
		||||
	 */
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(struct __sk_buff, cb) != BPF_SKB_CB_LEN);
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(struct __sk_buff, cb) !=
 | 
			
		||||
		     FIELD_SIZEOF(struct qdisc_skb_cb, data));
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(struct __sk_buff, cb) != BPF_SKB_CB_LEN);
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(struct __sk_buff, cb) !=
 | 
			
		||||
		     sizeof_field(struct qdisc_skb_cb, data));
 | 
			
		||||
 | 
			
		||||
	return qdisc_skb_cb(skb)->data;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -149,7 +149,7 @@ static inline bool is_error_page(struct page *page)
 | 
			
		|||
#define KVM_REQUEST_ARCH_BASE     8
 | 
			
		||||
 | 
			
		||||
#define KVM_ARCH_REQ_FLAGS(nr, flags) ({ \
 | 
			
		||||
	BUILD_BUG_ON((unsigned)(nr) >= (FIELD_SIZEOF(struct kvm_vcpu, requests) * 8) - KVM_REQUEST_ARCH_BASE); \
 | 
			
		||||
	BUILD_BUG_ON((unsigned)(nr) >= (sizeof_field(struct kvm_vcpu, requests) * 8) - KVM_REQUEST_ARCH_BASE); \
 | 
			
		||||
	(unsigned)(((nr) + KVM_REQUEST_ARCH_BASE) | (flags)); \
 | 
			
		||||
})
 | 
			
		||||
#define KVM_ARCH_REQ(nr)           KVM_ARCH_REQ_FLAGS(nr, 0)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ struct phy_device;
 | 
			
		|||
#define PHY_LED_TRIGGER_SPEED_SUFFIX_SIZE	11
 | 
			
		||||
 | 
			
		||||
#define PHY_LINK_LED_TRIGGER_NAME_SIZE (MII_BUS_ID_SIZE + \
 | 
			
		||||
				       FIELD_SIZEOF(struct mdio_device, addr)+\
 | 
			
		||||
				       sizeof_field(struct mdio_device, addr)+\
 | 
			
		||||
				       PHY_LED_TRIGGER_SPEED_SUFFIX_SIZE)
 | 
			
		||||
 | 
			
		||||
struct phy_led_trigger {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,7 +37,7 @@ struct garp_skb_cb {
 | 
			
		|||
static inline struct garp_skb_cb *garp_cb(struct sk_buff *skb)
 | 
			
		||||
{
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct garp_skb_cb) >
 | 
			
		||||
		     FIELD_SIZEOF(struct sk_buff, cb));
 | 
			
		||||
		     sizeof_field(struct sk_buff, cb));
 | 
			
		||||
	return (struct garp_skb_cb *)skb->cb;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,8 +33,8 @@
 | 
			
		|||
/* Used to memset ipv4 address padding. */
 | 
			
		||||
#define IP_TUNNEL_KEY_IPV4_PAD	offsetofend(struct ip_tunnel_key, u.ipv4.dst)
 | 
			
		||||
#define IP_TUNNEL_KEY_IPV4_PAD_LEN				\
 | 
			
		||||
	(FIELD_SIZEOF(struct ip_tunnel_key, u) -		\
 | 
			
		||||
	 FIELD_SIZEOF(struct ip_tunnel_key, u.ipv4))
 | 
			
		||||
	(sizeof_field(struct ip_tunnel_key, u) -		\
 | 
			
		||||
	 sizeof_field(struct ip_tunnel_key, u.ipv4))
 | 
			
		||||
 | 
			
		||||
struct ip_tunnel_key {
 | 
			
		||||
	__be64			tun_id;
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +63,7 @@ struct ip_tunnel_key {
 | 
			
		|||
 | 
			
		||||
/* Maximum tunnel options length. */
 | 
			
		||||
#define IP_TUNNEL_OPTS_MAX					\
 | 
			
		||||
	GENMASK((FIELD_SIZEOF(struct ip_tunnel_info,		\
 | 
			
		||||
	GENMASK((sizeof_field(struct ip_tunnel_info,		\
 | 
			
		||||
			      options_len) * BITS_PER_BYTE) - 1, 0)
 | 
			
		||||
 | 
			
		||||
struct ip_tunnel_info {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,7 +39,7 @@ struct mrp_skb_cb {
 | 
			
		|||
static inline struct mrp_skb_cb *mrp_cb(struct sk_buff *skb)
 | 
			
		||||
{
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct mrp_skb_cb) >
 | 
			
		||||
		     FIELD_SIZEOF(struct sk_buff, cb));
 | 
			
		||||
		     sizeof_field(struct sk_buff, cb));
 | 
			
		||||
	return (struct mrp_skb_cb *)skb->cb;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -81,7 +81,7 @@ struct nf_conn_help {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
#define NF_CT_HELPER_BUILD_BUG_ON(structsize) \
 | 
			
		||||
	BUILD_BUG_ON((structsize) > FIELD_SIZEOF(struct nf_conn_help, data))
 | 
			
		||||
	BUILD_BUG_ON((structsize) > sizeof_field(struct nf_conn_help, data))
 | 
			
		||||
 | 
			
		||||
struct nf_conntrack_helper *__nf_conntrack_helper_find(const char *name,
 | 
			
		||||
						       u16 l3num, u8 protonum);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ struct nft_immediate_expr {
 | 
			
		|||
 */
 | 
			
		||||
static inline u32 nft_cmp_fast_mask(unsigned int len)
 | 
			
		||||
{
 | 
			
		||||
	return cpu_to_le32(~0U >> (FIELD_SIZEOF(struct nft_cmp_fast_expr,
 | 
			
		||||
	return cpu_to_le32(~0U >> (sizeof_field(struct nft_cmp_fast_expr,
 | 
			
		||||
						data) * BITS_PER_BYTE - len));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2305,7 +2305,7 @@ struct sock_skb_cb {
 | 
			
		|||
 * using skb->cb[] would keep using it directly and utilize its
 | 
			
		||||
 * alignement guarantee.
 | 
			
		||||
 */
 | 
			
		||||
#define SOCK_SKB_CB_OFFSET ((FIELD_SIZEOF(struct sk_buff, cb) - \
 | 
			
		||||
#define SOCK_SKB_CB_OFFSET ((sizeof_field(struct sk_buff, cb) - \
 | 
			
		||||
			    sizeof(struct sock_skb_cb)))
 | 
			
		||||
 | 
			
		||||
#define SOCK_SKB_CB(__skb) ((struct sock_skb_cb *)((__skb)->cb + \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -100,7 +100,7 @@ device_initcall(ipc_init);
 | 
			
		|||
static const struct rhashtable_params ipc_kht_params = {
 | 
			
		||||
	.head_offset		= offsetof(struct kern_ipc_perm, khtnode),
 | 
			
		||||
	.key_offset		= offsetof(struct kern_ipc_perm, key),
 | 
			
		||||
	.key_len		= FIELD_SIZEOF(struct kern_ipc_perm, key),
 | 
			
		||||
	.key_len		= sizeof_field(struct kern_ipc_perm, key),
 | 
			
		||||
	.automatic_shrinking	= true,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1341,7 +1341,7 @@ static u32 sysctl_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		*insn++ = BPF_LDX_MEM(
 | 
			
		||||
			BPF_SIZE(si->code), si->dst_reg, si->src_reg,
 | 
			
		||||
			bpf_target_off(struct bpf_sysctl_kern, write,
 | 
			
		||||
				       FIELD_SIZEOF(struct bpf_sysctl_kern,
 | 
			
		||||
				       sizeof_field(struct bpf_sysctl_kern,
 | 
			
		||||
						    write),
 | 
			
		||||
				       target_size));
 | 
			
		||||
		break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -357,7 +357,7 @@ static int cgroup_storage_check_btf(const struct bpf_map *map,
 | 
			
		|||
	 * The first field must be a 64 bit integer at 0 offset.
 | 
			
		||||
	 */
 | 
			
		||||
	m = (struct btf_member *)(key_type + 1);
 | 
			
		||||
	size = FIELD_SIZEOF(struct bpf_cgroup_storage_key, cgroup_inode_id);
 | 
			
		||||
	size = sizeof_field(struct bpf_cgroup_storage_key, cgroup_inode_id);
 | 
			
		||||
	if (!btf_member_is_reg_int(btf, key_type, m, 0, size))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -366,7 +366,7 @@ static int cgroup_storage_check_btf(const struct bpf_map *map,
 | 
			
		|||
	 */
 | 
			
		||||
	m++;
 | 
			
		||||
	offset = offsetof(struct bpf_cgroup_storage_key, attach_type);
 | 
			
		||||
	size = FIELD_SIZEOF(struct bpf_cgroup_storage_key, attach_type);
 | 
			
		||||
	size = sizeof_field(struct bpf_cgroup_storage_key, attach_type);
 | 
			
		||||
	if (!btf_member_is_reg_int(btf, key_type, m, offset, size))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -523,7 +523,7 @@ int mrp_request_join(const struct net_device *dev,
 | 
			
		|||
	struct mrp_attr *attr;
 | 
			
		||||
 | 
			
		||||
	if (sizeof(struct mrp_skb_cb) + len >
 | 
			
		||||
	    FIELD_SIZEOF(struct sk_buff, cb))
 | 
			
		||||
	    sizeof_field(struct sk_buff, cb))
 | 
			
		||||
		return -ENOMEM;
 | 
			
		||||
 | 
			
		||||
	spin_lock_bh(&app->lock);
 | 
			
		||||
| 
						 | 
				
			
			@ -548,7 +548,7 @@ void mrp_request_leave(const struct net_device *dev,
 | 
			
		|||
	struct mrp_attr *attr;
 | 
			
		||||
 | 
			
		||||
	if (sizeof(struct mrp_skb_cb) + len >
 | 
			
		||||
	    FIELD_SIZEOF(struct sk_buff, cb))
 | 
			
		||||
	    sizeof_field(struct sk_buff, cb))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	spin_lock_bh(&app->lock);
 | 
			
		||||
| 
						 | 
				
			
			@ -692,7 +692,7 @@ static int mrp_pdu_parse_vecattr(struct mrp_applicant *app,
 | 
			
		|||
	 * advance to the next event in its Vector.
 | 
			
		||||
	 */
 | 
			
		||||
	if (sizeof(struct mrp_skb_cb) + mrp_cb(skb)->mh->attrlen >
 | 
			
		||||
	    FIELD_SIZEOF(struct sk_buff, cb))
 | 
			
		||||
	    sizeof_field(struct sk_buff, cb))
 | 
			
		||||
		return -1;
 | 
			
		||||
	if (skb_copy_bits(skb, *offset, mrp_cb(skb)->attrvalue,
 | 
			
		||||
			  mrp_cb(skb)->mh->attrlen) < 0)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -548,7 +548,7 @@ static void batadv_recv_handler_init(void)
 | 
			
		|||
	BUILD_BUG_ON(sizeof(struct batadv_tvlv_tt_change) != 12);
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct batadv_tvlv_roam_adv) != 8);
 | 
			
		||||
 | 
			
		||||
	i = FIELD_SIZEOF(struct sk_buff, cb);
 | 
			
		||||
	i = sizeof_field(struct sk_buff, cb);
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct batadv_skb_cb) > i);
 | 
			
		||||
 | 
			
		||||
	/* broadcast packet */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -253,21 +253,21 @@ static int convert___skb_to_skb(struct sk_buff *skb, struct __sk_buff *__skb)
 | 
			
		|||
	/* priority is allowed */
 | 
			
		||||
 | 
			
		||||
	if (!range_is_zero(__skb, offsetof(struct __sk_buff, priority) +
 | 
			
		||||
			   FIELD_SIZEOF(struct __sk_buff, priority),
 | 
			
		||||
			   sizeof_field(struct __sk_buff, priority),
 | 
			
		||||
			   offsetof(struct __sk_buff, cb)))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	/* cb is allowed */
 | 
			
		||||
 | 
			
		||||
	if (!range_is_zero(__skb, offsetof(struct __sk_buff, cb) +
 | 
			
		||||
			   FIELD_SIZEOF(struct __sk_buff, cb),
 | 
			
		||||
			   sizeof_field(struct __sk_buff, cb),
 | 
			
		||||
			   offsetof(struct __sk_buff, tstamp)))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	/* tstamp is allowed */
 | 
			
		||||
 | 
			
		||||
	if (!range_is_zero(__skb, offsetof(struct __sk_buff, tstamp) +
 | 
			
		||||
			   FIELD_SIZEOF(struct __sk_buff, tstamp),
 | 
			
		||||
			   sizeof_field(struct __sk_buff, tstamp),
 | 
			
		||||
			   sizeof(struct __sk_buff)))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -438,7 +438,7 @@ static int verify_user_bpf_flow_keys(struct bpf_flow_keys *ctx)
 | 
			
		|||
	/* flags is allowed */
 | 
			
		||||
 | 
			
		||||
	if (!range_is_zero(ctx, offsetof(struct bpf_flow_keys, flags) +
 | 
			
		||||
			   FIELD_SIZEOF(struct bpf_flow_keys, flags),
 | 
			
		||||
			   sizeof_field(struct bpf_flow_keys, flags),
 | 
			
		||||
			   sizeof(struct bpf_flow_keys)))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -312,7 +312,7 @@ static int __init br_init(void)
 | 
			
		|||
{
 | 
			
		||||
	int err;
 | 
			
		||||
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct br_input_skb_cb) > FIELD_SIZEOF(struct sk_buff, cb));
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct br_input_skb_cb) > sizeof_field(struct sk_buff, cb));
 | 
			
		||||
 | 
			
		||||
	err = stp_proto_register(&br_stp_proto);
 | 
			
		||||
	if (err < 0) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10165,7 +10165,7 @@ static struct hlist_head * __net_init netdev_create_hash(void)
 | 
			
		|||
static int __net_init netdev_init(struct net *net)
 | 
			
		||||
{
 | 
			
		||||
	BUILD_BUG_ON(GRO_HASH_BUCKETS >
 | 
			
		||||
		     8 * FIELD_SIZEOF(struct napi_struct, gro_bitmask));
 | 
			
		||||
		     8 * sizeof_field(struct napi_struct, gro_bitmask));
 | 
			
		||||
 | 
			
		||||
	if (net != &init_net)
 | 
			
		||||
		INIT_LIST_HEAD(&net->dev_base_head);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -274,7 +274,7 @@ static u32 convert_skb_access(int skb_field, int dst_reg, int src_reg,
 | 
			
		|||
 | 
			
		||||
	switch (skb_field) {
 | 
			
		||||
	case SKF_AD_MARK:
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, mark) != 4);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sk_buff, mark) != 4);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_W, dst_reg, src_reg,
 | 
			
		||||
				      offsetof(struct sk_buff, mark));
 | 
			
		||||
| 
						 | 
				
			
			@ -289,14 +289,14 @@ static u32 convert_skb_access(int skb_field, int dst_reg, int src_reg,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case SKF_AD_QUEUE:
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, queue_mapping) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sk_buff, queue_mapping) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_H, dst_reg, src_reg,
 | 
			
		||||
				      offsetof(struct sk_buff, queue_mapping));
 | 
			
		||||
		break;
 | 
			
		||||
 | 
			
		||||
	case SKF_AD_VLAN_TAG:
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, vlan_tci) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sk_buff, vlan_tci) != 2);
 | 
			
		||||
 | 
			
		||||
		/* dst_reg = *(u16 *) (src_reg + offsetof(vlan_tci)) */
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_H, dst_reg, src_reg,
 | 
			
		||||
| 
						 | 
				
			
			@ -322,7 +322,7 @@ static bool convert_bpf_extensions(struct sock_filter *fp,
 | 
			
		|||
 | 
			
		||||
	switch (fp->k) {
 | 
			
		||||
	case SKF_AD_OFF + SKF_AD_PROTOCOL:
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, protocol) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sk_buff, protocol) != 2);
 | 
			
		||||
 | 
			
		||||
		/* A = *(u16 *) (CTX + offsetof(protocol)) */
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_H, BPF_REG_A, BPF_REG_CTX,
 | 
			
		||||
| 
						 | 
				
			
			@ -338,8 +338,8 @@ static bool convert_bpf_extensions(struct sock_filter *fp,
 | 
			
		|||
 | 
			
		||||
	case SKF_AD_OFF + SKF_AD_IFINDEX:
 | 
			
		||||
	case SKF_AD_OFF + SKF_AD_HATYPE:
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct net_device, ifindex) != 4);
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct net_device, type) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct net_device, ifindex) != 4);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct net_device, type) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_buff, dev),
 | 
			
		||||
				      BPF_REG_TMP, BPF_REG_CTX,
 | 
			
		||||
| 
						 | 
				
			
			@ -361,7 +361,7 @@ static bool convert_bpf_extensions(struct sock_filter *fp,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case SKF_AD_OFF + SKF_AD_RXHASH:
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, hash) != 4);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sk_buff, hash) != 4);
 | 
			
		||||
 | 
			
		||||
		*insn = BPF_LDX_MEM(BPF_W, BPF_REG_A, BPF_REG_CTX,
 | 
			
		||||
				    offsetof(struct sk_buff, hash));
 | 
			
		||||
| 
						 | 
				
			
			@ -385,7 +385,7 @@ static bool convert_bpf_extensions(struct sock_filter *fp,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case SKF_AD_OFF + SKF_AD_VLAN_TPID:
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, vlan_proto) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sk_buff, vlan_proto) != 2);
 | 
			
		||||
 | 
			
		||||
		/* A = *(u16 *) (CTX + offsetof(vlan_proto)) */
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_H, BPF_REG_A, BPF_REG_CTX,
 | 
			
		||||
| 
						 | 
				
			
			@ -5589,8 +5589,8 @@ u32 bpf_tcp_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
 | 
			
		||||
#define BPF_TCP_SOCK_GET_COMMON(FIELD)					\
 | 
			
		||||
	do {								\
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct tcp_sock, FIELD) >	\
 | 
			
		||||
			     FIELD_SIZEOF(struct bpf_tcp_sock, FIELD));	\
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct tcp_sock, FIELD) >	\
 | 
			
		||||
			     sizeof_field(struct bpf_tcp_sock, FIELD));	\
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct tcp_sock, FIELD),\
 | 
			
		||||
				      si->dst_reg, si->src_reg,		\
 | 
			
		||||
				      offsetof(struct tcp_sock, FIELD)); \
 | 
			
		||||
| 
						 | 
				
			
			@ -5598,9 +5598,9 @@ u32 bpf_tcp_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
 | 
			
		||||
#define BPF_INET_SOCK_GET_COMMON(FIELD)					\
 | 
			
		||||
	do {								\
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct inet_connection_sock,	\
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct inet_connection_sock,	\
 | 
			
		||||
					  FIELD) >			\
 | 
			
		||||
			     FIELD_SIZEOF(struct bpf_tcp_sock, FIELD));	\
 | 
			
		||||
			     sizeof_field(struct bpf_tcp_sock, FIELD));	\
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(			\
 | 
			
		||||
					struct inet_connection_sock,	\
 | 
			
		||||
					FIELD),				\
 | 
			
		||||
| 
						 | 
				
			
			@ -5615,7 +5615,7 @@ u32 bpf_tcp_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
 | 
			
		||||
	switch (si->off) {
 | 
			
		||||
	case offsetof(struct bpf_tcp_sock, rtt_min):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct tcp_sock, rtt_min) !=
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct tcp_sock, rtt_min) !=
 | 
			
		||||
			     sizeof(struct minmax));
 | 
			
		||||
		BUILD_BUG_ON(sizeof(struct minmax) <
 | 
			
		||||
			     sizeof(struct minmax_sample));
 | 
			
		||||
| 
						 | 
				
			
			@ -5780,8 +5780,8 @@ u32 bpf_xdp_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
 | 
			
		||||
#define BPF_XDP_SOCK_GET(FIELD)						\
 | 
			
		||||
	do {								\
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct xdp_sock, FIELD) >	\
 | 
			
		||||
			     FIELD_SIZEOF(struct bpf_xdp_sock, FIELD));	\
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct xdp_sock, FIELD) >	\
 | 
			
		||||
			     sizeof_field(struct bpf_xdp_sock, FIELD));	\
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct xdp_sock, FIELD),\
 | 
			
		||||
				      si->dst_reg, si->src_reg,		\
 | 
			
		||||
				      offsetof(struct xdp_sock, FIELD)); \
 | 
			
		||||
| 
						 | 
				
			
			@ -7344,7 +7344,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
 | 
			
		||||
	case offsetof(struct __sk_buff, cb[0]) ...
 | 
			
		||||
	     offsetofend(struct __sk_buff, cb[4]) - 1:
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct qdisc_skb_cb, data) < 20);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct qdisc_skb_cb, data) < 20);
 | 
			
		||||
		BUILD_BUG_ON((offsetof(struct sk_buff, cb) +
 | 
			
		||||
			      offsetof(struct qdisc_skb_cb, data)) %
 | 
			
		||||
			     sizeof(__u64));
 | 
			
		||||
| 
						 | 
				
			
			@ -7363,7 +7363,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct __sk_buff, tc_classid):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct qdisc_skb_cb, tc_classid) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct qdisc_skb_cb, tc_classid) != 2);
 | 
			
		||||
 | 
			
		||||
		off  = si->off;
 | 
			
		||||
		off -= offsetof(struct __sk_buff, tc_classid);
 | 
			
		||||
| 
						 | 
				
			
			@ -7434,7 +7434,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
#endif
 | 
			
		||||
		break;
 | 
			
		||||
	case offsetof(struct __sk_buff, family):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_family) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_family) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_buff, sk),
 | 
			
		||||
				      si->dst_reg, si->src_reg,
 | 
			
		||||
| 
						 | 
				
			
			@ -7445,7 +7445,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
						     2, target_size));
 | 
			
		||||
		break;
 | 
			
		||||
	case offsetof(struct __sk_buff, remote_ip4):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_daddr) != 4);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_daddr) != 4);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_buff, sk),
 | 
			
		||||
				      si->dst_reg, si->src_reg,
 | 
			
		||||
| 
						 | 
				
			
			@ -7456,7 +7456,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
						     4, target_size));
 | 
			
		||||
		break;
 | 
			
		||||
	case offsetof(struct __sk_buff, local_ip4):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common,
 | 
			
		||||
					  skc_rcv_saddr) != 4);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_buff, sk),
 | 
			
		||||
| 
						 | 
				
			
			@ -7470,7 +7470,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
	case offsetof(struct __sk_buff, remote_ip6[0]) ...
 | 
			
		||||
	     offsetof(struct __sk_buff, remote_ip6[3]):
 | 
			
		||||
#if IS_ENABLED(CONFIG_IPV6)
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common,
 | 
			
		||||
					  skc_v6_daddr.s6_addr32[0]) != 4);
 | 
			
		||||
 | 
			
		||||
		off = si->off;
 | 
			
		||||
| 
						 | 
				
			
			@ -7490,7 +7490,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
	case offsetof(struct __sk_buff, local_ip6[0]) ...
 | 
			
		||||
	     offsetof(struct __sk_buff, local_ip6[3]):
 | 
			
		||||
#if IS_ENABLED(CONFIG_IPV6)
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common,
 | 
			
		||||
					  skc_v6_rcv_saddr.s6_addr32[0]) != 4);
 | 
			
		||||
 | 
			
		||||
		off = si->off;
 | 
			
		||||
| 
						 | 
				
			
			@ -7509,7 +7509,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct __sk_buff, remote_port):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_dport) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_dport) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_buff, sk),
 | 
			
		||||
				      si->dst_reg, si->src_reg,
 | 
			
		||||
| 
						 | 
				
			
			@ -7524,7 +7524,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct __sk_buff, local_port):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_num) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_num) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_buff, sk),
 | 
			
		||||
				      si->dst_reg, si->src_reg,
 | 
			
		||||
| 
						 | 
				
			
			@ -7535,7 +7535,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct __sk_buff, tstamp):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, tstamp) != 8);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sk_buff, tstamp) != 8);
 | 
			
		||||
 | 
			
		||||
		if (type == BPF_WRITE)
 | 
			
		||||
			*insn++ = BPF_STX_MEM(BPF_DW,
 | 
			
		||||
| 
						 | 
				
			
			@ -7573,7 +7573,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
						     target_size));
 | 
			
		||||
		break;
 | 
			
		||||
	case offsetof(struct __sk_buff, wire_len):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct qdisc_skb_cb, pkt_len) != 4);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct qdisc_skb_cb, pkt_len) != 4);
 | 
			
		||||
 | 
			
		||||
		off = si->off;
 | 
			
		||||
		off -= offsetof(struct __sk_buff, wire_len);
 | 
			
		||||
| 
						 | 
				
			
			@ -7603,7 +7603,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
 | 
			
		||||
	switch (si->off) {
 | 
			
		||||
	case offsetof(struct bpf_sock, bound_dev_if):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock, sk_bound_dev_if) != 4);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock, sk_bound_dev_if) != 4);
 | 
			
		||||
 | 
			
		||||
		if (type == BPF_WRITE)
 | 
			
		||||
			*insn++ = BPF_STX_MEM(BPF_W, si->dst_reg, si->src_reg,
 | 
			
		||||
| 
						 | 
				
			
			@ -7614,7 +7614,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct bpf_sock, mark):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock, sk_mark) != 4);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock, sk_mark) != 4);
 | 
			
		||||
 | 
			
		||||
		if (type == BPF_WRITE)
 | 
			
		||||
			*insn++ = BPF_STX_MEM(BPF_W, si->dst_reg, si->src_reg,
 | 
			
		||||
| 
						 | 
				
			
			@ -7625,7 +7625,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct bpf_sock, priority):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock, sk_priority) != 4);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock, sk_priority) != 4);
 | 
			
		||||
 | 
			
		||||
		if (type == BPF_WRITE)
 | 
			
		||||
			*insn++ = BPF_STX_MEM(BPF_W, si->dst_reg, si->src_reg,
 | 
			
		||||
| 
						 | 
				
			
			@ -7641,7 +7641,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
			si->dst_reg, si->src_reg,
 | 
			
		||||
			bpf_target_off(struct sock_common,
 | 
			
		||||
				       skc_family,
 | 
			
		||||
				       FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
				       sizeof_field(struct sock_common,
 | 
			
		||||
						    skc_family),
 | 
			
		||||
				       target_size));
 | 
			
		||||
		break;
 | 
			
		||||
| 
						 | 
				
			
			@ -7668,7 +7668,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		*insn++ = BPF_LDX_MEM(
 | 
			
		||||
			BPF_SIZE(si->code), si->dst_reg, si->src_reg,
 | 
			
		||||
			bpf_target_off(struct sock_common, skc_rcv_saddr,
 | 
			
		||||
				       FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
				       sizeof_field(struct sock_common,
 | 
			
		||||
						    skc_rcv_saddr),
 | 
			
		||||
				       target_size));
 | 
			
		||||
		break;
 | 
			
		||||
| 
						 | 
				
			
			@ -7677,7 +7677,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		*insn++ = BPF_LDX_MEM(
 | 
			
		||||
			BPF_SIZE(si->code), si->dst_reg, si->src_reg,
 | 
			
		||||
			bpf_target_off(struct sock_common, skc_daddr,
 | 
			
		||||
				       FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
				       sizeof_field(struct sock_common,
 | 
			
		||||
						    skc_daddr),
 | 
			
		||||
				       target_size));
 | 
			
		||||
		break;
 | 
			
		||||
| 
						 | 
				
			
			@ -7691,7 +7691,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
			bpf_target_off(
 | 
			
		||||
				struct sock_common,
 | 
			
		||||
				skc_v6_rcv_saddr.s6_addr32[0],
 | 
			
		||||
				FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
				sizeof_field(struct sock_common,
 | 
			
		||||
					     skc_v6_rcv_saddr.s6_addr32[0]),
 | 
			
		||||
				target_size) + off);
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			@ -7708,7 +7708,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
			BPF_SIZE(si->code), si->dst_reg, si->src_reg,
 | 
			
		||||
			bpf_target_off(struct sock_common,
 | 
			
		||||
				       skc_v6_daddr.s6_addr32[0],
 | 
			
		||||
				       FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
				       sizeof_field(struct sock_common,
 | 
			
		||||
						    skc_v6_daddr.s6_addr32[0]),
 | 
			
		||||
				       target_size) + off);
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			@ -7722,7 +7722,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
			BPF_FIELD_SIZEOF(struct sock_common, skc_num),
 | 
			
		||||
			si->dst_reg, si->src_reg,
 | 
			
		||||
			bpf_target_off(struct sock_common, skc_num,
 | 
			
		||||
				       FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
				       sizeof_field(struct sock_common,
 | 
			
		||||
						    skc_num),
 | 
			
		||||
				       target_size));
 | 
			
		||||
		break;
 | 
			
		||||
| 
						 | 
				
			
			@ -7732,7 +7732,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
			BPF_FIELD_SIZEOF(struct sock_common, skc_dport),
 | 
			
		||||
			si->dst_reg, si->src_reg,
 | 
			
		||||
			bpf_target_off(struct sock_common, skc_dport,
 | 
			
		||||
				       FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
				       sizeof_field(struct sock_common,
 | 
			
		||||
						    skc_dport),
 | 
			
		||||
				       target_size));
 | 
			
		||||
		break;
 | 
			
		||||
| 
						 | 
				
			
			@ -7742,7 +7742,7 @@ u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
			BPF_FIELD_SIZEOF(struct sock_common, skc_state),
 | 
			
		||||
			si->dst_reg, si->src_reg,
 | 
			
		||||
			bpf_target_off(struct sock_common, skc_state,
 | 
			
		||||
				       FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
				       sizeof_field(struct sock_common,
 | 
			
		||||
						    skc_state),
 | 
			
		||||
				       target_size));
 | 
			
		||||
		break;
 | 
			
		||||
| 
						 | 
				
			
			@ -7837,7 +7837,7 @@ static u32 xdp_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
				      si->src_reg, offsetof(S, F));	       \
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(					       \
 | 
			
		||||
			SIZE, si->dst_reg, si->dst_reg,			       \
 | 
			
		||||
			bpf_target_off(NS, NF, FIELD_SIZEOF(NS, NF),	       \
 | 
			
		||||
			bpf_target_off(NS, NF, sizeof_field(NS, NF),	       \
 | 
			
		||||
				       target_size)			       \
 | 
			
		||||
				+ OFF);					       \
 | 
			
		||||
	} while (0)
 | 
			
		||||
| 
						 | 
				
			
			@ -7868,7 +7868,7 @@ static u32 xdp_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(S, F), tmp_reg,	       \
 | 
			
		||||
				      si->dst_reg, offsetof(S, F));	       \
 | 
			
		||||
		*insn++ = BPF_STX_MEM(SIZE, tmp_reg, si->src_reg,	       \
 | 
			
		||||
			bpf_target_off(NS, NF, FIELD_SIZEOF(NS, NF),	       \
 | 
			
		||||
			bpf_target_off(NS, NF, sizeof_field(NS, NF),	       \
 | 
			
		||||
				       target_size)			       \
 | 
			
		||||
				+ OFF);					       \
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_DW, tmp_reg, si->dst_reg,	       \
 | 
			
		||||
| 
						 | 
				
			
			@ -7930,8 +7930,8 @@ static u32 sock_addr_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		 */
 | 
			
		||||
		BUILD_BUG_ON(offsetof(struct sockaddr_in, sin_port) !=
 | 
			
		||||
			     offsetof(struct sockaddr_in6, sin6_port));
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sockaddr_in, sin_port) !=
 | 
			
		||||
			     FIELD_SIZEOF(struct sockaddr_in6, sin6_port));
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sockaddr_in, sin_port) !=
 | 
			
		||||
			     sizeof_field(struct sockaddr_in6, sin6_port));
 | 
			
		||||
		SOCK_ADDR_LOAD_OR_STORE_NESTED_FIELD(struct bpf_sock_addr_kern,
 | 
			
		||||
						     struct sockaddr_in6, uaddr,
 | 
			
		||||
						     sin6_port, tmp_reg);
 | 
			
		||||
| 
						 | 
				
			
			@ -7997,8 +7997,8 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
/* Helper macro for adding read access to tcp_sock or sock fields. */
 | 
			
		||||
#define SOCK_OPS_GET_FIELD(BPF_FIELD, OBJ_FIELD, OBJ)			      \
 | 
			
		||||
	do {								      \
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(OBJ, OBJ_FIELD) >		      \
 | 
			
		||||
			     FIELD_SIZEOF(struct bpf_sock_ops, BPF_FIELD));   \
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(OBJ, OBJ_FIELD) >		      \
 | 
			
		||||
			     sizeof_field(struct bpf_sock_ops, BPF_FIELD));   \
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(			      \
 | 
			
		||||
						struct bpf_sock_ops_kern,     \
 | 
			
		||||
						is_fullsock),		      \
 | 
			
		||||
| 
						 | 
				
			
			@ -8031,8 +8031,8 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
#define SOCK_OPS_SET_FIELD(BPF_FIELD, OBJ_FIELD, OBJ)			      \
 | 
			
		||||
	do {								      \
 | 
			
		||||
		int reg = BPF_REG_9;					      \
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(OBJ, OBJ_FIELD) >		      \
 | 
			
		||||
			     FIELD_SIZEOF(struct bpf_sock_ops, BPF_FIELD));   \
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(OBJ, OBJ_FIELD) >		      \
 | 
			
		||||
			     sizeof_field(struct bpf_sock_ops, BPF_FIELD));   \
 | 
			
		||||
		if (si->dst_reg == reg || si->src_reg == reg)		      \
 | 
			
		||||
			reg--;						      \
 | 
			
		||||
		if (si->dst_reg == reg || si->src_reg == reg)		      \
 | 
			
		||||
| 
						 | 
				
			
			@ -8073,12 +8073,12 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
	switch (si->off) {
 | 
			
		||||
	case offsetof(struct bpf_sock_ops, op) ...
 | 
			
		||||
	     offsetof(struct bpf_sock_ops, replylong[3]):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct bpf_sock_ops, op) !=
 | 
			
		||||
			     FIELD_SIZEOF(struct bpf_sock_ops_kern, op));
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct bpf_sock_ops, reply) !=
 | 
			
		||||
			     FIELD_SIZEOF(struct bpf_sock_ops_kern, reply));
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct bpf_sock_ops, replylong) !=
 | 
			
		||||
			     FIELD_SIZEOF(struct bpf_sock_ops_kern, replylong));
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct bpf_sock_ops, op) !=
 | 
			
		||||
			     sizeof_field(struct bpf_sock_ops_kern, op));
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct bpf_sock_ops, reply) !=
 | 
			
		||||
			     sizeof_field(struct bpf_sock_ops_kern, reply));
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct bpf_sock_ops, replylong) !=
 | 
			
		||||
			     sizeof_field(struct bpf_sock_ops_kern, replylong));
 | 
			
		||||
		off = si->off;
 | 
			
		||||
		off -= offsetof(struct bpf_sock_ops, op);
 | 
			
		||||
		off += offsetof(struct bpf_sock_ops_kern, op);
 | 
			
		||||
| 
						 | 
				
			
			@ -8091,7 +8091,7 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct bpf_sock_ops, family):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_family) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_family) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
					      struct bpf_sock_ops_kern, sk),
 | 
			
		||||
| 
						 | 
				
			
			@ -8102,7 +8102,7 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct bpf_sock_ops, remote_ip4):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_daddr) != 4);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_daddr) != 4);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
						struct bpf_sock_ops_kern, sk),
 | 
			
		||||
| 
						 | 
				
			
			@ -8113,7 +8113,7 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct bpf_sock_ops, local_ip4):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common,
 | 
			
		||||
					  skc_rcv_saddr) != 4);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
| 
						 | 
				
			
			@ -8128,7 +8128,7 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
	case offsetof(struct bpf_sock_ops, remote_ip6[0]) ...
 | 
			
		||||
	     offsetof(struct bpf_sock_ops, remote_ip6[3]):
 | 
			
		||||
#if IS_ENABLED(CONFIG_IPV6)
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common,
 | 
			
		||||
					  skc_v6_daddr.s6_addr32[0]) != 4);
 | 
			
		||||
 | 
			
		||||
		off = si->off;
 | 
			
		||||
| 
						 | 
				
			
			@ -8149,7 +8149,7 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
	case offsetof(struct bpf_sock_ops, local_ip6[0]) ...
 | 
			
		||||
	     offsetof(struct bpf_sock_ops, local_ip6[3]):
 | 
			
		||||
#if IS_ENABLED(CONFIG_IPV6)
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common,
 | 
			
		||||
					  skc_v6_rcv_saddr.s6_addr32[0]) != 4);
 | 
			
		||||
 | 
			
		||||
		off = si->off;
 | 
			
		||||
| 
						 | 
				
			
			@ -8168,7 +8168,7 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct bpf_sock_ops, remote_port):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_dport) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_dport) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
						struct bpf_sock_ops_kern, sk),
 | 
			
		||||
| 
						 | 
				
			
			@ -8182,7 +8182,7 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct bpf_sock_ops, local_port):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_num) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_num) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
						struct bpf_sock_ops_kern, sk),
 | 
			
		||||
| 
						 | 
				
			
			@ -8202,7 +8202,7 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct bpf_sock_ops, state):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_state) != 1);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_state) != 1);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
						struct bpf_sock_ops_kern, sk),
 | 
			
		||||
| 
						 | 
				
			
			@ -8213,7 +8213,7 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct bpf_sock_ops, rtt_min):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct tcp_sock, rtt_min) !=
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct tcp_sock, rtt_min) !=
 | 
			
		||||
			     sizeof(struct minmax));
 | 
			
		||||
		BUILD_BUG_ON(sizeof(struct minmax) <
 | 
			
		||||
			     sizeof(struct minmax_sample));
 | 
			
		||||
| 
						 | 
				
			
			@ -8224,7 +8224,7 @@ static u32 sock_ops_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
				      offsetof(struct bpf_sock_ops_kern, sk));
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
 | 
			
		||||
				      offsetof(struct tcp_sock, rtt_min) +
 | 
			
		||||
				      FIELD_SIZEOF(struct minmax_sample, t));
 | 
			
		||||
				      sizeof_field(struct minmax_sample, t));
 | 
			
		||||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct bpf_sock_ops, bpf_sock_ops_cb_flags):
 | 
			
		||||
| 
						 | 
				
			
			@ -8366,7 +8366,7 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
				      offsetof(struct sk_msg, data_end));
 | 
			
		||||
		break;
 | 
			
		||||
	case offsetof(struct sk_msg_md, family):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_family) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_family) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
					      struct sk_msg, sk),
 | 
			
		||||
| 
						 | 
				
			
			@ -8377,7 +8377,7 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct sk_msg_md, remote_ip4):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_daddr) != 4);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_daddr) != 4);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
						struct sk_msg, sk),
 | 
			
		||||
| 
						 | 
				
			
			@ -8388,7 +8388,7 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct sk_msg_md, local_ip4):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common,
 | 
			
		||||
					  skc_rcv_saddr) != 4);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
| 
						 | 
				
			
			@ -8403,7 +8403,7 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
	case offsetof(struct sk_msg_md, remote_ip6[0]) ...
 | 
			
		||||
	     offsetof(struct sk_msg_md, remote_ip6[3]):
 | 
			
		||||
#if IS_ENABLED(CONFIG_IPV6)
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common,
 | 
			
		||||
					  skc_v6_daddr.s6_addr32[0]) != 4);
 | 
			
		||||
 | 
			
		||||
		off = si->off;
 | 
			
		||||
| 
						 | 
				
			
			@ -8424,7 +8424,7 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
	case offsetof(struct sk_msg_md, local_ip6[0]) ...
 | 
			
		||||
	     offsetof(struct sk_msg_md, local_ip6[3]):
 | 
			
		||||
#if IS_ENABLED(CONFIG_IPV6)
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common,
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common,
 | 
			
		||||
					  skc_v6_rcv_saddr.s6_addr32[0]) != 4);
 | 
			
		||||
 | 
			
		||||
		off = si->off;
 | 
			
		||||
| 
						 | 
				
			
			@ -8443,7 +8443,7 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct sk_msg_md, remote_port):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_dport) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_dport) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
						struct sk_msg, sk),
 | 
			
		||||
| 
						 | 
				
			
			@ -8457,7 +8457,7 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
 | 
			
		|||
		break;
 | 
			
		||||
 | 
			
		||||
	case offsetof(struct sk_msg_md, local_port):
 | 
			
		||||
		BUILD_BUG_ON(FIELD_SIZEOF(struct sock_common, skc_num) != 2);
 | 
			
		||||
		BUILD_BUG_ON(sizeof_field(struct sock_common, skc_num) != 2);
 | 
			
		||||
 | 
			
		||||
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(
 | 
			
		||||
						struct sk_msg, sk),
 | 
			
		||||
| 
						 | 
				
			
			@ -8847,7 +8847,7 @@ sk_reuseport_is_valid_access(int off, int size,
 | 
			
		|||
 | 
			
		||||
	/* Fields that allow narrowing */
 | 
			
		||||
	case bpf_ctx_range(struct sk_reuseport_md, eth_protocol):
 | 
			
		||||
		if (size < FIELD_SIZEOF(struct sk_buff, protocol))
 | 
			
		||||
		if (size < sizeof_field(struct sk_buff, protocol))
 | 
			
		||||
			return false;
 | 
			
		||||
		/* fall through */
 | 
			
		||||
	case bpf_ctx_range(struct sk_reuseport_md, ip_protocol):
 | 
			
		||||
| 
						 | 
				
			
			@ -8865,7 +8865,7 @@ sk_reuseport_is_valid_access(int off, int size,
 | 
			
		|||
	*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_reuseport_kern, F), \
 | 
			
		||||
			      si->dst_reg, si->src_reg,			\
 | 
			
		||||
			      bpf_target_off(struct sk_reuseport_kern, F, \
 | 
			
		||||
					     FIELD_SIZEOF(struct sk_reuseport_kern, F), \
 | 
			
		||||
					     sizeof_field(struct sk_reuseport_kern, F), \
 | 
			
		||||
					     target_size));		\
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -599,8 +599,8 @@ __skb_flow_dissect_gre(const struct sk_buff *skb,
 | 
			
		|||
	offset += sizeof(struct gre_base_hdr);
 | 
			
		||||
 | 
			
		||||
	if (hdr->flags & GRE_CSUM)
 | 
			
		||||
		offset += FIELD_SIZEOF(struct gre_full_hdr, csum) +
 | 
			
		||||
			  FIELD_SIZEOF(struct gre_full_hdr, reserved1);
 | 
			
		||||
		offset += sizeof_field(struct gre_full_hdr, csum) +
 | 
			
		||||
			  sizeof_field(struct gre_full_hdr, reserved1);
 | 
			
		||||
 | 
			
		||||
	if (hdr->flags & GRE_KEY) {
 | 
			
		||||
		const __be32 *keyid;
 | 
			
		||||
| 
						 | 
				
			
			@ -622,11 +622,11 @@ __skb_flow_dissect_gre(const struct sk_buff *skb,
 | 
			
		|||
			else
 | 
			
		||||
				key_keyid->keyid = *keyid & GRE_PPTP_KEY_MASK;
 | 
			
		||||
		}
 | 
			
		||||
		offset += FIELD_SIZEOF(struct gre_full_hdr, key);
 | 
			
		||||
		offset += sizeof_field(struct gre_full_hdr, key);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (hdr->flags & GRE_SEQ)
 | 
			
		||||
		offset += FIELD_SIZEOF(struct pptp_gre_header, seq);
 | 
			
		||||
		offset += sizeof_field(struct pptp_gre_header, seq);
 | 
			
		||||
 | 
			
		||||
	if (gre_ver == 0) {
 | 
			
		||||
		if (*p_proto == htons(ETH_P_TEB)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -653,7 +653,7 @@ __skb_flow_dissect_gre(const struct sk_buff *skb,
 | 
			
		|||
		u8 *ppp_hdr;
 | 
			
		||||
 | 
			
		||||
		if (hdr->flags & GRE_ACK)
 | 
			
		||||
			offset += FIELD_SIZEOF(struct pptp_gre_header, ack);
 | 
			
		||||
			offset += sizeof_field(struct pptp_gre_header, ack);
 | 
			
		||||
 | 
			
		||||
		ppp_hdr = __skb_header_pointer(skb, *p_nhoff + offset,
 | 
			
		||||
					       sizeof(_ppp_hdr),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ static u32 xdp_mem_id_hashfn(const void *data, u32 len, u32 seed)
 | 
			
		|||
	const u32 *k = data;
 | 
			
		||||
	const u32 key = *k;
 | 
			
		||||
 | 
			
		||||
	BUILD_BUG_ON(FIELD_SIZEOF(struct xdp_mem_allocator, mem.id)
 | 
			
		||||
	BUILD_BUG_ON(sizeof_field(struct xdp_mem_allocator, mem.id)
 | 
			
		||||
		     != sizeof(u32));
 | 
			
		||||
 | 
			
		||||
	/* Use cyclic increasing ID as direct hash key */
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ static const struct rhashtable_params mem_id_rht_params = {
 | 
			
		|||
	.nelem_hint = 64,
 | 
			
		||||
	.head_offset = offsetof(struct xdp_mem_allocator, node),
 | 
			
		||||
	.key_offset  = offsetof(struct xdp_mem_allocator, mem.id),
 | 
			
		||||
	.key_len = FIELD_SIZEOF(struct xdp_mem_allocator, mem.id),
 | 
			
		||||
	.key_len = sizeof_field(struct xdp_mem_allocator, mem.id),
 | 
			
		||||
	.max_size = MEM_ID_MAX,
 | 
			
		||||
	.min_size = 8,
 | 
			
		||||
	.automatic_shrinking = true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1132,7 +1132,7 @@ static int __init dccp_init(void)
 | 
			
		|||
	int rc;
 | 
			
		||||
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct dccp_skb_cb) >
 | 
			
		||||
		     FIELD_SIZEOF(struct sk_buff, cb));
 | 
			
		||||
		     sizeof_field(struct sk_buff, cb));
 | 
			
		||||
	rc = percpu_counter_init(&dccp_orphan_count, 0, GFP_KERNEL);
 | 
			
		||||
	if (rc)
 | 
			
		||||
		goto out_fail;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1464,8 +1464,8 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = {
 | 
			
		|||
	[IFLA_GRE_OFLAGS]	= { .type = NLA_U16 },
 | 
			
		||||
	[IFLA_GRE_IKEY]		= { .type = NLA_U32 },
 | 
			
		||||
	[IFLA_GRE_OKEY]		= { .type = NLA_U32 },
 | 
			
		||||
	[IFLA_GRE_LOCAL]	= { .len = FIELD_SIZEOF(struct iphdr, saddr) },
 | 
			
		||||
	[IFLA_GRE_REMOTE]	= { .len = FIELD_SIZEOF(struct iphdr, daddr) },
 | 
			
		||||
	[IFLA_GRE_LOCAL]	= { .len = sizeof_field(struct iphdr, saddr) },
 | 
			
		||||
	[IFLA_GRE_REMOTE]	= { .len = sizeof_field(struct iphdr, daddr) },
 | 
			
		||||
	[IFLA_GRE_TTL]		= { .type = NLA_U8 },
 | 
			
		||||
	[IFLA_GRE_TOS]		= { .type = NLA_U8 },
 | 
			
		||||
	[IFLA_GRE_PMTUDISC]	= { .type = NLA_U8 },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -580,8 +580,8 @@ static const struct nla_policy vti_policy[IFLA_VTI_MAX + 1] = {
 | 
			
		|||
	[IFLA_VTI_LINK]		= { .type = NLA_U32 },
 | 
			
		||||
	[IFLA_VTI_IKEY]		= { .type = NLA_U32 },
 | 
			
		||||
	[IFLA_VTI_OKEY]		= { .type = NLA_U32 },
 | 
			
		||||
	[IFLA_VTI_LOCAL]	= { .len = FIELD_SIZEOF(struct iphdr, saddr) },
 | 
			
		||||
	[IFLA_VTI_REMOTE]	= { .len = FIELD_SIZEOF(struct iphdr, daddr) },
 | 
			
		||||
	[IFLA_VTI_LOCAL]	= { .len = sizeof_field(struct iphdr, saddr) },
 | 
			
		||||
	[IFLA_VTI_REMOTE]	= { .len = sizeof_field(struct iphdr, daddr) },
 | 
			
		||||
	[IFLA_VTI_FWMARK]	= { .type = NLA_U32 },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3949,7 +3949,7 @@ void __init tcp_init(void)
 | 
			
		|||
 | 
			
		||||
	BUILD_BUG_ON(TCP_MIN_SND_MSS <= MAX_TCP_OPTION_SPACE);
 | 
			
		||||
	BUILD_BUG_ON(sizeof(struct tcp_skb_cb) >
 | 
			
		||||
		     FIELD_SIZEOF(struct sk_buff, cb));
 | 
			
		||||
		     sizeof_field(struct sk_buff, cb));
 | 
			
		||||
 | 
			
		||||
	percpu_counter_init(&tcp_sockets_allocated, 0, GFP_KERNEL);
 | 
			
		||||
	percpu_counter_init(&tcp_orphan_count, 0, GFP_KERNEL);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2170,8 +2170,8 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = {
 | 
			
		|||
	[IFLA_GRE_OFLAGS]      = { .type = NLA_U16 },
 | 
			
		||||
	[IFLA_GRE_IKEY]        = { .type = NLA_U32 },
 | 
			
		||||
	[IFLA_GRE_OKEY]        = { .type = NLA_U32 },
 | 
			
		||||
	[IFLA_GRE_LOCAL]       = { .len = FIELD_SIZEOF(struct ipv6hdr, saddr) },
 | 
			
		||||
	[IFLA_GRE_REMOTE]      = { .len = FIELD_SIZEOF(struct ipv6hdr, daddr) },
 | 
			
		||||
	[IFLA_GRE_LOCAL]       = { .len = sizeof_field(struct ipv6hdr, saddr) },
 | 
			
		||||
	[IFLA_GRE_REMOTE]      = { .len = sizeof_field(struct ipv6hdr, daddr) },
 | 
			
		||||
	[IFLA_GRE_TTL]         = { .type = NLA_U8 },
 | 
			
		||||
	[IFLA_GRE_ENCAP_LIMIT] = { .type = NLA_U8 },
 | 
			
		||||
	[IFLA_GRE_FLOWINFO]    = { .type = NLA_U32 },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,7 +50,7 @@ static struct iucv_interface *pr_iucv;
 | 
			
		|||
static const u8 iprm_shutdown[8] =
 | 
			
		||||
	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
 | 
			
		||||
 | 
			
		||||
#define TRGCLS_SIZE	FIELD_SIZEOF(struct iucv_message, class)
 | 
			
		||||
#define TRGCLS_SIZE	sizeof_field(struct iucv_message, class)
 | 
			
		||||
 | 
			
		||||
#define __iucv_sock_wait(sk, condition, timeo, ret)			\
 | 
			
		||||
do {									\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7595,7 +7595,7 @@ int nft_validate_register_load(enum nft_registers reg, unsigned int len)
 | 
			
		|||
		return -EINVAL;
 | 
			
		||||
	if (len == 0)
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
	if (reg * NFT_REG32_SIZE + len > FIELD_SIZEOF(struct nft_regs, data))
 | 
			
		||||
	if (reg * NFT_REG32_SIZE + len > sizeof_field(struct nft_regs, data))
 | 
			
		||||
		return -ERANGE;
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -7643,7 +7643,7 @@ int nft_validate_register_store(const struct nft_ctx *ctx,
 | 
			
		|||
		if (len == 0)
 | 
			
		||||
			return -EINVAL;
 | 
			
		||||
		if (reg * NFT_REG32_SIZE + len >
 | 
			
		||||
		    FIELD_SIZEOF(struct nft_regs, data))
 | 
			
		||||
		    sizeof_field(struct nft_regs, data))
 | 
			
		||||
			return -ERANGE;
 | 
			
		||||
 | 
			
		||||
		if (data != NULL && type != NFT_DATA_VALUE)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -236,7 +236,7 @@ nfnl_cthelper_create(const struct nlattr * const tb[],
 | 
			
		|||
	nla_strlcpy(helper->name,
 | 
			
		||||
		    tb[NFCTH_NAME], NF_CT_HELPER_NAME_LEN);
 | 
			
		||||
	size = ntohl(nla_get_be32(tb[NFCTH_PRIV_DATA_LEN]));
 | 
			
		||||
	if (size > FIELD_SIZEOF(struct nf_conn_help, data)) {
 | 
			
		||||
	if (size > sizeof_field(struct nf_conn_help, data)) {
 | 
			
		||||
		ret = -ENOMEM;
 | 
			
		||||
		goto err2;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
		Reference in a new issue