Messages in this thread | | | Date | Wed, 27 May 2009 16:32:33 -0400 | From | Gregory Haskins <> | Subject | Re: [PATCH] kvm: fix coalesced_mmio leak on shutdown |
| |
Chris Wright wrote: > * Gregory Haskins (ghaskins@novell.com) wrote: > >> It would appear that we are invoking kfree() on the wrong pointer in the >> destructor for the coalesced_mmio device. This would result in a potential >> leak during shutdown. >> > > Happens to work and not leak: > > struct kvm_coalesced_mmio_dev { > struct kvm_io_device dev; > struct kvm *kvm; > int nb_zones; > struct kvm_coalesced_mmio_zone zone[KVM_COALESCED_MMIO_ZONE_MAX]; > }; > > Ah, yes. That explains it. Still sloppy, tho.
>> Signed-off-by: Gregory Haskins <ghaskins@novell.com> >> --- >> >> virt/kvm/coalesced_mmio.c | 5 ++++- >> 1 files changed, 4 insertions(+), 1 deletions(-) >> >> diff --git a/virt/kvm/coalesced_mmio.c b/virt/kvm/coalesced_mmio.c >> index 5ae620d..03ea280 100644 >> --- a/virt/kvm/coalesced_mmio.c >> +++ b/virt/kvm/coalesced_mmio.c >> @@ -80,7 +80,10 @@ static void coalesced_mmio_write(struct kvm_io_device *this, >> >> static void coalesced_mmio_destructor(struct kvm_io_device *this) >> { >> - kfree(this); >> + struct kvm_coalesced_mmio_dev *dev = >> + (struct kvm_coalesced_mmio_dev *)this->private; >> > > I think container_of() makes more sense here. >
I was working on that patch when I noticed the "leak" above. Figured I should send the fix out first, in case my container_of patch is shot down.
Just polishing it up now. Will send out soon.
-Greg
[unhandled content-type:application/pgp-signature] | |