diff mbox series

[v3,kvmtool,02/13] sizes.h: Make all sizes 64bit

Message ID 20220525112345.121321-3-alexandru.elisei@arm.com (mailing list archive)
State New, archived
Headers show
Series arm64: Allow the user to set RAM base address | expand

Commit Message

Alexandru Elisei May 25, 2022, 11:23 a.m. UTC
Append ULL to all of the size definitions to make them 64bit and avoid
overflows.

Reported-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
---
 include/linux/sizes.h | 64 +++++++++++++++++++++----------------------
 1 file changed, 32 insertions(+), 32 deletions(-)

Comments

Andre Przywara May 30, 2022, 3:05 p.m. UTC | #1
On Wed, 25 May 2022 12:23:34 +0100
Alexandru Elisei <alexandru.elisei@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).

Cheers,
Andre

> Reported-by: Andre Przywara <andre.przywara@arm.com>
> Signed-off-by: Alexandru Elisei <alexandru.elisei@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__ */
Alexandru Elisei June 15, 2022, 4:01 p.m. UTC | #2
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@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@arm.com>
> > Signed-off-by: Alexandru Elisei <alexandru.elisei@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__ */
>
diff mbox series

Patch

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__ */