diff options
author | David S. Miller <davem@davemloft.net> | 2013-12-10 22:05:45 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-12-10 22:05:45 -0500 |
commit | 42404c09151029689659818e2196ee2fd97142aa (patch) | |
tree | 5257075d89de7df00796fd720724b219ff3f25bc /drivers/net/tun.c | |
parent | 8e3bff96afa67369008153f3326fa5ce985cabab (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.c | 5 |
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; |
1359 | out: | 1360 | out: |
@@ -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 | } | ||
1457 | out: | 1462 | out: |
1458 | tun_put(tun); | 1463 | tun_put(tun); |
1459 | return ret; | 1464 | return ret; |