aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tun.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-12-10 22:05:45 -0500
committerDavid S. Miller <davem@davemloft.net>2013-12-10 22:05:45 -0500
commit42404c09151029689659818e2196ee2fd97142aa (patch)
tree5257075d89de7df00796fd720724b219ff3f25bc /drivers/net/tun.c
parent8e3bff96afa67369008153f3326fa5ce985cabab (diff)
Revert "tun: remove useless codes in tun_chr_aio_read() and tun_recvmsg()"
This reverts commit 73713357ab58aacda1af715bb5a623528dbbfd79. MSG_TRUNC handling was broken and is going to be fixed in the 'net' tree, so revert this. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/tun.c')
-rw-r--r--drivers/net/tun.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index bbb693512918..3c5a8d8cde50 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -1354,6 +1354,7 @@ static ssize_t tun_chr_aio_read(struct kiocb *iocb, const struct iovec *iv,
1354 1354
1355 ret = tun_do_read(tun, tfile, iv, len, 1355 ret = tun_do_read(tun, tfile, iv, len,
1356 file->f_flags & O_NONBLOCK); 1356 file->f_flags & O_NONBLOCK);
1357 ret = min_t(ssize_t, ret, len);
1357 if (ret > 0) 1358 if (ret > 0)
1358 iocb->ki_pos = ret; 1359 iocb->ki_pos = ret;
1359out: 1360out:
@@ -1454,6 +1455,10 @@ static int tun_recvmsg(struct kiocb *iocb, struct socket *sock,
1454 } 1455 }
1455 ret = tun_do_read(tun, tfile, m->msg_iov, total_len, 1456 ret = tun_do_read(tun, tfile, m->msg_iov, total_len,
1456 flags & MSG_DONTWAIT); 1457 flags & MSG_DONTWAIT);
1458 if (ret > total_len) {
1459 m->msg_flags |= MSG_TRUNC;
1460 ret = flags & MSG_TRUNC ? ret : total_len;
1461 }
1457out: 1462out:
1458 tun_put(tun); 1463 tun_put(tun);
1459 return ret; 1464 return ret;