summaryrefslogtreecommitdiffstats
path: root/net/openvswitch/vport.h
diff options
context:
space:
mode:
authorPaolo Abeni <pabeni@redhat.com>2015-11-30 12:31:43 +0100
committerDavid S. Miller <davem@davemloft.net>2015-12-02 17:50:59 +0100
commit83e4bf7a7486532df2dc3db27e0e07a250990ed2 (patch)
tree0f299bcb43b700b7bfdab63a998ba4070613a649 /net/openvswitch/vport.h
parentbpf, array: fix heap out-of-bounds access when updating elements (diff)
downloadlinux-83e4bf7a7486532df2dc3db27e0e07a250990ed2.tar.xz
linux-83e4bf7a7486532df2dc3db27e0e07a250990ed2.zip
openvswitch: properly refcount vport-vxlan module
After 614732eaa12d, no refcount is maintained for the vport-vxlan module. This allows the userspace to remove such module while vport-vxlan devices still exist, which leads to later oops. v1 -> v2: - move vport 'owner' initialization in ovs_vport_ops_register() and make such function a macro Fixes: 614732eaa12d ("openvswitch: Use regular VXLAN net_device device") Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/openvswitch/vport.h')
-rw-r--r--net/openvswitch/vport.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/net/openvswitch/vport.h b/net/openvswitch/vport.h
index bdfd82a7c064..8ea3a96980ac 100644
--- a/net/openvswitch/vport.h
+++ b/net/openvswitch/vport.h
@@ -196,7 +196,13 @@ static inline const char *ovs_vport_name(struct vport *vport)
return vport->dev->name;
}
-int ovs_vport_ops_register(struct vport_ops *ops);
+int __ovs_vport_ops_register(struct vport_ops *ops);
+#define ovs_vport_ops_register(ops) \
+ ({ \
+ (ops)->owner = THIS_MODULE; \
+ __ovs_vport_ops_register(ops); \
+ })
+
void ovs_vport_ops_unregister(struct vport_ops *ops);
static inline struct rtable *ovs_tunnel_route_lookup(struct net *net,