datapath: Don't directly access RCU protected pointers.
[sliver-openvswitch.git] / datapath / dp_sysfs_if.c
index fc7c2d8..c688bc4 100644 (file)
@@ -220,8 +220,9 @@ int dp_sysfs_add_if(struct vport *p)
 
        /* Create symlink from /sys/class/net/<devname>/brport/bridge to
         * /sys/class/net/<bridgename>. */
-       err = sysfs_create_link(&p->kobj, vport_get_kobj(dp->ports[ODPP_LOCAL]),
-                               SYSFS_BRIDGE_PORT_LINK); /* "bridge" */
+       err = sysfs_create_link(&p->kobj,
+               vport_get_kobj(rtnl_dereference(dp->ports[ODPP_LOCAL])),
+               SYSFS_BRIDGE_PORT_LINK); /* "bridge" */
        if (err)
                goto err_del;