[PATCH net 0/2] Fix SIOCGIFBR/SIOCSIFBR ioctl

Remi Pommarel
2021-12-23T15:27:09Z

SIOC{G,S}IFBR ioctls have been broken since [0], as discussed here [1]
the intent was to get them working in compat mode.

This serie is gathering patch from [2] with the one from [3].

The first patch fixes the ioctl usage so it can be backported to stable
kernel while the second one adds proper support for those ioctl in
compat mode.

This has been tested with busybox's brctl as below.

Before this serie

- 64-bit brctl:
$ brctl show
bridge name bridge id STP enabled interfaces
brctl: can't get bridge name for index 0: No such device or address

- 32-bit brctl on CONFIG_COMPAT=y kernel:
$ brctl show
brctl: SIOCGIFBR: Invalid argument

With first patch of this serie

- 64-bit brctl
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no

- 32-bit brctl on CONFIG_COMPAT=y kernel
$ brctl show
brctl: SIOCGIFBR: Invalid argument

With both patches

- 64-bit brctl
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no

- 32-bit brctl on CONFIG_COMPAT=y kernel
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no

[0] commit 561d8352818f ("bridge: use ndo_siocdevprivate")
[1] https://lkml.org/lkml/2021/12/22/805
[2] https://lkml.org/lkml/2021/12/22/743
[3] https://lkml.org/lkml/2021/12/23/212

Thanks,

Remi Pommarel (2):
net: bridge: fix ioctl old_deviceless bridge argument
net: bridge: Get SIOCGIFBR/SIOCSIFBR ioctl working in compat mode

net/bridge/br_ioctl.c | 75 ++++++++++++++++++++++++++++---------------
net/socket.c | 20 ++----------
2 files changed, 52 insertions(+), 43 deletions(-)

--
2.33.0