All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-networking][PATCH v2] iscsitarget: Fix call trace of ahash API calling
@ 2017-01-18  1:34 zhe.he
  0 siblings, 0 replies; only message in thread
From: zhe.he @ 2017-01-18  1:34 UTC (permalink / raw)
  To: openembedded-devel

From: He Zhe <zhe.he@windriver.com>

The previous build_with_updated_interfaces_of_linux_v4.8_and_above.patch
does not alloc struct ahash_request before using it. This will cause the
kernel call trace below when calling gen_scsiid on kernel 4.8 or later
version.

This patch normalizes the calling of ahash API according to the example
in kernel doc Documentation/crypto/api-intro.txt.

BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
IP: [<ffffffffa0008d45>] volume_add+0x625/0x7f0 [iscsi_trgt]
PGD dd77067 PUD dd7c067 PMD 0
Oops: 0000 [#1] PREEMPT SMP
Modules linked in: iscsi_trgt(O)
CPU: 0 PID: 350 Comm: ietd Tainted: G           O    4.8.12-yocto-standard #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
task: ffff88000dfe2c00 task.stack: ffff88000de88000
RIP: 0010:[<ffffffffa0008d45>]  [<ffffffffa0008d45>] volume_add+0x625/0x7f0 [iscsi_trgt]
RSP: 0018:ffff88000de8bd90  EFLAGS: 00000206
RAX: 000000000000ddfa RBX: ffff88000ddd1d78 RCX: ffffea0000000000
RDX: 0000000000000600 RSI: 0000000000000000 RDI: ffff88000ddd1c14
RBP: ffff88000de8be38 R08: ffff88000de44180 R09: ffff88000de8bdd0
R10: 000000000000002c R11: 0000000000000000 R12: ffff88000ddfa600
R13: 0000000000000000 R14: 0000000000000000 R15: ffff88000de92200
FS:  00007f767548b700(0000) GS:ffff88000fc00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000020 CR3: 000000000dd2d000 CR4: 00000000000006f0
Stack:
 ffff88000de8bdd0 ffff88000dc1b3d0 ffff88000ddfa650 ffff88000ddfa660
 ffff88000df8f000 ffff88000ddd1c00 ffff88000de44180 0000000000000000
 ffffea0000377440 0000000f00000c14 0000000000000000 0000000000000000
Call Trace:
 [<ffffffffa0006547>] ioctl+0x217/0x390 [iscsi_trgt]
 [<ffffffff81192574>] do_vfs_ioctl+0x94/0x5c0
 [<ffffffff8117ff73>] ? vfs_read+0xf3/0x120
 [<ffffffff81192b19>] SyS_ioctl+0x79/0x90
 [<ffffffff8191a45b>] entry_SYSCALL_64_fastpath+0x13/0x8f
Code: 4c 01 e0 0f 82 a2 01 00 00 48 b9 00 00 00 80 ff 77 00 00 48 01
c8 45 31 f6 48 b9 00 00 00 00 00 ea ff ff 89 54 24 68 48 c1 e8 0c <49>
8b 56 20 4c 89 44 24 20 4c 89 f7 48 c1 e0 06 c7 44 24 6c 04
RIP  [<ffffffffa0008d45>] volume_add+0x625/0x7f0 [iscsi_trgt]
 RSP <ffff88000de8bd90>
CR2: 0000000000000020
end trace cd2016297df21635 ]
ietd_response_recv 200 0 -5
Input/output error.

Signed-off-by: He Zhe <zhe.he@windriver.com>
---
 .../fix-call-trace-of-ahash-API-calling.patch      | 85 ++++++++++++++++++++++
 .../iscsitarget/iscsitarget_1.4.20.3+svn502.bb     |  3 +-
 2 files changed, 87 insertions(+), 1 deletion(-)
 create mode 100644 meta-networking/recipes-extended/iscsitarget/files/fix-call-trace-of-ahash-API-calling.patch

diff --git a/meta-networking/recipes-extended/iscsitarget/files/fix-call-trace-of-ahash-API-calling.patch b/meta-networking/recipes-extended/iscsitarget/files/fix-call-trace-of-ahash-API-calling.patch
new file mode 100644
index 0000000..c996834
--- /dev/null
+++ b/meta-networking/recipes-extended/iscsitarget/files/fix-call-trace-of-ahash-API-calling.patch
@@ -0,0 +1,85 @@
+The previous build_with_updated_interfaces_of_linux_v4.8_and_above.patch
+does not alloc struct ahash_request before using it. This will cause the
+kernel call trace below when calling gen_scsiid on kernel 4.8 or later
+version.
+
+This patch normalizes the calling of ahash API according to the example
+in kernel doc Documentation/crypto/api-intro.txt.
+
+BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
+IP: [<ffffffffa0008d45>] volume_add+0x625/0x7f0 [iscsi_trgt]
+PGD dd77067 PUD dd7c067 PMD 0 
+Oops: 0000 [#1] PREEMPT SMP
+Modules linked in: iscsi_trgt(O)
+CPU: 0 PID: 350 Comm: ietd Tainted: G           O    4.8.12-yocto-standard #1
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
+task: ffff88000dfe2c00 task.stack: ffff88000de88000
+RIP: 0010:[<ffffffffa0008d45>]  [<ffffffffa0008d45>] volume_add+0x625/0x7f0 [iscsi_trgt]
+RSP: 0018:ffff88000de8bd90  EFLAGS: 00000206
+RAX: 000000000000ddfa RBX: ffff88000ddd1d78 RCX: ffffea0000000000
+RDX: 0000000000000600 RSI: 0000000000000000 RDI: ffff88000ddd1c14
+RBP: ffff88000de8be38 R08: ffff88000de44180 R09: ffff88000de8bdd0
+R10: 000000000000002c R11: 0000000000000000 R12: ffff88000ddfa600
+R13: 0000000000000000 R14: 0000000000000000 R15: ffff88000de92200
+FS:  00007f767548b700(0000) GS:ffff88000fc00000(0000) knlGS:0000000000000000
+CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 0000000000000020 CR3: 000000000dd2d000 CR4: 00000000000006f0
+Stack:
+ ffff88000de8bdd0 ffff88000dc1b3d0 ffff88000ddfa650 ffff88000ddfa660
+ ffff88000df8f000 ffff88000ddd1c00 ffff88000de44180 0000000000000000
+ ffffea0000377440 0000000f00000c14 0000000000000000 0000000000000000
+Call Trace:
+ [<ffffffffa0006547>] ioctl+0x217/0x390 [iscsi_trgt]
+ [<ffffffff81192574>] do_vfs_ioctl+0x94/0x5c0
+ [<ffffffff8117ff73>] ? vfs_read+0xf3/0x120
+ [<ffffffff81192b19>] SyS_ioctl+0x79/0x90
+ [<ffffffff8191a45b>] entry_SYSCALL_64_fastpath+0x13/0x8f
+Code: 4c 01 e0 0f 82 a2 01 00 00 48 b9 00 00 00 80 ff 77 00 00 48 01
+c8 45 31 f6 48 b9 00 00 00 00 00 ea ff ff 89 54 24 68 48 c1 e8 0c <49>
+8b 56 20 4c 89 44 24 20 4c 89 f7 48 c1 e0 06 c7 44 24 6c 04 
+RIP  [<ffffffffa0008d45>] volume_add+0x625/0x7f0 [iscsi_trgt]
+ RSP <ffff88000de8bd90>
+CR2: 0000000000000020
+end trace cd2016297df21635 ]
+ietd_response_recv 200 0 -5
+Input/output error.
+
+Upstream-Status: Pending [This patch is based on the previous one which
+has not been merged upstream.]
+
+Signed-off-by: Zhe He <zhe.he@windriver.com>
+
+--- iscsitarget-1.4.20.3+svn502_orig/kernel/volume.c	2017-01-18 08:57:56.752187402 +0800
++++ iscsitarget-1.4.20.3+svn502/kernel/volume.c	2017-01-18 09:02:44.164195234 +0800
+@@ -93,13 +93,14 @@ static void gen_scsiid(struct iet_volume
+ 
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
+ 	tfm = crypto_alloc_ahash("md5", 0, CRYPTO_ALG_ASYNC);
++	hash = ahash_request_alloc(tfm, GFP_ATOMIC);
+ #else
+ 	hash.tfm = crypto_alloc_hash("md5", 0, CRYPTO_ALG_ASYNC);
+ 	hash.flags = 0;
+ #endif
+ 
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
+-	if (!IS_ERR(tfm)) {
++	if (tfm && !IS_ERR(tfm)) {
+ #else
+ 	if (!IS_ERR(hash.tfm)) {
+ #endif
+@@ -116,10 +117,13 @@ static void gen_scsiid(struct iet_volume
+ 		nbytes += sizeof(volume->lun);
+ 
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
+-		crypto_ahash_init(hash);
++		ahash_request_set_callback(hash, 0, NULL, NULL);
+ 		ahash_request_set_crypt(hash, sg, volume->scsi_id, nbytes);
+-		crypto_ahash_update(hash);
+ 		crypto_ahash_digest(hash);
++		crypto_ahash_init(hash);
++		crypto_ahash_update(hash);
++		crypto_ahash_final(hash);
++		ahash_request_free(hash);
+ 		crypto_free_ahash(tfm);
+ #else
+ 		crypto_hash_init(&hash);
diff --git a/meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb b/meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb
index 7279bc6..5c1e38e 100644
--- a/meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb
+++ b/meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb
@@ -13,7 +13,8 @@ SRC_URI = "http://ftp.heanet.ie/mirrors/ubuntu/pool/universe/i/${BPN}/${BPN}_${P
            file://fix-errors-observed-with-linux-3.19-and-greater.patch \
            file://access-sk_v6_daddr-iff-IPV6-defined.patch \
            file://build_with_updated_bio_struct_of_linux_v4.3_and_above.patch \
-           file://build_with_updated_interfaces_of_linux_v4.8_and_above.patch"
+           file://build_with_updated_interfaces_of_linux_v4.8_and_above.patch \
+           file://fix-call-trace-of-ahash-API-calling.patch"
 
 SRC_URI[md5sum] = "ef9bc823bbabd3c772208c00d5f2d089"
 SRC_URI[sha256sum] = "d3196ccb78a43266dce28587bfe30d8ab4db7566d7bce96057dfbb84100babb5"
-- 
2.9.3



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2017-01-18  1:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-18  1:34 [meta-networking][PATCH v2] iscsitarget: Fix call trace of ahash API calling zhe.he

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.