lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl
PATCH v2 1/1 lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl
Commit 2d4d1eea540b ("lib/mpi: Add mpi sgl helpers") added mpi_write_to_sgl() which generates traps due to unaligned access on some platforms like sparc. Fix this by using the get_unaligned* and put_unaligned* functions.
---
v2: tadeusz.struk comments: Predicate on BYTES_PER_MPI_LIMB.
lib/mpi/mpicoder.c | 21 +++++++++++++++++---- 1 files changed, 17 insertions(+), 4 deletions(-)
lib/mpi/mpicoder.c +17 -4
@@ -21,6 +21,7 @@#include <linux/bitops.h> #include <linux/count_zeros.h> #include "mpi-internal.h" +#include <asm/unaligned.h> #define MAX_EXTERN_MPI_BITS 16384
@@ -405,10 +406,22 @@ int mpi_write_to_sgl(MPI a, struct scatterlist *sgl, unsigned *nbytes, p -=sizeof (alimb);continue ; }else { -mpi_limb_t *limb1 = (void *)p -sizeof (alimb); -mpi_limb_t *limb2 = (void *)p -sizeof (alimb) - + lzeros; - *limb1 = *limb2; +mpi_limb_t tmp; +#if BYTES_PER_MPI_LIMB ==4 + tmp =get_unaligned_be32 ((void *)p - +sizeof (alimb) + + lzeros); +put_unaligned_be32 (tmp, (void *)p - +sizeof (alimb)); +#elif BYTES_PER_MPI_LIMB ==8 + tmp =get_unaligned_be64 ((void *)p - +sizeof (alimb) + + lzeros); +put_unaligned_be64 (tmp, (void *)p - +sizeof (alimb)); +#else +#error please implement for this limb size. +#endif p -= lzeros; y = lzeros; }
Signature · 1 line
1.7.1
Herbert Xu
maintainerQuoted 8 lines · Sowmini Varadhan
Commit
2d4d1eea540b("lib/mpi: Add mpi sgl helpers") addedmpi_write_to_sgl()which generates traps due to unaligned access on some platforms like sparc. Fix this by using the get_unaligned* and put_unaligned* functions.Fixes 2d4d1eea540b ("lib/mpi: Add mpi sgl helpers")Signed-off-by Sowmini Varadhan <[email protected]>
Please cc linux-crypto.
Thanks,
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Quoted 4 lines · Herbert Xu
Subject: Re: [PATCH v2] lib/mpi: Fix kernel unaligned access in
mpi_write_to_sglPlease cc linux-crypto.
Just bounced the message to linux-crypto as well. I think get_maintainers.pl might also need to be updated to generate this automatically.
Thanks,
--Sowmini
Herbert Xu
maintainerQuoted 9 lines · Sowmini Varadhan
Quoted 4 lines · Herbert Xu
Subject: Re: [PATCH v2] lib/mpi: Fix kernel unaligned access in
mpi_write_to_sglPlease cc linux-crypto.
Just bounced the message to linux-crypto as well. I think get_maintainers.pl might also need to be updated to generate this automatically.
Sorry, but your patch doesn't apply against the current tree at all. Please rebase it if it is still needed.
Thanks,
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Quoted 3 lines · Herbert Xu
Sorry, but your patch doesn't apply against the current tree at all. Please rebase it if it is still needed.
Hello,
I had based my patch off of net-next, which is where I do my work.
I'd be happy to rebase it on the "current tree",
but given that mpicoder.c does not have an entry in MAINTAINERS, please clarify what you mean by "current tree" in this case.
do you mean
git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
or
git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
or
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
(which are the three possible candidates I can see in MAINTAINERS).
It would be nice to get this bug fixed, since the fix is fairly obvious, and the nuisance factor from the generated "unaligned access" messages on the impacted non-intel platforms is quite high,
thanks,
--Sowmini
Herbert Xu
maintainerQuoted 8 lines · Sowmini Varadhan
Quoted 3 lines · Herbert Xu
Sorry, but your patch doesn't apply against the current tree at all. Please rebase it if it is still needed.
Hello,
I had based my patch off of net-next, which is where I do my work.
Please base it on cryptodev.
Thanks,
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Quoted 3 lines · Herbert Xu
Please base it on cryptodev.
Looks like this got fixed in cryptodev by commit cece762f6f3c ("lib/mpi: mpi_write_sgl(): fix out-of-bounds stack access")
Thanks,
--Sowmini