af_unix: Define locking order for U_RECVQ_LOCK_EMBRYO in unix_collect_skb().
[ Upstream commit 8647ece4 ] While GC is cleaning up cyclic references by SCM_RIGHTS, unix_collect_skb() collects skb in the socket's recvq. If the socket is TCP_LISTEN, we need to collect skb in the embryo's queue. Then, both the listener's recvq lock and the embroy's one are held. The locking is always done in the listener -> embryo order. Let's define it as unix_recvq_lock_cmp_fn() instead of using spin_lock_nested(). Note that the reverse order is defined for consistency. Signed-off-by:Kuniyuki Iwashima <kuniyu@amazon.com> Signed-off-by:
Paolo Abeni <pabeni@redhat.com> Stable-dep-of: 32ca2454 ("af_unix: Don't leave consecutive consumed OOB skbs.") Signed-off-by:
Sasha Levin <sashal@kernel.org>
Loading