All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joe MacDonald <Joe_MacDonald@mentor.com>
To: <zhe.he@windriver.com>
Cc: openembedded-devel@lists.openembedded.org
Subject: Re: [meta-networking][PATCH] iscsitarget: Fix call trace of ahash API calling
Date: Tue, 17 Jan 2017 10:29:33 -0500	[thread overview]
Message-ID: <20170117152932.GC7248@mentor.com> (raw)
In-Reply-To: <1484623661-7017-1-git-send-email-zhe.he@windriver.com>

[-- Attachment #1: Type: text/plain, Size: 6308 bytes --]

[[oe] [meta-networking][PATCH] iscsitarget: Fix call trace of ahash API calling] On 17.01.17 (Tue 11:27) zhe.he@windriver.com wrote:

> From: He Zhe <zhe.he@windriver.com>
> 
> The orignal 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.

Understood, but please don't modify the patch in place, this makes it
difficult for the original author to track upstream status, if they've
opted to send it along (note the original upstream status was
'Pending').  If you were the original author this approach might make
more sense.

Please just re-send as a standalone patch at the end of the patch list
with your own upstream status line.

Thanks.
-J.

> 
> 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>
> ---
>  ...ith_updated_interfaces_of_linux_v4.8_and_above.patch | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/meta-networking/recipes-extended/iscsitarget/files/build_with_updated_interfaces_of_linux_v4.8_and_above.patch b/meta-networking/recipes-extended/iscsitarget/files/build_with_updated_interfaces_of_linux_v4.8_and_above.patch
> index e55c407..c83b080 100644
> --- a/meta-networking/recipes-extended/iscsitarget/files/build_with_updated_interfaces_of_linux_v4.8_and_above.patch
> +++ b/meta-networking/recipes-extended/iscsitarget/files/build_with_updated_interfaces_of_linux_v4.8_and_above.patch
> @@ -89,6 +89,9 @@ Upstream-Status: Pending
>  
>  Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
>  
> +Correct and normalize the calling of ahash APIs
> +Signed-off-by: Zhe He <zhe.he@windriver.com>
> +
>  diff -Naurp iscsitarget-1.4.20.3+svn502_org/kernel/block-io.c iscsitarget-1.4.20.3+svn502/kernel/block-io.c
>  --- iscsitarget-1.4.20.3+svn502_org/kernel/block-io.c	2016-09-25 19:45:01.814641016 +0530
>  +++ iscsitarget-1.4.20.3+svn502/kernel/block-io.c	2016-09-25 19:47:59.666474094 +0530
> @@ -477,7 +480,7 @@ diff -Naurp iscsitarget-1.4.20.3+svn502_org/kernel/nthread.c iscsitarget-1.4.20.
>  diff -Naurp iscsitarget-1.4.20.3+svn502_org/kernel/volume.c iscsitarget-1.4.20.3+svn502/kernel/volume.c
>  --- iscsitarget-1.4.20.3+svn502_org/kernel/volume.c	2016-09-25 19:45:01.734641099 +0530
>  +++ iscsitarget-1.4.20.3+svn502/kernel/volume.c	2016-09-25 19:47:59.666474094 +0530
> -@@ -84,12 +84,25 @@ static int set_scsisn(struct iet_volume
> +@@ -84,12 +84,26 @@ static int set_scsisn(struct iet_volume
>   /* Generate a MD5 hash of the target IQN and LUN number */
>   static void gen_scsiid(struct iet_volume *volume)
>   {
> @@ -490,28 +493,32 @@ diff -Naurp iscsitarget-1.4.20.3+svn502_org/kernel/volume.c iscsitarget-1.4.20.3
>   
>  +#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
>   		struct scatterlist sg[2];
>   		unsigned int nbytes = 0;
>   
> -@@ -102,11 +115,19 @@ static void gen_scsiid(struct iet_volume
> +@@ -102,11 +115,22 @@ static void gen_scsiid(struct iet_volume
>   		sg_set_buf(&sg[1], &volume->lun, sizeof(volume->lun));
>   		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);
> -- 
> 2.9.3
> 
-- 
-Joe MacDonald.
:wq

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 484 bytes --]

  reply	other threads:[~2017-01-17 15:29 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-17  3:27 [meta-networking][PATCH] iscsitarget: Fix call trace of ahash API calling zhe.he
2017-01-17 15:29 ` Joe MacDonald [this message]
2017-01-18  1:35   ` He Zhe

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=20170117152932.GC7248@mentor.com \
    --to=joe_macdonald@mentor.com \
    --cc=openembedded-devel@lists.openembedded.org \
    --cc=zhe.he@windriver.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 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.