First published: Tue Feb 09 2010(Updated: )
Description of problem: If the owner of a PI futex dies we fix up the pi_state and set pi_state->owner to NULL. When a malicious or just sloppy programmed user space application sets the futex value to 0 e.g. by calling pthread_mutex_init(), then the futex can be acquired again. A new waiter manages to enqueue itself on the pi_state w/o damage, but on unlock the kernel dereferences pi_state->owner and oopses. Prevent this by checking pi_state->owner in the unlock path. If pi_state->owner is not current we know that user space manipulated the futex value. Ignore the mess and return -EINVAL. This catches the above case and also the case where a task hijacks the futex by setting the tid value and then tries to unlock it. Upstream commit: <a href="http://git.kernel.org/linus/51246bfd189064079c54421507236fd2723b18f3">http://git.kernel.org/linus/51246bfd189064079c54421507236fd2723b18f3</a> Note that pi-futex was introduced in: <a href="http://git.kernel.org/linus/c87e2837be82df479a6bae9f155c43516d2feebc">http://git.kernel.org/linus/c87e2837be82df479a6bae9f155c43516d2feebc</a>
Credit: cve@mitre.org cve@mitre.org
Affected Software | Affected Version | How to fix |
---|---|---|
Linux Linux kernel | <=2.6.33 | |
Linux Linux kernel | <=2.6.33 | |
Linux Linux kernel | =2.6.0 | |
Linux Linux kernel | =2.6.1 | |
Linux Linux kernel | =2.6.2 | |
Linux Linux kernel | =2.6.3 | |
Linux Linux kernel | =2.6.4 | |
Linux Linux kernel | =2.6.5 | |
Linux Linux kernel | =2.6.6 | |
Linux Linux kernel | =2.6.7 | |
Linux Linux kernel | =2.6.8 | |
Linux Linux kernel | =2.6.8.1 | |
Linux Linux kernel | =2.6.9 | |
Linux Linux kernel | =2.6.10 | |
Linux Linux kernel | =2.6.11 | |
Linux Linux kernel | =2.6.11.1 | |
Linux Linux kernel | =2.6.11.2 | |
Linux Linux kernel | =2.6.11.3 | |
Linux Linux kernel | =2.6.11.4 | |
Linux Linux kernel | =2.6.11.5 | |
Linux Linux kernel | =2.6.11.6 | |
Linux Linux kernel | =2.6.11.7 | |
Linux Linux kernel | =2.6.11.8 | |
Linux Linux kernel | =2.6.11.9 | |
Linux Linux kernel | =2.6.11.10 | |
Linux Linux kernel | =2.6.11.11 | |
Linux Linux kernel | =2.6.11.12 | |
Linux Linux kernel | =2.6.12 | |
Linux Linux kernel | =2.6.12.1 | |
Linux Linux kernel | =2.6.12.2 | |
Linux Linux kernel | =2.6.12.3 | |
Linux Linux kernel | =2.6.12.4 | |
Linux Linux kernel | =2.6.12.5 | |
Linux Linux kernel | =2.6.12.6 | |
Linux Linux kernel | =2.6.13 | |
Linux Linux kernel | =2.6.13.1 | |
Linux Linux kernel | =2.6.13.2 | |
Linux Linux kernel | =2.6.13.3 | |
Linux Linux kernel | =2.6.13.4 | |
Linux Linux kernel | =2.6.13.5 | |
Linux Linux kernel | =2.6.14 | |
Linux Linux kernel | =2.6.14.1 | |
Linux Linux kernel | =2.6.14.3 | |
Linux Linux kernel | =2.6.14.4 | |
Linux Linux kernel | =2.6.14.5 | |
Linux Linux kernel | =2.6.14.6 | |
Linux Linux kernel | =2.6.14.7 | |
Linux Linux kernel | =2.6.15 | |
Linux Linux kernel | =2.6.15.1 | |
Linux Linux kernel | =2.6.15.2 | |
Linux Linux kernel | =2.6.15.3 | |
Linux Linux kernel | =2.6.15.4 | |
Linux Linux kernel | =2.6.15.5 | |
Linux Linux kernel | =2.6.15.6 | |
Linux Linux kernel | =2.6.15.7 | |
Linux Linux kernel | =2.6.16 | |
Linux Linux kernel | =2.6.16.1 | |
Linux Linux kernel | =2.6.16.2 | |
Linux Linux kernel | =2.6.16.3 | |
Linux Linux kernel | =2.6.16.4 | |
Linux Linux kernel | =2.6.16.5 | |
Linux Linux kernel | =2.6.16.6 | |
Linux Linux kernel | =2.6.16.7 | |
Linux Linux kernel | =2.6.16.8 | |
Linux Linux kernel | =2.6.16.9 | |
Linux Linux kernel | =2.6.16.10 | |
Linux Linux kernel | =2.6.16.11 | |
Linux Linux kernel | =2.6.16.12 | |
Linux Linux kernel | =2.6.16.13 | |
Linux Linux kernel | =2.6.16.14 | |
Linux Linux kernel | =2.6.16.15 | |
Linux Linux kernel | =2.6.16.16 | |
Linux Linux kernel | =2.6.16.17 | |
Linux Linux kernel | =2.6.16.18 | |
Linux Linux kernel | =2.6.16.19 | |
Linux Linux kernel | =2.6.16.20 | |
Linux Linux kernel | =2.6.16.21 | |
Linux Linux kernel | =2.6.16.22 | |
Linux Linux kernel | =2.6.16.23 | |
Linux Linux kernel | =2.6.16.24 | |
Linux Linux kernel | =2.6.16.25 | |
Linux Linux kernel | =2.6.16.26 | |
Linux Linux kernel | =2.6.16.27 | |
Linux Linux kernel | =2.6.16.28 | |
Linux Linux kernel | =2.6.16.29 | |
Linux Linux kernel | =2.6.16.30 | |
Linux Linux kernel | =2.6.16.31 | |
Linux Linux kernel | =2.6.17 | |
Linux Linux kernel | =2.6.17.1 | |
Linux Linux kernel | =2.6.17.2 | |
Linux Linux kernel | =2.6.17.3 | |
Linux Linux kernel | =2.6.17.4 | |
Linux Linux kernel | =2.6.17.5 | |
Linux Linux kernel | =2.6.17.6 | |
Linux Linux kernel | =2.6.17.7 | |
Linux Linux kernel | =2.6.17.8 | |
Linux Linux kernel | =2.6.17.9 | |
Linux Linux kernel | =2.6.17.10 | |
Linux Linux kernel | =2.6.17.11 | |
Linux Linux kernel | =2.6.17.12 | |
Linux Linux kernel | =2.6.17.13 | |
Linux Linux kernel | =2.6.17.14 | |
Linux Linux kernel | =2.6.18.1 | |
Linux Linux kernel | =2.6.18.2 | |
Linux Linux kernel | =2.6.18.3 | |
Linux Linux kernel | =2.6.18.4 | |
Linux Linux kernel | =2.6.18.5 | |
Linux Linux kernel | =2.6.18.6 | |
Linux Linux kernel | =2.6.18.7 | |
Linux Linux kernel | =2.6.18.8 | |
Linux Linux kernel | =2.6.22 | |
Linux Linux kernel | =2.6.22.2 | |
Linux Linux kernel | =2.6.22.3 | |
Linux Linux kernel | =2.6.22.4 | |
Linux Linux kernel | =2.6.22.5 | |
Linux Linux kernel | =2.6.22.6 | |
Linux Linux kernel | =2.6.22.7 | |
Linux Linux kernel | =2.6.23 | |
Linux Linux kernel | =2.6.23-rc1 | |
Linux Linux kernel | =2.6.23-rc2 | |
Linux Linux kernel | =2.6.23.1 | |
Linux Linux kernel | =2.6.23.2 | |
Linux Linux kernel | =2.6.23.3 | |
Linux Linux kernel | =2.6.23.4 | |
Linux Linux kernel | =2.6.23.5 | |
Linux Linux kernel | =2.6.23.6 | |
Linux Linux kernel | =2.6.23.7 | |
Linux Linux kernel | =2.6.24-rc1 | |
Linux Linux kernel | =2.6.24-rc2 | |
Linux Linux kernel | =2.6.24-rc3 | |
Linux Linux kernel | =2.6.24-rc4 | |
Linux Linux kernel | =2.6.24-rc5 | |
Linux Linux kernel | =2.6.32 | |
Linux Linux kernel | =2.6.32.1 | |
Linux Linux kernel | =2.6.32.2 | |
Linux Linux kernel | =2.6.32.3 | |
Linux Linux kernel | =2.6.32.4 | |
Linux Linux kernel | =2.6.33-rc1 | |
Linux Linux kernel | =2.6.33-rc2 | |
Linux Linux kernel | =2.6.33-rc4 | |
Linux Linux kernel | =2.6.33-rc5 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.