drm/rockchip: fix memleak at kernel logo logic

Change-Id: I2aea4f8067fbded3c135b5a992134c77d7b0bf05
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
This commit is contained in:
Sandy Huang
2020-04-29 11:48:57 +08:00
committed by Tao Huang
parent d92e05ea5a
commit 9f4bb6067d
2 changed files with 6 additions and 0 deletions

View File

@@ -221,7 +221,9 @@ void rockchip_free_loader_memory(struct drm_device *drm)
dma_unmap_sg(drm->dev, logo->sgt->sgl,
logo->sgt->nents, DMA_TO_DEVICE);
}
kfree(logo->pages);
sg_free_table(logo->sgt);
kfree(logo->sgt);
memblock_free(logo->start, logo->size);
free_reserved_area(start, end, -1, "drm_logo");
kfree(logo);
@@ -307,6 +309,7 @@ static int init_loader_memory(struct drm_device *drm_dev)
logo->size = size;
logo->count = 1;
private->logo = logo;
logo->pages = pages;
return 0;
@@ -988,6 +991,7 @@ static void show_loader_logo(struct drm_device *drm_dev)
rockchip_free_loader_memory(drm_dev);
drm_atomic_state_put(old_state);
drm_atomic_state_put(state);
mode_config->loader_protect = true;
drm_modeset_unlock_all(drm_dev);
@@ -1447,6 +1451,7 @@ static void rockchip_drm_set_property_default(struct drm_device *drm)
WARN_ON(ret == -EDEADLK);
if (ret)
DRM_ERROR("Failed to update properties\n");
drm_atomic_state_put(state);
err_unlock:
drm_modeset_unlock_all(drm);

View File

@@ -135,6 +135,7 @@ struct rockchip_logo {
phys_addr_t size;
size_t iommu_map_size;
int count;
struct page **pages;
};
/*