diff mbox series

mtd: Fix mtd_check_oob_ops()

Message ID 20171218072628.17977-1-miquel.raynal@free-electrons.com
State Accepted
Headers show
Series mtd: Fix mtd_check_oob_ops() | expand

Commit Message

Miquel Raynal Dec. 18, 2017, 7:26 a.m. UTC
The mtd_check_oob_ops() helper verifies if the operation defined by the
user is correct.

Fix the check that verifies if the entire requested area exists. This
check is too restrictive and will fail anytime the last data byte of the
very last page is included in an operation.

Fixes: 5cdd929da53d ("mtd: Add sanity checks in mtd_write/read_oob()")
Signed-off-by: Miquel Raynal <miquel.raynal@free-electrons.com>
---
 drivers/mtd/mtdcore.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Richard Weinberger Dec. 18, 2017, 7:55 a.m. UTC | #1
Am Montag, 18. Dezember 2017, 08:26:28 CET schrieb Miquel Raynal:
> The mtd_check_oob_ops() helper verifies if the operation defined by the
> user is correct.
> 
> Fix the check that verifies if the entire requested area exists. This
> check is too restrictive and will fail anytime the last data byte of the
> very last page is included in an operation.
> 
> Fixes: 5cdd929da53d ("mtd: Add sanity checks in mtd_write/read_oob()")
> Signed-off-by: Miquel Raynal <miquel.raynal@free-electrons.com>

Thanks for spotting and fixing this, Miquel.

> ---
>  drivers/mtd/mtdcore.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
> index f80e911b8843..73b605577447 100644
> --- a/drivers/mtd/mtdcore.c
> +++ b/drivers/mtd/mtdcore.c
> @@ -1114,7 +1114,7 @@ static int mtd_check_oob_ops(struct mtd_info *mtd,
> loff_t offs, if (!ops->oobbuf)
>  		ops->ooblen = 0;
> 
> -	if (offs < 0 || offs + ops->len >= mtd->size)
> +	if (offs < 0 || offs + ops->len > mtd->size)
>  		return -EINVAL;
> 
>  	if (ops->ooblen) {

Thanks,
//richard
Boris Brezillon Dec. 18, 2017, 8:14 a.m. UTC | #2
Hi Miquel,

On Mon, 18 Dec 2017 08:26:28 +0100
Miquel Raynal <miquel.raynal@free-electrons.com> wrote:

> The mtd_check_oob_ops() helper verifies if the operation defined by the
> user is correct.
> 
> Fix the check that verifies if the entire requested area exists. This
> check is too restrictive and will fail anytime the last data byte of the
> very last page is included in an operation.
> 
> Fixes: 5cdd929da53d ("mtd: Add sanity checks in mtd_write/read_oob()")
> Signed-off-by: Miquel Raynal <miquel.raynal@free-electrons.com>

Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>

and thanks for fixing my mess.

Richard, feel free to queue it for the next -rc.

Boris

> ---
>  drivers/mtd/mtdcore.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
> index f80e911b8843..73b605577447 100644
> --- a/drivers/mtd/mtdcore.c
> +++ b/drivers/mtd/mtdcore.c
> @@ -1114,7 +1114,7 @@ static int mtd_check_oob_ops(struct mtd_info *mtd, loff_t offs,
>  	if (!ops->oobbuf)
>  		ops->ooblen = 0;
>  
> -	if (offs < 0 || offs + ops->len >= mtd->size)
> +	if (offs < 0 || offs + ops->len > mtd->size)
>  		return -EINVAL;
>  
>  	if (ops->ooblen) {
diff mbox series

Patch

diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index f80e911b8843..73b605577447 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -1114,7 +1114,7 @@  static int mtd_check_oob_ops(struct mtd_info *mtd, loff_t offs,
 	if (!ops->oobbuf)
 		ops->ooblen = 0;
 
-	if (offs < 0 || offs + ops->len >= mtd->size)
+	if (offs < 0 || offs + ops->len > mtd->size)
 		return -EINVAL;
 
 	if (ops->ooblen) {