OSDN Git Service

aio: don't expose __aio_sigset in uapi
authorChristoph Hellwig <hch@lst.de>
Wed, 11 Jul 2018 13:48:46 +0000 (15:48 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 18 Jul 2018 03:26:58 +0000 (23:26 -0400)
glibc uses a different defintion of sigset_t than the kernel does,
and the current version would pull in both.  To fix this just do not
expose the type at all - this somewhat mirrors pselect() where we
do not even have a type for the magic sigmask argument, but just
use pointer arithmetics.

Fixes: 7a074e96 ("aio: implement io_pgetevents")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-by: Adrian Reber <adrian@lisas.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/aio.c
include/linux/syscalls.h
include/uapi/linux/aio_abi.h

index e1d2012..b1a42e4 100644 (file)
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -2042,6 +2042,11 @@ SYSCALL_DEFINE5(io_getevents, aio_context_t, ctx_id,
        return ret;
 }
 
+struct __aio_sigset {
+       const sigset_t __user   *sigmask;
+       size_t          sigsetsize;
+};
+
 SYSCALL_DEFINE6(io_pgetevents,
                aio_context_t, ctx_id,
                long, min_nr,
index 7381080..b06b5ee 100644 (file)
@@ -11,6 +11,7 @@
 #ifndef _LINUX_SYSCALLS_H
 #define _LINUX_SYSCALLS_H
 
+struct __aio_sigset;
 struct epoll_event;
 struct iattr;
 struct inode;
index d002213..ce43d34 100644 (file)
@@ -29,7 +29,6 @@
 
 #include <linux/types.h>
 #include <linux/fs.h>
-#include <linux/signal.h>
 #include <asm/byteorder.h>
 
 typedef __kernel_ulong_t aio_context_t;
@@ -108,10 +107,5 @@ struct iocb {
 #undef IFBIG
 #undef IFLITTLE
 
-struct __aio_sigset {
-       const sigset_t __user   *sigmask;
-       size_t          sigsetsize;
-};
-
 #endif /* __LINUX__AIO_ABI_H */