30 lines
932 B
Diff
30 lines
932 B
Diff
From: Alex Gartrell <agartrell@fb.com>
|
|
Date: Thu, 25 Dec 2014 23:22:49 -0800
|
|
Subject: [PATCH] tun: return proper error code from tun_do_read
|
|
|
|
Instead of -1 with EAGAIN, read on a O_NONBLOCK tun fd will return 0. This
|
|
fixes this by properly returning the error code from __skb_recv_datagram.
|
|
|
|
Signed-off-by: Alex Gartrell <agartrell@fb.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/tun.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
|
|
index 10f9e4021b5a..9a409a8f3b19 100644
|
|
--- a/drivers/net/tun.c
|
|
+++ b/drivers/net/tun.c
|
|
@@ -1368,7 +1368,7 @@ static ssize_t tun_do_read(struct tun_struct *tun, struct tun_file *tfile,
|
|
skb = __skb_recv_datagram(tfile->socket.sk, noblock ? MSG_DONTWAIT : 0,
|
|
&peeked, &off, &err);
|
|
if (!skb)
|
|
- return 0;
|
|
+ return err;
|
|
|
|
ret = tun_put_user(tun, tfile, skb, to);
|
|
if (unlikely(ret < 0))
|
|
--
|
|
2.1.0
|
|
|