Description of the problem: Lack proper synchronization to manipulate inet->opt ip_options can lead to system crash. Problem is that ip_make_skb() calls ip_setup_cork() and ip_setup_cork() possibly makes a copy of ipc->opt (struct ip_options), without any protection against another thread manipulating inet->opt. Another thread can change inet->opt pointer and free old one under us. Given right server application (setting socket options and processing traffic over the same socket at the same time), remote attacker could use this flaw to crash the system. More likely though, local unprivileged user could use this flaw to crash the system. Potential privilege escalation impact cannot be ruled out. Upstream fix: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=f6d8bd051c391c1c0458a30b2a7abcd939329259
Statement: This issue did affect the versions of Linux kernel as shipped with Red Hat Enterprise Linux 5. This issue did affect the versions of Linux kernel as shipped with Red Hat Enterprise Linux 6. This issue did not affect the versions of Linux kernel as shipped with Red Hat Enterpise MRG 2.
Acknowledgements: Red Hat would like to thank Hafid Lin for reporting this issue.
This issue has been addressed in following products: Red Hat Enterprise Linux 6 Via RHSA-2012:1304 https://rhn.redhat.com/errata/RHSA-2012-1304.html
This issue has been addressed in following products: Red Hat Enterprise Linux 5 Via RHSA-2012:1540 https://rhn.redhat.com/errata/RHSA-2012-1540.html