On Tue, Feb 4, 2014 at 1:25 PM, Pravin Shelar <pshe...@nicira.com> wrote:
> On Tue, Feb 4, 2014 at 11:10 AM, Jarno Rajahalme <jrajaha...@nicira.com> 
> wrote:
>> diff --git a/datapath/datapath.c b/datapath/datapath.c
>> index 5f1b34c..7992330 100644
>> --- a/datapath/datapath.c
>> +++ b/datapath/datapath.c
>> @@ -116,20 +116,19 @@ static int queue_gso_packets(struct datapath *dp, 
>> struct sk_buff *,
>>  static int queue_userspace_packet(struct datapath *dp, struct sk_buff *,
>>                                   const struct dp_upcall_info *);
>>
>> -/* Must be called with rcu_read_lock or ovs_mutex. */
>> +/* Must be called with rcu_read_lock or ovs_mutex, so no additional 
>> protection
>> + * is needed here. */
>>  static struct datapath *get_dp(struct net *net, int dp_ifindex)
>>  {
>>         struct datapath *dp = NULL;
>>         struct net_device *dev;
>>
>> -       rcu_read_lock();
>>         dev = dev_get_by_index_rcu(net, dp_ifindex);
>>         if (dev) {
>>                 struct vport *vport = ovs_internal_dev_get_vport(dev);
>>                 if (vport)
>>                         dp = vport->dp;
>>         }
>> -       rcu_read_unlock();
>>
>
> dev_get_by_index_rcu() needs RCU lock, so we can not remove this 
> rcu-read-lock.

This should also be two patches: fixing the bug and changing other locking.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to