Revision abd96ecb298675a21c412a29f5de2f80174d5f18 authored by Oleg Nesterov on 22 August 2007, 21:01:58 UTC, committed by Linus Torvalds on 23 August 2007, 02:52:47 UTC
de_thread: if (atomic_read(&oldsighand->count) <= 1) BUG_ON(atomic_read(&sig->count) != 1); This is not safe without the rmb() in between. The results of two correctly ordered __exit_signal()->atomic_dec_and_test()'s could be seen out of order on our CPU. The same is true for the "thread_group_empty()" case, __unhash_process()'s changes could be seen before atomic_dec_and_test(&sig->count). On some platforms (including i386) atomic_read() doesn't provide even the compiler barrier, in that case these checks are simply racy. Remove these BUG_ON()'s. Alternatively, we can do something like BUG_ON( ({ smp_rmb(); atomic_read(&sig->count) != 1; }) ); Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Roland McGrath <roland@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 5c076fc
File | Mode | Size |
---|---|---|
basic | ||
genksyms | ||
kconfig | ||
ksymoops | ||
mod | ||
package | ||
rt-tester | ||
.gitignore | -rw-r--r-- | 67 bytes |
Kbuild.include | -rw-r--r-- | 8.4 KB |
Lindent | -rwxr-xr-x | 65 bytes |
Makefile | -rw-r--r-- | 893 bytes |
Makefile.build | -rw-r--r-- | 10.8 KB |
Makefile.clean | -rw-r--r-- | 3.2 KB |
Makefile.headersinst | -rw-r--r-- | 6.9 KB |
Makefile.host | -rw-r--r-- | 6.5 KB |
Makefile.lib | -rw-r--r-- | 6.4 KB |
Makefile.modinst | -rw-r--r-- | 1.0 KB |
Makefile.modpost | -rw-r--r-- | 4.4 KB |
bin2c.c | -rw-r--r-- | 702 bytes |
binoffset.c | -rw-r--r-- | 3.9 KB |
bloat-o-meter | -rwxr-xr-x | 1.6 KB |
checkincludes.pl | -rwxr-xr-x | 529 bytes |
checkpatch.pl | -rwxr-xr-x | 30.4 KB |
checkstack.pl | -rwxr-xr-x | 3.8 KB |
checksyscalls.sh | -rwxr-xr-x | 3.1 KB |
checkversion.pl | -rwxr-xr-x | 1.8 KB |
cleanfile | -rwxr-xr-x | 3.4 KB |
cleanpatch | -rwxr-xr-x | 5.0 KB |
conmakehash.c | -rw-r--r-- | 6.0 KB |
decodecode | -rw-r--r-- | 984 bytes |
export_report.pl | -rw-r--r-- | 4.2 KB |
extract-ikconfig | -rwxr-xr-x | 1.7 KB |
gcc-version.sh | -rw-r--r-- | 694 bytes |
gcc-x86_64-has-stack-protector.sh | -rw-r--r-- | 187 bytes |
gen_initramfs_list.sh | -rw-r--r-- | 6.6 KB |
hdrcheck.sh | -rwxr-xr-x | 281 bytes |
kallsyms.c | -rw-r--r-- | 12.9 KB |
kernel-doc | -rwxr-xr-x | 53.1 KB |
makelst | -rwxr-xr-x | 804 bytes |
mkcompile_h | -rwxr-xr-x | 2.5 KB |
mkmakefile | -rw-r--r-- | 742 bytes |
mksysmap | -rw-r--r-- | 1.3 KB |
mkuboot.sh | -rwxr-xr-x | 379 bytes |
mkversion | -rw-r--r-- | 74 bytes |
namespace.pl | -rwxr-xr-x | 13.1 KB |
patch-kernel | -rwxr-xr-x | 9.7 KB |
pnmtologo.c | -rw-r--r-- | 11.7 KB |
profile2linkerlist.pl | -rw-r--r-- | 378 bytes |
setlocalversion | -rw-r--r-- | 527 bytes |
show_delta | -rwxr-xr-x | 3.0 KB |
unifdef.c | -rw-r--r-- | 29.0 KB |
ver_linux | -rwxr-xr-x | 3.3 KB |
Computing file changes ...