From: Mark Yao Date: Wed, 3 Dec 2014 07:05:15 +0000 (+0800) Subject: rk_fb: sysfs: make use vmap/vunmap in pairs. X-Git-Tag: firefly_0821_release~4420 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b8cffb14fc337b4f4445838f15d3b4730e0457cd;p=firefly-linux-kernel-4.4.55.git rk_fb: sysfs: make use vmap/vunmap in pairs. Signed-off-by: Mark Yao --- 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);