aboutsummaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2011-08-04 14:07:39 +0000
committerGreg Kroah-Hartman <gregkh@suse.de>2011-08-15 18:31:33 -0700
commit91f620f98412f866b385b16681d5e59b7e62e343 (patch)
tree73cfb758b6f3422554e7683b41b1621599797389 /net
parent365f1cd4cadc46455db97d0b568ea7ad3af106be (diff)
net: Cap number of elements for sendmmsg
commit 98382f419f32d2c12d021943b87dea555677144b upstream. To limit the amount of time we can spend in sendmmsg, cap the number of elements to UIO_MAXIOV (currently 1024). For error handling an application using sendmmsg needs to retry at the first unsent message, so capping is simpler and requires less application logic than returning EINVAL. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'net')
-rw-r--r--net/socket.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/socket.c b/net/socket.c
index 8d28c6d225d..e1cf264b411 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -1999,6 +1999,9 @@ int __sys_sendmmsg(int fd, struct mmsghdr __user *mmsg, unsigned int vlen,
struct compat_mmsghdr __user *compat_entry;
struct msghdr msg_sys;
+ if (vlen > UIO_MAXIOV)
+ vlen = UIO_MAXIOV;
+
datagrams = 0;
sock = sockfd_lookup_light(fd, &err, &fput_needed);