[PATCH v3 kvmtool 02/13] sizes.h: Make all sizes 64bit
Alexandru Elisei
alexandru.elisei at arm.com
Wed Jun 15 09:01:24 PDT 2022
Hi,
On Mon, May 30, 2022 at 04:05:17PM +0100, Andre Przywara wrote:
> On Wed, 25 May 2022 12:23:34 +0100
> Alexandru Elisei <alexandru.elisei at arm.com> wrote:
>
> Hi,
>
> > Append ULL to all of the size definitions to make them 64bit and avoid
> > overflows.
>
> I am not fully convinced this is the best solution, as it deviates from
> the kernel file, and just papers over issues at the call sites. I
> acknowledge the pragmatic approach of trying to fix multiple problems at
> once, but am wondering if we should use -fsanitize=undefined to identify
> problematic code and fix it (I started doing this, actually).
I have to admit I'm slightly on the fence too about modifying a header file
taken from Linux, especially considering that I'm not really sure why they are
using ints instead of casting everything (it does seem that sizes.h was intended
to be used by assembly code on 32-bit systems before it was moved from
include/asm-generic/sizes.h to include/linux/sizes.h, but I can't be really sure
that's the only reason).
So yes, I'll add the needed cast(s) and avoid changing the size definitions.
Thanks,
Alex
>
> Cheers,
> Andre
>
> > Reported-by: Andre Przywara <andre.przywara at arm.com>
> > Signed-off-by: Alexandru Elisei <alexandru.elisei at arm.com>
> > ---
> > include/linux/sizes.h | 64 +++++++++++++++++++++----------------------
> > 1 file changed, 32 insertions(+), 32 deletions(-)
> >
> > diff --git a/include/linux/sizes.h b/include/linux/sizes.h
> > index ce3e8150c174..b2b5c457cf1c 100644
> > --- a/include/linux/sizes.h
> > +++ b/include/linux/sizes.h
> > @@ -8,40 +8,40 @@
> > #ifndef __LINUX_SIZES_H__
> > #define __LINUX_SIZES_H__
> >
> > -#define SZ_1 0x00000001
> > -#define SZ_2 0x00000002
> > -#define SZ_4 0x00000004
> > -#define SZ_8 0x00000008
> > -#define SZ_16 0x00000010
> > -#define SZ_32 0x00000020
> > -#define SZ_64 0x00000040
> > -#define SZ_128 0x00000080
> > -#define SZ_256 0x00000100
> > -#define SZ_512 0x00000200
> > +#define SZ_1 0x00000001ULL
> > +#define SZ_2 0x00000002ULL
> > +#define SZ_4 0x00000004ULL
> > +#define SZ_8 0x00000008ULL
> > +#define SZ_16 0x00000010ULL
> > +#define SZ_32 0x00000020ULL
> > +#define SZ_64 0x00000040ULL
> > +#define SZ_128 0x00000080ULL
> > +#define SZ_256 0x00000100ULL
> > +#define SZ_512 0x00000200ULL
> >
> > -#define SZ_1K 0x00000400
> > -#define SZ_2K 0x00000800
> > -#define SZ_4K 0x00001000
> > -#define SZ_8K 0x00002000
> > -#define SZ_16K 0x00004000
> > -#define SZ_32K 0x00008000
> > -#define SZ_64K 0x00010000
> > -#define SZ_128K 0x00020000
> > -#define SZ_256K 0x00040000
> > -#define SZ_512K 0x00080000
> > +#define SZ_1K 0x00000400ULL
> > +#define SZ_2K 0x00000800ULL
> > +#define SZ_4K 0x00001000ULL
> > +#define SZ_8K 0x00002000ULL
> > +#define SZ_16K 0x00004000ULL
> > +#define SZ_32K 0x00008000ULL
> > +#define SZ_64K 0x00010000ULL
> > +#define SZ_128K 0x00020000ULL
> > +#define SZ_256K 0x00040000ULL
> > +#define SZ_512K 0x00080000ULL
> >
> > -#define SZ_1M 0x00100000
> > -#define SZ_2M 0x00200000
> > -#define SZ_4M 0x00400000
> > -#define SZ_8M 0x00800000
> > -#define SZ_16M 0x01000000
> > -#define SZ_32M 0x02000000
> > -#define SZ_64M 0x04000000
> > -#define SZ_128M 0x08000000
> > -#define SZ_256M 0x10000000
> > -#define SZ_512M 0x20000000
> > +#define SZ_1M 0x00100000ULL
> > +#define SZ_2M 0x00200000ULL
> > +#define SZ_4M 0x00400000ULL
> > +#define SZ_8M 0x00800000ULL
> > +#define SZ_16M 0x01000000ULL
> > +#define SZ_32M 0x02000000ULL
> > +#define SZ_64M 0x04000000ULL
> > +#define SZ_128M 0x08000000ULL
> > +#define SZ_256M 0x10000000ULL
> > +#define SZ_512M 0x20000000ULL
> >
> > -#define SZ_1G 0x40000000
> > -#define SZ_2G 0x80000000
> > +#define SZ_1G 0x40000000ULL
> > +#define SZ_2G 0x80000000ULL
> >
> > #endif /* __LINUX_SIZES_H__ */
>
More information about the linux-arm-kernel
mailing list