summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2011-08-04 14:07:39 (GMT)
committerDavid S. Miller <davem@davemloft.net>2011-08-05 10:31:03 (GMT)
commit98382f419f32d2c12d021943b87dea555677144b (patch)
treed07b99ec8eec119b53ddc2223de9027d7a8c0263
parent728ffb86f10873aaf4abd26dde691ee40ae731fe (diff)
downloadlinux-fsl-qoriq-98382f419f32d2c12d021943b87dea555677144b.tar.xz
net: Cap number of elements for sendmmsg
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> Cc: stable <stable@kernel.org> [3.0+] Signed-off-by: David S. Miller <davem@davemloft.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 e4ed235..b5c6de4 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);