diff mbox

[3.19.y-ckt,stable] Patch "arm64: fix building without CONFIG_UID16" has been added to staging queue

Message ID 1450214678-13816-1-git-send-email-kamal@canonical.com
State New
Headers show

Commit Message

Kamal Mostafa Dec. 15, 2015, 9:24 p.m. UTC
This is a note to let you know that I have just added a patch titled

    arm64: fix building without CONFIG_UID16

to the linux-3.19.y-queue branch of the 3.19.y-ckt extended stable tree 
which can be found at:

    http://kernel.ubuntu.com/git/ubuntu/linux.git/log/?h=linux-3.19.y-queue

This patch is scheduled to be released in version 3.19.8-ckt12.

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.19.y-ckt tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable

Thanks.
-Kamal

------

From 72d9c92e9c21101f666a0372f01729933a5901e4 Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <arnd@arndb.de>
Date: Fri, 20 Nov 2015 12:12:21 +0100
Subject: arm64: fix building without CONFIG_UID16

commit fbc416ff86183e2203cdf975e2881d7c164b0271 upstream.

As reported by Michal Simek, building an ARM64 kernel with CONFIG_UID16
disabled currently fails because the system call table still needs to
reference the individual function entry points that are provided by
kernel/sys_ni.c in this case, and the declarations are hidden inside
of #ifdef CONFIG_UID16:

arch/arm64/include/asm/unistd32.h:57:8: error: 'sys_lchown16' undeclared here (not in a function)
 __SYSCALL(__NR_lchown, sys_lchown16)

I believe this problem only exists on ARM64, because older architectures
tend to not need declarations when their system call table is built
in assembly code, while newer architectures tend to not need UID16
support. ARM64 only uses these system calls for compatibility with
32-bit ARM binaries.

This changes the CONFIG_UID16 check into CONFIG_HAVE_UID16, which is
set unconditionally on ARM64 with CONFIG_COMPAT, so we see the
declarations whenever we need them, but otherwise the behavior is
unchanged.

Fixes: af1839eb4bd4 ("Kconfig: clean up the long arch list for the UID16 config option")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
---
 include/linux/syscalls.h | 2 +-
 include/linux/types.h    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

--
1.9.1

Comments

Arnd Bergmann Dec. 15, 2015, 9:47 p.m. UTC | #1
On Tuesday 15 December 2015 13:24:38 Kamal Mostafa wrote:
> This is a note to let you know that I have just added a patch titled
> 
>     arm64: fix building without CONFIG_UID16
> 
> to the linux-3.19.y-queue branch of the 3.19.y-ckt extended stable tree 
> which can be found at:
> 
>     http://kernel.ubuntu.com/git/ubuntu/linux.git/log/?h=linux-3.19.y-queue
> 
> This patch is scheduled to be released in version 3.19.8-ckt12.
> 
> If you, or anyone else, feels it should not be added to this tree, please 
> reply to this email.
> 
> For more information about the 3.19.y-ckt tree, see
> https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
> 


Note that this patch has caused regressions on one or two rarely used architectures
that only define CONFIG_UID16 but not CONFIG_HAVE_UID16.

I think it's safer to not backport it.

	Arnd
Kamal Mostafa Dec. 15, 2015, 9:50 p.m. UTC | #2
On Tue, 2015-12-15 at 22:47 +0100, Arnd Bergmann wrote:
> On Tuesday 15 December 2015 13:24:38 Kamal Mostafa wrote:
> > This is a note to let you know that I have just added a patch titled
> > 
> >     arm64: fix building without CONFIG_UID16
> > 
> > to the linux-3.19.y-queue branch of the 3.19.y-ckt extended stable tree 
> > which can be found at:
> > 
> >     http://kernel.ubuntu.com/git/ubuntu/linux.git/log/?h=linux-3.19.y-queue
> > 
> > This patch is scheduled to be released in version 3.19.8-ckt12.
> > 
> > If you, or anyone else, feels it should not be added to this tree, please 
> > reply to this email.
> > 
> > For more information about the 3.19.y-ckt tree, see
> > https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
> > 
> 
> 
> Note that this patch has caused regressions on one or two rarely used architectures
> that only define CONFIG_UID16 but not CONFIG_HAVE_UID16.
> 
> I think it's safer to not backport it.
> 
> 	Arnd
> 

Thanks very much Arnd.  Dropped from 3.19-stable.

 -Kamal
diff mbox

Patch

diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 85893d7..ef311a7 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -520,7 +520,7 @@  asmlinkage long sys_chown(const char __user *filename,
 asmlinkage long sys_lchown(const char __user *filename,
 				uid_t user, gid_t group);
 asmlinkage long sys_fchown(unsigned int fd, uid_t user, gid_t group);
-#ifdef CONFIG_UID16
+#ifdef CONFIG_HAVE_UID16
 asmlinkage long sys_chown16(const char __user *filename,
 				old_uid_t user, old_gid_t group);
 asmlinkage long sys_lchown16(const char __user *filename,
diff --git a/include/linux/types.h b/include/linux/types.h
index 20d8fb6..8be096f 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -35,7 +35,7 @@  typedef __kernel_gid16_t        gid16_t;

 typedef unsigned long		uintptr_t;

-#ifdef CONFIG_UID16
+#ifdef CONFIG_HAVE_UID16
 /* This is defined by include/asm-{arch}/posix_types.h */
 typedef __kernel_old_uid_t	old_uid_t;
 typedef __kernel_old_gid_t	old_gid_t;