| From: Krzysztof Mazur <krzysiek@podlesie.net> |
| Date: Wed, 15 Nov 2017 11:12:39 +0100 |
| Subject: um: Use POSIX ucontext_t instead of struct ucontext |
| |
| commit 4d1a535b8ec5e74b42dfd9dc809142653b2597f6 upstream. |
| |
| glibc 2.26 removed the 'struct ucontext' to "improve" POSIX compliance |
| and break programs, including User Mode Linux. Fix User Mode Linux |
| by using POSIX ucontext_t. |
| |
| This fixes: |
| |
| arch/um/os-Linux/signal.c: In function 'hard_handler': |
| arch/um/os-Linux/signal.c:163:22: error: dereferencing pointer to incomplete type 'struct ucontext' |
| mcontext_t *mc = &uc->uc_mcontext; |
| arch/x86/um/stub_segv.c: In function 'stub_segv_handler': |
| arch/x86/um/stub_segv.c:16:13: error: dereferencing pointer to incomplete type 'struct ucontext' |
| &uc->uc_mcontext); |
| |
| Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net> |
| Signed-off-by: Richard Weinberger <richard@nod.at> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| arch/um/os-Linux/signal.c | 2 +- |
| arch/x86/um/stub_segv.c | 2 +- |
| 2 files changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/arch/um/os-Linux/signal.c |
| +++ b/arch/um/os-Linux/signal.c |
| @@ -135,7 +135,7 @@ static void (*handlers[_NSIG])(int sig, |
| |
| static void hard_handler(int sig, siginfo_t *si, void *p) |
| { |
| - struct ucontext *uc = p; |
| + ucontext_t *uc = p; |
| mcontext_t *mc = &uc->uc_mcontext; |
| unsigned long pending = 1UL << sig; |
| |
| --- a/arch/x86/um/stub_segv.c |
| +++ b/arch/x86/um/stub_segv.c |
| @@ -10,7 +10,7 @@ |
| void __attribute__ ((__section__ (".__syscall_stub"))) |
| stub_segv_handler(int sig, siginfo_t *info, void *p) |
| { |
| - struct ucontext *uc = p; |
| + ucontext_t *uc = p; |
| |
| GET_FAULTINFO_FROM_MC(*((struct faultinfo *) STUB_DATA), |
| &uc->uc_mcontext); |