All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl
@ 2016-04-27 17:43 Sowmini Varadhan
  2016-04-28  1:01 ` Herbert Xu
  0 siblings, 1 reply; 8+ messages in thread
From: Sowmini Varadhan @ 2016-04-27 17:43 UTC (permalink / raw)
  To: sowmini.varadhan, tadeusz.struk, linux-kernel
  Cc: herbert, smueller, mmarek, arnd, andrew.zaborowski


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.

Fixes: 2d4d1eea540b ("lib/mpi: Add mpi sgl helpers")
Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
---
v2: tadeusz.struk comments: Predicate on BYTES_PER_MPI_LIMB.

 lib/mpi/mpicoder.c |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/lib/mpi/mpicoder.c b/lib/mpi/mpicoder.c
index eb15e7d..b61eb6b 100644
--- a/lib/mpi/mpicoder.c
+++ b/lib/mpi/mpicoder.c
@@ -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;
 			}
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl
  2016-04-27 17:43 [PATCH v2] lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl Sowmini Varadhan
@ 2016-04-28  1:01 ` Herbert Xu
  2016-04-28  1:08   ` Sowmini Varadhan
  0 siblings, 1 reply; 8+ messages in thread
From: Herbert Xu @ 2016-04-28  1:01 UTC (permalink / raw)
  To: Sowmini Varadhan
  Cc: tadeusz.struk, linux-kernel, smueller, mmarek, arnd, andrew.zaborowski

On Wed, Apr 27, 2016 at 01:43:56PM -0400, Sowmini Varadhan wrote:
> 
> 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.
> 
> Fixes: 2d4d1eea540b ("lib/mpi: Add mpi sgl helpers")
> Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>

Please cc linux-crypto.

Thanks,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl
  2016-04-28  1:01 ` Herbert Xu
@ 2016-04-28  1:08   ` Sowmini Varadhan
  2016-05-03  8:12     ` Herbert Xu
  0 siblings, 1 reply; 8+ messages in thread
From: Sowmini Varadhan @ 2016-04-28  1:08 UTC (permalink / raw)
  To: Herbert Xu
  Cc: tadeusz.struk, linux-kernel, smueller, mmarek, arnd, andrew.zaborowski

On (04/28/16 09:01), Herbert Xu wrote:
> Subject: Re: [PATCH v2] lib/mpi: Fix kernel unaligned access in
>  mpi_write_to_sgl
> 
> Please 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl
  2016-04-28  1:08   ` Sowmini Varadhan
@ 2016-05-03  8:12     ` Herbert Xu
  2016-05-03 10:19       ` Sowmini Varadhan
  0 siblings, 1 reply; 8+ messages in thread
From: Herbert Xu @ 2016-05-03  8:12 UTC (permalink / raw)
  To: Sowmini Varadhan
  Cc: tadeusz.struk, linux-kernel, smueller, mmarek, arnd,
	andrew.zaborowski, Linux Crypto Mailing List

On Wed, Apr 27, 2016 at 09:08:27PM -0400, Sowmini Varadhan wrote:
> On (04/28/16 09:01), Herbert Xu wrote:
> > Subject: Re: [PATCH v2] lib/mpi: Fix kernel unaligned access in
> >  mpi_write_to_sgl
> > 
> > Please 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,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl
  2016-05-03  8:12     ` Herbert Xu
@ 2016-05-03 10:19       ` Sowmini Varadhan
  2016-05-04  2:32         ` Herbert Xu
  0 siblings, 1 reply; 8+ messages in thread
From: Sowmini Varadhan @ 2016-05-03 10:19 UTC (permalink / raw)
  To: Herbert Xu
  Cc: tadeusz.struk, linux-kernel, smueller, mmarek, arnd,
	andrew.zaborowski, Linux Crypto Mailing List

On (05/03/16 16:12), Herbert Xu wrote:
> 
> 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl
  2016-05-03 10:19       ` Sowmini Varadhan
@ 2016-05-04  2:32         ` Herbert Xu
  2016-05-04 11:05           ` Sowmini Varadhan
  0 siblings, 1 reply; 8+ messages in thread
From: Herbert Xu @ 2016-05-04  2:32 UTC (permalink / raw)
  To: Sowmini Varadhan
  Cc: tadeusz.struk, linux-kernel, smueller, mmarek, arnd,
	andrew.zaborowski, Linux Crypto Mailing List

On Tue, May 03, 2016 at 06:19:15AM -0400, Sowmini Varadhan wrote:
> On (05/03/16 16:12), Herbert Xu wrote:
> > 
> > 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,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl
  2016-05-04  2:32         ` Herbert Xu
@ 2016-05-04 11:05           ` Sowmini Varadhan
  0 siblings, 0 replies; 8+ messages in thread
From: Sowmini Varadhan @ 2016-05-04 11:05 UTC (permalink / raw)
  To: Herbert Xu
  Cc: tadeusz.struk, linux-kernel, smueller, mmarek, arnd,
	andrew.zaborowski, Linux Crypto Mailing List

On (05/04/16 10:32), Herbert Xu wrote:
> 
> 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2] lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl
@ 2016-04-27 17:43 Sowmini Varadhan
  0 siblings, 0 replies; 8+ messages in thread
From: Sowmini Varadhan @ 2016-04-27 17:43 UTC (permalink / raw)
  To: sowmini.varadhan, tadeusz.struk, linux-kernel
  Cc: herbert, smueller, mmarek, arnd, andrew.zaborowski


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.

Fixes: 2d4d1eea540b ("lib/mpi: Add mpi sgl helpers")
Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
---
v2: tadeusz.struk comments: Predicate on BYTES_PER_MPI_LIMB.

 lib/mpi/mpicoder.c |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/lib/mpi/mpicoder.c b/lib/mpi/mpicoder.c
index eb15e7d..b61eb6b 100644
--- a/lib/mpi/mpicoder.c
+++ b/lib/mpi/mpicoder.c
@@ -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;
 			}
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-05-04 11:05 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-27 17:43 [PATCH v2] lib/mpi: Fix kernel unaligned access in mpi_write_to_sgl Sowmini Varadhan
2016-04-28  1:01 ` Herbert Xu
2016-04-28  1:08   ` Sowmini Varadhan
2016-05-03  8:12     ` Herbert Xu
2016-05-03 10:19       ` Sowmini Varadhan
2016-05-04  2:32         ` Herbert Xu
2016-05-04 11:05           ` Sowmini Varadhan
2016-04-27 17:43 Sowmini Varadhan

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.