public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH] mtd: physmap: Fix mtd device size
@ 2020-03-19 14:41 Victor Fusco
  2020-04-27 13:17 ` Miquel Raynal
  0 siblings, 1 reply; 2+ messages in thread
From: Victor Fusco @ 2020-03-19 14:41 UTC (permalink / raw)
  To: linux-mtd; +Cc: Victor Fusco

This patch fixes the mtd device size calculation when there is no gpio
defined. The previous size calculation could return values lower than
those defined on the 'reg' field of the Device Tree, rasing 'attempt to
access beyond end of device' errors during device access.

Signed-off-by: Victor Fusco <victor@cartesi.io>
---
 drivers/mtd/maps/physmap-core.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/mtd/maps/physmap-core.c b/drivers/mtd/maps/physmap-core.c
index 8f7f966fa9a7..27cc6ac01ea8 100644
--- a/drivers/mtd/maps/physmap-core.c
+++ b/drivers/mtd/maps/physmap-core.c
@@ -520,17 +520,19 @@ static int physmap_flash_probe(struct platform_device *dev)
 		if (!info->maps[i].phys)
 			info->maps[i].phys = res->start;
 
-		info->win_order = get_bitmask_order(resource_size(res)) - 1;
-		info->maps[i].size = BIT(info->win_order +
-					 (info->gpios ?
-					  info->gpios->ndescs : 0));
-
 		info->maps[i].map_priv_1 = (unsigned long)dev;
 
 		if (info->gpios) {
+			info->win_order = get_bitmask_order(resource_size(res)) - 1;
+			info->maps[i].size = BIT(info->win_order +
+					         info->gpios->ndescs);
+
 			err = physmap_addr_gpios_map_init(&info->maps[i]);
 			if (err)
 				goto err_out;
+		} else {
+			info->maps[i].size = resource_size(res);
+
 		}
 
 #ifdef CONFIG_MTD_COMPLEX_MAPPINGS

base-commit: 5076190daded2197f62fe92cf69674488be44175
-- 
2.17.1


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] mtd: physmap: Fix mtd device size
  2020-03-19 14:41 [PATCH] mtd: physmap: Fix mtd device size Victor Fusco
@ 2020-04-27 13:17 ` Miquel Raynal
  0 siblings, 0 replies; 2+ messages in thread
From: Miquel Raynal @ 2020-04-27 13:17 UTC (permalink / raw)
  To: Victor Fusco; +Cc: linux-mtd

Hi Victor,

Victor Fusco <victor@cartesi.io> wrote on Thu, 19 Mar 2020 14:41:29
+0000:

> This patch fixes the mtd device size calculation when there is no gpio

s/mtd/MTD/

S/gpio/GPIO/

> defined. The previous size calculation could return values lower than
> those defined on the 'reg' field of the Device Tree, rasing 'attempt to

s/rasing/raising/ ?

> access beyond end of device' errors during device access.
> 
> Signed-off-by: Victor Fusco <victor@cartesi.io>
> ---
>  drivers/mtd/maps/physmap-core.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/mtd/maps/physmap-core.c b/drivers/mtd/maps/physmap-core.c
> index 8f7f966fa9a7..27cc6ac01ea8 100644
> --- a/drivers/mtd/maps/physmap-core.c
> +++ b/drivers/mtd/maps/physmap-core.c
> @@ -520,17 +520,19 @@ static int physmap_flash_probe(struct platform_device *dev)
>  		if (!info->maps[i].phys)
>  			info->maps[i].phys = res->start;
>  
> -		info->win_order = get_bitmask_order(resource_size(res)) - 1;
> -		info->maps[i].size = BIT(info->win_order +
> -					 (info->gpios ?
> -					  info->gpios->ndescs : 0));
> -
>  		info->maps[i].map_priv_1 = (unsigned long)dev;
>  
>  		if (info->gpios) {
> +			info->win_order = get_bitmask_order(resource_size(res)) - 1;
> +			info->maps[i].size = BIT(info->win_order +
> +					         info->gpios->ndescs);
> +
>  			err = physmap_addr_gpios_map_init(&info->maps[i]);
>  			if (err)
>  				goto err_out;
> +		} else {
> +			info->maps[i].size = resource_size(res);

I didn't check the driver but are you sure info->win_order and
maps[i].map_priv_1 do not need to be initialized? Also are these fields
still needed if you stop using them? (just asking)

> +

Extra new line

>  		}
>  
>  #ifdef CONFIG_MTD_COMPLEX_MAPPINGS
> 
> base-commit: 5076190daded2197f62fe92cf69674488be44175

Thanks,
Miquèl

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-04-27 13:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-19 14:41 [PATCH] mtd: physmap: Fix mtd device size Victor Fusco
2020-04-27 13:17 ` Miquel Raynal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox