Kostantin Khorenko from OpenVZ/Virtuozzo linux kernel team has noticed the following issue on RHEL4 (2.6.9-42.0.3 and 2.6.9-42.19) kernels. dev_queue_xmit() have wrong error path: this function can fail before local_bh_disable() call. In this case it jumps to out_kfree_skb label where it calls local_bh_enable(). As a result it can lead to the data corruptions and the node lockups. This issue was fixed in linux mainstream by the following patches: http://linux.bkbits.net:8080/linux-2.6/gnupatch@4186e5bfgUOMBbA6xFaY0_z84kaURw http://linux.bkbits.net:8080/linux-2.6/gnupatch@418941b8x3BdnonauMI-deDf7S3plw We are not sure that it can be user-exploitable, however from our point of view it can happen on some hardware and software setups.
Created attachment 139333 [details] this patch fixes unbalanced local_bh_enable() in dev_queue_xmit()
looks reasonable. I'll review it further in the AM. thanks!
committed in stream U5 build 42.26. A test kernel with this patch is available from http://people.redhat.com/~jbaron/rhel4/
committed in stream E5 build 42.0.4
I can confirm that the fix is in the 42.0.6 kernel.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2007-0014.html