linux-crypto.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
To: Stafford Horne <shorne@gmail.com>
Cc: Mikulas Patocka <mpatocka@redhat.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andy Shevchenko <andy@kernel.org>,
	device-mapper development <dm-devel@redhat.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux Crypto Mailing List <linux-crypto@vger.kernel.org>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	Mike Snitzer <msnitzer@redhat.com>,
	Mimi Zohar <zohar@linux.ibm.com>,
	Milan Broz <gmazyland@gmail.com>
Subject: Re: [PATCH v2] hex2bin: make the function hex_to_bin constant-time
Date: Wed, 4 May 2022 11:42:27 +0200	[thread overview]
Message-ID: <YnJI4Ru0AlUgrr9C@zx2c4.com> (raw)
In-Reply-To: <YnI7hE4cIfjsdKSF@antec>

On Wed, May 04, 2022 at 05:38:28PM +0900, Stafford Horne wrote:
> Just a heads up it seems this patch is causing some instability with crypto self
> tests on OpenRISC when using a PREEMPT kernel (no SMP).
> 
> This was reported by Jason A. Donenfeld as it came up in wireguard testing.
> 
> I am trying to figure out if this is an OpenRISC PREEMPT issue or something
> else.

The code of this commit looks fine. And actually the bug goes away if
you just add a `pr_err("hello!\n");` to the function. Plus, the function
is never called by that test kernel.

Actually, the bug even goes away if you change the sign of the input
back to naked char (which might be semantically better anyway) and then
let the function itself do the sign change (see below).

So more likely is that this patch just helps unmask a real issue
elsewhere -- linker, compiler, or register restoration after preemption.
I don't think there's anything to do with regards to the patch of this
thread, as it's clearly fine. Unless you want that sign thing below, but
even then, who cares. We should keep digging in on the OpenRISC front.

Jason

diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index fe6efb24d151..a890428bcc1a 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -285,7 +285,7 @@ static inline char *hex_byte_pack_upper(char *buf, u8 byte)
 	return buf;
 }

-extern int hex_to_bin(unsigned char ch);
+extern int hex_to_bin(char ch);
 extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);
 extern char *bin2hex(char *dst, const void *src, size_t count);

diff --git a/lib/hexdump.c b/lib/hexdump.c
index 06833d404398..b636b4dcabe9 100644
--- a/lib/hexdump.c
+++ b/lib/hexdump.c
@@ -43,9 +43,9 @@ EXPORT_SYMBOL(hex_asc_upper);
  *	uppercase and lowercase letters, so we use (ch & 0xdf), which converts
  *	lowercase to uppercase
  */
-int hex_to_bin(unsigned char ch)
+int hex_to_bin(char ch)
 {
-	unsigned char cu = ch & 0xdf;
+	unsigned char cu = ch & 0xdfU;
 	return -1 +
 		((ch - '0' +  1) & (unsigned)((ch - '9' - 1) & ('0' - 1 - ch)) >> 8) +
 		((cu - 'A' + 11) & (unsigned)((cu - 'F' - 1) & ('A' - 1 - cu)) >> 8);


  parent reply	other threads:[~2022-05-04  9:42 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-24 20:54 [PATCH] hex2bin: make the function hex_to_bin constant-time Mikulas Patocka
2022-04-24 21:30 ` Joe Perches
2022-04-24 21:37 ` Linus Torvalds
2022-04-24 21:42   ` Linus Torvalds
2022-04-25  9:37     ` David Laight
2022-04-25 11:04       ` Mikulas Patocka
2022-04-25 12:59         ` David Laight
2022-04-25 13:33           ` Mikulas Patocka
2022-04-25 12:07   ` [PATCH v2] " Mikulas Patocka
2022-04-25 17:53     ` Linus Torvalds
2022-05-04  8:38     ` Stafford Horne
2022-05-04  8:57       ` Mikulas Patocka
2022-05-04  9:20         ` Andy Shevchenko
2022-05-04  9:47           ` Milan Broz
2022-05-04  9:50             ` Jason A. Donenfeld
2022-05-04 11:54           ` Mikulas Patocka
2022-05-04  9:42       ` Jason A. Donenfeld [this message]
2022-05-04  9:44         ` Jason A. Donenfeld
2022-05-04  9:57         ` Jason A. Donenfeld
2022-05-04 10:07           ` Andy Shevchenko
2022-05-04 10:15             ` Jason A. Donenfeld
2022-05-04 18:00               ` Linus Torvalds
2022-05-04 19:42                 ` Jason A. Donenfeld
2022-05-04 19:51                   ` Linus Torvalds
2022-05-04 20:00                     ` Linus Torvalds
2022-05-04 20:12                       ` Stafford Horne
2022-05-04 20:26                         ` Linus Torvalds
2022-05-04 21:24                           ` Linus Torvalds
2022-05-04 19:57                   ` Stafford Horne
2022-05-04 20:10                     ` Linus Torvalds
2022-05-04 20:38                       ` Stafford Horne
2022-05-08  0:37                         ` Stafford Horne
2022-05-11 12:17                           ` Stafford Horne

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=YnJI4Ru0AlUgrr9C@zx2c4.com \
    --to=jason@zx2c4.com \
    --cc=andy@kernel.org \
    --cc=davem@davemloft.net \
    --cc=dm-devel@redhat.com \
    --cc=gmazyland@gmail.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpatocka@redhat.com \
    --cc=msnitzer@redhat.com \
    --cc=shorne@gmail.com \
    --cc=torvalds@linux-foundation.org \
    --cc=zohar@linux.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).