diff mbox series

kbuild: Fix <linux/version.h> for empty SUBLEVEL or PATCHLEVEL again

Message ID 20210227142023.63480-1-masahiroy@kernel.org (mailing list archive)
State New
Headers show
Series kbuild: Fix <linux/version.h> for empty SUBLEVEL or PATCHLEVEL again | expand

Commit Message

Masahiro Yamada Feb. 27, 2021, 2:20 p.m. UTC
Commit 9b82f13e7ef3 ("kbuild: clamp SUBLEVEL to 255") breaks the build
if SUBLEVEL or PATCHLEVEL is empty.

Commit 78d3bb4483ba ("kbuild: Fix <linux/version.h> for empty SUBLEVEL
or PATCHLEVEL") fixed the issue by prepending a zero.

This time, we cannot take the same approach because we have C code:

  #define LINUX_VERSION_PATCHLEVEL $(PATCHLEVEL)
  #define LINUX_VERSION_SUBLEVEL $(SUBLEVEL)

Replace empty SUBLEVEL or PATCHLEVEL with a zero.

Fixes: 9b82f13e7ef3 ("kbuild: clamp SUBLEVEL to 255")
Reported-by: Christian Zigotzky <chzigotzky@xenosoft.de>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 Makefile | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Sasha Levin Feb. 28, 2021, 1:19 a.m. UTC | #1
On Sat, Feb 27, 2021 at 11:20:23PM +0900, Masahiro Yamada wrote:
>Commit 9b82f13e7ef3 ("kbuild: clamp SUBLEVEL to 255") breaks the build
>if SUBLEVEL or PATCHLEVEL is empty.
>
>Commit 78d3bb4483ba ("kbuild: Fix <linux/version.h> for empty SUBLEVEL
>or PATCHLEVEL") fixed the issue by prepending a zero.
>
>This time, we cannot take the same approach because we have C code:
>
>  #define LINUX_VERSION_PATCHLEVEL $(PATCHLEVEL)
>  #define LINUX_VERSION_SUBLEVEL $(SUBLEVEL)
>
>Replace empty SUBLEVEL or PATCHLEVEL with a zero.
>
>Fixes: 9b82f13e7ef3 ("kbuild: clamp SUBLEVEL to 255")
>Reported-by: Christian Zigotzky <chzigotzky@xenosoft.de>
>Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>

Reviewed-and-tested-by: Sasha Levin <sashal@kernel.org>

Thank you!
David Laight March 1, 2021, 5:10 p.m. UTC | #2
From: Masahiro Yamada
> Sent: 27 February 2021 14:20
> 
> Commit 9b82f13e7ef3 ("kbuild: clamp SUBLEVEL to 255") breaks the build
> if SUBLEVEL or PATCHLEVEL is empty.
> 
> Commit 78d3bb4483ba ("kbuild: Fix <linux/version.h> for empty SUBLEVEL
> or PATCHLEVEL") fixed the issue by prepending a zero.
> 
> This time, we cannot take the same approach because we have C code:
> 
>   #define LINUX_VERSION_PATCHLEVEL $(PATCHLEVEL)
>   #define LINUX_VERSION_SUBLEVEL $(SUBLEVEL)
> 
> Replace empty SUBLEVEL or PATCHLEVEL with a zero.

You could do:

#define LINUX_VERSION_PATCHLEVEL ($(PATCHLEVEL) + 0)

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index f2dc2f953e23..14c13b09a9e7 100644
--- a/Makefile
+++ b/Makefile
@@ -1283,10 +1283,10 @@  endef
 define filechk_version.h
 	if [ $(SUBLEVEL) -gt 255 ]; then                                 \
 		echo \#define LINUX_VERSION_CODE $(shell                 \
-		expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + 255); \
+		expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + 255); \
 	else                                                             \
 		echo \#define LINUX_VERSION_CODE $(shell                 \
-		expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \
+		expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \
 	fi;                                                              \
 	echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) +  \
 	((c) > 255 ? 255 : (c)))';                                       \
@@ -1295,6 +1295,8 @@  define filechk_version.h
 	echo \#define LINUX_VERSION_SUBLEVEL $(SUBLEVEL)
 endef
 
+$(version_h): PATCHLEVEL := $(if $(PATCHLEVEL), $(PATCHLEVEL), 0)
+$(version_h): SUBLEVEL := $(if $(SUBLEVEL), $(SUBLEVEL), 0)
 $(version_h): FORCE
 	$(call filechk,version.h)