Messages in this thread Patch in this message | | | From | Roland McGrath <> | Subject | Re: [PATCH] fix TASK_STOPPED vs TASK_NONINTERACTIVE interaction | Date | Thu, 29 Sep 2005 14:54:42 -0700 (PDT) |
| |
I am dubious about this change. I don't see a corresponding change to fs/proc/array.c where it knows what all the bit values are. I am not at all sure there aren't other places that know these values and need a fixup if you change them.
Any tests using < TASK_STOPPED or the like are left over from the time when the TASK_ZOMBIE and TASK_DEAD bits were in the same word, and it served to check for "stopped or dead". I think this one in do_signal_stop is the only such case. It has been buggy ever since exit_state was separated. Changing the bit values doesn't fix the bug that it isn't checking the exit_state value. This patch is probably the right fix for that, but I have not tested it.
Signed-off-by: Roland McGrath <roland@redhat.com>
--- a/kernel/signal.c +++ b/kernel/signal.c @@ -1775,7 +1775,8 @@ do_signal_stop(int signr) * stop is always done with the siglock held, * so this check has no races. */ - if (t->state < TASK_STOPPED) { + if (!t->exit_state && + !(t->state & (TASK_STOPPED|TASK_TRACED))) { stop_count++; signal_wake_up(t, 0); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |