From: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] uio: Fix memory size check with vma in uio_mmap_physical()
Date: Thu, 20 Mar 2014 17:24:54 +0900 [thread overview]
Message-ID: <532AA5D6.6000402@renesas.com> (raw)
In-Reply-To: <20140317232645.GA11450@kroah.com>
(2014/03/18 8:26), Greg KH wrote:
> On Wed, Mar 12, 2014 at 10:24:21AM +0900, Nobuhiro Iwamatsu wrote:
>> Register for the device are mapped in uio_mmap_physical().
>> In this case, it might not be the same as the size of VMA always.
>
> Why wouldn't this be the case?
size contained in the "mem-> size" is the size of the actual always.
However, in this case, "if (vma-> vm_end - vma-> vm_start> mem-> size)" is an error by always.
This is because the address contained in the vma is because it is always aligned by PAGE_SIZE.
>
>> This uses PAGE_ALIGN to memory size, fix the check of the memory size
>> to be mapped.
>>
>> Signed-off-by: Nobuhiro Iwamatsu<nobuhiro.iwamatsu.yj@renesas.com>
>> ---
>> drivers/uio/uio.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
>> index a673e5b..e371f5a 100644
>> --- a/drivers/uio/uio.c
>> +++ b/drivers/uio/uio.c
>> @@ -655,7 +655,7 @@ static int uio_mmap_physical(struct vm_area_struct *vma)
>>
>> if (mem->addr& ~PAGE_MASK)
>> return -ENODEV;
>> - if (vma->vm_end - vma->vm_start> mem->size)
>> + if (vma->vm_end - vma->vm_start> PAGE_ALIGN(mem->size))
>
> You just increased the size for the check, that seems wrong. Why
> wouldn't mem->size be correct here?
>
> What hardware is failing for this with a valid size and end/start
> addresses?
For example, when I have the following settings in in platform device setup,
the size of the mem->size will be 344.
static struct resource vpu_resources[] = {
[0] = {
.name = "VPU",
.start = 0xfe900000,
.end = 0xfe900157,
.flags = IORESOURCE_MEM,
},
};
And vma->vm_start was set 0xB6F9F000, vma->start was set B6FA0000.
Therefore, this is "if (vma-> vm_end - vma-> vm_start> mem-> size)" will result in an error.
Am I wrong how to use UIO?
>
> thanks,
>
> greg k-h
Best regards,
Nobuhiro
prev parent reply other threads:[~2014-03-20 8:25 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-12 1:24 [PATCH] uio: Fix memory size check with vma in uio_mmap_physical() Nobuhiro Iwamatsu
2014-03-17 23:26 ` Greg KH
2014-03-20 8:24 ` Nobuhiro Iwamatsu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=532AA5D6.6000402@renesas.com \
--to=nobuhiro.iwamatsu.yj@renesas.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.