This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v2][BZ 16852] Do not clobber recvmmsg argument.


On Mon, Apr 28, 2014 at 01:01:22PM -0400, David Miller wrote:
> From: OndÅej BÃlka <neleai@seznam.cz>
> Date: Mon, 28 Apr 2014 18:04:20 +0200
> 
> > 	* sysdeps/unix/sysv/linux/recvmmsg.c (recvmmsg): Do not clobber
> > 	timeout argument.
> 
> It is extremely unfortunate if we've defined this argument as const,
> now you are making it so that the user has no mechanism to get the
> updated timeval other than to define their own syscall stubs.
> 
> This is doubly unfortunately since there is absolutely no reason for
> us to have defined the interface different from what the kernel
> actually provides.

Ok, here is second alternative that drops constness.


	* socket/recvmmsg.c (recvmmsg): Drop const argument.
	* socket/sys/socket.h: Likewise
	* sysdeps/unix/sysv/linux/recvmmsg.c: Likewise.

---
 socket/recvmmsg.c                  | 2 +-
 socket/sys/socket.h                | 2 +-
 sysdeps/unix/sysv/linux/recvmmsg.c | 6 +++---
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/socket/recvmmsg.c b/socket/recvmmsg.c
index ed0c369..3daa501 100644
--- a/socket/recvmmsg.c
+++ b/socket/recvmmsg.c
@@ -23,7 +23,7 @@
    Returns the number of bytes read or -1 for errors.  */
 int
 recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags,
-	  const struct timespec *tmo)
+	  struct timespec *tmo)
 {
   __set_errno (ENOSYS);
   return -1;
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 95ee26a..091b08c 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -209,7 +209,7 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
    __THROW.  */
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
-		     const struct timespec *__tmo);
+		     struct timespec *__tmo);
 #endif
 
 
diff --git a/sysdeps/unix/sysv/linux/recvmmsg.c b/sysdeps/unix/sysv/linux/recvmmsg.c
index 57ddf31..6c9ca44 100644
--- a/sysdeps/unix/sysv/linux/recvmmsg.c
+++ b/sysdeps/unix/sysv/linux/recvmmsg.c
@@ -35,7 +35,7 @@
 #ifdef __NR_recvmmsg
 int
 recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags,
-	  const struct timespec *tmo)
+	  struct timespec *tmo)
 {
   if (SINGLE_THREAD_P)
     return INLINE_SYSCALL (recvmmsg, 5, fd, vmessages, vlen, flags, tmo);
@@ -52,14 +52,14 @@ recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags,
 # ifndef __ASSUME_RECVMMSG_SOCKETCALL
 extern int __internal_recvmmsg (int fd, struct mmsghdr *vmessages,
 				unsigned int vlen, int flags,
-				const struct timespec *tmo)
+				struct timespec *tmo)
      attribute_hidden;
 
 static int have_recvmmsg;
 
 int
 recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags,
-	  const struct timespec *tmo)
+	  struct timespec *tmo)
 {
   if (__glibc_likely (have_recvmmsg >= 0))
     {
-- 
1.8.4.rc3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]