I think I found a simple typo in the above mentioned function. It seems
the special case with two words for a signal is handled wrong.
WARNING: I didn't compile or test the patch.
Stefan
--- linux/kernel/signal.c.org Thu Dec 11 14:44:21 1997
+++ linux/kernel/signal.c Thu Dec 11 14:44:54 1997
@@ -118,14 +118,15 @@
case 2: if ((x = s[0] &~ m[0]) != 0)
sig = 1;
- else if ((x = s[1] &~ m[0]) != 0)
+ else if ((x = s[1] &~ m[1]) != 0)
sig = _NSIG_BPW + 1;
else
break;
sig += ffz(~x);
break;
- case 1: if ((x = *s &~ *m) != 0) sig = ffz(~x) + 1;
+ case 1: if ((x = *s &~ *m) != 0)
+ sig = ffz(~x) + 1;
break;
}
---------------------------------------------------------------------
Stefan Kuehnel ! email: un06@rz.uni-karlsruhe.de
Klauprechtstr. 11 !
76137 Karlsruhe ! Tel.: ++49/721/32573
Germany !