[PATCH] fix broken 2.4.x rt_sigprocmask error handling
From: Erik Andersen (andersen_at_codepoet.org)
Date: 12/31/03
- Previous message: Curzio.Basso_at_unibas.ch: "[drm:radeon_lock_take]"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Wed, 31 Dec 2003 04:45:01 -0700 To: linux-kernel <linux-kernel@vger.kernel.org>
SuSv3 says:
"The argument 'how' indicates the way in which the set is
changed, and the application shall ensure it consists of
one of [SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK] ... If
sigprocmask() fails, the thread's signal mask shall not
be changed."
The sigprocmask(2) syscall implements this correctly, however the
rt_sigprocmask(2) syscall in 2.4.x does not comply with SuSv3.
When this syscall is provided with a valid 'set' value, and a
bogus value for 'how', the process signal mask is still changed.
The attached test application demonstrates the problem. This
patch below fixes it. Please apply!
--- linux/kernel/signal.c.orig 2003-12-31 04:01:59.000000000 -0700
+++ linux/kernel/signal.c 2003-12-31 04:38:06.000000000 -0700
@@ -879,16 +879,16 @@
error = -EINVAL;
break;
case SIG_BLOCK:
- sigorsets(&new_set, &old_set, &new_set);
+ sigorsets(¤t->blocked, &old_set, &new_set);
break;
case SIG_UNBLOCK:
- signandsets(&new_set, &old_set, &new_set);
+ signandsets(¤t->blocked, &old_set, &new_set);
break;
case SIG_SETMASK:
+ current->blocked = new_set;
break;
}
- current->blocked = new_set;
recalc_sigpending(current);
spin_unlock_irq(¤t->sigmask_lock);
if (error)
--- linux/CREDITS 2003-12-02 13:04:50.000000000 -0700
+++ linux/CREDITS 2003-12-02 13:04:50.000000000 -0700
@@ -82,13 +82,13 @@
S: USA
N: Erik Andersen
-E: andersee@debian.org
-W: http://www.xmission.com/~andersen
-P: 1024/FC4CFFED 78 3C 6A 19 FA 5D 92 5A FB AC 7B A5 A5 E1 FF 8E
+E: andersen@codepoet.org
+W: http://www.codepoet.org/
+P: 1024D/30D39057 1BC4 2742 E885 E4DE 9301 0C82 5F9B 643E 30D3 9057
D: Maintainer of ide-cd and Uniform CD-ROM driver,
D: ATAPI CD-Changer support, Major 2.1.x CD-ROM update.
-S: 4538 South Carnegie Tech Street
-S: Salt Lake City, Utah 84120
+S: 352 North 525 East
+S: Springville, Utah 84663
S: USA
N: Michael Ang
-Erik
-- Erik B. Andersen http://codepoet-consulting.com/ --This message was written using 73% post-consumer electrons--
-
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/
- text/x-csrc attachment: test-setprocmask.c
- Previous message: Curzio.Basso_at_unibas.ch: "[drm:radeon_lock_take]"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|
|