2018-08-23 08:45:36

by Huijin Park

[permalink] [raw]
Subject: [PATCH] mtd: change len type from signed to unsigned type

From: "huijin.park" <[email protected]>

assign of a signed value which has type 'int' to a variable of
a bigger unsigned integer type 'uint64_t'.
this is ok most of the time, but can lead to unexpectedly large
resulting value if the original signed value is negative.
in addtion, the callers of the erase_write() pass the len parameter
as unsigned type.

Signed-off-by: huijin.park <[email protected]>
---
drivers/mtd/mtdblock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c
index a5b1933..b2d5ed1 100644
--- a/drivers/mtd/mtdblock.c
+++ b/drivers/mtd/mtdblock.c
@@ -56,7 +56,7 @@ struct mtdblk_dev {
*/

static int erase_write (struct mtd_info *mtd, unsigned long pos,
- int len, const char *buf)
+ unsigned int len, const char *buf)
{
struct erase_info erase;
size_t retlen;
--
1.7.9.5



2018-10-31 14:04:06

by Boris Brezillon

[permalink] [raw]
Subject: Re: [PATCH] mtd: change len type from signed to unsigned type

Hi Huijin,

On Thu, 23 Aug 2018 04:43:39 -0400
Huijin Park <[email protected]> wrote:

> From: "huijin.park" <[email protected]>
>
> assign of a signed value which has type 'int' to a variable of
> a bigger unsigned integer type 'uint64_t'.

Why are you mentioning u64? AFAICT, the len passed to erase_write() is
always an unsigned int.

> this is ok most of the time, but can lead to unexpectedly large
> resulting value if the original signed value is negative.
> in addtion, the callers of the erase_write() pass the len parameter

^In addition,

> as unsigned type.
>
> Signed-off-by: huijin.park <[email protected]>
> ---
> drivers/mtd/mtdblock.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c
> index a5b1933..b2d5ed1 100644
> --- a/drivers/mtd/mtdblock.c
> +++ b/drivers/mtd/mtdblock.c
> @@ -56,7 +56,7 @@ struct mtdblk_dev {
> */
>
> static int erase_write (struct mtd_info *mtd, unsigned long pos,
> - int len, const char *buf)
> + unsigned int len, const char *buf)

The diff looks good, but the commit message is not clear at all. Can
you reword it?

Thanks,

Boris

> {
> struct erase_info erase;
> size_t retlen;


2018-11-12 16:28:16

by Huijin Park

[permalink] [raw]
Subject: Re: [PATCH] mtd: change len type from signed to unsigned type

Hi Boris,

On Wed, Oct 31, 2018 at 11:02 PM Boris Brezillon
<[email protected]> wrote:
>
> Hi Huijin,
>
> On Thu, 23 Aug 2018 04:43:39 -0400
> Huijin Park <[email protected]> wrote:
>
> > From: "huijin.park" <[email protected]>
> >
> > assign of a signed value which has type 'int' to a variable of
> > a bigger unsigned integer type 'uint64_t'.
>
> Why are you mentioning u64? AFAICT, the len passed to erase_write() is
> always an unsigned int.

It's my mistake.
Messages about u64 are not related to this patch.

>
> > this is ok most of the time, but can lead to unexpectedly large
> > resulting value if the original signed value is negative.
> > in addtion, the callers of the erase_write() pass the len parameter
>
> ^In addition,
>
> > as unsigned type.
> >
> > Signed-off-by: huijin.park <[email protected]>
> > ---
> > drivers/mtd/mtdblock.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c
> > index a5b1933..b2d5ed1 100644
> > --- a/drivers/mtd/mtdblock.c
> > +++ b/drivers/mtd/mtdblock.c
> > @@ -56,7 +56,7 @@ struct mtdblk_dev {
> > */
> >
> > static int erase_write (struct mtd_info *mtd, unsigned long pos,
> > - int len, const char *buf)
> > + unsigned int len, const char *buf)
>
> The diff looks good, but the commit message is not clear at all. Can
> you reword it?
>
> Thanks,
>
> Boris
>
> > {
> > struct erase_info erase;
> > size_t retlen;
>

I will send again patch after reword the commit message.

Thanks & best regards,

Huijin