]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - kernel/signal.c
Merge branch 'omap-clock-fixes' of git://git.pwsan.com/linux-2.6
[linux-2.6-omap-h63xx.git] / kernel / signal.c
index fb19aae2363ba84768fe8c29b305fbbeacbe39c6..d8034737db4cb86f8adca044560a3765ac65dba5 100644 (file)
@@ -883,6 +883,8 @@ static int __send_signal(int sig, struct siginfo *info, struct task_struct *t,
                        break;
                default:
                        copy_siginfo(&q->info, info);
+                       if (from_ancestor_ns)
+                               q->info.si_pid = 0;
                        break;
                }
        } else if (!is_si_special(info)) {
@@ -1870,9 +1872,16 @@ relock:
 
                /*
                 * Global init gets no signals it doesn't want.
+                * Container-init gets no signals it doesn't want from same
+                * container.
+                *
+                * Note that if global/container-init sees a sig_kernel_only()
+                * signal here, the signal must have been generated internally
+                * or must have come from an ancestor namespace. In either
+                * case, the signal cannot be dropped.
                 */
                if (unlikely(signal->flags & SIGNAL_UNKILLABLE) &&
-                   !signal_group_exit(signal))
+                               !sig_kernel_only(signr))
                        continue;
 
                if (sig_kernel_stop(signr)) {