The patch titled
     Subject: kernel/signal.c: unexport sigsuspend()
has been added to the -mm tree.  Its filename is
     signal-unexport-sigsuspend.patch

This patch should soon appear at
    http://ozlabs.org/~akpm/mmots/broken-out/signal-unexport-sigsuspend.patch
and later at
    http://ozlabs.org/~akpm/mmotm/broken-out/signal-unexport-sigsuspend.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/SubmitChecklist when testing your code ***

The -mm tree is included into linux-next and is updated
there every 3-4 working days

------------------------------------------------------
From: Richard Weinberger <[email protected]>
Subject: kernel/signal.c: unexport sigsuspend()

sigsuspend() is nowhere used except in signal.c itself, so we can mark it
static do not pollute the global namespace.

But this patch is more than a boring cleanup patch, it fixes a real issue
on UserModeLinux.  UML has a special console driver to display ttys using
xterm, or other terminal emulators, on the host side.  Vegard reported
that sometimes UML is unable to spawn a xterm and he's facing the
following warning:

WARNING: CPU: 0 PID: 908 at include/linux/thread_info.h:128 
sigsuspend+0xab/0xc0()

It turned out that this warning makes absolutely no sense as the UML xterm
code calls sigsuspend() on the host side, at least it tries.  But as the
kernel itself offers a sigsuspend() symbol the linker choose this one
instead of the glibc wrapper.  Interestingly this code used to work since
ever but always blocked signals on the wrong side.  Some recent kernel
change made the WARN_ON() trigger and uncovered the bug.

It is a wonderful example of how much works by chance on computers. :-)

Signed-off-by: Richard Weinberger <[email protected]>
Reported-by: Vegard Nossum <[email protected]>
Tested-by: Vegard Nossum <[email protected]>
Acked-by: Oleg Nesterov <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

 include/linux/signal.h |    1 -
 kernel/signal.c        |    2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff -puN include/linux/signal.h~signal-unexport-sigsuspend 
include/linux/signal.h
--- a/include/linux/signal.h~signal-unexport-sigsuspend
+++ a/include/linux/signal.h
@@ -239,7 +239,6 @@ extern int sigprocmask(int, sigset_t *,
 extern void set_current_blocked(sigset_t *);
 extern void __set_current_blocked(const sigset_t *);
 extern int show_unhandled_signals;
-extern int sigsuspend(sigset_t *);
 
 struct sigaction {
 #ifndef __ARCH_HAS_IRIX_SIGACTION
diff -puN kernel/signal.c~signal-unexport-sigsuspend kernel/signal.c
--- a/kernel/signal.c~signal-unexport-sigsuspend
+++ a/kernel/signal.c
@@ -3503,7 +3503,7 @@ SYSCALL_DEFINE0(pause)
 
 #endif
 
-int sigsuspend(sigset_t *set)
+static int sigsuspend(sigset_t *set)
 {
        current->saved_sigmask = current->blocked;
        set_current_blocked(set);
_

Patches currently in -mm which might be from [email protected] are

signal-unexport-sigsuspend.patch

--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to