* [PATCH] spi: atmel: Fix test unsigned var < 0 @ 2014-03-22 14:33 Axel Lin 2014-03-26 16:51 ` Mark Brown 0 siblings, 1 reply; 5+ messages in thread From: Axel Lin @ 2014-03-22 14:33 UTC (permalink / raw) To: Mark Brown; +Cc: Wenyou Yang, linux-spi-u79uwXL29TY76Z2rM5mHXA current_remaining_bytes is an unsigned long and cannot be below 0. Signed-off-by: Axel Lin <axel.lin-8E1dMatC8ynQT0dZR+AlfA@public.gmane.org> --- drivers/spi/spi-atmel.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c index bda961e..3e8c4cc 100644 --- a/drivers/spi/spi-atmel.c +++ b/drivers/spi/spi-atmel.c @@ -873,13 +873,11 @@ atmel_spi_pump_pio_data(struct atmel_spi *as, struct spi_transfer *xfer) } else { spi_readl(as, RDR); } - if (xfer->bits_per_word > 8) { + + if (xfer->bits_per_word > 8) as->current_remaining_bytes -= 2; - if (as->current_remaining_bytes < 0) - as->current_remaining_bytes = 0; - } else { + else as->current_remaining_bytes--; - } } /* Interrupt -- 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] spi: atmel: Fix test unsigned var < 0 2014-03-22 14:33 [PATCH] spi: atmel: Fix test unsigned var < 0 Axel Lin @ 2014-03-26 16:51 ` Mark Brown [not found] ` <20140326165145.GD14287-GFdadSzt00ze9xe1eoZjHA@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Mark Brown @ 2014-03-26 16:51 UTC (permalink / raw) To: Axel Lin; +Cc: Wenyou Yang, linux-spi-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 712 bytes --] On Sat, Mar 22, 2014 at 10:33:29PM +0800, Axel Lin wrote: > current_remaining_bytes is an unsigned long and cannot be below 0. > - if (xfer->bits_per_word > 8) { > + > + if (xfer->bits_per_word > 8) > as->current_remaining_bytes -= 2; > - if (as->current_remaining_bytes < 0) > - as->current_remaining_bytes = 0; > - } else { > + else > as->current_remaining_bytes--; > - } This removes an error check in the case that we set the remaining bytes to -1. The length validation the core does should ensure that never happens but it seems wrong to just ignore that - we should at least note in the changelog that the analysis has been done. Are you sure that the best fix isn't to just use an int here? [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <20140326165145.GD14287-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>]
* Re: [PATCH] spi: atmel: Fix test unsigned var < 0 [not found] ` <20140326165145.GD14287-GFdadSzt00ze9xe1eoZjHA@public.gmane.org> @ 2014-03-27 0:46 ` Axel Lin [not found] ` <CAFRkauBh+4-NmneTh=io7grG4MpSZ98riybAOOpEff+KiPZUjg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Axel Lin @ 2014-03-27 0:46 UTC (permalink / raw) To: Mark Brown; +Cc: Wenyou Yang, linux-spi 2014-03-27 0:51 GMT+08:00 Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>: > On Sat, Mar 22, 2014 at 10:33:29PM +0800, Axel Lin wrote: >> current_remaining_bytes is an unsigned long and cannot be below 0. > >> - if (xfer->bits_per_word > 8) { >> + >> + if (xfer->bits_per_word > 8) >> as->current_remaining_bytes -= 2; >> - if (as->current_remaining_bytes < 0) >> - as->current_remaining_bytes = 0; >> - } else { >> + else >> as->current_remaining_bytes--; >> - } > > This removes an error check in the case that we set the remaining bytes > to -1. The length validation the core does should ensure that never > happens but it seems wrong to just ignore that - we should at least note > in the changelog that the analysis has been done. I thought it never happen and there is no bug report for this so it's safe with this patch. > > Are you sure that the best fix isn't to just use an int here? Wenyou, Any comments for this? Regards, Axel -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <CAFRkauBh+4-NmneTh=io7grG4MpSZ98riybAOOpEff+KiPZUjg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* RE: [PATCH] spi: atmel: Fix test unsigned var < 0 [not found] ` <CAFRkauBh+4-NmneTh=io7grG4MpSZ98riybAOOpEff+KiPZUjg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2014-03-27 1:13 ` Yang, Wenyou 2014-03-27 1:23 ` Axel Lin 0 siblings, 1 reply; 5+ messages in thread From: Yang, Wenyou @ 2014-03-27 1:13 UTC (permalink / raw) To: Axel Lin, Mark Brown; +Cc: linux-spi > -----Original Message----- > From: Axel Lin [mailto:axel.lin-8E1dMatC8ynQT0dZR+AlfA@public.gmane.org] > Sent: Thursday, March 27, 2014 8:46 AM > To: Mark Brown > Cc: Yang, Wenyou; linux-spi > Subject: Re: [PATCH] spi: atmel: Fix test unsigned var < 0 > > 2014-03-27 0:51 GMT+08:00 Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>: > > On Sat, Mar 22, 2014 at 10:33:29PM +0800, Axel Lin wrote: > >> current_remaining_bytes is an unsigned long and cannot be below 0. > > > >> - if (xfer->bits_per_word > 8) { > >> + > >> + if (xfer->bits_per_word > 8) > >> as->current_remaining_bytes -= 2; > >> - if (as->current_remaining_bytes < 0) > >> - as->current_remaining_bytes = 0; > >> - } else { > >> + else > >> as->current_remaining_bytes--; > >> - } > > > > This removes an error check in the case that we set the remaining > > bytes to -1. The length validation the core does should ensure that > > never happens but it seems wrong to just ignore that - we should at > > least note in the changelog that the analysis has been done. > I thought it never happen and there is no bug report for this so it's > safe with this patch. > > > > > Are you sure that the best fix isn't to just use an int here? > Wenyou, > Any comments for this? Like Mark said, It seems it is more reasonable using a signed int, instead of unsigned int. -->8 --- diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c index 8005f98..485e6cc 100644 --- a/drivers/spi/spi-atmel.c +++ b/drivers/spi/spi-atmel.c @@ -224,7 +224,7 @@ struct atmel_spi { struct platform_device *pdev; struct spi_transfer *current_transfer; - unsigned long current_remaining_bytes; + int current_remaining_bytes; int done_status; struct completion xfer_completion; @@ -1110,6 +1110,8 @@ static int atmel_spi_one_transfer(struct spi_master *master, atmel_spi_next_xfer_pio(master, xfer); } else { as->current_remaining_bytes -= len; + if (as->current_remaining_bytes < 0) + as->current_remaining_bytes = 0; } } else { atmel_spi_next_xfer_pio(master, xfer); --<8 --- Best Regards, Wenyou Yang -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] spi: atmel: Fix test unsigned var < 0 2014-03-27 1:13 ` Yang, Wenyou @ 2014-03-27 1:23 ` Axel Lin 0 siblings, 0 replies; 5+ messages in thread From: Axel Lin @ 2014-03-27 1:23 UTC (permalink / raw) To: Yang, Wenyou; +Cc: Mark Brown, linux-spi 2014-03-27 9:13 GMT+08:00 Yang, Wenyou <Wenyou.Yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>: > >> -----Original Message----- >> From: Axel Lin [mailto:axel.lin-8E1dMatC8ynQT0dZR+AlfA@public.gmane.org] >> Sent: Thursday, March 27, 2014 8:46 AM >> To: Mark Brown >> Cc: Yang, Wenyou; linux-spi >> Subject: Re: [PATCH] spi: atmel: Fix test unsigned var < 0 >> >> 2014-03-27 0:51 GMT+08:00 Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>: >> > On Sat, Mar 22, 2014 at 10:33:29PM +0800, Axel Lin wrote: >> >> current_remaining_bytes is an unsigned long and cannot be below 0. >> > >> >> - if (xfer->bits_per_word > 8) { >> >> + >> >> + if (xfer->bits_per_word > 8) >> >> as->current_remaining_bytes -= 2; >> >> - if (as->current_remaining_bytes < 0) >> >> - as->current_remaining_bytes = 0; >> >> - } else { >> >> + else >> >> as->current_remaining_bytes--; >> >> - } >> > >> > This removes an error check in the case that we set the remaining >> > bytes to -1. The length validation the core does should ensure that >> > never happens but it seems wrong to just ignore that - we should at >> > least note in the changelog that the analysis has been done. >> I thought it never happen and there is no bug report for this so it's >> safe with this patch. >> >> > >> > Are you sure that the best fix isn't to just use an int here? >> Wenyou, >> Any comments for this? > > Like Mark said, It seems it is more reasonable using a signed int, instead of unsigned int. OK. I'm sending a formal patch with your Signed-off-by now. Regards, Axel -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-03-27 1:23 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-03-22 14:33 [PATCH] spi: atmel: Fix test unsigned var < 0 Axel Lin 2014-03-26 16:51 ` Mark Brown [not found] ` <20140326165145.GD14287-GFdadSzt00ze9xe1eoZjHA@public.gmane.org> 2014-03-27 0:46 ` Axel Lin [not found] ` <CAFRkauBh+4-NmneTh=io7grG4MpSZ98riybAOOpEff+KiPZUjg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-03-27 1:13 ` Yang, Wenyou 2014-03-27 1:23 ` Axel Lin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).