summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans-Werner Hilse <hwhilse@gmail.com>2015-06-29 11:50:32 +0200
committerRichard Weinberger <richard@nod.at>2015-10-19 22:53:37 +0200
commit37e81a016cc847c03ea71570fea29f12ca390bee (patch)
treefd4477a5b50a25ed09e7df34469392840030288c
parent0b5aedfe0e6654ec54f35109e1929a1cf7fc4cdd (diff)
downloadlinux-37e81a016cc847c03ea71570fea29f12ca390bee.tar.gz
linux-37e81a016cc847c03ea71570fea29f12ca390bee.tar.bz2
linux-37e81a016cc847c03ea71570fea29f12ca390bee.zip
um: Do not rely on libc to provide modify_ldt()
modify_ldt() was declared as an external symbol. Despite the man page for this syscall telling that there is no wrapper in glibc, since version 2.1 there actually is, so linking to the glibc works. Since modify_ldt() is not a POSIX interface, other libc implementations do not always provide a wrapper function. Even glibc headers do not provide a corresponding declaration. So go the recommended way to call this using syscall(). Signed-off-by: Hans-Werner Hilse <hwhilse@gmail.com> Signed-off-by: Richard Weinberger <richard@nod.at>
-rw-r--r--arch/x86/um/ldt.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86/um/ldt.c b/arch/x86/um/ldt.c
index 9701a4fd7bf2..836a1eb5df43 100644
--- a/arch/x86/um/ldt.c
+++ b/arch/x86/um/ldt.c
@@ -12,7 +12,10 @@
#include <skas.h>
#include <sysdep/tls.h>
-extern int modify_ldt(int func, void *ptr, unsigned long bytecount);
+static inline int modify_ldt (int func, void *ptr, unsigned long bytecount)
+{
+ return syscall(__NR_modify_ldt, func, ptr, bytecount);
+}
static long write_ldt_entry(struct mm_id *mm_idp, int func,
struct user_desc *desc, void **addr, int done)