![]() | |||||||||||||
Messages in this thread |
* Martin Schwidefsky <schwidefsky@de.ibm.com> wrote: > Hi Ingo, > I finally found the bug that causes tst-robust8 from the glibc to fail > on s390x. Turned out to be a common code problem with the processing of > the robust futex list. The patch below fixes the bug for me. good catch! A quick preliminary review of your patch indicates it's fine - and it might be v2.6.23 material. Acked-by: Ingo Molnar <mingo@elte.hu> > Calling handle_futex_death in exit_robust_list for the different > robust mutexes of a thread basically frees the mutex. Another thread > might grab the lock immediately which updates the next pointer of the > mutex. fetch_robust_entry over the next pointer might therefore branch > into the robust mutex list of a different thread. This can cause two > problems: 1) some mutexes held by the dead thread are not getting > freed and 2) some mutexs held by a different thread are freed. The > next point need to be read before calling handle_futex_death. nasty race... Ulrich, Thomas, do you concur? Ingo - 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/ | ||||||||||||
| Last update: 2007-09-30 17:23 [from the cache] ©2003-2008 | |||||||||||||