From: Rainer Weikusat <rweikusat@mobileactivedefense.com>
To: David Miller <davem@davemloft.net>
Cc: jbaron@akamai.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, minipli@googlemail.com,
normalperson@yhbt.net, eric.dumazet@gmail.com,
rweikusat@mobileactivedefense.com, viro@zeniv.linux.org.uk,
davidel@xmailserver.org, dave@stgolabs.net, olivier@mauras.ch,
pageexec@freemail.hu, torvalds@linux-foundation.org,
peterz@infradead.org, joe@perches.com
Subject: Re: [PATCH v4 0/3] net: unix: fix use-after-free
Date: Mon, 12 Oct 2015 13:54:02 +0100 [thread overview]
Message-ID: <87pp0ki6xh.fsf@doppelsaurus.mobileactivedefense.com> (raw)
In-Reply-To: <20151011.045557.2164838188213641141.davem@davemloft.net> (David Miller's message of "Sun, 11 Oct 2015 04:55:57 -0700 (PDT)")
David Miller <davem@davemloft.net> writes:
> From: Jason Baron <jbaron@akamai.com>
> Date: Fri, 9 Oct 2015 00:15:59 -0400
>
>> These patches are against mainline, I can re-base to net-next, please
>> let me know.
>>
>> They have been tested against: https://lkml.org/lkml/2015/9/13/195,
>> which causes the use-after-free quite quickly and here:
>> https://lkml.org/lkml/2015/10/2/693.
>
> I'd like to understand how patches that don't even compile can be
> "tested"?
>
> net/unix/af_unix.c: In function ‘unix_dgram_writable’:
> net/unix/af_unix.c:2480:3: error: ‘other_full’ undeclared (first use in this function)
> net/unix/af_unix.c:2480:3: note: each undeclared identifier is reported only once for each function it appears in
>
> Could you explain how that works, I'm having a hard time understanding
> this?
This is basicallly a workaround for the problem that it's not possible
to tell epoll to let go of a certain wait queue: Instead of registering
the peer_wait queue via sock_poll_wait, a wait_queue_t under control of
the af_unix.c code is linked onto it which relays a wake up on the
peer_wait queue to the 'ordinary' wait queue associated with the polled
socket via custom wake function. But (at least the code I looked it) it
enqueues a unix socket on connect which has certain side effects (in
particular, /dev/log will have a seriously large wait queue of entirely
uninterested peers) and in many cases, this is simply not necessary, as
the additional peer_wait event is only interesting in case a peer of a
fan-in socket (like /dev/log) happens to be waiting for writeabilty via
poll/ select/ epoll/ ...
Since the wait queue handling code is now under control of the af_unix.c
code, it can remove itself from the peer_wait queue prior to dropping
its reference to a peer on disconnect or on detecting a dead peer in
unix_dgram_sendmsg.
next prev parent reply other threads:[~2015-10-12 12:55 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-09 4:15 [PATCH v4 0/3] net: unix: fix use-after-free Jason Baron
2015-10-09 4:16 ` [PATCH v4 1/3] net: unix: fix use-after-free in unix_dgram_poll() Jason Baron
2015-10-09 14:38 ` Hannes Frederic Sowa
2015-10-11 13:30 ` Rainer Weikusat
2015-10-12 19:41 ` Jason Baron
2015-10-13 11:42 ` Hannes Frederic Sowa
2015-10-09 4:16 ` [PATCH v4 2/3] net: unix: Convert gc_flags to flags Jason Baron
2015-10-09 4:16 ` [PATCH v4 3/3] net: unix: optimize wakeups in unix_dgram_recvmsg() Jason Baron
2015-10-09 4:29 ` kbuild test robot
2015-10-09 15:12 ` Jason Baron
2015-10-11 11:55 ` [PATCH v4 0/3] net: unix: fix use-after-free David Miller
2015-10-12 12:54 ` Rainer Weikusat [this message]
2015-10-12 13:36 ` Eric Dumazet
2015-10-12 19:50 ` Jason Baron
2015-10-13 1:47 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87pp0ki6xh.fsf@doppelsaurus.mobileactivedefense.com \
--to=rweikusat@mobileactivedefense.com \
--cc=dave@stgolabs.net \
--cc=davem@davemloft.net \
--cc=davidel@xmailserver.org \
--cc=eric.dumazet@gmail.com \
--cc=jbaron@akamai.com \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.org \
--cc=minipli@googlemail.com \
--cc=netdev@vger.kernel.org \
--cc=normalperson@yhbt.net \
--cc=olivier@mauras.ch \
--cc=pageexec@freemail.hu \
--cc=peterz@infradead.org \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox