Re: [PATCH] kernel/sys.c: Fix UNAME26 for 4.0

Andi Kleen
2015-02-23T19:05:16Z

On Mon, Feb 23, 2015 at 11:00:41AM -0800, Andrew Morton wrote:
> On Mon, 23 Feb 2015 00:43:12 -0500 Jon DeVree <nuxi@vault24.org> wrote:
>
> > --- a/kernel/sys.c
> > +++ b/kernel/sys.c
> > @@ -1127,7 +1127,7 @@ static int override_release(char __user *release, size_t len)
> > break;
> > rest++;
> > }
> > - v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 40;
> > + v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 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);
>
> Huh.
>
> I wonder if we still need this.

I think so. A lot of the world is still stuck on RHEL6 ...
And compatbility to old binaries is a high value.

The original program I needed it for is fixed however.

-Andi

>
>
>
> We should update the comment:
>
> --- a/kernel/sys.c~kernel-sysc-fix-uname26-for-40-fix
> +++ a/kernel/sys.c
> @@ -1108,6 +1108,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.
> */
> static int override_release(char __user *release, size_t len)
> {
>

--
ak@linux.intel.com -- Speaking for myself only.