[PATCH] staging: gpib: Fix inadvertent negative shift

Dave Penkler posted 1 patch 2 weeks, 6 days ago
drivers/staging/gpib/include/amcc5920.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] staging: gpib: Fix inadvertent negative shift
Posted by Dave Penkler 2 weeks, 6 days ago
During the initial checkpatch cleanup, when removing blanks
after open parentheses, a minus sign in the argument of a shift
operation was deleted by mistake. This transformed a pre-decrement
operation into a negation.

The result of a negative shift is undefined and a warning was
signalled by sparse.

Restore the pre-decrement operation.

Fixes: 6c52d5e3cde2 ("staging: gpib: Add common include files for GPIB drivers")
Signed-off-by: Dave Penkler <dpenkler@gmail.com>
---
 drivers/staging/gpib/include/amcc5920.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/gpib/include/amcc5920.h b/drivers/staging/gpib/include/amcc5920.h
index 766b3799223f..7a88bd282feb 100644
--- a/drivers/staging/gpib/include/amcc5920.h
+++ b/drivers/staging/gpib/include/amcc5920.h
@@ -22,7 +22,7 @@ static const int bits_per_region = 8;
 
 static inline uint32_t amcc_wait_state_bits(unsigned int region, unsigned int num_wait_states)
 {
-	return (num_wait_states & 0x7) << (-region * bits_per_region);
+	return (num_wait_states & 0x7) << (--region * bits_per_region);
 };
 
 enum amcc_prefetch_bits {
-- 
2.47.1
Re: [PATCH] staging: gpib: Fix inadvertent negative shift
Posted by David Laight 2 weeks, 5 days ago
On Thu, 16 Jan 2025 12:00:14 +0100
Dave Penkler <dpenkler@gmail.com> wrote:

> During the initial checkpatch cleanup, when removing blanks
> after open parentheses, a minus sign in the argument of a shift
> operation was deleted by mistake. This transformed a pre-decrement
> operation into a negation.
> 
> The result of a negative shift is undefined and a warning was
> signalled by sparse.
> 
> Restore the pre-decrement operation.
> 
> Fixes: 6c52d5e3cde2 ("staging: gpib: Add common include files for GPIB drivers")
> Signed-off-by: Dave Penkler <dpenkler@gmail.com>
> ---
>  drivers/staging/gpib/include/amcc5920.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/staging/gpib/include/amcc5920.h b/drivers/staging/gpib/include/amcc5920.h
> index 766b3799223f..7a88bd282feb 100644
> --- a/drivers/staging/gpib/include/amcc5920.h
> +++ b/drivers/staging/gpib/include/amcc5920.h
> @@ -22,7 +22,7 @@ static const int bits_per_region = 8;
>  
>  static inline uint32_t amcc_wait_state_bits(unsigned int region, unsigned int num_wait_states)
>  {
> -	return (num_wait_states & 0x7) << (-region * bits_per_region);
> +	return (num_wait_states & 0x7) << (--region * bits_per_region);

It would be much better to use (region - 1).

	David

>  };
>  
>  enum amcc_prefetch_bits {
Re: [PATCH] staging: gpib: Fix inadvertent negative shift
Posted by Dave Penkler 2 weeks, 4 days ago
On Thu, Jan 16, 2025 at 10:40:03PM +0000, David Laight wrote:
> On Thu, 16 Jan 2025 12:00:14 +0100
> Dave Penkler <dpenkler@gmail.com> wrote:
> 
> > During the initial checkpatch cleanup, when removing blanks
> > after open parentheses, a minus sign in the argument of a shift
> > operation was deleted by mistake. This transformed a pre-decrement
> > operation into a negation.
> > 
> > The result of a negative shift is undefined and a warning was
> > signalled by sparse.
> > 
> > Restore the pre-decrement operation.
> > 
> > Fixes: 6c52d5e3cde2 ("staging: gpib: Add common include files for GPIB drivers")
> > Signed-off-by: Dave Penkler <dpenkler@gmail.com>
> > ---
> >  drivers/staging/gpib/include/amcc5920.h | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/staging/gpib/include/amcc5920.h b/drivers/staging/gpib/include/amcc5920.h
> > index 766b3799223f..7a88bd282feb 100644
> > --- a/drivers/staging/gpib/include/amcc5920.h
> > +++ b/drivers/staging/gpib/include/amcc5920.h
> > @@ -22,7 +22,7 @@ static const int bits_per_region = 8;
> >  
> >  static inline uint32_t amcc_wait_state_bits(unsigned int region, unsigned int num_wait_states)
> >  {
> > -	return (num_wait_states & 0x7) << (-region * bits_per_region);
> > +	return (num_wait_states & 0x7) << (--region * bits_per_region);
> 
> It would be much better to use (region - 1).
Hi,
You are right. I will send a separate patch to change this instance and
all the others in the file.
cheers,
-dave