LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
@ 2019-05-20 15:30 Souptick Joarder
2019-05-21 6:55 ` Robin van der Gracht
2019-05-23 13:23 ` Miguel Ojeda
0 siblings, 2 replies; 10+ messages in thread
From: Souptick Joarder @ 2019-05-20 15:30 UTC (permalink / raw)
To: miguel.ojeda.sandonis, robin; +Cc: linux-kernel, willy, Souptick Joarder
While using mmap, the incorrect value of length and vm_pgoff are
ignored and this driver go 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>
---
drivers/auxdisplay/ht16k33.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
index 21393ec..9c0bb77 100644
--- a/drivers/auxdisplay/ht16k33.c
+++ b/drivers/auxdisplay/ht16k33.c
@@ -223,9 +223,9 @@ static int ht16k33_bl_check_fb(struct backlight_device *bl, struct fb_info *fi)
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 = {
--
1.9.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
2019-05-20 15:30 [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero() Souptick Joarder
@ 2019-05-21 6:55 ` Robin van der Gracht
2019-05-23 8:18 ` Souptick Joarder
2019-05-23 13:23 ` Miguel Ojeda
1 sibling, 1 reply; 10+ messages in thread
From: Robin van der Gracht @ 2019-05-21 6:55 UTC (permalink / raw)
To: Souptick Joarder; +Cc: miguel.ojeda.sandonis, linux-kernel, willy
On Mon, 20 May 2019 21:00:58 +0530
Souptick Joarder <jrdr.linux@gmail.com> wrote:
> While using mmap, the incorrect value of length and vm_pgoff are
> ignored and this driver go 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>
> ---
> drivers/auxdisplay/ht16k33.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
> index 21393ec..9c0bb77 100644
> --- a/drivers/auxdisplay/ht16k33.c
> +++ b/drivers/auxdisplay/ht16k33.c
> @@ -223,9 +223,9 @@ static int ht16k33_bl_check_fb(struct backlight_device *bl, struct fb_info *fi)
> 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 = {
Acked-by: Robin van der Gracht <robin@protonic.nl>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
2019-05-21 6:55 ` Robin van der Gracht
@ 2019-05-23 8:18 ` Souptick Joarder
2019-05-23 12:58 ` Miguel Ojeda
0 siblings, 1 reply; 10+ messages in thread
From: Souptick Joarder @ 2019-05-23 8:18 UTC (permalink / raw)
To: Robin van der Gracht; +Cc: Miguel Ojeda, linux-kernel, Matthew Wilcox
On Tue, May 21, 2019 at 12:24 PM Robin van der Gracht <robin@protonic.nl> wrote:
>
> On Mon, 20 May 2019 21:00:58 +0530
> Souptick Joarder <jrdr.linux@gmail.com> wrote:
>
> > While using mmap, the incorrect value of length and vm_pgoff are
> > ignored and this driver go 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>
> > ---
> > drivers/auxdisplay/ht16k33.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
> > index 21393ec..9c0bb77 100644
> > --- a/drivers/auxdisplay/ht16k33.c
> > +++ b/drivers/auxdisplay/ht16k33.c
> > @@ -223,9 +223,9 @@ static int ht16k33_bl_check_fb(struct backlight_device *bl, struct fb_info *fi)
> > 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 = {
>
> Acked-by: Robin van der Gracht <robin@protonic.nl>
Miguel, Ack from Robin is missing in linux-next-20190523 when applied.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
2019-05-23 8:18 ` Souptick Joarder
@ 2019-05-23 12:58 ` Miguel Ojeda
2019-05-24 4:22 ` Miguel Ojeda
0 siblings, 1 reply; 10+ messages in thread
From: Miguel Ojeda @ 2019-05-23 12:58 UTC (permalink / raw)
To: Souptick Joarder; +Cc: Robin van der Gracht, linux-kernel, Matthew Wilcox
On Thu, May 23, 2019 at 10:18 AM Souptick Joarder <jrdr.linux@gmail.com> wrote:
>
> Miguel, Ack from Robin is missing in linux-next-20190523 when applied.
Thanks for the warning! I wanted to review first but didn't get to it yet.
Taking a quick look now, by the way, why does vm_map_pages_zero() (and
__vm_map_pages() etc.) get a pointer to an array instead of a pointer
to the first element?
Cheers,
Miguel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
2019-05-20 15:30 [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero() Souptick Joarder
2019-05-21 6:55 ` Robin van der Gracht
@ 2019-05-23 13:23 ` Miguel Ojeda
2019-05-24 6:10 ` Souptick Joarder
1 sibling, 1 reply; 10+ messages in thread
From: Miguel Ojeda @ 2019-05-23 13:23 UTC (permalink / raw)
To: Souptick Joarder; +Cc: Robin van der Gracht, linux-kernel, Matthew Wilcox
On Mon, May 20, 2019 at 5:26 PM Souptick Joarder <jrdr.linux@gmail.com> wrote:
>
> While using mmap, the incorrect value of length and vm_pgoff are
> ignored and this driver go ahead with mapping fbdev.buffer
> to user vma.
Typos: values*, goes* (same for the other patch)
> 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.
Would it be possible to add a "Link:" to where these new functions are
discussed/used (maybe a lore.kernel.org link?)?
Thanks for the patch!
Cheers,
Miguel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
2019-05-23 12:58 ` Miguel Ojeda
@ 2019-05-24 4:22 ` Miguel Ojeda
2019-05-24 6:07 ` Souptick Joarder
0 siblings, 1 reply; 10+ messages in thread
From: Miguel Ojeda @ 2019-05-24 4:22 UTC (permalink / raw)
To: Souptick Joarder; +Cc: Robin van der Gracht, linux-kernel, Matthew Wilcox
On Thu, May 23, 2019 at 2:58 PM Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com> wrote:
>
> Taking a quick look now, by the way, why does vm_map_pages_zero() (and
> __vm_map_pages() etc.) get a pointer to an array instead of a pointer
> to the first element?
Also, in __vm_map_pages(), semantically w.r.t. to the comment,
shouldn't the first check test for equality too? (i.e. for vm_pgoff ==
num)? (even if such case fails in the second test anyway).
Cheers,
Miguel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
2019-05-24 4:22 ` Miguel Ojeda
@ 2019-05-24 6:07 ` Souptick Joarder
2019-05-28 19:03 ` Miguel Ojeda
0 siblings, 1 reply; 10+ messages in thread
From: Souptick Joarder @ 2019-05-24 6:07 UTC (permalink / raw)
To: Miguel Ojeda; +Cc: Robin van der Gracht, linux-kernel, Matthew Wilcox
On Fri, May 24, 2019 at 9:52 AM Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com> wrote:
>
> On Thu, May 23, 2019 at 2:58 PM Miguel Ojeda
> <miguel.ojeda.sandonis@gmail.com> wrote:
> >
> > Taking a quick look now, by the way, why does vm_map_pages_zero() (and
> > __vm_map_pages() etc.) get a pointer to an array instead of a pointer
> > to the first element?
For this particular driver, one page is getting mapped into vma. But
there are other
places where a entire page array ( with more than one pages) mapped into
vma. That's the reason to pass pointer to an array and do rest of the operations
inside __vm_map_pages().
https://lkml.org/lkml/2019/3/18/1265
>
> Also, in __vm_map_pages(), semantically w.r.t. to the comment,
> shouldn't the first check test for equality too? (i.e. for vm_pgoff ==
> num)? (even if such case fails in the second test anyway).
Sorry, didn't get it. Do you mean there should be a separate check for
*vm_pgoff == num* ?
> Cheers,
> Miguel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
2019-05-23 13:23 ` Miguel Ojeda
@ 2019-05-24 6:10 ` Souptick Joarder
0 siblings, 0 replies; 10+ messages in thread
From: Souptick Joarder @ 2019-05-24 6:10 UTC (permalink / raw)
To: Miguel Ojeda; +Cc: Robin van der Gracht, linux-kernel, Matthew Wilcox
On Thu, May 23, 2019 at 6:53 PM Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com> wrote:
>
> On Mon, May 20, 2019 at 5:26 PM Souptick Joarder <jrdr.linux@gmail.com> wrote:
> >
> > While using mmap, the incorrect value of length and vm_pgoff are
> > ignored and this driver go ahead with mapping fbdev.buffer
> > to user vma.
>
> Typos: values*, goes* (same for the other patch)
Ok, will add it into v2.
>
> > 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.
>
> Would it be possible to add a "Link:" to where these new functions are
> discussed/used (maybe a lore.kernel.org link?)?
This might be helpful.
https://lkml.org/lkml/2018/12/24/204
>
> Thanks for the patch!
>
> Cheers,
> Miguel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
2019-05-24 6:07 ` Souptick Joarder
@ 2019-05-28 19:03 ` Miguel Ojeda
0 siblings, 0 replies; 10+ messages in thread
From: Miguel Ojeda @ 2019-05-28 19:03 UTC (permalink / raw)
To: Souptick Joarder; +Cc: Robin van der Gracht, linux-kernel, Matthew Wilcox
On Fri, May 24, 2019 at 8:07 AM Souptick Joarder <jrdr.linux@gmail.com> wrote:
>
> > > Taking a quick look now, by the way, why does vm_map_pages_zero() (and
> > > __vm_map_pages() etc.) get a pointer to an array instead of a pointer
> > > to the first element?
>
> For this particular driver, one page is getting mapped into vma. But
> there are other
> places where a entire page array ( with more than one pages) mapped into
> vma. That's the reason to pass pointer to an array and do rest of the operations
> inside __vm_map_pages().
Ah, "pointer to array of source kernel pages" made me think the actual
`struct page`s were the ones consecutive in memory, not the pointers.
Maybe "array of page pointers" is more clear.
> > Also, in __vm_map_pages(), semantically w.r.t. to the comment,
> > shouldn't the first check test for equality too? (i.e. for vm_pgoff ==
> > num)? (even if such case fails in the second test anyway).
>
> Sorry, didn't get it. Do you mean there should be a separate check for
> *vm_pgoff == num* ?
No, that the first check should be widened. I will send a patch.
Cheers,
Miguel
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero()
@ 2019-05-26 16:11 Souptick Joarder
0 siblings, 0 replies; 10+ messages in thread
From: Souptick Joarder @ 2019-05-26 16:11 UTC (permalink / raw)
To: miguel.ojeda.sandonis; +Cc: linux-kernel, willy, robin, Souptick Joarder
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>
---
v2: Fixed minor typo. Acked-by tag added.
drivers/auxdisplay/ht16k33.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
index 21393ec..9c0bb77 100644
--- a/drivers/auxdisplay/ht16k33.c
+++ b/drivers/auxdisplay/ht16k33.c
@@ -223,9 +223,9 @@ static int ht16k33_bl_check_fb(struct backlight_device *bl, struct fb_info *fi)
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 = {
--
1.9.1
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2019-05-28 19:03 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-20 15:30 [PATCH 2/2] auxdisplay/ht16k33.c: Convert to use vm_map_pages_zero() Souptick Joarder
2019-05-21 6:55 ` Robin van der Gracht
2019-05-23 8:18 ` Souptick Joarder
2019-05-23 12:58 ` Miguel Ojeda
2019-05-24 4:22 ` Miguel Ojeda
2019-05-24 6:07 ` Souptick Joarder
2019-05-28 19:03 ` Miguel Ojeda
2019-05-23 13:23 ` Miguel Ojeda
2019-05-24 6:10 ` Souptick Joarder
2019-05-26 16:11 Souptick Joarder
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).