Message ID | 20210901084550.1658699-1-aik@ozlabs.ru |
---|---|
State | New |
Headers | show |
Series | [kernel] KVM: PPC: Book3S: Suppress failed alloc warning in H_COPY_TOFROM_GUEST | expand |
Alexey Kardashevskiy <aik@ozlabs.ru> writes: > H_COPY_TOFROM_GUEST is an hcall for an upper level VM to access its nested > VMs memory. The userspace can trigger WARN_ON_ONCE(!(gfp & __GFP_NOWARN)) > in __alloc_pages() by constructing a tiny VM which only does > H_COPY_TOFROM_GUEST with a too big GPR9 (number of bytes to copy). > > This silences the warning by adding __GFP_NOWARN. > > Spotted by syzkaller. > > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> > --- Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com> > arch/powerpc/kvm/book3s_hv_nested.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c > index e57c08b968c0..a2e34efb8d31 100644 > --- a/arch/powerpc/kvm/book3s_hv_nested.c > +++ b/arch/powerpc/kvm/book3s_hv_nested.c > @@ -580,7 +580,7 @@ long kvmhv_copy_tofrom_guest_nested(struct kvm_vcpu *vcpu) > if (eaddr & (0xFFFUL << 52)) > return H_PARAMETER; > > - buf = kzalloc(n, GFP_KERNEL); > + buf = kzalloc(n, GFP_KERNEL | __GFP_NOWARN); > if (!buf) > return H_NO_MEM;
On Wed, 1 Sep 2021 18:45:50 +1000, Alexey Kardashevskiy wrote: > H_COPY_TOFROM_GUEST is an hcall for an upper level VM to access its nested > VMs memory. The userspace can trigger WARN_ON_ONCE(!(gfp & __GFP_NOWARN)) > in __alloc_pages() by constructing a tiny VM which only does > H_COPY_TOFROM_GUEST with a too big GPR9 (number of bytes to copy). > > This silences the warning by adding __GFP_NOWARN. > > [...] Applied to powerpc/next. [1/1] KVM: PPC: Book3S: Suppress failed alloc warning in H_COPY_TOFROM_GUEST https://git.kernel.org/powerpc/c/792020907b11c6f9246c21977cab3bad985ae4b6 cheers
diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c index e57c08b968c0..a2e34efb8d31 100644 --- a/arch/powerpc/kvm/book3s_hv_nested.c +++ b/arch/powerpc/kvm/book3s_hv_nested.c @@ -580,7 +580,7 @@ long kvmhv_copy_tofrom_guest_nested(struct kvm_vcpu *vcpu) if (eaddr & (0xFFFUL << 52)) return H_PARAMETER; - buf = kzalloc(n, GFP_KERNEL); + buf = kzalloc(n, GFP_KERNEL | __GFP_NOWARN); if (!buf) return H_NO_MEM;
H_COPY_TOFROM_GUEST is an hcall for an upper level VM to access its nested VMs memory. The userspace can trigger WARN_ON_ONCE(!(gfp & __GFP_NOWARN)) in __alloc_pages() by constructing a tiny VM which only does H_COPY_TOFROM_GUEST with a too big GPR9 (number of bytes to copy). This silences the warning by adding __GFP_NOWARN. Spotted by syzkaller. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> --- arch/powerpc/kvm/book3s_hv_nested.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)