From: Greg Kurz <groug@kaod.org>
To: Fabiano Rosas <farosas@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org,
bharata@linux.ibm.com
Subject: Re: [PATCH] KVM: PPC: Book3S HV: Skip kvmppc_uvmem_free if Ultravisor is not supported
Date: Fri, 20 Mar 2020 08:43:03 +0000 [thread overview]
Message-ID: <20200320094303.26143598@bahia.lan> (raw)
In-Reply-To: <20200319225510.945603-1-farosas@linux.ibm.com>
On Thu, 19 Mar 2020 19:55:10 -0300
Fabiano Rosas <farosas@linux.ibm.com> wrote:
> kvmppc_uvmem_init checks for Ultravisor support and returns early if
> it is not present. Calling kvmppc_uvmem_free at module exit will cause
> an Oops:
>
> $ modprobe -r kvm-hv
>
> Oops: Kernel access of bad area, sig: 11 [#1]
> <snip>
> NIP: c000000000789e90 LR: c000000000789e8c CTR: c000000000401030
> REGS: c000003fa7bab9a0 TRAP: 0300 Not tainted (5.6.0-rc6-00033-g6c90b86a745a-dirty)
> MSR: 9000000000009033 <SF,HV,EE,ME,IR,DR,RI,LE> CR: 24002282 XER: 00000000
> CFAR: c000000000dae880 DAR: 0000000000000008 DSISR: 40000000 IRQMASK: 1
> GPR00: c000000000789e8c c000003fa7babc30 c0000000016fe500 0000000000000000
> GPR04: 0000000000000000 0000000000000006 0000000000000000 c000003faf205c00
> GPR08: 0000000000000000 0000000000000001 000000008000002d c00800000ddde140
> GPR12: c000000000401030 c000003ffffd9080 0000000000000001 0000000000000000
> GPR16: 0000000000000000 0000000000000000 000000013aad0074 000000013aaac978
> GPR20: 000000013aad0070 0000000000000000 00007fffd1b37158 0000000000000000
> GPR24: 000000014fef0d58 0000000000000000 000000014fef0cf0 0000000000000001
> GPR28: 0000000000000000 0000000000000000 c0000000018b2a60 0000000000000000
> NIP [c000000000789e90] percpu_ref_kill_and_confirm+0x40/0x170
> LR [c000000000789e8c] percpu_ref_kill_and_confirm+0x3c/0x170
> Call Trace:
> [c000003fa7babc30] [c000003faf2064d4] 0xc000003faf2064d4 (unreliable)
> [c000003fa7babcb0] [c000000000400e8c] dev_pagemap_kill+0x6c/0x80
> [c000003fa7babcd0] [c000000000401064] memunmap_pages+0x34/0x2f0
> [c000003fa7babd50] [c00800000dddd548] kvmppc_uvmem_free+0x30/0x80 [kvm_hv]
> [c000003fa7babd80] [c00800000ddcef18] kvmppc_book3s_exit_hv+0x20/0x78 [kvm_hv]
> [c000003fa7babda0] [c0000000002084d0] sys_delete_module+0x1d0/0x2c0
> [c000003fa7babe20] [c00000000000b9d0] system_call+0x5c/0x68
> Instruction dump:
> 3fc2001b fb81ffe0 fba1ffe8 fbe1fff8 7c7f1b78 7c9c2378 3bde4560 7fc3f378
> f8010010 f821ff81 486249a1 60000000 <e93f0008> 7c7d1b78 712a0002 40820084
> ---[ end trace 5774ef4dc2c98279 ]---
>
> So this patch checks if kvmppc_uvmem_init actually allocated anything
> before running kvmppc_uvmem_free.
>
> Fixes: ca9f4942670c ("KVM: PPC: Book3S HV: Support for running secure guests")
> Reported-by: Greg Kurz <groug@kaod.org>
> Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com>
> ---
Thanks for the quick fix :)
Tested-by: Greg Kurz <groug@kaod.org>
> arch/powerpc/kvm/book3s_hv_uvmem.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c
> index 79b1202b1c62..9d26614b2a77 100644
> --- a/arch/powerpc/kvm/book3s_hv_uvmem.c
> +++ b/arch/powerpc/kvm/book3s_hv_uvmem.c
> @@ -806,6 +806,9 @@ int kvmppc_uvmem_init(void)
>
> void kvmppc_uvmem_free(void)
> {
> + if (!kvmppc_uvmem_bitmap)
> + return;
> +
> memunmap_pages(&kvmppc_uvmem_pgmap);
> release_mem_region(kvmppc_uvmem_pgmap.res.start,
> resource_size(&kvmppc_uvmem_pgmap.res));
WARNING: multiple messages have this Message-ID (diff)
From: Greg Kurz <groug@kaod.org>
To: Fabiano Rosas <farosas@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org,
bharata@linux.ibm.com
Subject: Re: [PATCH] KVM: PPC: Book3S HV: Skip kvmppc_uvmem_free if Ultravisor is not supported
Date: Fri, 20 Mar 2020 09:43:03 +0100 [thread overview]
Message-ID: <20200320094303.26143598@bahia.lan> (raw)
In-Reply-To: <20200319225510.945603-1-farosas@linux.ibm.com>
On Thu, 19 Mar 2020 19:55:10 -0300
Fabiano Rosas <farosas@linux.ibm.com> wrote:
> kvmppc_uvmem_init checks for Ultravisor support and returns early if
> it is not present. Calling kvmppc_uvmem_free at module exit will cause
> an Oops:
>
> $ modprobe -r kvm-hv
>
> Oops: Kernel access of bad area, sig: 11 [#1]
> <snip>
> NIP: c000000000789e90 LR: c000000000789e8c CTR: c000000000401030
> REGS: c000003fa7bab9a0 TRAP: 0300 Not tainted (5.6.0-rc6-00033-g6c90b86a745a-dirty)
> MSR: 9000000000009033 <SF,HV,EE,ME,IR,DR,RI,LE> CR: 24002282 XER: 00000000
> CFAR: c000000000dae880 DAR: 0000000000000008 DSISR: 40000000 IRQMASK: 1
> GPR00: c000000000789e8c c000003fa7babc30 c0000000016fe500 0000000000000000
> GPR04: 0000000000000000 0000000000000006 0000000000000000 c000003faf205c00
> GPR08: 0000000000000000 0000000000000001 000000008000002d c00800000ddde140
> GPR12: c000000000401030 c000003ffffd9080 0000000000000001 0000000000000000
> GPR16: 0000000000000000 0000000000000000 000000013aad0074 000000013aaac978
> GPR20: 000000013aad0070 0000000000000000 00007fffd1b37158 0000000000000000
> GPR24: 000000014fef0d58 0000000000000000 000000014fef0cf0 0000000000000001
> GPR28: 0000000000000000 0000000000000000 c0000000018b2a60 0000000000000000
> NIP [c000000000789e90] percpu_ref_kill_and_confirm+0x40/0x170
> LR [c000000000789e8c] percpu_ref_kill_and_confirm+0x3c/0x170
> Call Trace:
> [c000003fa7babc30] [c000003faf2064d4] 0xc000003faf2064d4 (unreliable)
> [c000003fa7babcb0] [c000000000400e8c] dev_pagemap_kill+0x6c/0x80
> [c000003fa7babcd0] [c000000000401064] memunmap_pages+0x34/0x2f0
> [c000003fa7babd50] [c00800000dddd548] kvmppc_uvmem_free+0x30/0x80 [kvm_hv]
> [c000003fa7babd80] [c00800000ddcef18] kvmppc_book3s_exit_hv+0x20/0x78 [kvm_hv]
> [c000003fa7babda0] [c0000000002084d0] sys_delete_module+0x1d0/0x2c0
> [c000003fa7babe20] [c00000000000b9d0] system_call+0x5c/0x68
> Instruction dump:
> 3fc2001b fb81ffe0 fba1ffe8 fbe1fff8 7c7f1b78 7c9c2378 3bde4560 7fc3f378
> f8010010 f821ff81 486249a1 60000000 <e93f0008> 7c7d1b78 712a0002 40820084
> ---[ end trace 5774ef4dc2c98279 ]---
>
> So this patch checks if kvmppc_uvmem_init actually allocated anything
> before running kvmppc_uvmem_free.
>
> Fixes: ca9f4942670c ("KVM: PPC: Book3S HV: Support for running secure guests")
> Reported-by: Greg Kurz <groug@kaod.org>
> Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com>
> ---
Thanks for the quick fix :)
Tested-by: Greg Kurz <groug@kaod.org>
> arch/powerpc/kvm/book3s_hv_uvmem.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c
> index 79b1202b1c62..9d26614b2a77 100644
> --- a/arch/powerpc/kvm/book3s_hv_uvmem.c
> +++ b/arch/powerpc/kvm/book3s_hv_uvmem.c
> @@ -806,6 +806,9 @@ int kvmppc_uvmem_init(void)
>
> void kvmppc_uvmem_free(void)
> {
> + if (!kvmppc_uvmem_bitmap)
> + return;
> +
> memunmap_pages(&kvmppc_uvmem_pgmap);
> release_mem_region(kvmppc_uvmem_pgmap.res.start,
> resource_size(&kvmppc_uvmem_pgmap.res));
next prev parent reply other threads:[~2020-03-20 8:43 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-19 22:55 [PATCH] KVM: PPC: Book3S HV: Skip kvmppc_uvmem_free if Ultravisor is not supported Fabiano Rosas
2020-03-19 22:55 ` Fabiano Rosas
2020-03-20 0:14 ` Paul Mackerras
2020-03-20 0:14 ` Paul Mackerras
2020-03-20 8:43 ` Greg Kurz [this message]
2020-03-20 8:43 ` Greg Kurz
2020-03-24 2:56 ` Paul Mackerras
2020-03-24 2:56 ` Paul Mackerras
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=20200320094303.26143598@bahia.lan \
--to=groug@kaod.org \
--cc=bharata@linux.ibm.com \
--cc=farosas@linux.ibm.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
/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.