Bug 9041: Check the return code in xf86MapDomainMemory().

This commit is contained in:
Bjorn Helgaas 2006-11-16 17:29:06 +01:00 committed by Matthias Hopf
parent 2eab230d9b
commit ae3c9ad4ab

View File

@ -683,28 +683,28 @@ xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
ADDRESS Base, unsigned long Size)
{
int domain = xf86GetPciDomain(Tag);
int fd;
int fd = -1;
pointer addr;
/*
* We use /proc/bus/pci on non-legacy addresses or if the Linux sysfs
* legacy_mem interface is unavailable.
*/
if (Base > 1024*1024)
return linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
if (Base >= 1024*1024)
addr = linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
PCIIOC_MMAP_IS_MEM);
if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0)
return linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
else if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0)
addr = linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
PCIIOC_MMAP_IS_MEM);
else
addr = mmap(NULL, Size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, Base);
addr = mmap(NULL, Size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, Base);
if (addr == MAP_FAILED) {
close (fd);
if (fd >= 0)
close(fd);
if (addr == NULL || addr == MAP_FAILED) {
perror("mmap failure");
FatalError("xf86MapDomainMem(): mmap() failure\n");
}
close(fd);
return addr;
}