dp = get_dp(dp_idx);
if (!dp) {
err = -ENODEV;
- goto unlock;
+ goto out;
}
+ mutex_lock(&dp->mutex);
+
list_for_each_entry_safe (p, n, &dp->port_list, node)
if (p->port_no != ODPP_LOCAL)
dp_detach_port(p);
skb_queue_purge(&dp->queues[i]);
free_percpu(dp->stats_percpu);
+ mutex_unlock(&dp->mutex);
kobject_put(&dp->ifobj);
module_put(THIS_MODULE);
-unlock:
+out:
mutex_unlock(&dp_mutex);
rtnl_unlock();
return err;
}
static struct file_operations openvswitch_fops = {
+ .owner = THIS_MODULE,
.read = openvswitch_read,
.poll = openvswitch_poll,
.unlocked_ioctl = openvswitch_ioctl,