All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Biggers <ebiggers@kernel.org>
To: Leon Romanovsky <leon@kernel.org>
Cc: Mustafa Ismail <mustafa.ismail@intel.com>,
	Tatyana Nikolova <tatyana.e.nikolova@intel.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] RDMA/irdma: switch to using the crc32c library
Date: Mon, 10 Feb 2025 10:00:05 -0800	[thread overview]
Message-ID: <20250210180005.GE1264@sol.localdomain> (raw)
In-Reply-To: <20250209154416.GA1230@sol.localdomain>

On Sun, Feb 09, 2025 at 07:44:18AM -0800, Eric Biggers wrote:
> On Sun, Feb 09, 2025 at 11:12:55AM +0200, Leon Romanovsky wrote:
> > On Thu, Feb 06, 2025 at 07:57:50PM -0800, Eric Biggers wrote:
> > > On Thu, Feb 06, 2025 at 07:36:43PM -0800, Eric Biggers wrote:
> > > > +int irdma_ieq_check_mpacrc(const void *addr, u32 len, u32 val)
> > > >  {
> > > > -	u32 crc = 0;
> > > > -
> > > > -	crypto_shash_digest(desc, addr, len, (u8 *)&crc);
> > > > -	if (crc != val)
> > > > +	if (~crc32c(~0, addr, len) != val)
> > > >  		return -EINVAL;
> > > >  
> > > >  	return 0;
> > > >  }
> > > 
> > > Sorry, I just realized this isn't actually equivalent on big endian CPUs, since
> > > the byte array produced by crypto_shash_digest() used little endian byte order,
> > > whereas crc32c() just returns a CPU endian value.
> > > 
> > > And of course this broken subsystem uses u32 for the little endian values
> > > instead of __le32 like the result of the kernel.
> > > 
> > > Not sure it's worth my time to continue to try to fix this subsystem properly.
> > 
> > There is no need to be such dramatic. You are not fixing anything by
> > switch to new APIs
> 
> Exactly.  That's because I dropped the patches that actually did fix real
> endianness bugs, because of the pointless pushback I received -- see
> https://lore.kernel.org/linux-rdma/20250127223840.67280-1-ebiggers@kernel.org/T/#u

Anyway, I already sent v3 of this patch that keeps the cpu_to_le32() to maintain
the exact same behavior as the old code, so please consider that if you are
interested.  Note that I had to add '(__force u32)' to be compatible with this
driver's incorrect types, but that was effectively already there before, just
hidden by writing bytes into a u32.

- Eric

      reply	other threads:[~2025-02-10 18:00 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-07  3:36 [PATCH v2] RDMA/irdma: switch to using the crc32c library Eric Biggers
2025-02-07  3:57 ` Eric Biggers
2025-02-09  9:12   ` Leon Romanovsky
2025-02-09 15:44     ` Eric Biggers
2025-02-10 18:00       ` Eric Biggers [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250210180005.GE1264@sol.localdomain \
    --to=ebiggers@kernel.org \
    --cc=jgg@ziepe.ca \
    --cc=leon@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=mustafa.ismail@intel.com \
    --cc=tatyana.e.nikolova@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.