Re: [PATCH] dm-crypt: Fix per-bio data alignment

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 18.08.2014 20:36, Milan Broz wrote:
The commit
   298a9fa08a1577211d42a75e8fc073baef61e0d9
   dm crypt: use per-bio data
causes OOPS on 32bit i686 architecture

   BUG: unable to handle kernel paging request at 20000000
   IP: [<e0fe2433>] clone_endio+0x13/0xe0 [dm_mod]
   ...

  [<c1257b61>] bio_endio+0x61/0x90
  [<e142476c>] crypt_dec_pending+0x8c/0xd0 [dm_crypt]
  [<e142666f>] kcryptd_crypt+0x4bf/0x4f0 [dm_crypt]

This patch fixes the issue by aligning per-bio alocated structure size.

Reported-by: Krzysztof Kolasa <kkolasa@xxxxxxxxxx>
Signed-off-by: Milan Broz <gmazyland@xxxxxxxxx>
---
  drivers/md/dm-crypt.c | 7 ++++---
  1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index 2785007..33f26a2 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -1735,9 +1735,10 @@ static int crypt_ctr(struct dm_target *ti, unsigned int argc, char **argv)
  		goto bad;
  	}
- cc->per_bio_data_size = ti->per_bio_data_size =
-				sizeof(struct dm_crypt_io) + cc->dmreq_start +
-				sizeof(struct dm_crypt_request) + cc->iv_size;
+	cc->per_bio_data_size = ALIGN(sizeof(struct dm_crypt_io) + cc->dmreq_start +
+				      sizeof(struct dm_crypt_request) + cc->iv_size,
+				      ARCH_KMALLOC_MINALIGN);
+	ti->per_bio_data_size = cc->per_bio_data_size;
cc->page_pool = mempool_create_page_pool(MIN_POOL_PAGES, 0);
  	if (!cc->page_pool) {

patch tested positive for x86 ( no oops ) and x86_64 ( continues to work OK ).

thanks

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

--
dm-devel mailing list
dm-devel@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/dm-devel

[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux