The commit is pushed to "branch-rh7-3.10.0-327.22.2.vz7.16.x-ovz" and will 
appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-327.22.2.vz7.16.1
------>
commit 420fc7211bffd87d83cd4c8877ea446d9bc9222a
Author: Evgenii Shatokhin <eshatok...@virtuozzo.com>
Date:   Fri Jul 29 19:16:34 2016 +0400

    ve/bridge: br_dev_init: check if "bridge" feature is enabled
    
    Currently, the feature is checked in br_ioctl_deviceless_stub() which is
    called when "brctl addbr" runs. However, "ip link add br1 type bridge"
    goes a different path and still succeeds even if the feature is disabled
    for a CT:
        rtnl_newlink
          rtnl_create_link
            br_dev_setup
              register_netdevice
            br_dev_init
            ...
    
    Let us check the "bridge" feature in br_dev_init() instead, to cover both
    cases.
    
    https://jira.sw.ru/browse/PSBM-50009
    
    Signed-off-by: Evgenii Shatokhin <eshatok...@virtuozzo.com>
    Acked-by: Kirill Tkhai <ktk...@virtuozzo.com>
---
 net/bridge/br_device.c | 4 ++++
 net/bridge/br_ioctl.c  | 3 ---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index 5e3347b..db206a3 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -88,8 +88,12 @@ out:
 static int br_dev_init(struct net_device *dev)
 {
        struct net_bridge *br = netdev_priv(dev);
+       struct net *net = dev_net(dev);
        int err;
 
+       if (!(net->owner_ve->features & VE_FEATURE_BRIDGE))
+               return -EACCES;
+
        br->stats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
        if (!br->stats)
                return -ENOMEM;
diff --git a/net/bridge/br_ioctl.c b/net/bridge/br_ioctl.c
index 98447b8..cd8c3a4 100644
--- a/net/bridge/br_ioctl.c
+++ b/net/bridge/br_ioctl.c
@@ -351,9 +351,6 @@ static int old_deviceless(struct net *net, void __user 
*uarg)
 
 int br_ioctl_deviceless_stub(struct net *net, unsigned int cmd, void __user 
*uarg)
 {
-       if (!(net->owner_ve->features & VE_FEATURE_BRIDGE))
-               return -ENOTTY;
-
        switch (cmd) {
        case SIOCGIFBR:
        case SIOCSIFBR:
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to