|
Message-ID: <20240601023429.GJ10433@brightrain.aerifal.cx> Date: Fri, 31 May 2024 22:34:30 -0400 From: Rich Felker <dalias@...c.org> To: Ismael Luceno <ismael@...ev.co.uk> Cc: musl@...ts.openwall.com Subject: Re: [PATCH] ioctl: Fix implicit constant conversion overflow On Sat, Jun 01, 2024 at 03:03:25AM +0200, Ismael Luceno wrote: > The last parameter (result of sizeof) to _IOC in _IOR/_IOW/_IOWR causes > the underlying expression's value to be promoted to size_t. Casting it > to int resolves the issue. > > Signed-off-by: Ismael Luceno <ismael@...ev.co.uk> > --- > arch/generic/bits/ioctl.h | 6 +++--- > arch/mips/bits/ioctl.h | 6 +++--- > arch/mipsn32/bits/ioctl.h | 6 +++--- > arch/powerpc/bits/ioctl.h | 6 +++--- > arch/powerpc64/bits/ioctl.h | 6 +++--- > arch/sh/bits/ioctl.h | 6 +++--- > 6 files changed, 18 insertions(+), 18 deletions(-) > > diff --git a/arch/generic/bits/ioctl.h b/arch/generic/bits/ioctl.h > index 60ae8b850b17..16541d547f68 100644 > --- a/arch/generic/bits/ioctl.h > +++ b/arch/generic/bits/ioctl.h > @@ -4,9 +4,9 @@ > #define _IOC_READ 2U > > #define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) > -#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) > -#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) > -#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) > +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),(int)sizeof(c)) > +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),(int)sizeof(c)) > +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),(int)sizeof(c)) I don't see how this helps with the warning you're trying to suppress, since _IOC_{READ,WRITE} already have unsigned type. If you changed that, you would then have *real overflows* (undefined behavior) instead of the well-defined, valid implicit conversions -Werror is complaining about. There may be a way to improve on the situation here but it's not so simple. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.