]> www.infradead.org Git - linux.git/commitdiff
kbuild: simplify access to the kernel's version
authorSasha Levin <sashal@kernel.org>
Fri, 12 Feb 2021 16:29:24 +0000 (11:29 -0500)
committerMasahiro Yamada <masahiroy@kernel.org>
Tue, 16 Feb 2021 03:01:45 +0000 (12:01 +0900)
Instead of storing the version in a single integer and having various
kernel (and userspace) code how it's constructed, export individual
(major, patchlevel, sublevel) components and simplify kernel code that
uses it.

This should also make it easier on userspace.

Signed-off-by: Sasha Levin <sashal@kernel.org>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Makefile
drivers/net/ethernet/mellanox/mlx5/core/main.c
drivers/usb/core/hcd.c
drivers/usb/gadget/udc/aspeed-vhub/hub.c
include/linux/usb/composite.h
kernel/sys.c

index 12607d3891487eebdd2e4a6f4504ec90219e6105..1fdd44fe16590d54a4e0b06dbab0349e334ebbef 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1255,7 +1255,10 @@ define filechk_version.h
                expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \
        fi;                                                              \
        echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) +  \
-       ((c) > 255 ? 255 : (c)))'
+       ((c) > 255 ? 255 : (c)))';                                       \
+       echo \#define LINUX_VERSION_MAJOR $(VERSION);                    \
+       echo \#define LINUX_VERSION_PATCHLEVEL $(PATCHLEVEL);            \
+       echo \#define LINUX_VERSION_SUBLEVEL $(SUBLEVEL)
 endef
 
 $(version_h): FORCE
index ca6f2fc39ea0af55173bc01708d363b3266e6f8b..29f886263dc52b9e1e8472ac162bcaa9a8097263 100644 (file)
@@ -235,8 +235,8 @@ static void mlx5_set_driver_version(struct mlx5_core_dev *dev)
        remaining_size = max_t(int, 0, driver_ver_sz - strlen(string));
 
        snprintf(string + strlen(string), remaining_size, "%u.%u.%u",
-                (u8)((LINUX_VERSION_CODE >> 16) & 0xff), (u8)((LINUX_VERSION_CODE >> 8) & 0xff),
-                (u16)(LINUX_VERSION_CODE & 0xffff));
+               LINUX_VERSION_MAJOR, LINUX_VERSION_PATCHLEVEL,
+               LINUX_VERSION_SUBLEVEL);
 
        /*Send the command*/
        MLX5_SET(set_driver_version_in, in, opcode,
index ad5a0f405a75cd9c9a1cbb81ff071ec04281eef5..3f0381344221e20980dea3adad15a3d7c4933319 100644 (file)
@@ -111,8 +111,8 @@ DECLARE_WAIT_QUEUE_HEAD(usb_kill_urb_queue);
  */
 
 /*-------------------------------------------------------------------------*/
-#define KERNEL_REL     bin2bcd(((LINUX_VERSION_CODE >> 16) & 0x0ff))
-#define KERNEL_VER     bin2bcd(((LINUX_VERSION_CODE >> 8) & 0x0ff))
+#define KERNEL_REL     bin2bcd(LINUX_VERSION_MAJOR)
+#define KERNEL_VER     bin2bcd(LINUX_VERSION_PATCHLEVEL)
 
 /* usb 3.1 root hub device descriptor */
 static const u8 usb31_rh_dev_descriptor[18] = {
index bfd8e77788e29fe1c051b4f3f8ef14c772cb5dae..5c7dea5e0ff16dfde2a49d02964a3da0c9007768 100644 (file)
@@ -46,8 +46,8 @@
  *    - Make vid/did overridable
  *    - make it look like usb1 if usb1 mode forced
  */
-#define KERNEL_REL     bin2bcd(((LINUX_VERSION_CODE >> 16) & 0x0ff))
-#define KERNEL_VER     bin2bcd(((LINUX_VERSION_CODE >> 8) & 0x0ff))
+#define KERNEL_REL     bin2bcd(LINUX_VERSION_MAJOR)
+#define KERNEL_VER     bin2bcd(LINUX_VERSION_PATCHLEVEL)
 
 enum {
        AST_VHUB_STR_INDEX_MAX = 4,
index a2d229ab63ba58d548c822b6e3956a023e54320b..7531ce723374793c9b46065801ea8ed686c98f69 100644 (file)
@@ -573,8 +573,8 @@ static inline u16 get_default_bcdDevice(void)
 {
        u16 bcdDevice;
 
-       bcdDevice = bin2bcd((LINUX_VERSION_CODE >> 16 & 0xff)) << 8;
-       bcdDevice |= bin2bcd((LINUX_VERSION_CODE >> 8 & 0xff));
+       bcdDevice = bin2bcd(LINUX_VERSION_MAJOR) << 8;
+       bcdDevice |= bin2bcd(LINUX_VERSION_PATCHLEVEL);
        return bcdDevice;
 }
 
index 51f00fe20e4d15fbf37a38d4a66d2a62166f8cce..c2225bd405d58d2ddb405a962c06904cc5f2ac26 100644 (file)
@@ -1243,7 +1243,7 @@ static int override_release(char __user *release, size_t len)
                                break;
                        rest++;
                }
-               v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 60;
+               v = LINUX_VERSION_PATCHLEVEL + 60;
                copy = clamp_t(size_t, len, 1, sizeof(buf));
                copy = scnprintf(buf, copy, "2.6.%u%s", v, rest);
                ret = copy_to_user(release, buf, copy + 1);