* Patch "sparc64: fix incorrect sign extension in sys_sparc64_personality" has been added to the 4.4-stable tree
@ 2016-03-01 19:10 gregkh
0 siblings, 0 replies; only message in thread
From: gregkh @ 2016-03-01 19:10 UTC (permalink / raw)
To: ldv, davem, gregkh; +Cc: stable, stable-commits
This is a note to let you know that I've just added the patch titled
sparc64: fix incorrect sign extension in sys_sparc64_personality
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
sparc64-fix-incorrect-sign-extension-in-sys_sparc64_personality.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.
>From 525fd5a94e1be0776fa652df5c687697db508c91 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
Date: Sun, 27 Dec 2015 02:13:27 +0300
Subject: sparc64: fix incorrect sign extension in sys_sparc64_personality
From: Dmitry V. Levin <ldv@altlinux.org>
commit 525fd5a94e1be0776fa652df5c687697db508c91 upstream.
The value returned by sys_personality has type "long int".
It is saved to a variable of type "int", which is not a problem
yet because the type of task_struct->pesonality is "unsigned int".
The problem is the sign extension from "int" to "long int"
that happens on return from sys_sparc64_personality.
For example, a userspace call personality((unsigned) -EINVAL) will
result to any subsequent personality call, including absolutely
harmless read-only personality(0xffffffff) call, failing with
errno set to EINVAL.
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/sparc/kernel/sys_sparc_64.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/sparc/kernel/sys_sparc_64.c
+++ b/arch/sparc/kernel/sys_sparc_64.c
@@ -413,7 +413,7 @@ out:
SYSCALL_DEFINE1(sparc64_personality, unsigned long, personality)
{
- int ret;
+ long ret;
if (personality(current->personality) == PER_LINUX32 &&
personality(personality) == PER_LINUX)
Patches currently in stable-queue which might be from ldv@altlinux.org are
queue-4.4/unix_diag-fix-incorrect-sign-extension-in-unix_lookup_by_ino.patch
queue-4.4/sparc64-fix-incorrect-sign-extension-in-sys_sparc64_personality.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2016-03-01 19:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-01 19:10 Patch "sparc64: fix incorrect sign extension in sys_sparc64_personality" has been added to the 4.4-stable tree gregkh
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.