[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <804a6d40-73a4-4af6-944b-95e9324d7429@rowland.harvard.edu>
Date: Wed, 31 Jul 2024 10:04:33 -0400
From: Alan Stern <stern@...land.harvard.edu>
To: Oliver Neukum <oneukum@...e.com>
Cc: Abhishek Tamboli <abhishektamboli9@...il.com>,
gregkh@...uxfoundation.org, usb-storage@...ts.one-eyed-alien.net,
linux-usb@...r.kernel.org, skhan@...uxfoundation.org,
dan.carpenter@...aro.org, rbmarliere@...il.com,
linux-kernel-mentees@...ts.linuxfoundation.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] usb: storage: ene_ub6250: Fix right shift warnings
On Wed, Jul 31, 2024 at 11:15:28AM +0200, 'Oliver Neukum' via USB Mass Storage on Linux wrote:
> Hi,
>
> On 30.07.24 19:56, Abhishek Tamboli wrote:
> > On Tue, Jul 30, 2024 at 09:09:05AM +0200, Oliver Neukum wrote:
>
> > > 1. use a constant, where a constant is used
> > I think you are suggesting that I should replace hard-coded values like the
> > buffer size with named constants. For example:
> >
> > #define BUF_SIZE 8
> > unsigned char buf[BUF_SIZE];
>
> Yes, but the constant we need to look at here is bl_len.
> This is a variable needlessly.
The code in ms_scsi_read_capacity() is written that way to be consistent
with the sd_scsi_read_capacity() routine. Or maybe it was just
copied-and-pasted, and then the variable's type was changed for no good
reason.
Replacing the variable with a constant won't make much difference. The
compiler will realize that bl_len has a constant value and will generate
appropriate code anyway. I think just changing the type is a fine fix.
> > > 2. use the macros for converting endianness
> > Can I use macros like cpu_to_le32 for converting the bl_num and bl_len values.
> > Should I replace all instances of manual bitwise shifts with these macros?
>
> Yes.
>
> > For example:
> >
> > u32 bl_len = 0x200;
> > buf[0] = cpu_to_le32(bl_num) >> 24;
> > buf[4] = cpu_to_le32(bl_len) >> 24;
> >
> > Is using cpu_to_le32 appropriate for the data format required by this
> > device?
>
> Well, the format is big endian. So, cpu_to_be32() will be required.
Better yet, use put_unaligned_be32(). However, there's nothing really
wrong with the code as it stands. It doesn't need to be changed now.
Alan Stern
Powered by blists - more mailing lists