Bug 9041: Check the return code in xf86MapDomainMemory().
This commit is contained in:
parent
2eab230d9b
commit
ae3c9ad4ab
|
@ -683,28 +683,28 @@ xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
|
||||||
ADDRESS Base, unsigned long Size)
|
ADDRESS Base, unsigned long Size)
|
||||||
{
|
{
|
||||||
int domain = xf86GetPciDomain(Tag);
|
int domain = xf86GetPciDomain(Tag);
|
||||||
int fd;
|
int fd = -1;
|
||||||
pointer addr;
|
pointer addr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We use /proc/bus/pci on non-legacy addresses or if the Linux sysfs
|
* We use /proc/bus/pci on non-legacy addresses or if the Linux sysfs
|
||||||
* legacy_mem interface is unavailable.
|
* legacy_mem interface is unavailable.
|
||||||
*/
|
*/
|
||||||
if (Base > 1024*1024)
|
if (Base >= 1024*1024)
|
||||||
return linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
|
addr = linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
|
||||||
PCIIOC_MMAP_IS_MEM);
|
PCIIOC_MMAP_IS_MEM);
|
||||||
|
else if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0)
|
||||||
if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0)
|
addr = linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
|
||||||
return linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
|
|
||||||
PCIIOC_MMAP_IS_MEM);
|
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 (fd >= 0)
|
||||||
if (addr == MAP_FAILED) {
|
close(fd);
|
||||||
close (fd);
|
if (addr == NULL || addr == MAP_FAILED) {
|
||||||
perror("mmap failure");
|
perror("mmap failure");
|
||||||
FatalError("xf86MapDomainMem(): mmap() failure\n");
|
FatalError("xf86MapDomainMem(): mmap() failure\n");
|
||||||
}
|
}
|
||||||
close(fd);
|
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue