net: bridge: Get SIOCGIFBR/SIOCSIFBR ioctl working in compat mode
authorRemi Pommarel <repk@triplefau.lt>
Fri, 24 Dec 2021 11:46:40 +0000 (12:46 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Dec 2021 12:31:57 +0000 (12:31 +0000)
commitfd3a459000557ff12c1d4b41f1bd30f439f6c942
tree8da15578c3188e8615df88dc7d56cf812d72ceb0
parent32f52e8e78d3350e3e74985b0314ba15cea3bc8d
net: bridge: Get SIOCGIFBR/SIOCSIFBR ioctl working in compat mode

In compat mode SIOC{G,S}IFBR ioctls were only supporting
BRCTL_GET_VERSION returning an artificially version to spur userland
tool to use SIOCDEVPRIVATE instead. But some userland tools ignore that
and use SIOC{G,S}IFBR unconditionally as seen with busybox's brctl.

Example of non working 32-bit brctl with CONFIG_COMPAT=y:
$ brctl show
brctl: SIOCGIFBR: Invalid argument

Example of fixed 32-bit brctl with CONFIG_COMPAT=y:
$ brctl show
bridge name     bridge id               STP enabled     interfaces
br0

Signed-off-by: Remi Pommarel <repk@triplefau.lt>
Co-developed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Nikolay Aleksandrov <nikolay@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_ioctl.c
net/socket.c