| From foo@baz Tue Jan 26 21:35:03 PST 2016 |
| From: Hannes Frederic Sowa <hannes@stressinduktion.org> |
| Date: Tue, 5 Jan 2016 10:46:00 +0100 |
| Subject: bridge: Only call /sbin/bridge-stp for the initial network namespace |
| |
| From: Hannes Frederic Sowa <hannes@stressinduktion.org> |
| |
| [ Upstream commit ff62198553e43cdffa9d539f6165d3e83f8a42bc ] |
| |
| [I stole this patch from Eric Biederman. He 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. |
| |
| [Hannes: changed patch using netns_eq] |
| |
| Cc: Eric W. Biederman <ebiederm@xmission.com> |
| Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> |
| Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/bridge/br_stp_if.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/net/bridge/br_stp_if.c |
| +++ b/net/bridge/br_stp_if.c |
| @@ -130,7 +130,10 @@ static void br_stp_start(struct net_brid |
| char *envp[] = { NULL }; |
| struct net_bridge_port *p; |
| |
| - r = call_usermodehelper(BR_STP_PROG, argv, envp, UMH_WAIT_PROC); |
| + if (net_eq(dev_net(br->dev), &init_net)) |
| + r = call_usermodehelper(BR_STP_PROG, argv, envp, UMH_WAIT_PROC); |
| + else |
| + r = -ENOENT; |
| |
| spin_lock_bh(&br->lock); |
| |