From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58038) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZyAkm-0002jN-0S for qemu-devel@nongnu.org; Sun, 15 Nov 2015 22:46:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZyAki-0003nd-PR for qemu-devel@nongnu.org; Sun, 15 Nov 2015 22:46:51 -0500 Date: Mon, 16 Nov 2015 11:46:44 +0800 From: Stefan Hajnoczi Message-ID: <20151116034644.GD9498@stefanha-x1.localdomain> References: <1447247832-14198-1-git-send-email-berto@igalia.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="0/kgSOzhNoDC5T3a" Content-Disposition: inline In-Reply-To: <1447247832-14198-1-git-send-email-berto@igalia.com> Subject: Re: [Qemu-devel] [Qemu-block] [PATCH] block: make 'stats-intervals' a list of integers List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alberto Garcia Cc: Kevin Wolf , qemu-block@nongnu.org, Markus Armbruster , qemu-devel@nongnu.org, Max Reitz , Stefan Hajnoczi --0/kgSOzhNoDC5T3a Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Nov 11, 2015 at 03:17:12PM +0200, Alberto Garcia wrote: > @@ -583,32 +592,48 @@ static BlockBackend *blockdev_init(const char *file= , QDict *bs_opts, > =20 > block_acct_init(blk_get_stats(blk), account_invalid, account_fai= led); > =20 > - if (stats_intervals) { > - char **intervals =3D g_strsplit(stats_intervals, ":", 0); > - unsigned i; > + for (entry =3D qlist_first(interval_list); entry; > + entry =3D qlist_next(entry)) { This loop could be extracted into a separate function to avoid growing bloc= kdev_init() further: bool parse_stats_intervals(BlockAcctStats *stats, QList *intervals, Error *= *errp); > @@ -617,10 +642,14 @@ static BlockBackend *blockdev_init(const char *file= , QDict *bs_opts, > =20 > err_no_bs_opts: > qemu_opts_del(opts); > + QDECREF(interval_dict); > + QDECREF(interval_list); > return blk; > =20 > early_err: > qemu_opts_del(opts); > + QDECREF(interval_dict); > + QDECREF(interval_list); There is a codepath that reaches here without initializing interval_dict or interval_list: qemu_opts_absorb_qdict(opts, bs_opts, &error); if (error) { error_propagate(errp, error); goto early_err; } interval_dict and interval_list should be initialized to NULL. --0/kgSOzhNoDC5T3a Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJWSVGkAAoJEJykq7OBq3PIQgkH/1xfp/RtEsE59c8IDjVle7bO 9ycUdQJMozoKEnGWv9GWd1e1afBFwUcI9xHzg0qnp8SnukZ6ieUBam8QnK0Rp4ke PbXLD0ssjFprffSJ00N9H9c0NxzkHUUePy0Dej1FFYF6YvY3Iq6S/qsa3D1nQ7Us Dq3M+LFrigw/1Wd2bM3jjkSga1kkQWFvdy8TER1A7LaVC+KK1sfRJjBo6msFqJdw W6yiJHhQbNwun9VukmmzeQBeiKh90XIX4JC44ATaqUJHHNc4hwhbydNCQf3s6vq+ zmvoir+o+wwDTSRvCulzLezvcizAd3/XlF8I+BSXu/JZ8rVaCE/m3fGPPrXtGHk= =4pBf -----END PGP SIGNATURE----- --0/kgSOzhNoDC5T3a--