[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <523A1677.2090602@redhat.com>
Date: Wed, 18 Sep 2013 23:09:11 +0200
From: Nikolay Aleksandrov <nikolay@...hat.com>
To: Joe Perches <joe@...ches.com>
CC: David Miller <davem@...emloft.net>, netdev@...r.kernel.org
Subject: Re: [PATCH -net] netpoll: fix NULL pointer dereference in netpoll_cleanup
On 09/18/2013 06:25 PM, Joe Perches wrote:
> On Wed, 2013-09-18 at 12:15 -0400, David Miller wrote:
>> From: Nikolay Aleksandrov <nikolay@...hat.com>
>> Date: Tue, 17 Sep 2013 16:12:35 +0200
>>
>>> @@ -1284,15 +1284,15 @@ EXPORT_SYMBOL_GPL(__netpoll_free_async);
>>>
>>> void netpoll_cleanup(struct netpoll *np)
>>> {
>>> - if (!np->dev)
>>> - return;
>>> -
>>> rtnl_lock();
>>> + if (!np->dev) {
>>> + rtnl_unlock();
>>> + return;
>>> + }
>>> __netpoll_cleanup(np);
>>> - rtnl_unlock();
>>> -
>>> dev_put(np->dev);
>>> np->dev = NULL;
>>> + rtnl_unlock();
>>> }
>>> EXPORT_SYMBOL(netpoll_cleanup);
>>
>> I know it seems arbitrary, but please do this like:
>>
>> lock();
>> if (condition) {
>> ...
>> }
>> unlock();
>>
>> rather than having multiple return/unlock code paths.
>>
>> This style I am suggesting is easier to audit for locking problems.
>
> Another alternative is:
>
> lock();
>
> if (!condition)
> goto out;
>
> ...
>
> out:
> unlock();
> return ...;
> }
>
Yup, this is the alternative I plan to use :-)
Thanks Joe
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists