lkml.org 
[lkml]   [2013]   [Nov]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.11 63/94] uio: provide vm access to UIO_MEM_PHYS maps
    Date
    3.11-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

    commit 7294151d0592e0ff48c61fca9fd7c93d613134da upstream.

    This makes it possible to let gdb access mappings of the process that is
    being debugged.

    uio_mmap_logical was moved and uio_vm_ops renamed to group related code
    and differentiate to new stuff.

    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/uio/uio.c | 26 +++++++++++++++++---------
    1 file changed, 17 insertions(+), 9 deletions(-)

    --- a/drivers/uio/uio.c
    +++ b/drivers/uio/uio.c
    @@ -630,12 +630,26 @@ static int uio_vma_fault(struct vm_area_
    return 0;
    }

    -static const struct vm_operations_struct uio_vm_ops = {
    +static const struct vm_operations_struct uio_logical_vm_ops = {
    .open = uio_vma_open,
    .close = uio_vma_close,
    .fault = uio_vma_fault,
    };

    +static int uio_mmap_logical(struct vm_area_struct *vma)
    +{
    + vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
    + vma->vm_ops = &uio_logical_vm_ops;
    + uio_vma_open(vma);
    + return 0;
    +}
    +
    +static const struct vm_operations_struct uio_physical_vm_ops = {
    +#ifdef CONFIG_HAVE_IOREMAP_PROT
    + .access = generic_access_phys,
    +#endif
    +};
    +
    static int uio_mmap_physical(struct vm_area_struct *vma)
    {
    struct uio_device *idev = vma->vm_private_data;
    @@ -643,6 +657,8 @@ static int uio_mmap_physical(struct vm_a
    if (mi < 0)
    return -EINVAL;

    + vma->vm_ops = &uio_physical_vm_ops;
    +
    vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);

    return remap_pfn_range(vma,
    @@ -652,14 +668,6 @@ static int uio_mmap_physical(struct vm_a
    vma->vm_page_prot);
    }

    -static int uio_mmap_logical(struct vm_area_struct *vma)
    -{
    - vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
    - vma->vm_ops = &uio_vm_ops;
    - uio_vma_open(vma);
    - return 0;
    -}
    -
    static int uio_mmap(struct file *filep, struct vm_area_struct *vma)
    {
    struct uio_listener *listener = filep->private_data;

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2013-11-09 08:41    [W:3.117 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site