From b8cffb14fc337b4f4445838f15d3b4730e0457cd Mon Sep 17 00:00:00 2001 From: Mark Yao Date: Wed, 3 Dec 2014 15:05:15 +0800 Subject: [PATCH] rk_fb: sysfs: make use vmap/vunmap in pairs. Signed-off-by: Mark Yao --- drivers/video/rockchip/rkfb_sysfs.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/video/rockchip/rkfb_sysfs.c b/drivers/video/rockchip/rkfb_sysfs.c index ee4f557d746e..07d8ab6d6b53 100755 --- a/drivers/video/rockchip/rkfb_sysfs.c +++ b/drivers/video/rockchip/rkfb_sysfs.c @@ -115,7 +115,7 @@ static void fill_buffer(void *handle, void *vaddr, int size) static int dump_win(struct rk_fb *rk_fb, struct rk_fb_reg_area_data *area_data, u8 data_format, int win_id, int area_id, bool is_bmp) { - void __iomem *vaddr; + void __iomem *vaddr = NULL; struct file *filp; mm_segment_t old_fs; char name[100]; @@ -139,7 +139,13 @@ static int dump_win(struct rk_fb *rk_fb, struct rk_fb_reg_area_data *area_data, start += PAGE_SIZE; i++; } - vaddr = vmap(pages, nr_pages, VM_MAP, pgprot_writecombine(PAGE_KERNEL)); + vaddr = vmap(pages, nr_pages, VM_MAP, + pgprot_writecombine(PAGE_KERNEL)); + if (!vaddr) { + pr_err("failed to vmap phy addr %lx\n", + area_data->smem_start); + return -1; + } } else { return -1; } @@ -170,6 +176,8 @@ static int dump_win(struct rk_fb *rk_fb, struct rk_fb_reg_area_data *area_data, ion_unmap_kernel(rk_fb->ion_client, ion_handle); ion_handle_put(ion_handle); + } else if (vaddr) { + vunmap(vaddr); } filp_close(filp, NULL); -- 2.34.1