Commit 37e81a01 authored by Hans-Werner Hilse's avatar Hans-Werner Hilse Committed by Richard Weinberger

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: default avatarHans-Werner Hilse <hwhilse@gmail.com>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent 0b5aedfe
...@@ -12,7 +12,10 @@ ...@@ -12,7 +12,10 @@
#include <skas.h> #include <skas.h>
#include <sysdep/tls.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, static long write_ldt_entry(struct mm_id *mm_idp, int func,
struct user_desc *desc, void **addr, int done) struct user_desc *desc, void **addr, int done)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment