The code path for some ioctl's is different in 2.4 than 2.6 (it goes through IP in 2.4). Therefore the following is needed. Signed-off-by: Stephen Hemminger <shemminger@xxxxxxxx> diff -Nru a/net/bridge/br_ioctl.c b/net/bridge/br_ioctl.c --- a/net/bridge/br_ioctl.c 2004-07-28 16:28:49 -07:00 +++ b/net/bridge/br_ioctl.c 2004-07-28 16:28:49 -07:00 @@ -234,6 +234,7 @@ int br_ioctl_deviceless_stub(unsigned long arg) { unsigned long i[3]; + int err; if (!capable(CAP_NET_ADMIN)) return -EPERM; @@ -241,8 +242,10 @@ if (copy_from_user(i, (void *)arg, 3*sizeof(unsigned long))) return -EFAULT; - ASSERT_RTNL(); - return br_ioctl_deviceless(i[0], i[1], i[2]); + rtnl_lock(); + err = br_ioctl_deviceless(i[0], i[1], i[2]); + rtnl_unlock(); + return err; } int br_ioctl(struct net_bridge *br, unsigned int cmd, unsigned long arg0, unsigned long arg1, unsigned long arg2)