lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 24 Aug 2007 10:18:07 +0200 From: Daniel Lezcano <dlezcano@...osys.com> To: Stephen Hemminger <shemminger@...ux-foundation.org> CC: Lennert Buytenhek <buytenh@...tstofly.org>, Andrew Morton <akpm@...ux-foundation.org>, "David S. Miller" <davem@...emloft.net>, netdev@...r.kernel.org, bridge@...ux-foundation.org Subject: Re: [PATCH] bridge: sysfs locking fix. Stephen Hemminger wrote: > Forget earlier patch, it is wrong... > > The stp change code generates "sleeping function called from invalid context" > because rtnl_lock() called with BH disabled. This fixes it by not acquiring then > dropping the bridge lock. > > Signed-off-by: Stephen Hemminger <shemminger@...ux-foundation.org> > > --- a/net/bridge/br_sysfs_br.c 2007-08-06 09:26:48.000000000 +0100 > +++ b/net/bridge/br_sysfs_br.c 2007-08-14 14:29:52.000000000 +0100 > @@ -147,20 +147,26 @@ static ssize_t show_stp_state(struct dev > return sprintf(buf, "%d\n", br->stp_enabled); > } > > -static void set_stp_state(struct net_bridge *br, unsigned long val) > -{ > - rtnl_lock(); > - spin_unlock_bh(&br->lock); > - br_stp_set_enabled(br, val); > - spin_lock_bh(&br->lock); > - rtnl_unlock(); > -} > > static ssize_t store_stp_state(struct device *d, > struct device_attribute *attr, const char *buf, > size_t len) > { > - return store_bridge_parm(d, buf, len, set_stp_state); > + struct net_bridge *br = to_bridge(d); > + char *endp; > + unsigned long val; > + > + if (!capable(CAP_NET_ADMIN)) > + return -EPERM; > + > + val = simple_strtoul(buf, &endp, 0); > + if (endp == buf) > + return -EINVAL; > + > + rtnl_lock(); > + br_stp_set_enabled(br, val); > + rtnl_unlock(); > + Shouldn't len value be returned at the end of the function ? > } > static DEVICE_ATTR(stp_state, S_IRUGO | S_IWUSR, show_stp_state, > store_stp_state); > - - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists