From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> To: Peter Xu <peterx@redhat.com> Cc: kvm@vger.kernel.org, mst@redhat.com, mtosatti@redhat.com, Xiao Guangrong <xiaoguangrong@tencent.com>, qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>, quintela@redhat.com, wei.w.wang@intel.com, cota@braap.org, guangrong.xiao@gmail.com, pbonzini@redhat.com Subject: Re: [PATCH v2 2/3] migration: fix memory leak when updating tls-creds and tls-hostname Date: Tue, 15 Jan 2019 10:24:04 +0000 [thread overview] Message-ID: <20190115102404.GA2135@work-vm> (raw) In-Reply-To: <20190115075154.GI24343@xz-x1> * Peter Xu (peterx@redhat.com) wrote: > On Fri, Jan 11, 2019 at 02:37:31PM +0800, guangrong.xiao@gmail.com wrote: > > From: Xiao Guangrong <xiaoguangrong@tencent.com> > > > > If we update parameter, tls-creds and tls-hostname, these string > > values are duplicated to local variables in migrate_params_test_apply() > > by using g_strdup(), however these new allocated memory are missed to > > be freed > > > > Actually, they are not used to check anything, we can directly skip > > them > > > > Signed-off-by: Xiao Guangrong <xiaoguangrong@tencent.com> > > --- > > migration/migration.c | 10 ---------- > > 1 file changed, 10 deletions(-) > > > > diff --git a/migration/migration.c b/migration/migration.c > > index a82d594f29..fb39d7bec1 100644 > > --- a/migration/migration.c > > +++ b/migration/migration.c > > @@ -1145,16 +1145,6 @@ static void migrate_params_test_apply(MigrateSetParameters *params, > > dest->cpu_throttle_increment = params->cpu_throttle_increment; > > } > > > > - if (params->has_tls_creds) { > > - assert(params->tls_creds->type == QTYPE_QSTRING); > > - dest->tls_creds = g_strdup(params->tls_creds->u.s); > > - } > > - > > - if (params->has_tls_hostname) { > > - assert(params->tls_hostname->type == QTYPE_QSTRING); > > - dest->tls_hostname = g_strdup(params->tls_hostname->u.s); > > - } > > - > > Hi, Guangrong, > > The memleak seems to be correct here but before that I'm even a bit > confused on why we need to copy the whole parameter list here instead > of checking against a MigrateSetParameters* in migrate_params_check(). > Could anyone shed some light? CC Markus too. I think the problem is that migrate_params_check checks a MigrationParameters while the QMP command gives us a MigrateSetParameters; but we also use migrate_params_check for the global check you added (8b0b29dc) which is against migrationParameters; so that's why migrate_params_check takes a MigrationParameters. It's horrible we've got stuff duped so much. However, I don't like this fix because if someone later was to add a test for tls parameters to migrate_params_check, then they would be confused why the hostname/creds weren't checked. So while we have migrate_params_test_apply, it should cover all parameters. I think a cleaner check would be to write a MigrateParameters_free that free'd any strings, and call that in qmp_migrate_set_parameters on both exit paths. Dave > Thanks, > > > if (params->has_max_bandwidth) { > > dest->max_bandwidth = params->max_bandwidth; > > } > > -- > > 2.14.5 > > > > Regards, > > -- > Peter Xu -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
WARNING: multiple messages have this Message-ID (diff)
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> To: Peter Xu <peterx@redhat.com> Cc: guangrong.xiao@gmail.com, pbonzini@redhat.com, mst@redhat.com, mtosatti@redhat.com, qemu-devel@nongnu.org, kvm@vger.kernel.org, wei.w.wang@intel.com, eblake@redhat.com, quintela@redhat.com, cota@braap.org, Xiao Guangrong <xiaoguangrong@tencent.com>, Markus Armbruster <armbru@redhat.com> Subject: Re: [Qemu-devel] [PATCH v2 2/3] migration: fix memory leak when updating tls-creds and tls-hostname Date: Tue, 15 Jan 2019 10:24:04 +0000 [thread overview] Message-ID: <20190115102404.GA2135@work-vm> (raw) In-Reply-To: <20190115075154.GI24343@xz-x1> * Peter Xu (peterx@redhat.com) wrote: > On Fri, Jan 11, 2019 at 02:37:31PM +0800, guangrong.xiao@gmail.com wrote: > > From: Xiao Guangrong <xiaoguangrong@tencent.com> > > > > If we update parameter, tls-creds and tls-hostname, these string > > values are duplicated to local variables in migrate_params_test_apply() > > by using g_strdup(), however these new allocated memory are missed to > > be freed > > > > Actually, they are not used to check anything, we can directly skip > > them > > > > Signed-off-by: Xiao Guangrong <xiaoguangrong@tencent.com> > > --- > > migration/migration.c | 10 ---------- > > 1 file changed, 10 deletions(-) > > > > diff --git a/migration/migration.c b/migration/migration.c > > index a82d594f29..fb39d7bec1 100644 > > --- a/migration/migration.c > > +++ b/migration/migration.c > > @@ -1145,16 +1145,6 @@ static void migrate_params_test_apply(MigrateSetParameters *params, > > dest->cpu_throttle_increment = params->cpu_throttle_increment; > > } > > > > - if (params->has_tls_creds) { > > - assert(params->tls_creds->type == QTYPE_QSTRING); > > - dest->tls_creds = g_strdup(params->tls_creds->u.s); > > - } > > - > > - if (params->has_tls_hostname) { > > - assert(params->tls_hostname->type == QTYPE_QSTRING); > > - dest->tls_hostname = g_strdup(params->tls_hostname->u.s); > > - } > > - > > Hi, Guangrong, > > The memleak seems to be correct here but before that I'm even a bit > confused on why we need to copy the whole parameter list here instead > of checking against a MigrateSetParameters* in migrate_params_check(). > Could anyone shed some light? CC Markus too. I think the problem is that migrate_params_check checks a MigrationParameters while the QMP command gives us a MigrateSetParameters; but we also use migrate_params_check for the global check you added (8b0b29dc) which is against migrationParameters; so that's why migrate_params_check takes a MigrationParameters. It's horrible we've got stuff duped so much. However, I don't like this fix because if someone later was to add a test for tls parameters to migrate_params_check, then they would be confused why the hostname/creds weren't checked. So while we have migrate_params_test_apply, it should cover all parameters. I think a cleaner check would be to write a MigrateParameters_free that free'd any strings, and call that in qmp_migrate_set_parameters on both exit paths. Dave > Thanks, > > > if (params->has_max_bandwidth) { > > dest->max_bandwidth = params->max_bandwidth; > > } > > -- > > 2.14.5 > > > > Regards, > > -- > Peter Xu -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2019-01-15 10:24 UTC|newest] Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-01-11 6:37 [PATCH v2 0/3] optimize waiting for free thread to do compression guangrong.xiao 2019-01-11 6:37 ` [Qemu-devel] " guangrong.xiao 2019-01-11 6:37 ` [PATCH v2 1/3] migration: introduce pages-per-second guangrong.xiao 2019-01-11 6:37 ` [Qemu-devel] " guangrong.xiao 2019-01-11 15:37 ` Eric Blake 2019-01-11 15:37 ` [Qemu-devel] " Eric Blake 2019-01-23 12:51 ` Dr. David Alan Gilbert 2019-01-23 12:51 ` [Qemu-devel] " Dr. David Alan Gilbert 2019-01-23 12:34 ` Dr. David Alan Gilbert 2019-01-23 12:34 ` [Qemu-devel] " Dr. David Alan Gilbert 2019-01-11 6:37 ` [PATCH v2 2/3] migration: fix memory leak when updating tls-creds and tls-hostname guangrong.xiao 2019-01-11 6:37 ` [Qemu-devel] " guangrong.xiao 2019-01-15 7:51 ` Peter Xu 2019-01-15 7:51 ` [Qemu-devel] " Peter Xu 2019-01-15 10:24 ` Dr. David Alan Gilbert [this message] 2019-01-15 10:24 ` Dr. David Alan Gilbert 2019-01-15 16:03 ` Eric Blake 2019-01-15 16:03 ` [Qemu-devel] " Eric Blake 2019-01-16 5:55 ` Peter Xu 2019-01-16 5:55 ` [Qemu-devel] " Peter Xu 2019-02-18 8:26 ` Xiao Guangrong 2019-02-18 8:26 ` [Qemu-devel] " Xiao Guangrong 2019-01-11 6:37 ` [PATCH v2 3/3] migration: introduce adaptive model for waiting thread guangrong.xiao 2019-01-11 6:37 ` [Qemu-devel] " guangrong.xiao 2019-01-11 9:57 ` Markus Armbruster 2019-01-11 9:57 ` [Qemu-devel] " Markus Armbruster 2019-02-18 8:47 ` Xiao Guangrong 2019-02-18 8:47 ` [Qemu-devel] " Xiao Guangrong 2019-01-16 6:40 ` Peter Xu 2019-01-16 6:40 ` [Qemu-devel] " Peter Xu 2019-02-18 9:01 ` Xiao Guangrong 2019-02-18 9:01 ` [Qemu-devel] " Xiao Guangrong 2019-01-11 9:53 ` [PATCH v2 0/3] optimize waiting for free thread to do compression Markus Armbruster 2019-01-11 9:53 ` [Qemu-devel] " Markus Armbruster 2019-01-13 14:43 ` no-reply 2019-01-13 14:43 ` [Qemu-devel] " no-reply 2019-01-13 17:41 ` no-reply 2019-01-13 17:41 ` [Qemu-devel] " no-reply
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=20190115102404.GA2135@work-vm \ --to=dgilbert@redhat.com \ --cc=armbru@redhat.com \ --cc=cota@braap.org \ --cc=guangrong.xiao@gmail.com \ --cc=kvm@vger.kernel.org \ --cc=mst@redhat.com \ --cc=mtosatti@redhat.com \ --cc=pbonzini@redhat.com \ --cc=peterx@redhat.com \ --cc=qemu-devel@nongnu.org \ --cc=quintela@redhat.com \ --cc=wei.w.wang@intel.com \ --cc=xiaoguangrong@tencent.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.