hc
2024-05-10 748e4f3d702def1a4bff191e0cf93b6a05340f01
kernel/arch/sparc/net/bpf_jit_comp_32.c
....@@ -180,19 +180,19 @@
180180
181181 #define emit_loadptr(BASE, STRUCT, FIELD, DEST) \
182182 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 *)); \
184184 *prog++ = LDPTRI | RS1(BASE) | S13(_off) | RD(DEST); \
185185 } while (0)
186186
187187 #define emit_load32(BASE, STRUCT, FIELD, DEST) \
188188 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)); \
190190 *prog++ = LD32I | RS1(BASE) | S13(_off) | RD(DEST); \
191191 } while (0)
192192
193193 #define emit_load16(BASE, STRUCT, FIELD, DEST) \
194194 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)); \
196196 *prog++ = LD16I | RS1(BASE) | S13(_off) | RD(DEST); \
197197 } while (0)
198198
....@@ -202,7 +202,7 @@
202202 } while (0)
203203
204204 #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)); \
206206 __emit_load8(BASE, STRUCT, FIELD, DEST); \
207207 } while (0)
208208
....@@ -491,7 +491,7 @@
491491 } else {
492492 emit_loadimm(K, r_A);
493493 }
494
- /* Fallthrough */
494
+ fallthrough;
495495 case BPF_RET | BPF_A:
496496 if (seen_or_pass0) {
497497 if (i != flen - 1) {
....@@ -552,15 +552,14 @@
552552 emit_skb_load32(hash, r_A);
553553 break;
554554 case BPF_ANC | SKF_AD_VLAN_TAG:
555
- case BPF_ANC | SKF_AD_VLAN_TAG_PRESENT:
556555 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)
559562 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
- }
564563 break;
565564 case BPF_LD | BPF_W | BPF_LEN:
566565 emit_skb_load32(len, r_A);