Message ID | 20220721073909.23318-1-srinivas.neeli@xilinx.com |
---|---|
State | Accepted |
Commit | 32c094a09d5829ad9b02cdf667569aefa8de0ea6 |
Headers | show |
Series | gpio: gpio-xilinx: Fix integer overflow | expand |
On Thu, Jul 21, 2022 at 9:39 AM Srinivas Neeli <srinivas.neeli@xilinx.com> wrote: > > Current implementation is not able to configure more than 32 pins > due to incorrect data type. So type casting with unsigned long > to avoid it. > > Fixes: 02b3f84d9080 ("xilinx: Switch to use bitmap APIs") > Signed-off-by: Srinivas Neeli <srinivas.neeli@xilinx.com> > --- > drivers/gpio/gpio-xilinx.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpio/gpio-xilinx.c b/drivers/gpio/gpio-xilinx.c > index b6d3a57e27ed..7f8e2fed2988 100644 > --- a/drivers/gpio/gpio-xilinx.c > +++ b/drivers/gpio/gpio-xilinx.c > @@ -99,7 +99,7 @@ static inline void xgpio_set_value32(unsigned long *map, int bit, u32 v) > const unsigned long offset = (bit % BITS_PER_LONG) & BIT(5); > > map[index] &= ~(0xFFFFFFFFul << offset); > - map[index] |= v << offset; > + map[index] |= (unsigned long)v << offset; > } > > static inline int xgpio_regoffset(struct xgpio_instance *chip, int ch) > -- > 2.17.1 > Applied, thanks! Bart
On Fri, Jul 22, 2022 at 9:19 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote: > On Thu, Jul 21, 2022 at 9:39 AM Srinivas Neeli > <srinivas.neeli@xilinx.com> wrote: > > > > Current implementation is not able to configure more than 32 pins > > due to incorrect data type. So type casting with unsigned long > > to avoid it. > > Fixes: 02b3f84d9080 ("xilinx: Switch to use bitmap APIs") It doesn't fix anything, I already reject one such "fix" during development of this patch. Thanks! ... > > @@ -99,7 +99,7 @@ static inline void xgpio_set_value32(unsigned long *map, int bit, u32 v) > > const unsigned long offset = (bit % BITS_PER_LONG) & BIT(5); > > > > map[index] &= ~(0xFFFFFFFFul << offset); > > - map[index] |= v << offset; > > + map[index] |= (unsigned long)v << offset; > > } > Applied, thanks! False positive.
On Mon, Jul 25, 2022 at 10:04 PM Andy Shevchenko <andy.shevchenko@gmail.com> wrote: > On Fri, Jul 22, 2022 at 9:19 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote: > > On Thu, Jul 21, 2022 at 9:39 AM Srinivas Neeli > > <srinivas.neeli@xilinx.com> wrote: > > > > > > Current implementation is not able to configure more than 32 pins > > > due to incorrect data type. So type casting with unsigned long > > > to avoid it. > > > > Fixes: 02b3f84d9080 ("xilinx: Switch to use bitmap APIs") > > It doesn't fix anything, I already reject one such "fix" during > development of this patch. Thanks! Sorry, not my day, it was something else that time... See below. > ... > > > > @@ -99,7 +99,7 @@ c > > > Applied, thanks! > > False positive. Reading again... You mean that unsigned long x = y << 32; wouldn't work?
On Mon, Jul 25, 2022 at 10:21 PM Andy Shevchenko <andy.shevchenko@gmail.com> wrote: > On Mon, Jul 25, 2022 at 10:04 PM Andy Shevchenko > <andy.shevchenko@gmail.com> wrote: > > On Fri, Jul 22, 2022 at 9:19 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote: > > > On Thu, Jul 21, 2022 at 9:39 AM Srinivas Neeli > > > <srinivas.neeli@xilinx.com> wrote: ... > Reading again... You mean that > > unsigned long x = y << 32; > > wouldn't work? Yeah, I even checked this in asm, and indeed it doesn't work. Don't know what was that about me... Thanks for the fix, Reviewed-by: Andy Shevchenko <andy.shevchenlko@gmail.com>
diff --git a/drivers/gpio/gpio-xilinx.c b/drivers/gpio/gpio-xilinx.c index b6d3a57e27ed..7f8e2fed2988 100644 --- a/drivers/gpio/gpio-xilinx.c +++ b/drivers/gpio/gpio-xilinx.c @@ -99,7 +99,7 @@ static inline void xgpio_set_value32(unsigned long *map, int bit, u32 v) const unsigned long offset = (bit % BITS_PER_LONG) & BIT(5); map[index] &= ~(0xFFFFFFFFul << offset); - map[index] |= v << offset; + map[index] |= (unsigned long)v << offset; } static inline int xgpio_regoffset(struct xgpio_instance *chip, int ch)
Current implementation is not able to configure more than 32 pins due to incorrect data type. So type casting with unsigned long to avoid it. Fixes: 02b3f84d9080 ("xilinx: Switch to use bitmap APIs") Signed-off-by: Srinivas Neeli <srinivas.neeli@xilinx.com> --- drivers/gpio/gpio-xilinx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)