| .. | .. | 
|---|
| 180 | 180 |   | 
|---|
| 181 | 181 |  #define emit_loadptr(BASE, STRUCT, FIELD, DEST)				\ | 
|---|
| 182 | 182 |  do {	unsigned int _off = offsetof(STRUCT, FIELD);			\ | 
|---|
| 183 |  | -	BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(void *));	\  | 
|---|
 | 183 | +	BUILD_BUG_ON(sizeof_field(STRUCT, FIELD) != sizeof(void *));	\  | 
|---|
| 184 | 184 |  	*prog++ = LDPTRI | RS1(BASE) | S13(_off) | RD(DEST);		\ | 
|---|
| 185 | 185 |  } while (0) | 
|---|
| 186 | 186 |   | 
|---|
| 187 | 187 |  #define emit_load32(BASE, STRUCT, FIELD, DEST)				\ | 
|---|
| 188 | 188 |  do {	unsigned int _off = offsetof(STRUCT, FIELD);			\ | 
|---|
| 189 |  | -	BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(u32));	\  | 
|---|
 | 189 | +	BUILD_BUG_ON(sizeof_field(STRUCT, FIELD) != sizeof(u32));	\  | 
|---|
| 190 | 190 |  	*prog++ = LD32I | RS1(BASE) | S13(_off) | RD(DEST);		\ | 
|---|
| 191 | 191 |  } while (0) | 
|---|
| 192 | 192 |   | 
|---|
| 193 | 193 |  #define emit_load16(BASE, STRUCT, FIELD, DEST)				\ | 
|---|
| 194 | 194 |  do {	unsigned int _off = offsetof(STRUCT, FIELD);			\ | 
|---|
| 195 |  | -	BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(u16));	\  | 
|---|
 | 195 | +	BUILD_BUG_ON(sizeof_field(STRUCT, FIELD) != sizeof(u16));	\  | 
|---|
| 196 | 196 |  	*prog++ = LD16I | RS1(BASE) | S13(_off) | RD(DEST);		\ | 
|---|
| 197 | 197 |  } while (0) | 
|---|
| 198 | 198 |   | 
|---|
| .. | .. | 
|---|
| 202 | 202 |  } while (0) | 
|---|
| 203 | 203 |   | 
|---|
| 204 | 204 |  #define emit_load8(BASE, STRUCT, FIELD, DEST)				\ | 
|---|
| 205 |  | -do {	BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(u8));	\  | 
|---|
 | 205 | +do {	BUILD_BUG_ON(sizeof_field(STRUCT, FIELD) != sizeof(u8));	\  | 
|---|
| 206 | 206 |  	__emit_load8(BASE, STRUCT, FIELD, DEST);			\ | 
|---|
| 207 | 207 |  } while (0) | 
|---|
| 208 | 208 |   | 
|---|
| .. | .. | 
|---|
| 491 | 491 |  				} else { | 
|---|
| 492 | 492 |  					emit_loadimm(K, r_A); | 
|---|
| 493 | 493 |  				} | 
|---|
| 494 |  | -				/* Fallthrough */  | 
|---|
 | 494 | +				fallthrough;  | 
|---|
| 495 | 495 |  			case BPF_RET | BPF_A: | 
|---|
| 496 | 496 |  				if (seen_or_pass0) { | 
|---|
| 497 | 497 |  					if (i != flen - 1) { | 
|---|
| .. | .. | 
|---|
| 552 | 552 |  				emit_skb_load32(hash, r_A); | 
|---|
| 553 | 553 |  				break; | 
|---|
| 554 | 554 |  			case BPF_ANC | SKF_AD_VLAN_TAG: | 
|---|
| 555 |  | -			case BPF_ANC | SKF_AD_VLAN_TAG_PRESENT:  | 
|---|
| 556 | 555 |  				emit_skb_load16(vlan_tci, r_A); | 
|---|
| 557 |  | -				if (code != (BPF_ANC | SKF_AD_VLAN_TAG)) {  | 
|---|
| 558 |  | -					emit_alu_K(SRL, 12);  | 
|---|
 | 556 | +				break;  | 
|---|
 | 557 | +			case BPF_ANC | SKF_AD_VLAN_TAG_PRESENT:  | 
|---|
 | 558 | +				__emit_skb_load8(__pkt_vlan_present_offset, r_A);  | 
|---|
 | 559 | +				if (PKT_VLAN_PRESENT_BIT)  | 
|---|
 | 560 | +					emit_alu_K(SRL, PKT_VLAN_PRESENT_BIT);  | 
|---|
 | 561 | +				if (PKT_VLAN_PRESENT_BIT < 7)  | 
|---|
| 559 | 562 |  					emit_andi(r_A, 1, r_A); | 
|---|
| 560 |  | -				} else {  | 
|---|
| 561 |  | -					emit_loadimm(~VLAN_TAG_PRESENT, r_TMP);  | 
|---|
| 562 |  | -					emit_and(r_A, r_TMP, r_A);  | 
|---|
| 563 |  | -				}  | 
|---|
| 564 | 563 |  				break; | 
|---|
| 565 | 564 |  			case BPF_LD | BPF_W | BPF_LEN: | 
|---|
| 566 | 565 |  				emit_skb_load32(len, r_A); | 
|---|