diff mbox series

iio: adc: mcp3911: fix sizeof() vs ARRAY_SIZE() bug

Message ID YzFsjY3xLHUQMjVr@kili (mailing list archive)
State Accepted
Headers show
Series iio: adc: mcp3911: fix sizeof() vs ARRAY_SIZE() bug | expand

Commit Message

Dan Carpenter Sept. 26, 2022, 9:10 a.m. UTC
This code uses sizeof() instead of ARRAY_SIZE() so it reads beyond the
end of the mcp3911_osr_table[] array.

Fixes: 6d965885f4ea ("iio: adc: mcp3911: add support for oversampling ratio")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/iio/adc/mcp3911.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Marcus Folkesson Sept. 26, 2022, 11:18 a.m. UTC | #1
Hi,

Good catch.
Too bad I missed it.

/Marcus

On Mon, Sep 26, 2022 at 12:10:37PM +0300, Dan Carpenter wrote:
> This code uses sizeof() instead of ARRAY_SIZE() so it reads beyond the
> end of the mcp3911_osr_table[] array.
> 
> Fixes: 6d965885f4ea ("iio: adc: mcp3911: add support for oversampling ratio")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Reviewed-by: Marcus Folkesson <marcus.folkesson@gmail.com>

> ---
>  drivers/iio/adc/mcp3911.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/mcp3911.c b/drivers/iio/adc/mcp3911.c
> index b35fd2c9c3c0..015a9ffdb26a 100644
> --- a/drivers/iio/adc/mcp3911.c
> +++ b/drivers/iio/adc/mcp3911.c
> @@ -248,7 +248,7 @@ static int mcp3911_write_raw(struct iio_dev *indio_dev,
>  		break;
>  
>  	case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
> -		for (int i = 0; i < sizeof(mcp3911_osr_table); i++) {
> +		for (int i = 0; i < ARRAY_SIZE(mcp3911_osr_table); i++) {
>  			if (val == mcp3911_osr_table[i]) {
>  				val = FIELD_PREP(MCP3911_CONFIG_OSR, i);
>  				ret = mcp3911_update(adc, MCP3911_REG_CONFIG, MCP3911_CONFIG_OSR,
> -- 
> 2.35.1
>
Jonathan Cameron Oct. 2, 2022, 12:20 p.m. UTC | #2
On Mon, 26 Sep 2022 13:18:58 +0200
Marcus Folkesson <marcus.folkesson@gmail.com> wrote:

> Hi,
> 
> Good catch.
> Too bad I missed it.
> 
> /Marcus
> 
> On Mon, Sep 26, 2022 at 12:10:37PM +0300, Dan Carpenter wrote:
> > This code uses sizeof() instead of ARRAY_SIZE() so it reads beyond the
> > end of the mcp3911_osr_table[] array.
> > 
> > Fixes: 6d965885f4ea ("iio: adc: mcp3911: add support for oversampling ratio")
> > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>  
> 
> Reviewed-by: Marcus Folkesson <marcus.folkesson@gmail.com>
Applied to the fixes-togreg branch of iio.git, but I'm not going to push that
tree out until Linus takes the char-misc-next pull request as otherwise I'll make
a mess of linux-next as the trees will effectively merge out of normal order.

Jonathan

> 
> > ---
> >  drivers/iio/adc/mcp3911.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/iio/adc/mcp3911.c b/drivers/iio/adc/mcp3911.c
> > index b35fd2c9c3c0..015a9ffdb26a 100644
> > --- a/drivers/iio/adc/mcp3911.c
> > +++ b/drivers/iio/adc/mcp3911.c
> > @@ -248,7 +248,7 @@ static int mcp3911_write_raw(struct iio_dev *indio_dev,
> >  		break;
> >  
> >  	case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
> > -		for (int i = 0; i < sizeof(mcp3911_osr_table); i++) {
> > +		for (int i = 0; i < ARRAY_SIZE(mcp3911_osr_table); i++) {
> >  			if (val == mcp3911_osr_table[i]) {
> >  				val = FIELD_PREP(MCP3911_CONFIG_OSR, i);
> >  				ret = mcp3911_update(adc, MCP3911_REG_CONFIG, MCP3911_CONFIG_OSR,
> > -- 
> > 2.35.1
> >
diff mbox series

Patch

diff --git a/drivers/iio/adc/mcp3911.c b/drivers/iio/adc/mcp3911.c
index b35fd2c9c3c0..015a9ffdb26a 100644
--- a/drivers/iio/adc/mcp3911.c
+++ b/drivers/iio/adc/mcp3911.c
@@ -248,7 +248,7 @@  static int mcp3911_write_raw(struct iio_dev *indio_dev,
 		break;
 
 	case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
-		for (int i = 0; i < sizeof(mcp3911_osr_table); i++) {
+		for (int i = 0; i < ARRAY_SIZE(mcp3911_osr_table); i++) {
 			if (val == mcp3911_osr_table[i]) {
 				val = FIELD_PREP(MCP3911_CONFIG_OSR, i);
 				ret = mcp3911_update(adc, MCP3911_REG_CONFIG, MCP3911_CONFIG_OSR,