On 8/18/22 6:59 PM, Toke Høiland-Jørgensen wrote:
Stanislav suggested[0] that these small refactorings could be split out from the XDP queueing RFC series and merged separately. The first change is a small repacking of struct softnet_data, the others change the BPF call sites to support full 64-bit values as arguments to bpf_redirect_map() and as the return value of a BPF program, relying on the fact that BPF registers are always 64-bit wide to maintain backwards compatibility. Please see the individual patches for details. [0] https://lore.kernel.org/r/CAKH8qBtdnku7StcQ-SamadvAF==DRuLLZO94yOR1WJ9Bg=uX1w@xxxxxxxxxxxxxx Kumar Kartikeya Dwivedi (1): bpf: Use 64-bit return value for bpf_prog_run Toke Høiland-Jørgensen (2): dev: Move received_rps counter next to RPS members in softnet data bpf: Expand map key argument of bpf_redirect_map to u64
Looks like this series throws NULL pointer derefs in the CI. I just reran it and same result whereas various other bpf-next targeted patches CI seems green and w/o below panic ... perhaps an issue in last patch; please investigate. https://github.com/kernel-patches/bpf/runs/7982907380?check_suite_focus=true [...] #231 verif_scale_strobemeta:OK #232 verif_scale_strobemeta_bpf_loop:OK #233 verif_scale_strobemeta_nounroll1:OK #234 verif_scale_strobemeta_nounroll2:OK #235 verif_scale_strobemeta_subprogs:OK #236 verif_scale_sysctl_loop1:OK #237 verif_scale_sysctl_loop2:OK #238 verif_scale_xdp_loop:OK #239 verif_stats:OK #240 verif_twfw:OK [ 828.755223] BUG: kernel NULL pointer dereference, address: 0000000000000000 [ 828.755223] #PF: supervisor instruction fetch in kernel mode [ 828.755223] #PF: error_code(0x0010) - not-present page [ 828.755223] PGD 0 P4D 0 [ 828.755223] Oops: 0010 [#1] PREEMPT SMP NOPTI [ 828.755223] CPU: 4 PID: 0 Comm: swapper/4 Tainted: G OE 5.19.0-g3141b1878b85 #1 [ 828.755223] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014 [ 828.755223] RIP: 0010:0x0 [ 828.755223] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6. [ 828.755223] RSP: 0018:ffffbccd400b3ea8 EFLAGS: 00000046 [ 828.755223] RAX: 0000000000000002 RBX: ffff9e79f9d1efc0 RCX: 000000000000000a [ 828.755223] RDX: 0000000000000000 RSI: 000000d2fe34b800 RDI: ffff9e79f9d1efc0 [ 828.755223] RBP: 000000d2fe34b800 R08: 0000000000000000 R09: 0000000000000000 [ 828.755223] R10: 00000000000f4240 R11: ffffffffb5062510 R12: 0000000000000015 [ 828.755223] R13: 7fffffffffffffff R14: 0000000000000004 R15: 000000d2fe34b800 [ 828.767338] FS: 0000000000000000(0000) GS:ffff9e79f9d00000(0000) knlGS:0000000000000000 [ 828.767338] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 828.767338] CR2: ffffffffffffffd6 CR3: 0000000100970000 CR4: 00000000000006e0 [ 828.767338] Call Trace: [ 828.767338] <TASK> [ 828.767338] tick_nohz_idle_stop_tick+0x1da/0x380 [ 828.767338] do_idle+0xe6/0x280 [ 828.767338] cpu_startup_entry+0x19/0x20 [ 828.767338] start_secondary+0x8f/0x90 [ 828.767338] secondary_startup_64_no_verify+0xe1/0xeb [ 828.767338] </TASK> [ 828.767338] Modules linked in: bpf_testmod(OE) [last unloaded: bpf_testmod(OE)] [ 828.767338] CR2: 0000000000000000 [ 828.767338] ---[ end trace 0000000000000000 ]--- [ 828.758172] BUG: kernel NULL pointer dereference, address: 0000000000000000 [ 828.758172] #PF: supervisor instruction fetch in kernel mode [ 828.758172] #PF: error_code(0x0010) - not-present page [ 828.758172] PGD 0 P4D 0 [ 828.767338] RIP: 0010:0x0 [ 828.758172] Oops: 0010 [#2] PREEMPT SMP NOPTI [ 828.758172] CPU: 7 PID: 0 Comm: swapper/7 Tainted: G D OE 5.19.0-g3141b1878b85 #1 [ 828.758172] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014 [ 828.767338] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6. [ 828.767338] RSP: 0018:ffffbccd400b3ea8 EFLAGS: 00000046 [ 828.758172] RIP: 0010:0x0 [ 828.767338] [ 828.758172] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6. [ 828.767338] RAX: 0000000000000002 RBX: ffff9e79f9d1efc0 RCX: 000000000000000a [ 828.767338] RDX: 0000000000000000 RSI: 000000d2fe34b800 RDI: ffff9e79f9d1efc0 [ 828.767338] RBP: 000000d2fe34b800 R08: 0000000000000000 R09: 0000000000000000 [ 828.758172] RSP: 0018:ffffbccd400cbea0 EFLAGS: 00000046 [ 828.767338] R10: 00000000000f4240 R11: ffffffffb5062510 R12: 0000000000000015 [ 828.767338] R13: 7fffffffffffffff R14: 0000000000000004 R15: 000000d2fe34b800 [ 828.758172] [ 828.758172] RAX: 0000000000000005 RBX: ffff9e79f9ddefc0 RCX: 000000000000000a [ 828.758172] RDX: 0000000000000000 RSI: 000000c0f6c7a580 RDI: ffff9e79f9ddefc0 [ 828.767338] FS: 0000000000000000(0000) GS:ffff9e79f9d00000(0000) knlGS:0000000000000000 [ 828.758172] RBP: 0000000000000013 R08: 7fffffffffffffff R09: 000000c0f6b86340 [ 828.767338] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 828.758172] R10: 00000000000f4240 R11: ffffffffb5062510 R12: 0000000000000000 [ 828.758172] R13: 0000000000000000 R14: 000000c0f6bc6d28 R15: 0000000000000000 [ 828.758172] FS: 0000000000000000(0000) GS:ffff9e79f9dc0000(0000) knlGS:0000000000000000 [ 828.767338] CR2: ffffffffffffffd6 CR3: 0000000100970000 CR4: 00000000000006e0 [ 828.758172] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 828.767338] Kernel panic - not syncing: Fatal exception [ 828.758172] CR2: ffffffffffffffd6 CR3: 000000009a836000 CR4: 00000000000006e0 [ 828.758172] Call Trace: [ 828.758172] <TASK> [ 828.758172] tick_nohz_restart_sched_tick+0x6b/0x90 [ 828.758172] tick_nohz_idle_exit+0xfc/0x150 [ 828.758172] do_idle+0x23c/0x280 [ 828.758172] cpu_startup_entry+0x19/0x20 [ 828.758172] start_secondary+0x8f/0x90 [ 828.758172] secondary_startup_64_no_verify+0xe1/0xeb [ 828.758172] </TASK> [...]