uio_pdrv_genirq: Allow use with non-page-aligned memory resources
authorEsben Haabendal <esben@geanix.com>
Wed, 1 Jul 2020 14:56:59 +0000 (16:56 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 3 Jul 2020 09:01:50 +0000 (11:01 +0200)
Similar to the changes made in 270579d95f82 ("uio_mf624: Align memory
regions to page size and set correct offsets"), this will allow
uio_pdrv_genirq devices to expose memory regions that is not page-aligned,
requiring the users to respect the offset sysfs attribute (as implemented
in libuio).

Signed-off-by: Esben Haabendal <esben@geanix.com>
Link: https://lore.kernel.org/r/20200701145659.3978-4-esben@geanix.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/uio/uio_pdrv_genirq.c

index ae319ef..11e11df 100644 (file)
@@ -187,8 +187,10 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)
                }
 
                uiomem->memtype = UIO_MEM_PHYS;
-               uiomem->addr = r->start;
-               uiomem->size = resource_size(r);
+               uiomem->addr = r->start & PAGE_MASK;
+               uiomem->offs = r->start & ~PAGE_MASK;
+               uiomem->size = (uiomem->offs + resource_size(r)
+                               + PAGE_SIZE - 1) & PAGE_MASK;
                uiomem->name = r->name;
                ++uiomem;
        }