mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 22:22:08 +02:00
Add a selftest to reproduce the infinite recursion in bond_header_parse()
when bonds are stacked (bond1 -> bond0 -> gre). When a packet is received
via AF_PACKET SOCK_DGRAM on the topmost bond, dev_parse_header() calls
bond_header_parse() which used skb->dev (always the topmost bond) to get
the bonding struct. This caused it to recurse back into itself
indefinitely, leading to stack overflow.
Before commit b7405dcf73 ("bonding: prevent potential infinite loop
in bond_header_parse()"), the test triggers:
./bond_stacked_header_parse.sh
[ 71.999481] BUG: MAX_LOCK_DEPTH too low!
[ 72.000170] turning off the locking correctness validator.
[ 72.001029] Please attach the output of /proc/lock_stat to the bug report
[ 72.002079] depth: 48 max: 48!
...
After the fix, everything works fine:
./bond_stacked_header_parse.sh
TEST: Stacked bond header_parse does not recurse [ OK ]
Signed-off-by: Jiayuan Chen <jiayuan.chen@shopee.com>
Link: https://patch.msgid.link/20260320022245.392384-1-jiayuan.chen@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
34 lines
718 B
Makefile
34 lines
718 B
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# Makefile for net selftests
|
|
|
|
TEST_PROGS := \
|
|
bond-arp-interval-causes-panic.sh \
|
|
bond-break-lacpdu-tx.sh \
|
|
bond-eth-type-change.sh \
|
|
bond-lladdr-target.sh \
|
|
bond_ipsec_offload.sh \
|
|
bond_lacp_prio.sh \
|
|
bond_macvlan_ipvlan.sh \
|
|
bond_options.sh \
|
|
bond_passive_lacp.sh \
|
|
bond_stacked_header_parse.sh \
|
|
dev_addr_lists.sh \
|
|
mode-1-recovery-updelay.sh \
|
|
mode-2-recovery-updelay.sh \
|
|
netcons_over_bonding.sh \
|
|
# end of TEST_PROGS
|
|
|
|
TEST_FILES := \
|
|
bond_topo_2d1c.sh \
|
|
bond_topo_3d1c.sh \
|
|
lag_lib.sh \
|
|
# end of TEST_FILES
|
|
|
|
TEST_INCLUDES := \
|
|
../../../net/lib.sh \
|
|
../lib/sh/lib_netcons.sh \
|
|
../../../net/forwarding/lib.sh \
|
|
# end of TEST_INCLUDES
|
|
|
|
include ../../../lib.mk
|