From: Jean-Mickael Guerin Date: Tue, 1 Dec 2009 07:52:16 +0000 (+0000) Subject: net: compat_sys_recvmmsg user timespec arg can be NULL X-Git-Tag: v2.6.33-rc1~388^2~83 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=5b23136bcf766a58160a319677b366c90f0cd223;p=~shefty%2Frdma-dev.git net: compat_sys_recvmmsg user timespec arg can be NULL We must test if user timespec is non-NULL before copying from userpace, same as sys_recvmmsg(). Commiter note: changed it so that we have just one branch. Signed-off-by: Jean-Mickael Guerin Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller --- diff --git a/net/compat.c b/net/compat.c index 6a2f75fb3f4..e1a56ade803 100644 --- a/net/compat.c +++ b/net/compat.c @@ -758,9 +758,13 @@ asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, { int datagrams; struct timespec ktspec; - struct compat_timespec __user *utspec = - (struct compat_timespec __user *)timeout; + struct compat_timespec __user *utspec; + if (timeout == NULL) + return __sys_recvmmsg(fd, (struct mmsghdr __user *)mmsg, vlen, + flags | MSG_CMSG_COMPAT, NULL); + + utspec = (struct compat_timespec __user *)timeout; if (get_user(ktspec.tv_sec, &utspec->tv_sec) || get_user(ktspec.tv_nsec, &utspec->tv_nsec)) return -EFAULT;