On Tue, Dec 22, 2015 at 4:40 PM, David Miller <da...@davemloft.net> wrote:
> From: Craig Gallek <kraigatg...@gmail.com>
> Date: Tue, 22 Dec 2015 15:05:07 -0500
>
>> +     for (i = 0; i < reuse->num_socks; i++) {
>> +             if (reuse->socks[i] == sk) {
>> +                     reuse->socks[i] = reuse->socks[reuse->num_socks - 1];
>> +                     reuse->num_socks--;
>> +                     if (reuse->num_socks == 0)
>> +                             kfree_rcu(reuse, rcu);
>> +                     break;
>> +             }
>> +     }
>
> Don't you need to memmove() the entire rest of the array down one slot
> when you hit the matching 'sk' in there?  I can't see how it can work
> to only move one entry down.
It moves the last element in the list into the slot that was just
emptied.  You could argue that this may cause unexpected changes in
the index -> socket mapping observed by the user, but I'm not sure
making many socket indexes change (by sliding everything down one)
when one is removed is a desirable behavior either.  I don't have a
strong opinion either way though...
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to