Message ID | 20091210065815.GA4144@osiris.boeblingen.de.ibm.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Em Thu, Dec 10, 2009 at 07:58:16AM +0100, Heiko Carstens escreveu: > From: Heiko Carstens <heiko.carstens@de.ibm.com> > > compat_sys_recvmmsg has a compat_timespec parameter and not a > timespec parameter. This way we also get rid of an odd cast. > > Cc: Arnaldo Carvalho de Melo <acme@redhat.com> > Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Was unaware of this helper, thanks! Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Arnaldo Carvalho de Melo <acme@redhat.com> Date: Thu, 10 Dec 2009 10:47:06 -0200 > Em Thu, Dec 10, 2009 at 07:58:16AM +0100, Heiko Carstens escreveu: >> From: Heiko Carstens <heiko.carstens@de.ibm.com> >> >> compat_sys_recvmmsg has a compat_timespec parameter and not a >> timespec parameter. This way we also get rid of an odd cast. >> >> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> >> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> > > Was unaware of this helper, thanks! > > Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Index: linux-2.6/include/net/compat.h =================================================================== --- linux-2.6.orig/include/net/compat.h +++ linux-2.6/include/net/compat.h @@ -46,7 +46,7 @@ extern asmlinkage long compat_sys_sendms extern asmlinkage long compat_sys_recvmsg(int,struct compat_msghdr __user *,unsigned); extern asmlinkage long compat_sys_recvmmsg(int, struct compat_mmsghdr __user *, unsigned, unsigned, - struct timespec __user *); + struct compat_timespec __user *); extern asmlinkage long compat_sys_getsockopt(int, int, int, char __user *, int __user *); extern int put_cmsg_compat(struct msghdr*, int, int, int, void *); Index: linux-2.6/net/compat.c =================================================================== --- linux-2.6.orig/net/compat.c +++ linux-2.6/net/compat.c @@ -754,26 +754,24 @@ asmlinkage long compat_sys_recvfrom(int asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, unsigned vlen, unsigned int flags, - struct timespec __user *timeout) + struct compat_timespec __user *timeout) { int datagrams; struct timespec ktspec; - 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)) + if (get_user(ktspec.tv_sec, &timeout->tv_sec) || + get_user(ktspec.tv_nsec, &timeout->tv_nsec)) return -EFAULT; datagrams = __sys_recvmmsg(fd, (struct mmsghdr __user *)mmsg, vlen, flags | MSG_CMSG_COMPAT, &ktspec); if (datagrams > 0 && - (put_user(ktspec.tv_sec, &utspec->tv_sec) || - put_user(ktspec.tv_nsec, &utspec->tv_nsec))) + (put_user(ktspec.tv_sec, &timeout->tv_sec) || + put_user(ktspec.tv_nsec, &timeout->tv_nsec))) datagrams = -EFAULT; return datagrams;