mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-11-25 05:03:05 +00:00
qcow: track deallocated clusters as unreferenced
In deallocate_cluster(), we call set_cluster_refcount() to unref the cluster that is being deallocated, but we never actually added the deallocated cluster to the unref_clusters list. Add clusters whose refcounts reach 0 to the unref_clusters list as well. Also add mremap() to the seccomp whitelist for the block device, since this is being triggered by libc realloc() and other devices already include it in the whitelist. BUG=chromium:850998 TEST=cargo test -p qcow; test crosvm on nami and verify that qcow file size stays bounded when creating a 1 GB file and deleting it repeatedly Change-Id: I1bdd96b2176dc13069417e0ac77f0768f9f26012 Signed-off-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1259404 Reviewed-by: Dylan Reid <dgreid@chromium.org>
This commit is contained in:
parent
c8986f14a8
commit
b1570f2672
3 changed files with 3 additions and 0 deletions
|
@ -732,6 +732,7 @@ impl QcowFile {
|
|||
let _ = fallocate(self.raw_file.file_mut(),
|
||||
FallocateMode::PunchHole, true,
|
||||
cluster_addr, cluster_size);
|
||||
self.unref_clusters.push(cluster_addr);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ _llseek: 1
|
|||
# negation, thus the manually negated mask constant.
|
||||
mmap2: arg2 in 0xfffffffb
|
||||
mprotect: arg2 in 0xfffffffb
|
||||
mremap: 1
|
||||
munmap: 1
|
||||
read: 1
|
||||
recv: 1
|
||||
|
|
|
@ -19,6 +19,7 @@ mmap: arg2 in 0xfffffffb
|
|||
mprotect: arg2 in 0xfffffffb
|
||||
# Allow MADV_DONTDUMP only.
|
||||
madvise: arg2 == 0x00000010
|
||||
mremap: 1
|
||||
munmap: 1
|
||||
read: 1
|
||||
recvfrom: 1
|
||||
|
|
Loading…
Reference in a new issue