From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rhlx01.hs-esslingen.de ([129.143.116.10]:53276 "EHLO rhlx01.hs-esslingen.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387949AbeGKO0y (ORCPT ); Wed, 11 Jul 2018 10:26:54 -0400 Date: Wed, 11 Jul 2018 16:22:17 +0200 From: Adrian Reber To: Christoph Hellwig Cc: viro@zeniv.linux.org.uk, linux-aio@kvack.org, linux-fsdevel@vger.kernel.org, smueller@chronox.de, avagin@virtuozzo.com Subject: Re: [PATCH] aio: don't expose __aio_sigset in uapi Message-ID: <20180711142217.GB15300@lisas.de> References: <20180711134846.18944-1-hch@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180711134846.18944-1-hch@lst.de> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Wed, Jul 11, 2018 at 03:48:46PM +0200, Christoph Hellwig wrote: > 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 > Reported-by: Adrian Reber > --- > fs/aio.c | 5 +++++ > include/linux/syscalls.h | 1 + > include/uapi/linux/aio_abi.h | 6 ------ > 3 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/fs/aio.c b/fs/aio.c > index 210df9da1283..27454594e37a 100644 > --- a/fs/aio.c > +++ b/fs/aio.c > @@ -1896,6 +1896,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, > diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h > index a368a68cb667..5c1a0933768e 100644 > --- a/include/linux/syscalls.h > +++ b/include/linux/syscalls.h > @@ -11,6 +11,7 @@ > #ifndef _LINUX_SYSCALLS_H > #define _LINUX_SYSCALLS_H > > +struct __aio_sigset; > struct epoll_event; > struct iattr; > struct inode; > diff --git a/include/uapi/linux/aio_abi.h b/include/uapi/linux/aio_abi.h > index 3c5038b587ba..d4593a6062ef 100644 > --- a/include/uapi/linux/aio_abi.h > +++ b/include/uapi/linux/aio_abi.h > @@ -29,7 +29,6 @@ > > #include > #include > -#include > #include > > typedef __kernel_ulong_t aio_context_t; > @@ -110,10 +109,5 @@ struct iocb { > #undef IFBIG > #undef IFLITTLE > > -struct __aio_sigset { > - const sigset_t __user *sigmask; > - size_t sigsetsize; > -}; > - > #endif /* __LINUX__AIO_ABI_H */ > > -- > 2.18.0 Tested with CRIU, which was broken before, and it compiles again. Thanks! Adrian