summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHangbin Liu <liuhangbin@gmail.com>2019-05-09 02:55:07 -0400
committerDavid S. Miller <davem@davemloft.net>2019-05-09 12:31:16 -0400
commit873017af778439f2f8e3d87f28ddb1fcaf244a76 (patch)
treeac2656ca88cd00d3a8ac99891dd6eb1577ce9b0f
parent6c2ea9ebafa79eea9098a134a422391638879f45 (diff)
vlan: disable SIOCSHWTSTAMP in container
With NET_ADMIN enabled in container, a normal user could be mapped to root and is able to change the real device's rx filter via ioctl on vlan, which would affect the other ptp process on host. Fix it by disabling SIOCSHWTSTAMP in container. Fixes: a6111d3c93d0 ("vlan: Pass SIOC[SG]HWTSTAMP ioctls to real device") Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> Acked-by: Richard Cochran <richardcochran@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/8021q/vlan_dev.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index f044ae56a313..2a9a60733594 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -370,10 +370,12 @@ static int vlan_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
370 ifrr.ifr_ifru = ifr->ifr_ifru; 370 ifrr.ifr_ifru = ifr->ifr_ifru;
371 371
372 switch (cmd) { 372 switch (cmd) {
373 case SIOCSHWTSTAMP:
374 if (!net_eq(dev_net(dev), &init_net))
375 break;
373 case SIOCGMIIPHY: 376 case SIOCGMIIPHY:
374 case SIOCGMIIREG: 377 case SIOCGMIIREG:
375 case SIOCSMIIREG: 378 case SIOCSMIIREG:
376 case SIOCSHWTSTAMP:
377 case SIOCGHWTSTAMP: 379 case SIOCGHWTSTAMP:
378 if (netif_device_present(real_dev) && ops->ndo_do_ioctl) 380 if (netif_device_present(real_dev) && ops->ndo_do_ioctl)
379 err = ops->ndo_do_ioctl(real_dev, &ifrr, cmd); 381 err = ops->ndo_do_ioctl(real_dev, &ifrr, cmd);