[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1379521524.1787.44.camel@joe-AO722>
Date: Wed, 18 Sep 2013 09:25:24 -0700
From: Joe Perches <joe@...ches.com>
To: David Miller <davem@...emloft.net>
Cc: nikolay@...hat.com, netdev@...r.kernel.org
Subject: Re: [PATCH -net] netpoll: fix NULL pointer dereference in
netpoll_cleanup
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 ...;
}
--
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