File CVE-2016-8910-qemut-net-rtl8139-infinite-loop-while-transmit-in-Cplus-mode.patch of Package xen.8390

References: bsc#1007157 CVE-2016-8910

Subject: net: rtl8139: limit processing of ring descriptors
From: Prasad J Pandit pjp@fedoraproject.org Fri Oct 21 17:39:29 2016 +0530
Date: Wed Oct 26 09:57:59 2016 +0800:
Git: c7c35916692fe010fef25ac338443d3fe40be225

RTL8139 ethernet controller in C+ mode supports multiple
descriptor rings, each with maximum of 64 descriptors. While
processing transmit descriptor ring in 'rtl8139_cplus_transmit',
it does not limit the descriptor count and runs forever. Add
check to avoid it.

Reported-by: Andrew Henderson <hendersa@icculus.org>
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
Signed-off-by: Jason Wang <jasowang@redhat.com>

Index: xen-4.7.0-testing/tools/qemu-xen-traditional-dir-remote/hw/rtl8139.c
===================================================================
--- xen-4.7.0-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/rtl8139.c
+++ xen-4.7.0-testing/tools/qemu-xen-traditional-dir-remote/hw/rtl8139.c
@@ -2367,7 +2367,7 @@ static void rtl8139_cplus_transmit(RTL81
 {
     int txcount = 0;
 
-    while (rtl8139_cplus_transmit_one(s))
+    while (txcount < 64 && rtl8139_cplus_transmit_one(s))
     {
         ++txcount;
     }
openSUSE Build Service is sponsored by