On Sat, Jan 04, 2025 at 08:45:10AM +0800, Herbert Xu wrote: > On Thu, Dec 26, 2024 at 07:08:03PM +0100, Lukas Wunner wrote: > > > > diff --git a/crypto/ecdsa-p1363.c b/crypto/ecdsa-p1363.c > > index eaae7214d69b..c4f458df18ed 100644 > > --- a/crypto/ecdsa-p1363.c > > +++ b/crypto/ecdsa-p1363.c > > @@ -21,7 +21,7 @@ static int ecdsa_p1363_verify(struct crypto_sig *tfm, > > const void *digest, unsigned int dlen) > > { > > struct ecdsa_p1363_ctx *ctx = crypto_sig_ctx(tfm); > > - unsigned int keylen = crypto_sig_keysize(ctx->child); > > + unsigned int keylen = DIV_ROUND_UP(crypto_sig_keysize(ctx->child), 8); > > This may overflow unnecessarily, please rewrite these as: > > X / 8 + !!(X & 7) Interesting. Wouldn't it make sense to have a DIV_ROUND_UP_SAFE() macro for cases like this? I'd expect this version to actually be faster than DIV_ROUND_UP(): There's the extra logical AND, as well as the negation. But the "n / d" and "!!(n & (d - 1))" can be computed in parallel. Thanks, Lukas