2019-01-07 18:57:29

by J. Neuschäfer

[permalink] [raw]
Subject: [PATCH] kernel/sys.c: Fix UNAME26 for 5.0

UNAME26 is a mechanism to report Linux's version as 2.6.x, for
compatibility with old/broken software. Because of the way it is
implemented, it needs to be adjusted to handle version 5.0.

Signed-off-by: Jonathan Neuschäfer <[email protected]>
---
kernel/sys.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/sys.c b/kernel/sys.c
index a48cbf1414b8..479f4ecdb405 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1208,6 +1208,7 @@ DECLARE_RWSEM(uts_sem);
* Work around broken programs that cannot handle "Linux 3.0".
* Instead we map 3.x to 2.6.40+x, so e.g. 3.0 would be 2.6.40
* And we map 4.x to 2.6.60+x, so 4.0 would be 2.6.60.
+ * We map 5.x to 2.6.81+x, so 5.0 would be 2.6.81.
*/
static int override_release(char __user *release, size_t len)
{
@@ -1227,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_CODE >> 8) & 0xff) + 81;
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.20.1



2019-01-07 18:58:36

by Linus Torvalds

[permalink] [raw]
Subject: Re: [PATCH] kernel/sys.c: Fix UNAME26 for 5.0

On Mon, Jan 7, 2019 at 10:03 AM Jonathan Neuschäfer
<[email protected]> wrote:
>
> UNAME26 is a mechanism to report Linux's version as 2.6.x, for
> compatibility with old/broken software. Because of the way it is
> implemented, it needs to be adjusted to handle version 5.0.

Do we actually need this?

I'd rather let it bitrot, and just let it return random versions. It
will just start again at 2.4.60, won't it?

Anybody who uses UNAME26 for a 5.x kernel might as well think it's
still 4.x. The user space is so old that it can't possibly care about
differences between 4.x and 5.x, can it?

The only thing that matters is that it shows "2.4.<largeenough>",
which it will do regardless.

Linus

2019-01-08 00:12:00

by J. Neuschäfer

[permalink] [raw]
Subject: Re: [PATCH] kernel/sys.c: Fix UNAME26 for 5.0

On Mon, Jan 07, 2019 at 10:10:31AM -0800, Linus Torvalds wrote:
> On Mon, Jan 7, 2019 at 10:03 AM Jonathan Neuschäfer
> <[email protected]> wrote:
> >
> > UNAME26 is a mechanism to report Linux's version as 2.6.x, for
> > compatibility with old/broken software. Because of the way it is
> > implemented, it needs to be adjusted to handle version 5.0.
>
> Do we actually need this?

I don't run any such old software, so I don't have a strong opinion
here; I just sent this patch because I knew UNAME26 version strings
would jump back without it.

> I'd rather let it bitrot, and just let it return random versions. It
> will just start again at 2.4.60, won't it?

Correct.
(Well, it's 2.6, not 2.4, but yes)

> Anybody who uses UNAME26 for a 5.x kernel might as well think it's
> still 4.x. The user space is so old that it can't possibly care about
> differences between 4.x and 5.x, can it?
>
> The only thing that matters is that it shows "2.4.<largeenough>",
> which it will do regardless.

Good point, I guess that's a valid appraoch.



Jonathan Neuschäfer


Attachments:
(No filename) (1.08 kB)
signature.asc (849.00 B)
Download all attachments

2019-01-12 18:01:27

by J. Neuschäfer

[permalink] [raw]
Subject: [PATCH v2] kernel/sys.c: Clarify that UNAME26 does not generate unique versions anymore

UNAME26 is a mechanism to report Linux's version as 2.6.x, for
compatibility with old/broken software. Due to the way it is
implemented, it would have to be updated after 5.0, to keep the
resulting versions unique. Linus Torvalds argued:

> Do we actually need this?
>
> I'd rather let it bitrot, and just let it return random versions. It
> will just start again at 2.4.60, won't it?
>
> Anybody who uses UNAME26 for a 5.x kernel might as well think it's
> still 4.x. The user space is so old that it can't possibly care about
> differences between 4.x and 5.x, can it?
>
> The only thing that matters is that it shows "2.4.<largeenough>",
> which it will do regardless.

Cc: Linus Torvalds <[email protected]>
Signed-off-by: Jonathan Neuschäfer <[email protected]>
---

v2:
- Switched to documenting why UNAME26 is not updated

v1:
- https://lore.kernel.org/patchwork/patch/1029578/
---
kernel/sys.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/sys.c b/kernel/sys.c
index a48cbf1414b8..f7eb62eceb24 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1207,7 +1207,8 @@ DECLARE_RWSEM(uts_sem);
/*
* Work around broken programs that cannot handle "Linux 3.0".
* Instead we map 3.x to 2.6.40+x, so e.g. 3.0 would be 2.6.40
- * And we map 4.x to 2.6.60+x, so 4.0 would be 2.6.60.
+ * And we map 4.x and later versions to 2.6.60+x, so 4.0/5.0/6.0/... would be
+ * 2.6.60.
*/
static int override_release(char __user *release, size_t len)
{
--
2.20.1