Re: [PATCH net] ppp: lock ppp->flags in ppp_read() and ppp_poll()

2016-03-01 Thread David Miller
From: Guillaume Nault Date: Fri, 26 Feb 2016 18:45:34 +0100 > @@ -443,9 +443,14 @@ static ssize_t ppp_read(struct file *file, char __user > *buf, >* network traffic (demand mode). >*/ > struct ppp *ppp = PF_TO_PPP(pf); > + > +

Re: [PATCH net] ppp: lock ppp->flags in ppp_read() and ppp_poll()

2016-02-29 Thread Guillaume Nault
On Mon, Feb 29, 2016 at 10:18:38AM +, David Laight wrote: > From: Guillaume Nault > > Sent: 26 February 2016 17:46 > > > > ppp_read() and ppp_poll() can be called concurrently with ppp_ioctl(). > > In this case, ppp_ioctl() might call ppp_ccp_closed(), which may update > > ppp->flags while ppp

RE: [PATCH net] ppp: lock ppp->flags in ppp_read() and ppp_poll()

2016-02-29 Thread David Laight
From: Guillaume Nault > Sent: 26 February 2016 17:46 > > ppp_read() and ppp_poll() can be called concurrently with ppp_ioctl(). > In this case, ppp_ioctl() might call ppp_ccp_closed(), which may update > ppp->flags while ppp_read() or ppp_poll() is reading it. > The update done by ppp_ccp_closed()

[PATCH net] ppp: lock ppp->flags in ppp_read() and ppp_poll()

2016-02-26 Thread Guillaume Nault
ppp_read() and ppp_poll() can be called concurrently with ppp_ioctl(). In this case, ppp_ioctl() might call ppp_ccp_closed(), which may update ppp->flags while ppp_read() or ppp_poll() is reading it. The update done by ppp_ccp_closed() isn't atomic due to the bit mask operation ('ppp->flags &= ~(SC