auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
authorSouptick Joarder <jrdr.linux@gmail.com>
Sun, 26 May 2019 16:11:10 +0000 (21:41 +0530)
committerMiguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Thu, 20 Jun 2019 13:06:24 +0000 (15:06 +0200)
While using mmap, the incorrect values of length and vm_pgoff are
ignored and this driver goes ahead with mapping fbdev.buffer
to user vma.

Convert vm_insert_pages() to use vm_map_pages_zero(). We could later
"fix" these drivers to behave according to the normal vm_pgoff
offsetting simply by removing the _zero suffix on the function name
and if that causes regressions, it gives us an easy way to revert.

Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
Acked-by: Robin van der Gracht <robin@protonic.nl>
Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
drivers/auxdisplay/ht16k33.c

index 21393ec3b9a4a58fe13037f59be6a3d1466f747e..9c0bb771751d8d986b7f53d1724f1077f9412a1f 100644 (file)
@@ -223,9 +223,9 @@ static const struct backlight_ops ht16k33_bl_ops = {
 static int ht16k33_mmap(struct fb_info *info, struct vm_area_struct *vma)
 {
        struct ht16k33_priv *priv = info->par;
+       struct page *pages = virt_to_page(priv->fbdev.buffer);
 
-       return vm_insert_page(vma, vma->vm_start,
-                             virt_to_page(priv->fbdev.buffer));
+       return vm_map_pages_zero(vma, &pages, 1);
 }
 
 static struct fb_ops ht16k33_fb_ops = {