aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tun.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/tun.c')
-rw-r--r--drivers/net/tun.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index afdf950617c3..2c9e45f50edb 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -622,7 +622,8 @@ static int tun_attach(struct tun_struct *tun, struct file *file, bool skip_filte
622 622
623 /* Re-attach the filter to persist device */ 623 /* Re-attach the filter to persist device */
624 if (!skip_filter && (tun->filter_attached == true)) { 624 if (!skip_filter && (tun->filter_attached == true)) {
625 err = sk_attach_filter(&tun->fprog, tfile->socket.sk); 625 err = __sk_attach_filter(&tun->fprog, tfile->socket.sk,
626 lockdep_rtnl_is_held());
626 if (!err) 627 if (!err)
627 goto out; 628 goto out;
628 } 629 }
@@ -1014,7 +1015,6 @@ static void tun_net_init(struct net_device *dev)
1014 /* Zero header length */ 1015 /* Zero header length */
1015 dev->type = ARPHRD_NONE; 1016 dev->type = ARPHRD_NONE;
1016 dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST; 1017 dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
1017 dev->tx_queue_len = TUN_READQ_SIZE; /* We prefer our own queue length */
1018 break; 1018 break;
1019 1019
1020 case IFF_TAP: 1020 case IFF_TAP:
@@ -1026,7 +1026,6 @@ static void tun_net_init(struct net_device *dev)
1026 1026
1027 eth_hw_addr_random(dev); 1027 eth_hw_addr_random(dev);
1028 1028
1029 dev->tx_queue_len = TUN_READQ_SIZE; /* We prefer our own queue length */
1030 break; 1029 break;
1031 } 1030 }
1032} 1031}
@@ -1480,6 +1479,8 @@ static void tun_setup(struct net_device *dev)
1480 1479
1481 dev->ethtool_ops = &tun_ethtool_ops; 1480 dev->ethtool_ops = &tun_ethtool_ops;
1482 dev->destructor = tun_free_netdev; 1481 dev->destructor = tun_free_netdev;
1482 /* We prefer our own queue length */
1483 dev->tx_queue_len = TUN_READQ_SIZE;
1483} 1484}
1484 1485
1485/* Trivial set of netlink ops to allow deleting tun or tap 1486/* Trivial set of netlink ops to allow deleting tun or tap
@@ -1822,7 +1823,7 @@ static void tun_detach_filter(struct tun_struct *tun, int n)
1822 1823
1823 for (i = 0; i < n; i++) { 1824 for (i = 0; i < n; i++) {
1824 tfile = rtnl_dereference(tun->tfiles[i]); 1825 tfile = rtnl_dereference(tun->tfiles[i]);
1825 sk_detach_filter(tfile->socket.sk); 1826 __sk_detach_filter(tfile->socket.sk, lockdep_rtnl_is_held());
1826 } 1827 }
1827 1828
1828 tun->filter_attached = false; 1829 tun->filter_attached = false;
@@ -1835,7 +1836,8 @@ static int tun_attach_filter(struct tun_struct *tun)
1835 1836
1836 for (i = 0; i < tun->numqueues; i++) { 1837 for (i = 0; i < tun->numqueues; i++) {
1837 tfile = rtnl_dereference(tun->tfiles[i]); 1838 tfile = rtnl_dereference(tun->tfiles[i]);
1838 ret = sk_attach_filter(&tun->fprog, tfile->socket.sk); 1839 ret = __sk_attach_filter(&tun->fprog, tfile->socket.sk,
1840 lockdep_rtnl_is_held());
1839 if (ret) { 1841 if (ret) {
1840 tun_detach_filter(tun, i); 1842 tun_detach_filter(tun, i);
1841 return ret; 1843 return ret;