Commit f3de272b821accbc8387211977c2de4f38468d05

Authored by Roland McGrath
Committed by Linus Torvalds
1 parent 49eaeb4bc4

signals: use HAVE_SET_RESTORE_SIGMASK

Change all the #ifdef TIF_RESTORE_SIGMASK conditionals in non-arch code to
#ifdef HAVE_SET_RESTORE_SIGMASK.  If arch code defines it first, the generic
set_restore_sigmask() using TIF_RESTORE_SIGMASK is not defined.

Signed-off-by: Roland McGrath <roland@redhat.com>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 5 changed files with 19 additions and 13 deletions Side-by-side Diff

... ... @@ -1634,7 +1634,7 @@
1634 1634 return ret;
1635 1635 }
1636 1636  
1637   -#ifdef TIF_RESTORE_SIGMASK
  1637 +#ifdef HAVE_SET_RESTORE_SIGMASK
1638 1638 asmlinkage long compat_sys_pselect7(int n, compat_ulong_t __user *inp,
1639 1639 compat_ulong_t __user *outp, compat_ulong_t __user *exp,
1640 1640 struct compat_timespec __user *tsp, compat_sigset_t __user *sigmask,
... ... @@ -1825,7 +1825,7 @@
1825 1825  
1826 1826 return ret;
1827 1827 }
1828   -#endif /* TIF_RESTORE_SIGMASK */
  1828 +#endif /* HAVE_SET_RESTORE_SIGMASK */
1829 1829  
1830 1830 #if defined(CONFIG_NFSD) || defined(CONFIG_NFSD_MODULE)
1831 1831 /* Stuff for NFS server syscalls... */
... ... @@ -2080,7 +2080,7 @@
2080 2080  
2081 2081 #ifdef CONFIG_EPOLL
2082 2082  
2083   -#ifdef TIF_RESTORE_SIGMASK
  2083 +#ifdef HAVE_SET_RESTORE_SIGMASK
2084 2084 asmlinkage long compat_sys_epoll_pwait(int epfd,
2085 2085 struct compat_epoll_event __user *events,
2086 2086 int maxevents, int timeout,
... ... @@ -2124,7 +2124,7 @@
2124 2124  
2125 2125 return err;
2126 2126 }
2127   -#endif /* TIF_RESTORE_SIGMASK */
  2127 +#endif /* HAVE_SET_RESTORE_SIGMASK */
2128 2128  
2129 2129 #endif /* CONFIG_EPOLL */
2130 2130  
... ... @@ -1241,7 +1241,7 @@
1241 1241 return error;
1242 1242 }
1243 1243  
1244   -#ifdef TIF_RESTORE_SIGMASK
  1244 +#ifdef HAVE_SET_RESTORE_SIGMASK
1245 1245  
1246 1246 /*
1247 1247 * Implement the event wait interface for the eventpoll file. It is the kernel
... ... @@ -1287,7 +1287,7 @@
1287 1287 return error;
1288 1288 }
1289 1289  
1290   -#endif /* #ifdef TIF_RESTORE_SIGMASK */
  1290 +#endif /* HAVE_SET_RESTORE_SIGMASK */
1291 1291  
1292 1292 static int __init eventpoll_init(void)
1293 1293 {
... ... @@ -425,7 +425,7 @@
425 425 return ret;
426 426 }
427 427  
428   -#ifdef TIF_RESTORE_SIGMASK
  428 +#ifdef HAVE_SET_RESTORE_SIGMASK
429 429 asmlinkage long sys_pselect7(int n, fd_set __user *inp, fd_set __user *outp,
430 430 fd_set __user *exp, struct timespec __user *tsp,
431 431 const sigset_t __user *sigmask, size_t sigsetsize)
... ... @@ -528,7 +528,7 @@
528 528  
529 529 return sys_pselect7(n, inp, outp, exp, tsp, up, sigsetsize);
530 530 }
531   -#endif /* TIF_RESTORE_SIGMASK */
  531 +#endif /* HAVE_SET_RESTORE_SIGMASK */
532 532  
533 533 struct poll_list {
534 534 struct poll_list *next;
... ... @@ -759,7 +759,7 @@
759 759 return ret;
760 760 }
761 761  
762   -#ifdef TIF_RESTORE_SIGMASK
  762 +#ifdef HAVE_SET_RESTORE_SIGMASK
763 763 asmlinkage long sys_ppoll(struct pollfd __user *ufds, unsigned int nfds,
764 764 struct timespec __user *tsp, const sigset_t __user *sigmask,
765 765 size_t sigsetsize)
... ... @@ -839,5 +839,5 @@
839 839  
840 840 return ret;
841 841 }
842   -#endif /* TIF_RESTORE_SIGMASK */
  842 +#endif /* HAVE_SET_RESTORE_SIGMASK */
include/linux/sched.h
... ... @@ -1175,7 +1175,7 @@
1175 1175 struct sighand_struct *sighand;
1176 1176  
1177 1177 sigset_t blocked, real_blocked;
1178   - sigset_t saved_sigmask; /* To be restored with TIF_RESTORE_SIGMASK */
  1178 + sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
1179 1179 struct sigpending pending;
1180 1180  
1181 1181 unsigned long sas_ss_sp;
include/linux/thread_info.h
... ... @@ -92,7 +92,13 @@
92 92 #define set_need_resched() set_thread_flag(TIF_NEED_RESCHED)
93 93 #define clear_need_resched() clear_thread_flag(TIF_NEED_RESCHED)
94 94  
95   -#ifdef TIF_RESTORE_SIGMASK
  95 +#if defined TIF_RESTORE_SIGMASK && !defined HAVE_SET_RESTORE_SIGMASK
  96 +/*
  97 + * An arch can define its own version of set_restore_sigmask() to get the
  98 + * job done however works, with or without TIF_RESTORE_SIGMASK.
  99 + */
  100 +#define HAVE_SET_RESTORE_SIGMASK 1
  101 +
96 102 /**
97 103 * set_restore_sigmask() - make sure saved_sigmask processing gets done
98 104 *
... ... @@ -109,7 +115,7 @@
109 115 set_thread_flag(TIF_RESTORE_SIGMASK);
110 116 set_thread_flag(TIF_SIGPENDING);
111 117 }
112   -#endif /* TIF_RESTORE_SIGMASK */
  118 +#endif /* TIF_RESTORE_SIGMASK && !HAVE_SET_RESTORE_SIGMASK */
113 119  
114 120 #endif /* __KERNEL__ */
115 121