Only free original pagelist in addbufs_pci if one already exists (fixes

oops).
main
Leif Delgass 2003-04-28 16:20:31 +00:00
parent 6eb5364eb8
commit a57d320461
2 changed files with 14 additions and 10 deletions

View File

@ -146,7 +146,7 @@ int DRM(addmap)( struct inode *inode, struct file *filp,
#ifdef __alpha__
map->offset += dev->hose->mem_space->start;
#endif
map->offset = map->offset + dev->agp->base;
map->offset += dev->agp->base;
map->mtrr = dev->agp->agp_mtrr; /* for getmap */
break;
#endif
@ -155,7 +155,7 @@ int DRM(addmap)( struct inode *inode, struct file *filp,
DRM(free)(map, sizeof(*map), DRM_MEM_MAPS);
return -EINVAL;
}
map->offset = map->offset + dev->sg->handle;
map->offset += dev->sg->handle;
break;
default:
@ -681,9 +681,11 @@ int DRM(addbufs_pci)( struct inode *inode, struct file *filp,
/* No allocations failed, so now we can replace the orginal pagelist
* with the new one.
*/
DRM(free)(dma->pagelist,
dma->page_count * sizeof(*dma->pagelist),
DRM_MEM_PAGES);
if (dma->page_count) {
DRM(free)(dma->pagelist,
dma->page_count * sizeof(*dma->pagelist),
DRM_MEM_PAGES);
}
dma->pagelist = temp_pagelist;
dma->buf_count += entry->buf_count;

View File

@ -146,7 +146,7 @@ int DRM(addmap)( struct inode *inode, struct file *filp,
#ifdef __alpha__
map->offset += dev->hose->mem_space->start;
#endif
map->offset = map->offset + dev->agp->base;
map->offset += dev->agp->base;
map->mtrr = dev->agp->agp_mtrr; /* for getmap */
break;
#endif
@ -155,7 +155,7 @@ int DRM(addmap)( struct inode *inode, struct file *filp,
DRM(free)(map, sizeof(*map), DRM_MEM_MAPS);
return -EINVAL;
}
map->offset = map->offset + dev->sg->handle;
map->offset += dev->sg->handle;
break;
default:
@ -681,9 +681,11 @@ int DRM(addbufs_pci)( struct inode *inode, struct file *filp,
/* No allocations failed, so now we can replace the orginal pagelist
* with the new one.
*/
DRM(free)(dma->pagelist,
dma->page_count * sizeof(*dma->pagelist),
DRM_MEM_PAGES);
if (dma->page_count) {
DRM(free)(dma->pagelist,
dma->page_count * sizeof(*dma->pagelist),
DRM_MEM_PAGES);
}
dma->pagelist = temp_pagelist;
dma->buf_count += entry->buf_count;