Re: [PATCH] KVM: Do not leak memory for duplicate debugfs directories

From: Alexey Kardashevskiy
Date: Wed Aug 04 2021 - 19:53:44 EST

On 05/08/2021 09:32, Alexey Kardashevskiy wrote:

On 04/08/2021 19:37, Paolo Bonzini wrote:
KVM creates a debugfs directory for each VM in order to store statistics
about the virtual machine.  The directory name is built from the process
pid and a VM fd.  While generally unique, it is possible to keep a
file descriptor alive in a way that causes duplicate directories, which
manifests as these messages:

   [  471.846235] debugfs: Directory '20245-4' with parent 'kvm' already present!

Even though this should not happen in practice, it is more or less
expected in the case of KVM for testcases that call KVM_CREATE_VM and
close the resulting file descriptor repeatedly and in parallel.

When this happens, debugfs_create_dir() returns an error but
kvm_create_vm_debugfs() goes on to allocate stat data structs which are
later leaked.

Rather the already allocated srructs leak, no?

The slow memory leak was spotted by syzkaller, where it
caused OOM reports.

I gave it a try and almost replied with "tested-by" but after running it over night I got 1 of these with followed OOM:

[ 1104.951394][  T544] debugfs: Directory '544-4' with parent 'kvm' already present!
[ 1104.951600][  T544] Failed to create 544-4

This is definitely an improvement as this used to happen a few times every hour but still puzzling :-/

ah rats, I was running a wrong kernel, retrying now. sorry for the noise.