All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Frank Li <Frank.li@nxp.com>
Cc: Qasim Ijaz <qasdev00@gmail.com>,
	miquel.raynal@bootlin.com, linux-i3c@lists.infradead.org,
	imx@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] i3c: master: svc: fix signed/unsigned mismatch in dynamic address assignment
Date: Thu, 20 Mar 2025 23:01:31 +0100	[thread overview]
Message-ID: <2025032022013134061aaa@mail.local> (raw)
In-Reply-To: <Z9rEPLAmxrqP61sz@lizhi-Precision-Tower-5810>

On 19/03/2025 09:18:52-0400, Frank Li wrote:
> On Tue, Mar 18, 2025 at 02:41:47PM +0000, Qasim Ijaz wrote:
> > On Tue, Mar 18, 2025 at 09:40:17AM -0400, Frank Li wrote:
> > > On Mon, Mar 17, 2025 at 10:15:16AM +0000, Qasim Ijaz wrote:
> > > > svc_i3c_master_do_daa_locked() declares dyn_addr as an unsigned int
> > > > however it initialises it with i3c_master_get_free_addr() which
> > > > returns a signed int type and then attempts to check if dyn_addr is
> > > > less than 0. Unsigned integers cannot be less than 0, so the check
> > > > is essentially redundant. Furthermore i3c_master_get_free_addr()
> > > > could return -ENOMEM which an unsigned int cannot store.
> > > >
> > > > Fix this by capturing the return value of i3c_master_get_free_addr()
> > > > in a signed int ‘dyn_addr_ret’. If that value is negative, return
> > > > an error. Otherwise, assign it to the unsigned int ‘dyn_addr’ once
> > > > we know it’s valid.
> > > >
> > > > Fixes: 4008a74e0f9b ("i3c: master: svc: Fix npcm845 FIFO empty issue")
> > > > Signed-off-by: Qasim Ijaz <qasdev00@gmail.com>
> > > > ---
> > >
> > > Thank you for your patch, but similar one was already applied
> > > https://lore.kernel.org/linux-i3c/174225158210.1593610.10018812780731849409.b4-ty@bootlin.com/T/#m5120e1c362e7e57f4cab139a45410fde421c2f37
> > >
> >
> > Hi Frank
> >
> > I sent a fix for this issue on the 9th March, which is before the patch
> > you linked which was sent on the 10th March.
> 
> Yes, but perfer original owner to fix this type minor fix.
> 

This is absolutely not what I said, the first one that is sent and is
applicable should be applied.

See how you didn't fix this trivial issue:

https://lore.kernel.org/linux-i3c/20250319-i3c-fix-clang-fallthrough-v1-1-d8e02be1ef5c@kernel.org/T/#u

> https://lore.kernel.org/linux-i3c/174129444617.1163689.11942276093411687387.b4-ty@bootlin.com/T/#t
> 
> Frank
> >
> > You can view my orignal patch here:
> >
> > https://lore.kernel.org/all/20250309164314.15039-1-qasdev00@gmail.com/
> >
> > Thanks
> > Qasim
> > > Frank
> > > >  drivers/i3c/master/svc-i3c-master.c | 5 +++--
> > > >  1 file changed, 3 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c
> > > > index f22fb9e75142..eea08f00d7ce 100644
> > > > --- a/drivers/i3c/master/svc-i3c-master.c
> > > > +++ b/drivers/i3c/master/svc-i3c-master.c
> > > > @@ -998,9 +998,10 @@ static int svc_i3c_master_do_daa_locked(struct svc_i3c_master *master,
> > > >  			 * filling within a few hundred nanoseconds, which is significantly
> > > >  			 * faster compared to the 64 SCL clock cycles.
> > > >  			 */
> > > > -			dyn_addr = i3c_master_get_free_addr(&master->base, last_addr + 1);
> > > > -			if (dyn_addr < 0)
> > > > +			int dyn_addr_ret = i3c_master_get_free_addr(&master->base, last_addr + 1);
> > > > +			if (dyn_addr_ret < 0)
> > > >  				return -ENOSPC;
> > > > +			dyn_addr = dyn_addr_ret;
> > > >
> > > >  			writel(dyn_addr, master->regs + SVC_I3C_MWDATAB);
> > > >
> > > > --
> > > > 2.39.5
> > > >
> >
> > --
> > linux-i3c mailing list
> > linux-i3c@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-i3c
> 
> -- 
> linux-i3c mailing list
> linux-i3c@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-i3c

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

WARNING: multiple messages have this Message-ID (diff)
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Frank Li <Frank.li@nxp.com>
Cc: Qasim Ijaz <qasdev00@gmail.com>,
	miquel.raynal@bootlin.com, linux-i3c@lists.infradead.org,
	imx@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] i3c: master: svc: fix signed/unsigned mismatch in dynamic address assignment
Date: Thu, 20 Mar 2025 23:01:31 +0100	[thread overview]
Message-ID: <2025032022013134061aaa@mail.local> (raw)
In-Reply-To: <Z9rEPLAmxrqP61sz@lizhi-Precision-Tower-5810>

On 19/03/2025 09:18:52-0400, Frank Li wrote:
> On Tue, Mar 18, 2025 at 02:41:47PM +0000, Qasim Ijaz wrote:
> > On Tue, Mar 18, 2025 at 09:40:17AM -0400, Frank Li wrote:
> > > On Mon, Mar 17, 2025 at 10:15:16AM +0000, Qasim Ijaz wrote:
> > > > svc_i3c_master_do_daa_locked() declares dyn_addr as an unsigned int
> > > > however it initialises it with i3c_master_get_free_addr() which
> > > > returns a signed int type and then attempts to check if dyn_addr is
> > > > less than 0. Unsigned integers cannot be less than 0, so the check
> > > > is essentially redundant. Furthermore i3c_master_get_free_addr()
> > > > could return -ENOMEM which an unsigned int cannot store.
> > > >
> > > > Fix this by capturing the return value of i3c_master_get_free_addr()
> > > > in a signed int ‘dyn_addr_ret’. If that value is negative, return
> > > > an error. Otherwise, assign it to the unsigned int ‘dyn_addr’ once
> > > > we know it’s valid.
> > > >
> > > > Fixes: 4008a74e0f9b ("i3c: master: svc: Fix npcm845 FIFO empty issue")
> > > > Signed-off-by: Qasim Ijaz <qasdev00@gmail.com>
> > > > ---
> > >
> > > Thank you for your patch, but similar one was already applied
> > > https://lore.kernel.org/linux-i3c/174225158210.1593610.10018812780731849409.b4-ty@bootlin.com/T/#m5120e1c362e7e57f4cab139a45410fde421c2f37
> > >
> >
> > Hi Frank
> >
> > I sent a fix for this issue on the 9th March, which is before the patch
> > you linked which was sent on the 10th March.
> 
> Yes, but perfer original owner to fix this type minor fix.
> 

This is absolutely not what I said, the first one that is sent and is
applicable should be applied.

See how you didn't fix this trivial issue:

https://lore.kernel.org/linux-i3c/20250319-i3c-fix-clang-fallthrough-v1-1-d8e02be1ef5c@kernel.org/T/#u

> https://lore.kernel.org/linux-i3c/174129444617.1163689.11942276093411687387.b4-ty@bootlin.com/T/#t
> 
> Frank
> >
> > You can view my orignal patch here:
> >
> > https://lore.kernel.org/all/20250309164314.15039-1-qasdev00@gmail.com/
> >
> > Thanks
> > Qasim
> > > Frank
> > > >  drivers/i3c/master/svc-i3c-master.c | 5 +++--
> > > >  1 file changed, 3 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c
> > > > index f22fb9e75142..eea08f00d7ce 100644
> > > > --- a/drivers/i3c/master/svc-i3c-master.c
> > > > +++ b/drivers/i3c/master/svc-i3c-master.c
> > > > @@ -998,9 +998,10 @@ static int svc_i3c_master_do_daa_locked(struct svc_i3c_master *master,
> > > >  			 * filling within a few hundred nanoseconds, which is significantly
> > > >  			 * faster compared to the 64 SCL clock cycles.
> > > >  			 */
> > > > -			dyn_addr = i3c_master_get_free_addr(&master->base, last_addr + 1);
> > > > -			if (dyn_addr < 0)
> > > > +			int dyn_addr_ret = i3c_master_get_free_addr(&master->base, last_addr + 1);
> > > > +			if (dyn_addr_ret < 0)
> > > >  				return -ENOSPC;
> > > > +			dyn_addr = dyn_addr_ret;
> > > >
> > > >  			writel(dyn_addr, master->regs + SVC_I3C_MWDATAB);
> > > >
> > > > --
> > > > 2.39.5
> > > >
> >
> > --
> > linux-i3c mailing list
> > linux-i3c@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-i3c
> 
> -- 
> linux-i3c mailing list
> linux-i3c@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-i3c

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

-- 
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

  reply	other threads:[~2025-03-20 22:01 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-17 10:15 [PATCH] i3c: master: svc: fix signed/unsigned mismatch in dynamic address assignment Qasim Ijaz
2025-03-17 10:15 ` Qasim Ijaz
2025-03-18 13:40 ` Frank Li
2025-03-18 13:40   ` Frank Li
2025-03-18 14:41   ` Qasim Ijaz
2025-03-18 14:41     ` Qasim Ijaz
2025-03-19 13:18     ` Frank Li
2025-03-19 13:18       ` Frank Li
2025-03-20 22:01       ` Alexandre Belloni [this message]
2025-03-20 22:01         ` Alexandre Belloni
  -- strict thread matches above, loose matches on Subject: below --
2025-03-09 16:43 Qasim Ijaz
2025-03-09 16:43 ` Qasim Ijaz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2025032022013134061aaa@mail.local \
    --to=alexandre.belloni@bootlin.com \
    --cc=Frank.li@nxp.com \
    --cc=imx@lists.linux.dev \
    --cc=linux-i3c@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miquel.raynal@bootlin.com \
    --cc=qasdev00@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.