Re: [PATCH] staging: gpib: Fix inadvertent negative shift
From: David Laight
Date: Thu Jan 16 2025 - 17:40:30 EST
On Thu, 16 Jan 2025 12:00:14 +0100
Dave Penkler <dpenkler@xxxxxxxxx> 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@xxxxxxxxx>
> ---
> 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 {