On Mon, Sep 25, 2017 at 8:50 PM, Oleg Nesterov <[email protected]> wrote:
> On 09/25, Gargi Sharma wrote:
>>
>> @@ -285,10 +145,14 @@ void free_pid(struct pid *pid)
>>                       break;
>>               }
>>       }
>> -     spin_unlock_irqrestore(&pidmap_lock, flags);
>>
>> -     for (i = 0; i <= pid->level; i++)
>> -             free_pidmap(pid->numbers + i);
>> +     for (i = 0; i <= pid->level; i++) {
>> +             struct upid *upid = pid->numbers + i;
>> +             struct pid_namespace *ns = upid->ns;
>> +
>> +             idr_remove(&ns->idr, upid->nr);
>> +     }
>> +     spin_unlock_irqrestore(&pidmap_lock, flags);
>
> Now that you moved the "free pidmap" code under pidmap_lock, we do not
> need 2 "for (i = 0; i <= pid->level; i++)" loops, you could simply add
> a single
>
>         idr_remove(&ns->idr, upid->nr);
>
> line into the 1st loop ?

Yes, I can do that. Will make this change.

Thanks!
Gargi
>
> Oleg.
>

Reply via email to