* [PATCH for-5.4,5.10] kbuild: simplify access to the kernel's version
@ 2022-02-07 14:36 Jiaxun Yang
2022-02-08 14:46 ` Jiaxun Yang
0 siblings, 1 reply; 5+ messages in thread
From: Jiaxun Yang @ 2022-02-07 14:36 UTC (permalink / raw)
To: gregkh; +Cc: stable, Sasha Levin, Masahiro Yamada, Jiaxun Yang
From: Sasha Levin <sashal@kernel.org>
commit 88a686728b3739d3598851e729c0e81f194e5c53 upstream.
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>
[jiaxun.yang@flygoat.com: Stable backport, fix geth as well.]
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
Makefile | 5 ++++-
drivers/net/ethernet/mellanox/mlx5/core/main.c | 4 ++--
drivers/scsi/gdth.c | 6 +++---
drivers/usb/core/hcd.c | 4 ++--
include/linux/usb/composite.h | 4 ++--
kernel/sys.c | 2 +-
6 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/Makefile b/Makefile
index 324939b64d7b..92dd066edd44 100644
--- a/Makefile
+++ b/Makefile
@@ -1183,7 +1183,10 @@ define filechk_version.h
expr $(VERSION) \* 65536 + $(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): PATCHLEVEL := $(if $(PATCHLEVEL), $(PATCHLEVEL), 0)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index f2657cd3ffa4..d57d0bc8d933 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -230,8 +230,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,
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index fe03410268e6..3ff0326f22fd 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -3907,9 +3907,9 @@ static int gdth_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
{
gdth_ioctl_osvers osv;
- osv.version = (u8)(LINUX_VERSION_CODE >> 16);
- osv.subversion = (u8)(LINUX_VERSION_CODE >> 8);
- osv.revision = (u16)(LINUX_VERSION_CODE & 0xff);
+ osv.version = LINUX_VERSION_MAJOR;
+ osv.subversion = LINUX_VERSION_PATCHLEVEL;
+ osv.revision = LINUX_VERSION_SUBLEVEL;
if (copy_to_user(argp, &osv, sizeof(gdth_ioctl_osvers)))
return -EFAULT;
break;
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 39203f2ce6a1..323f210090bf 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -110,8 +110,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] = {
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h
index 2040696d75b6..764f58b74f26 100644
--- a/include/linux/usb/composite.h
+++ b/include/linux/usb/composite.h
@@ -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;
}
diff --git a/kernel/sys.c b/kernel/sys.c
index b075fe84eb5a..0278461760b0 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1228,7 +1228,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);
--
2.35.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH for-5.4,5.10] kbuild: simplify access to the kernel's version
2022-02-07 14:36 [PATCH for-5.4,5.10] kbuild: simplify access to the kernel's version Jiaxun Yang
@ 2022-02-08 14:46 ` Jiaxun Yang
2022-02-08 15:23 ` Greg KH
0 siblings, 1 reply; 5+ messages in thread
From: Jiaxun Yang @ 2022-02-08 14:46 UTC (permalink / raw)
To: gregkh; +Cc: stable, Sasha Levin, Masahiro Yamada
Oh Please ignore this series of backport.
We find another way to workaround the issue.
Sorry for the noice :-(
Thanks.
- Jiaxun
在 2022/2/7 14:36, Jiaxun Yang 写道:
> From: Sasha Levin <sashal@kernel.org>
>
> commit 88a686728b3739d3598851e729c0e81f194e5c53 upstream.
>
> 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>
> [jiaxun.yang@flygoat.com: Stable backport, fix geth as well.]
> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> ---
> Makefile | 5 ++++-
> drivers/net/ethernet/mellanox/mlx5/core/main.c | 4 ++--
> drivers/scsi/gdth.c | 6 +++---
> drivers/usb/core/hcd.c | 4 ++--
> include/linux/usb/composite.h | 4 ++--
> kernel/sys.c | 2 +-
> 6 files changed, 14 insertions(+), 11 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 324939b64d7b..92dd066edd44 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1183,7 +1183,10 @@ define filechk_version.h
> expr $(VERSION) \* 65536 + $(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): PATCHLEVEL := $(if $(PATCHLEVEL), $(PATCHLEVEL), 0)
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
> index f2657cd3ffa4..d57d0bc8d933 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
> @@ -230,8 +230,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,
> diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
> index fe03410268e6..3ff0326f22fd 100644
> --- a/drivers/scsi/gdth.c
> +++ b/drivers/scsi/gdth.c
> @@ -3907,9 +3907,9 @@ static int gdth_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
> {
> gdth_ioctl_osvers osv;
>
> - osv.version = (u8)(LINUX_VERSION_CODE >> 16);
> - osv.subversion = (u8)(LINUX_VERSION_CODE >> 8);
> - osv.revision = (u16)(LINUX_VERSION_CODE & 0xff);
> + osv.version = LINUX_VERSION_MAJOR;
> + osv.subversion = LINUX_VERSION_PATCHLEVEL;
> + osv.revision = LINUX_VERSION_SUBLEVEL;
> if (copy_to_user(argp, &osv, sizeof(gdth_ioctl_osvers)))
> return -EFAULT;
> break;
> diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
> index 39203f2ce6a1..323f210090bf 100644
> --- a/drivers/usb/core/hcd.c
> +++ b/drivers/usb/core/hcd.c
> @@ -110,8 +110,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] = {
> diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h
> index 2040696d75b6..764f58b74f26 100644
> --- a/include/linux/usb/composite.h
> +++ b/include/linux/usb/composite.h
> @@ -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;
> }
>
> diff --git a/kernel/sys.c b/kernel/sys.c
> index b075fe84eb5a..0278461760b0 100644
> --- a/kernel/sys.c
> +++ b/kernel/sys.c
> @@ -1228,7 +1228,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);
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH for-5.4,5.10] kbuild: simplify access to the kernel's version
2022-02-08 14:46 ` Jiaxun Yang
@ 2022-02-08 15:23 ` Greg KH
2022-02-08 15:47 ` Jiaxun Yang
0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2022-02-08 15:23 UTC (permalink / raw)
To: Jiaxun Yang; +Cc: stable, Sasha Levin, Masahiro Yamada
On Tue, Feb 08, 2022 at 02:46:36PM +0000, Jiaxun Yang wrote:
> Oh Please ignore this series of backport.
For all branches?
> We find another way to workaround the issue.
What is your solution? I am sure that others would be interested in it.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH for-5.4,5.10] kbuild: simplify access to the kernel's version
2022-02-08 15:23 ` Greg KH
@ 2022-02-08 15:47 ` Jiaxun Yang
2022-02-08 17:17 ` Greg KH
0 siblings, 1 reply; 5+ messages in thread
From: Jiaxun Yang @ 2022-02-08 15:47 UTC (permalink / raw)
To: Greg KH; +Cc: stable, Sasha Levin, Masahiro Yamada
在 2022/2/8 15:23, Greg KH 写道:
> On Tue, Feb 08, 2022 at 02:46:36PM +0000, Jiaxun Yang wrote:
>> Oh Please ignore this series of backport.
> For all branches?
Yep.
>
>> We find another way to workaround the issue.
> What is your solution? I am sure that others would be interested in it.
Oh we just define them in Makefile with cflags
like:
--- a/Makefile.kernel
+++ b/Makefile.kernel
@@ -60,3 +60,5 @@ obj-$(CPTCFG_WLAN) += drivers/net/wireless/
#obj-$(CPTCFG_USB_USBNET) += drivers/net/usb/
#
#obj-$(CPTCFG_STAGING) += drivers/staging/
+
+subdir-ccflags-y += -DCOMPAT_KERNEL_SUBLEVEL=$(SUBLEVEL)
Thanks.
- Jiaxun
>
> thanks,
>
> greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH for-5.4,5.10] kbuild: simplify access to the kernel's version
2022-02-08 15:47 ` Jiaxun Yang
@ 2022-02-08 17:17 ` Greg KH
0 siblings, 0 replies; 5+ messages in thread
From: Greg KH @ 2022-02-08 17:17 UTC (permalink / raw)
To: Jiaxun Yang; +Cc: stable, Sasha Levin, Masahiro Yamada
On Tue, Feb 08, 2022 at 03:47:13PM +0000, Jiaxun Yang wrote:
>
>
> 在 2022/2/8 15:23, Greg KH 写道:
> > On Tue, Feb 08, 2022 at 02:46:36PM +0000, Jiaxun Yang wrote:
> > > Oh Please ignore this series of backport.
> > For all branches?
> Yep.
> >
> > > We find another way to workaround the issue.
> > What is your solution? I am sure that others would be interested in it.
> Oh we just define them in Makefile with cflags
> like:
>
>
> --- a/Makefile.kernel
> +++ b/Makefile.kernel
> @@ -60,3 +60,5 @@ obj-$(CPTCFG_WLAN) += drivers/net/wireless/
> #obj-$(CPTCFG_USB_USBNET) += drivers/net/usb/
> #
> #obj-$(CPTCFG_STAGING) += drivers/staging/
> +
> +subdir-ccflags-y += -DCOMPAT_KERNEL_SUBLEVEL=$(SUBLEVEL)
Ah, that works, nice!
greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-02-08 17:17 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-07 14:36 [PATCH for-5.4,5.10] kbuild: simplify access to the kernel's version Jiaxun Yang
2022-02-08 14:46 ` Jiaxun Yang
2022-02-08 15:23 ` Greg KH
2022-02-08 15:47 ` Jiaxun Yang
2022-02-08 17:17 ` Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox