Netdev Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH] af_unix: Add OOB support
@ 2021-08-10 18:31 Rao Shoaib
2021-08-11 21:55 ` Jakub Kicinski
0 siblings, 1 reply; 3+ messages in thread
From: Rao Shoaib @ 2021-08-10 18:31 UTC (permalink / raw)
To: dvyukov, davem, netdev, edumazet, viro, rao.shoaib
From: Rao Shoaib <rao.shoaib@oracle.com>
syzkaller found that OOB code was holding spinlock
while calling a function in which it could sleep.
Reported-by: syzbot+8760ca6c1ee783ac4abd@syzkaller.appspotmail.com
Fixes: 314001f0bf92 ("af_unix: Add OOB support")
Signed-off-by: Rao Shoaib <rao.shoaib@oracle.com>
---
net/unix/af_unix.c | 36 ++++++++++++++++++++++++------------
1 file changed, 24 insertions(+), 12 deletions(-)
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index 00d8b08cdbe1..a626e52c629a 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -2362,19 +2362,37 @@ static int unix_stream_recv_urg(struct unix_stream_read_state *state)
struct sock *sk = sock->sk;
struct unix_sock *u = unix_sk(sk);
int chunk = 1;
+ struct sk_buff *oob_skb;
- if (sock_flag(sk, SOCK_URGINLINE) || !u->oob_skb)
+ mutex_lock(&u->iolock);
+ unix_state_lock(sk);
+
+ if (sock_flag(sk, SOCK_URGINLINE) || !u->oob_skb) {
+ unix_state_unlock(sk);
+ mutex_unlock(&u->iolock);
return -EINVAL;
+ }
- chunk = state->recv_actor(u->oob_skb, 0, chunk, state);
- if (chunk < 0)
- return -EFAULT;
+ oob_skb = u->oob_skb;
if (!(state->flags & MSG_PEEK)) {
- UNIXCB(u->oob_skb).consumed += 1;
- kfree_skb(u->oob_skb);
u->oob_skb = NULL;
}
+
+ unix_state_unlock(sk);
+
+ chunk = state->recv_actor(oob_skb, 0, chunk, state);
+
+ if (!(state->flags & MSG_PEEK)) {
+ UNIXCB(oob_skb).consumed += 1;
+ kfree_skb(oob_skb);
+ }
+
+ mutex_unlock(&u->iolock);
+
+ if (chunk < 0)
+ return -EFAULT;
+
state->msg->msg_flags |= MSG_OOB;
return 1;
}
@@ -2434,13 +2452,7 @@ static int unix_stream_read_generic(struct unix_stream_read_state *state,
if (unlikely(flags & MSG_OOB)) {
err = -EOPNOTSUPP;
#if IS_ENABLED(CONFIG_AF_UNIX_OOB)
- mutex_lock(&u->iolock);
- unix_state_lock(sk);
-
err = unix_stream_recv_urg(state);
-
- unix_state_unlock(sk);
- mutex_unlock(&u->iolock);
#endif
goto out;
}
--
2.27.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] af_unix: Add OOB support
2021-08-10 18:31 [PATCH] af_unix: Add OOB support Rao Shoaib
@ 2021-08-11 21:55 ` Jakub Kicinski
2021-08-11 21:57 ` Shoaib Rao
0 siblings, 1 reply; 3+ messages in thread
From: Jakub Kicinski @ 2021-08-11 21:55 UTC (permalink / raw)
To: Rao Shoaib; +Cc: dvyukov, davem, netdev, edumazet, viro
On Tue, 10 Aug 2021 11:31:22 -0700 Rao Shoaib wrote:
> From: Rao Shoaib <rao.shoaib@oracle.com>
>
> syzkaller found that OOB code was holding spinlock
> while calling a function in which it could sleep.
>
> Reported-by: syzbot+8760ca6c1ee783ac4abd@syzkaller.appspotmail.com
> Fixes: 314001f0bf92 ("af_unix: Add OOB support")
>
No new lines between tags please.
> Signed-off-by: Rao Shoaib <rao.shoaib@oracle.com>
Would you mind resending with a better subject? Something like
"af_unix: fix possible sleep under spinlock in oob handling"?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] af_unix: Add OOB support
2021-08-11 21:55 ` Jakub Kicinski
@ 2021-08-11 21:57 ` Shoaib Rao
0 siblings, 0 replies; 3+ messages in thread
From: Shoaib Rao @ 2021-08-11 21:57 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: dvyukov, davem, netdev, edumazet, viro
Sure will do.
Shoaib
On 8/11/21 2:55 PM, Jakub Kicinski wrote:
> On Tue, 10 Aug 2021 11:31:22 -0700 Rao Shoaib wrote:
>> From: Rao Shoaib <rao.shoaib@oracle.com>
>>
>> syzkaller found that OOB code was holding spinlock
>> while calling a function in which it could sleep.
>>
>> Reported-by: syzbot+8760ca6c1ee783ac4abd@syzkaller.appspotmail.com
>> Fixes: 314001f0bf92 ("af_unix: Add OOB support")
>>
> No new lines between tags please.
>
>> Signed-off-by: Rao Shoaib <rao.shoaib@oracle.com>
> Would you mind resending with a better subject? Something like
> "af_unix: fix possible sleep under spinlock in oob handling"?
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-08-11 21:57 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-10 18:31 [PATCH] af_unix: Add OOB support Rao Shoaib
2021-08-11 21:55 ` Jakub Kicinski
2021-08-11 21:57 ` Shoaib Rao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).