On Mon, 30 Nov 2015 15:38:15 -0600 ebiederm@xxxxxxxxxxxx (Eric W. Biederman) wrote: > > There is no defined mechanism to pass network namespace information > into /sbin/bridge-stp therefore don't even try to invoke it except > for bridge devices in the initial network namespace. > > It is possible for unprivileged users to cause /sbin/bridge-stp to be > invoked for any network device name which if /sbin/bridge-stp does not > guard against unreasonable arguments or being invoked twice on the same > network device could cause problems. > > Signed-off-by: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx> > --- > net/bridge/br_stp_if.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c > index 5396ff08af32..742fa89528ab 100644 > --- a/net/bridge/br_stp_if.c > +++ b/net/bridge/br_stp_if.c > @@ -142,7 +142,9 @@ static void br_stp_start(struct net_bridge *br) > char *envp[] = { NULL }; > struct net_bridge_port *p; > > - r = call_usermodehelper(BR_STP_PROG, argv, envp, UMH_WAIT_PROC); > + r = -ENOENT; > + if (dev_net(br->dev) == &init_net) > + r = call_usermodehelper(BR_STP_PROG, argv, envp, UMH_WAIT_PROC); I don't think this will cause loud screams. But it might break people that use containers to run virtual networks for testing. One coding nit: Why are you afraid of using an else?