qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Ashijeet Acharya <ashijeetacharya@gmail.com>,
	John Snow <jsnow@redhat.com>
Cc: QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] Fix memory leak in ide_register_restart_cb()
Date: Thu, 1 Sep 2016 17:43:58 +0200	[thread overview]
Message-ID: <cbd0fc1a-7501-43fa-e2fc-115200db5a9e@redhat.com> (raw)
In-Reply-To: <CAC2QTZZ1S0DNtbisbOEG7ifDHP1h6DbRA+Fe5USGzXVQEH2sag@mail.gmail.com>

On 01/09/2016 07:31, Ashijeet Acharya wrote:
> I am still waiting for review on this one.

Hi,

QEMU is in hard freeze now so it's normal to have some delay in patch
review.  Maintainers often use this time to work on their own features.

I'm sure John will get to it in short time.

Paolo

> On Tue, Aug 16, 2016 at 10:40 PM, Ashijeet Acharya
> <ashijeetacharya@gmail.com> wrote:
>> Fix a memory leak in ide_register_restart_cb() in hw/ide/core.c and add idebus_unrealize() in hw/ide/qdev.c to have calls to qemu_del_vm_change_state_handler() to deal with the dangling change state handler during hot-unplugging ide devices which might lead to a crash.
>>
>> Signed-off-by: Ashijeet Acharya <ashijeetacharya@gmail.com>
>> ---
>>  hw/ide/core.c             |  2 +-
>>  hw/ide/qdev.c             | 14 ++++++++++++++
>>  include/hw/ide/internal.h |  1 +
>>  3 files changed, 16 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/ide/core.c b/hw/ide/core.c
>> index 45b6df1..eecbb47 100644
>> --- a/hw/ide/core.c
>> +++ b/hw/ide/core.c
>> @@ -2582,7 +2582,7 @@ static void ide_restart_cb(void *opaque, int running, RunState state)
>>  void ide_register_restart_cb(IDEBus *bus)
>>  {
>>      if (bus->dma->ops->restart_dma) {
>> -        qemu_add_vm_change_state_handler(ide_restart_cb, bus);
>> +        bus->vmstate = qemu_add_vm_change_state_handler(ide_restart_cb, bus);
>>      }
>>  }
>>
>> diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
>> index 67c76bf..6f75f77 100644
>> --- a/hw/ide/qdev.c
>> +++ b/hw/ide/qdev.c
>> @@ -31,6 +31,7 @@
>>  /* --------------------------------- */
>>
>>  static char *idebus_get_fw_dev_path(DeviceState *dev);
>> +static void idebus_unrealize(DeviceState *qdev, Error **errp);
>>
>>  static Property ide_props[] = {
>>      DEFINE_PROP_UINT32("unit", IDEDevice, unit, -1),
>> @@ -345,6 +346,7 @@ static void ide_device_class_init(ObjectClass *klass, void *data)
>>      k->init = ide_qdev_init;
>>      set_bit(DEVICE_CATEGORY_STORAGE, k->categories);
>>      k->bus_type = TYPE_IDE_BUS;
>> +    k->unrealize = idebus_unrealize;
>>      k->props = ide_props;
>>  }
>>
>> @@ -368,3 +370,15 @@ static void ide_register_types(void)
>>  }
>>
>>  type_init(ide_register_types)
>> +
>> +static void idebus_unrealize(DeviceState *qdev, Error **errp)
>> +{
>> +    IDEBus *bus = DO_UPCAST(IDEBus, qbus, qdev->parent_bus);
>> +
>> +    if (bus->dma->ops->restart_dma) {
>> +        if (bus->vmstate) {
>> +            qemu_del_vm_change_state_handler(bus->vmstate);
>> +        }
>> +    }
>> +}
>>
>> diff --git a/include/hw/ide/internal.h b/include/hw/ide/internal.h
>> index 7824bc3..2103261 100644
>> --- a/include/hw/ide/internal.h
>> +++ b/include/hw/ide/internal.h
>> @@ -480,6 +480,7 @@ struct IDEBus {
>>      uint8_t retry_unit;
>>      int64_t retry_sector_num;
>>      uint32_t retry_nsector;
>> +    VMChangeStateEntry *vmstate;
>>  };
>>
>>  #define TYPE_IDE_DEVICE "ide-device"
>> --
>> 2.6.2
>>

  reply	other threads:[~2016-09-01 15:44 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-16 17:10 [Qemu-devel] [PATCH] Fix memory leak in ide_register_restart_cb() Ashijeet Acharya
2016-09-01  5:31 ` Ashijeet Acharya
2016-09-01 15:43   ` Paolo Bonzini [this message]
2016-09-01 15:45     ` Ashijeet Acharya
  -- strict thread matches above, loose matches on Subject: below --
2016-08-11 16:40 [Qemu-devel] Dangling change state handler while hot unplugging ahci adapter Ashijeet Acharya
2016-08-11 18:45 ` [Qemu-devel] [PATCH] Fix memory leak in ide_register_restart_cb() Ashijeet Acharya
2016-08-12  9:58   ` Paolo Bonzini
2016-08-16 13:55     ` Ashijeet Acharya
2016-08-16 17:08       ` John Snow

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=cbd0fc1a-7501-43fa-e2fc-115200db5a9e@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=ashijeetacharya@gmail.com \
    --cc=jsnow@redhat.com \
    --cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).