Thread (7 messages) flat view 7 messages, 3 authors, 2017-08-07

Re: [PATCH net] ppp: Fix a scheduling-while-atomic bug in del_chan

From: Cong Wang <hidden>
Date: 2017-08-01 20:39:43

On Mon, Jul 31, 2017 at 3:07 AM,  [off-list ref] wrote:
From: Gao Feng <redacted>

The PPTP set the pptp_sock_destruct as the sock's sk_destruct, it would
trigger this bug when __sk_free is invoked in atomic context, because of
the call path pptp_sock_destruct->del_chan->synchronize_rcu.

Now move the synchronize_rcu to pptp_release from del_chan. This is the
only one case which would free the sock and need the synchronize_rcu.
I don't understand the last part.
From my understanding, this RCU is supposed to protect the pppox_sock
pointers in 'callid_sock' which could be NULL'ed in del_chan(). And the
pppox_sock is freed when the last refcnt is gone, that is, when sock
dctor is called. pptp_release() is ONLY called when the fd in user-space
is gone, not necessarily the last refcnt.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help