[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20160216.125458.1817148468081256050.davem@davemloft.net>
Date: Tue, 16 Feb 2016 12:54:58 -0500 (EST)
From: David Miller <davem@...emloft.net>
To: rweikusat@...ileactivedefense.com
Cc: ben@...adent.org.uk, pmhahn@...ahn.de, hannes@...essinduktion.org,
sasha.levin@...cle.com, linux-kernel@...r.kernel.org,
kseeger@...ba.org, jbaron@...mai.com, gregkh@...uxfoundation.org,
requate@...vention.de, gohmann@...vention.de,
netdev@...r.kernel.org
Subject: Re: [PATCH net] af_unix: Guard against other == sk in
unix_dgram_sendmsg
From: Rainer Weikusat <rweikusat@...ileactivedefense.com>
Date: Thu, 11 Feb 2016 19:37:27 +0000
> The unix_dgram_sendmsg routine use the following test
>
> if (unlikely(unix_peer(other) != sk && unix_recvq_full(other))) {
>
> to determine if sk and other are in an n:1 association (either
> established via connect or by using sendto to send messages to an
> unrelated socket identified by address). This isn't correct as the
> specified address could have been bound to the sending socket itself or
> because this socket could have been connected to itself by the time of
> the unix_peer_get but disconnected before the unix_state_lock(other). In
> both cases, the if-block would be entered despite other == sk which
> might either block the sender unintentionally or lead to trying to unlock
> the same spin lock twice for a non-blocking send. Add a other != sk
> check to guard against this.
>
> Fixes: 7d267278a9ec ("unix: avoid use-after-free in ep_remove_wait_queue")
> Reported-By: Philipp Hahn <pmhahn@...ahn.de>
> Signed-off-by: Rainer Weikusat <rweikusat@...ileactivedefense.com>
Also applied and queued up for -stable, thanks.
Powered by blists - more mailing lists