Subject: CVS Update: xc (branch: trunk) Date: Sun, 15 May 2005 10:45:47 -0700 (PDT) From: Thomas Hellstrom Reply-To: xorg@lists.freedesktop.org To: xorg-commit@lists.freedesktop.org CVSROOT: /cvs/xorg Module name: xc Changes by: unichrome@gabe.freedesktop.org 05/05/15 10:45:47 Log message: Bug 2750: Prevent mtrr_remove_offending from ending up in an endless loop if the offending region refuses to be removed. Modified files: ./: ChangeLog xc/programs/Xserver/hw/xfree86/os-support/linux/: lnx_video.c Revision Changes Path 1.928 +7 -0 xc/ChangeLog 1.7 +2 -3 xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c --- xc.orig/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c 2005-06-29 18:41:29.000000000 -0700 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c 2005-06-29 18:45:04.000000000 -0700 @@ -248,16 +248,15 @@ wcr = &wcreturn; for (gent.regnum = 0; - ioctl(mtrr_fd, MTRRIOC_GET_ENTRY, &gent) >= 0;) { + ioctl(mtrr_fd, MTRRIOC_GET_ENTRY, &gent) >= 0; gent.regnum++ ) { if (gent.type == MTRR_TYPE_WRCOMB && ((gent.base >= base && gent.base + gent.size < base + size) || (gent.base > base && gent.base + gent.size <= base + size))) { *wcr = mtrr_cull_wc_region(screenNum, gent.base, gent.size, from); + if (*wcr) gent.regnum--; while(*wcr) { wcr = &((*wcr)->next); } - } else { - gent.regnum++; } } return wcreturn;