Thread (8 messages) flat view 8 messages, 3 authors, 2021-03-15

Re: [BUG] net/ppp: A use after free in ppp_unregister_channe

From: Guillaume Nault <hidden>
Date: 2021-03-15 11:51:53
Also in: lkml

On Thu, Mar 11, 2021 at 08:34:44PM +0800, lyl2019@mail.ustc.edu.cn wrote:
File: drivers/net/ppp/ppp_generic.c

In ppp_unregister_channel, pch could be freed in ppp_unbridge_channels()
but after that pch is still in use. Inside the function ppp_unbridge_channels,
if "pchbb == pch" is true and then pch will be freed.
No. It's freed only if if the refcount drops to 0. And the caller of
ppp_unregister_channel() must hold its own refcount. So
ppp_unbridge_channels() is not going to drop the last refcount in this
case.
I checked the commit history and found that this problem is introduced from
4cf476ced45d7 ("ppp: add PPPIOCBRIDGECHAN and PPPIOCUNBRIDGECHAN ioctls").
Next time, please also Cc. the author of the patch.
I have no idea about how to generate a suitable patch, sorry.
There's no patch to send as far as I can see.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help