net: Specify the owning module for lwtunnel ops
authorRobert Shearman <rshearma@brocade.com>
Tue, 24 Jan 2017 16:26:47 +0000 (16:26 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Jan 2017 21:21:36 +0000 (16:21 -0500)
Modules implementing lwtunnel ops should not be allowed to unload
while there is state alive using those ops, so specify the owning
module for all lwtunnel ops.

Signed-off-by: Robert Shearman <rshearma@brocade.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/lwtunnel.h
net/core/lwt_bpf.c
net/ipv4/ip_tunnel_core.c
net/ipv6/ila/ila_lwt.c
net/ipv6/seg6_iptunnel.c
net/mpls/mpls_iptunnel.c

index 0b585f1fd340c12755d4eb9453671ea0c81e6507..73dd8764746069d48cd9ed6863f54c53864bb47a 100644 (file)
@@ -44,6 +44,8 @@ struct lwtunnel_encap_ops {
        int (*get_encap_size)(struct lwtunnel_state *lwtstate);
        int (*cmp_encap)(struct lwtunnel_state *a, struct lwtunnel_state *b);
        int (*xmit)(struct sk_buff *skb);
+
+       struct module *owner;
 };
 
 #ifdef CONFIG_LWTUNNEL
index 71bb3e2eca080735a771a4c4eaf1a3b74b48da9e..b3eef90b2df9d05b62750d3d6fafd7b096f92bd9 100644 (file)
@@ -386,6 +386,7 @@ static const struct lwtunnel_encap_ops bpf_encap_ops = {
        .fill_encap     = bpf_fill_encap_info,
        .get_encap_size = bpf_encap_nlsize,
        .cmp_encap      = bpf_encap_cmp,
+       .owner          = THIS_MODULE,
 };
 
 static int __init bpf_lwt_init(void)
index fed3d29f9eb3b716664b8d9eba052695cbb867bd..0fd1976ab63bbd9be357e41b9acd71dcfa507665 100644 (file)
@@ -313,6 +313,7 @@ static const struct lwtunnel_encap_ops ip_tun_lwt_ops = {
        .fill_encap = ip_tun_fill_encap_info,
        .get_encap_size = ip_tun_encap_nlsize,
        .cmp_encap = ip_tun_cmp_encap,
+       .owner = THIS_MODULE,
 };
 
 static const struct nla_policy ip6_tun_policy[LWTUNNEL_IP6_MAX + 1] = {
@@ -403,6 +404,7 @@ static const struct lwtunnel_encap_ops ip6_tun_lwt_ops = {
        .fill_encap = ip6_tun_fill_encap_info,
        .get_encap_size = ip6_tun_encap_nlsize,
        .cmp_encap = ip_tun_cmp_encap,
+       .owner = THIS_MODULE,
 };
 
 void __init ip_tunnel_core_init(void)
index a7bc54ab46e2d10ab18abdc3fcef511f06574343..13b5e85fe0d56471ab792b1e75801def3800ee9c 100644 (file)
@@ -238,6 +238,7 @@ static const struct lwtunnel_encap_ops ila_encap_ops = {
        .fill_encap = ila_fill_encap_info,
        .get_encap_size = ila_encap_nlsize,
        .cmp_encap = ila_encap_cmp,
+       .owner = THIS_MODULE,
 };
 
 int ila_lwt_init(void)
index 1d60cb132835c9f9089510f035a1ca95e5b1e1a7..c46f8cbf5ab5aa4031d4080d70079e99859d4eb4 100644 (file)
@@ -422,6 +422,7 @@ static const struct lwtunnel_encap_ops seg6_iptun_ops = {
        .fill_encap = seg6_fill_encap_info,
        .get_encap_size = seg6_encap_nlsize,
        .cmp_encap = seg6_encap_cmp,
+       .owner = THIS_MODULE,
 };
 
 int __init seg6_iptunnel_init(void)
index 2f7ccd93441671d6aac3fd690cfc61283848579a..1d281c1ff7c10b3ae6e0245e2b95cc404dd791c4 100644 (file)
@@ -215,6 +215,7 @@ static const struct lwtunnel_encap_ops mpls_iptun_ops = {
        .fill_encap = mpls_fill_encap_info,
        .get_encap_size = mpls_encap_nlsize,
        .cmp_encap = mpls_encap_cmp,
+       .owner = THIS_MODULE,
 };
 
 static int __init mpls_iptunnel_init(void)