This patchset fixes the following bugs in bpf qdisc and clean up the selftest. - A null-pointer dereference can happen in qdisc_watchdog_cancel() if the timer is not initialized when 1) .init is not defined by user so init prologue is not generated. 2) .init fails and qdisc_create() calls .destroy - bpf qdisc fails to attach to mq/mqprio when being set as the default qdisc due to failed qdisc_lookup() in init prologue v2 - Rebase to bpf-next/net - Fix erroneous commit messages - Fix and simplify selftests cleanup v1: https://lore.kernel.org/bpf/20250501223025.569020-1-ameryhung@xxxxxxxxx/ Amery Hung (5): bpf: net_sched: Fix bpf qdisc init prologue when set as default qdisc selftests/bpf: Test setting and creating bpf qdisc as default qdisc bpf: net_sched: Make some Qdisc_ops ops mandatory selftests/bpf: Test attaching a bpf qdisc with incomplete operators selftests/bpf: Cleanup bpf qdisc selftests net/sched/bpf_qdisc.c | 24 +++- .../selftests/bpf/prog_tests/bpf_qdisc.c | 120 +++++++++++++----- .../selftests/bpf/progs/bpf_qdisc_common.h | 6 - .../bpf/progs/bpf_qdisc_fail__incompl_ops.c | 41 ++++++ .../selftests/bpf/progs/bpf_qdisc_fifo.c | 9 ++ .../selftests/bpf/progs/bpf_qdisc_fq.c | 6 + 6 files changed, 161 insertions(+), 45 deletions(-) create mode 100644 tools/testing/selftests/bpf/progs/bpf_qdisc_fail__incompl_ops.c -- 2.47.1