diff --git a/p_pci-off-by-one.diff b/p_pci-off-by-one.diff index c7824d3..2bb66c2 100644 --- a/p_pci-off-by-one.diff +++ b/p_pci-off-by-one.diff @@ -1,11 +1,89 @@ ---- hw/xfree86/os-support/bus/linuxPci.c.orig 2006-11-20 22:04:35.000000000 +0100 -+++ hw/xfree86/os-support/bus/linuxPci.c 2006-11-20 22:06:08.000000000 +0100 -@@ -547,7 +547,7 @@ - pPCI = xf86GetPciHostConfigFromTag(Tag); - - if (pPCI && (result = PCI_DOM_FROM_BUS(pPCI->busnum))) -- return result; -+ return result + 1; +--- hw/xfree86/os-support/bus/linuxPci.c ++++ hw/xfree86/os-support/bus/linuxPci.c +@@ -550,15 +550,15 @@ + return result; if (!pPCI || pPCI->fakeDevice) - return 1; /* Domain 0 is reserved */ +- return 1; /* Domain 0 is reserved */ ++ return 0; + + if ((fd = linuxPciOpenFile(pPCI ? pPCI->tag : 0,FALSE)) < 0) +- return 0; ++ return -1; + + if ((result = ioctl(fd, PCIIOC_CONTROLLER, 0)) < 0) +- return 0; ++ return -1; + +- return result + 1; /* Domain 0 is reserved */ ++ return result; + } + + static pointer +@@ -628,7 +628,7 @@ + return NULL; + } + +-#define MAX_DOMAINS 257 ++#define MAX_DOMAINS 256 + static pointer DomainMmappedIO[MAX_DOMAINS]; + + static int +@@ -649,11 +649,10 @@ + domain = xf86GetPciDomain(Tag); + bus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(Tag)); + +- /* Domain 0 is reserved -- see xf86GetPciDomain() */ +- if ((domain <= 0) || (domain >= MAX_DOMAINS)) ++ if ((domain < 0) || (domain >= MAX_DOMAINS)) + FatalError("linuxOpenLegacy(): domain out of range\n"); + +- sprintf(path, PREFIX, domain - 1, bus, name); ++ sprintf(path, PREFIX, domain, bus, name); + fd = open(path, O_RDWR); + if (fd >= 0) { + xfree(path); +@@ -685,7 +684,6 @@ + xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag, + ADDRESS Base, unsigned long Size) + { +- int domain = xf86GetPciDomain(Tag); + int fd; + pointer addr; + +@@ -733,7 +731,7 @@ + int domain = xf86GetPciDomain(Tag); + int fd; + +- if ((domain <= 0) || (domain >= MAX_DOMAINS)) ++ if ((domain < 0) || (domain >= MAX_DOMAINS)) + FatalError("xf86MapDomainIO(): domain out of range\n"); + + if (DomainMmappedIO[domain]) +@@ -847,7 +845,7 @@ + RANGE_TYPE(ResExcIoBlock, domain)); + pRes = xf86AddResToList(pRes, &range, -1); + +- if (domain <= 0) ++ if (domain < 0) + break; + } + } +@@ -881,7 +879,7 @@ + RANGE_TYPE(ResExcIoBlock, domain)); + pRes = xf86AddResToList(pRes, &range, -1); + +- if (domain <= 0) ++ if (domain < 0) + break; + } + } +@@ -933,7 +931,7 @@ + RANGE_TYPE(ResExcIoBlock, domain)); + pRes = xf86AddResToList(pRes, &range, -1); + +- if (domain <= 0) ++ if (domain < 0) + break; + } + } diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 991ebf4..534c977 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Dec 18 17:08:00 CET 2006 - schwab@suse.de + +- Fix off-by-one in pci multi-domain support [#229278]. + ------------------------------------------------------------------- Wed Dec 13 18:26:05 CET 2006 - sndirsch@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 9a7bb48..0f28e17 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -17,7 +17,7 @@ BuildRequires: Mesa-devel fontconfig-devel freetype2-devel ghostscript-library URL: http://xorg.freedesktop.org/ %define EXPERIMENTAL 0 Version: 7.2 -Release: 31 +Release: 32 License: X11/MIT BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 @@ -444,6 +444,8 @@ exit 0 %endif %changelog -n xorg-x11-server +* Mon Dec 18 2006 - schwab@suse.de +- Fix off-by-one in pci multi-domain support [#229278]. * Wed Dec 13 2006 - sndirsch@suse.de - libdrm.diff: * no longer fail when some driver tries to load "drm" module