mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 10:29:37 +00:00
drm: ioremap balanced with iounmap for drivers/char/drm
ioremap must be balanced by an iounmap and failing to do so can result in a memory leak. Tested (compilation only) to make sure the files are compiling without any warning/error due to new changes Signed-off-by: Amol Lad <amol@verismonetworks.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
This commit is contained in:
parent
24f73c92a9
commit
85abb3f950
1 changed files with 4 additions and 0 deletions
|
@ -237,6 +237,8 @@ static int drm_addmap_core(drm_device_t * dev, unsigned int offset,
|
||||||
|
|
||||||
list = drm_alloc(sizeof(*list), DRM_MEM_MAPS);
|
list = drm_alloc(sizeof(*list), DRM_MEM_MAPS);
|
||||||
if (!list) {
|
if (!list) {
|
||||||
|
if (map->type == _DRM_REGISTERS)
|
||||||
|
drm_ioremapfree(map->handle, map->size, dev);
|
||||||
drm_free(map, sizeof(*map), DRM_MEM_MAPS);
|
drm_free(map, sizeof(*map), DRM_MEM_MAPS);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@ -252,6 +254,8 @@ static int drm_addmap_core(drm_device_t * dev, unsigned int offset,
|
||||||
map->offset;
|
map->offset;
|
||||||
ret = drm_map_handle(dev, &list->hash, user_token, 0);
|
ret = drm_map_handle(dev, &list->hash, user_token, 0);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
if (map->type == _DRM_REGISTERS)
|
||||||
|
drm_ioremapfree(map->handle, map->size, dev);
|
||||||
drm_free(map, sizeof(*map), DRM_MEM_MAPS);
|
drm_free(map, sizeof(*map), DRM_MEM_MAPS);
|
||||||
drm_free(list, sizeof(*list), DRM_MEM_MAPS);
|
drm_free(list, sizeof(*list), DRM_MEM_MAPS);
|
||||||
mutex_unlock(&dev->struct_mutex);
|
mutex_unlock(&dev->struct_mutex);
|
||||||
|
|
Loading…
Reference in a new issue