From nobody Fri May 17 11:58:43 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1594743001; cv=none; d=zohomail.com; s=zohoarc; b=W7JUxZOx4vHet3L/VTX6KCaVWtb8xLTfOEj95mVPtLQdbWbiEOavDoRCgnPCjjj6D17kI9n0DFE1Zg4beUvvDo59nWl/kbYkl5lh3+PDKuiH4mIkZJ7kBSo30+yyIXwtJjsDC3LFpkeZ7ZU7ak8E4wvZvltq2P2U21eFehWvqjc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1594743001; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4/NDtvEzvEaWLfEFZUlSedmGASQJkADezYtbmpQG4nE=; b=WmXh+zvQ7mBJCuJ84lgLy6+Yg3vlTB86pIQWJO+DJgpDIg+01c1C19I/LPixOWcvXR5afx8VwU5KqAsbln8EIeo7TAu9L0eYXdxVgrtgWpVqo8ugvMcX0/9iaL5XQdYaEyy7CD8hp59QIJIQyPFTIcnCiGtQegMzLTJlRogGZRk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1594743001705994.1561004270324; Tue, 14 Jul 2020 09:10:01 -0700 (PDT) Received: from localhost ([::1]:53014 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jvNVI-0001mB-Gm for importer@patchew.org; Tue, 14 Jul 2020 12:10:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54274) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jvNNo-0000Oi-Mq for qemu-devel@nongnu.org; Tue, 14 Jul 2020 12:02:16 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:21869 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jvNNk-00081d-6o for qemu-devel@nongnu.org; Tue, 14 Jul 2020 12:02:16 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-459-9cgo4HYCNQ6AxNO-Vzy8zw-1; Tue, 14 Jul 2020 12:02:07 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A53921DE6; Tue, 14 Jul 2020 16:02:06 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-143.ams2.redhat.com [10.36.112.143]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9B44D72E5F; Tue, 14 Jul 2020 16:02:03 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 29BAC17741C9; Tue, 14 Jul 2020 18:02:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1594742531; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4/NDtvEzvEaWLfEFZUlSedmGASQJkADezYtbmpQG4nE=; b=hl+RZUq4r2o4Z2FinNGgkTWseaRtRBQnlx526RbIjMADDpsX0iyg//S9ys4XWjy4syeu4O BTyhdpmgLno2dtkD/wrZywvUPDtjnVOzNusIg038V/Gv6oIJRuy8mWlWRiXcmy88vEfRRy ZYrAyq5se8ZKNJU9cn5xPYDJhZmku8g= X-MC-Unique: 9cgo4HYCNQ6AxNO-Vzy8zw-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH for-5.1 1/5] qdev: Fix device_add DRIVER, help to print to monitor Date: Tue, 14 Jul 2020 18:01:58 +0200 Message-Id: <20200714160202.3121879-2-armbru@redhat.com> In-Reply-To: <20200714160202.3121879-1-armbru@redhat.com> References: <20200714160202.3121879-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.81; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/14 12:02:09 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lvivier@redhat.com, thuth@redhat.com, berrange@redhat.com, ehabkost@redhat.com, qemu-stable@nongnu.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , pbonzini@redhat.com, alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Help on device properties gets printed to stdout instead of the monitor. If you have the monitor anywhere else, no help for you. Broken when commit e1043d674d "qdev: use object_property_help()" accidentally switched from qemu_printf() to printf(). Switch right back. Fixes: e1043d674d792ff64aebae1a3eafc08b38a8a085 Cc: Marc-Andr=C3=A9 Lureau Cc: qemu-stable@nongnu.org Signed-off-by: Markus Armbruster Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Li Qiang Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- qdev-monitor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qdev-monitor.c b/qdev-monitor.c index 71ebce19df..e9b7228480 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -300,7 +300,7 @@ int qdev_device_help(QemuOpts *opts) } g_ptr_array_sort(array, (GCompareFunc)qemu_pstrcmp0); for (i =3D 0; i < array->len; i++) { - printf("%s\n", (char *)array->pdata[i]); + qemu_printf("%s\n", (char *)array->pdata[i]); } g_ptr_array_set_free_func(array, g_free); g_ptr_array_free(array, true); --=20 2.26.2 From nobody Fri May 17 11:58:43 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1594742772; cv=none; d=zohomail.com; s=zohoarc; b=T2Fb9uZalaQvWaEzlF7g+Xu1N/gGT7LPvbMoghGBRhdnhWCdP/lSBjKRETdEyjUAFDFBB1QM7mtsTt4SijskYOmIyS+USQnxMeROsNpAt+WorMtSNx7lpTwvPAFV/m9UpATBhWd+XB/fzCeF6xxvFfzl5nuQPOyKqMQhATD9+os= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1594742772; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZyHJr/bBDTg6+0dit92IOQ9uBFEdiYfGfe+lP+xf4C8=; b=hhljTtJcyBCPoJyP6RAjpgnr3GmaTvzxGWjFP3D0AlK4XQhlq2WiFpjhtSB3ARhPTWqcN8zHijXH3/5YeAQQM0NYv3CPoPj/RczcqO7iNEVWEAzbcEPXUTvx91pMNbqKFJvyEhnYA0MvMDznVoT0LDAANyTk+jnkYnQE9+hTKRE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1594742772065426.9447500556678; Tue, 14 Jul 2020 09:06:12 -0700 (PDT) Received: from localhost ([::1]:40728 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jvNRZ-0005EC-SZ for importer@patchew.org; Tue, 14 Jul 2020 12:06:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54226) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jvNNm-0000Kt-IY for qemu-devel@nongnu.org; Tue, 14 Jul 2020 12:02:14 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:24391 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jvNNh-00080n-1h for qemu-devel@nongnu.org; Tue, 14 Jul 2020 12:02:13 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-212-VubIWJApNAWQnz-8TZVV0A-1; Tue, 14 Jul 2020 12:02:06 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E3C0B800597; Tue, 14 Jul 2020 16:02:04 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-143.ams2.redhat.com [10.36.112.143]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A3FBC5C1B2; Tue, 14 Jul 2020 16:02:03 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 2EACD17741CA; Tue, 14 Jul 2020 18:02:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1594742527; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZyHJr/bBDTg6+0dit92IOQ9uBFEdiYfGfe+lP+xf4C8=; b=BK/p66dP1wif58kbh/7dfAREHHl/78+wh+oZI7UzZz7rwuCAOpEONAkVUE8DcuhYP4RKll heTYtYpIojUZG1TuPXkTPX3JjrW+xiRK60B5jmN2zuKu1/LmAgjSOgz5ZACyYcKLzYqPa7 7HtF9w4CkphOfOXGOxcJI7ZVtNDBnOs= X-MC-Unique: VubIWJApNAWQnz-8TZVV0A-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH for-5.1 2/5] qom: Plug memory leak in "info qom-tree" Date: Tue, 14 Jul 2020 18:01:59 +0200 Message-Id: <20200714160202.3121879-3-armbru@redhat.com> In-Reply-To: <20200714160202.3121879-1-armbru@redhat.com> References: <20200714160202.3121879-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.120; envelope-from=armbru@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/14 01:42:04 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lvivier@redhat.com, thuth@redhat.com, berrange@redhat.com, ehabkost@redhat.com, pbonzini@redhat.com, alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Commit e8c9e65816 "qom: Make "info qom-tree" show children sorted" created a memory leak, because I didn't realize object_get_canonical_path_component()'s value needs to be freed. Reproducer: $ qemu-system-x86_64 -nodefaults -display none -S -monitor stdio QEMU 5.0.50 monitor - type 'help' for more information (qemu) info qom-tree This leaks some 4500 path components, 12-13 characters on average, i.e. roughly 100kBytes depending on the allocator. A couple of hundred "info qom-tree" here, a couple of hundred there, and soon enough we're talking about real memory. Plug the leak. Fixes: e8c9e65816f5dbfe18ad3b2be938d0d8192d459a Signed-off-by: Markus Armbruster Reviewed-by: Li Qiang Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Thomas Huth --- qom/qom-hmp-cmds.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/qom/qom-hmp-cmds.c b/qom/qom-hmp-cmds.c index 9ed8bb1c9f..aaacadacca 100644 --- a/qom/qom-hmp-cmds.c +++ b/qom/qom-hmp-cmds.c @@ -96,8 +96,10 @@ static void print_qom_composition(Monitor *mon, Object *= obj, int indent); =20 static int qom_composition_compare(const void *a, const void *b, void *ign= ore) { - return g_strcmp0(a ? object_get_canonical_path_component(a) : NULL, - b ? object_get_canonical_path_component(b) : NULL); + g_autofree char *ac =3D object_get_canonical_path_component(a); + g_autofree char *bc =3D object_get_canonical_path_component(b); + + return g_strcmp0(ac, bc); } =20 static int insert_qom_composition_child(Object *obj, void *opaque) --=20 2.26.2 From nobody Fri May 17 11:58:43 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1594742946; cv=none; d=zohomail.com; s=zohoarc; b=kSIbmI8DjcvbLrfvj0cYsYrfKKUKnu9Qr+AQRTVN3Ewmyc9Lmlp3ttvFNpOKIqQ1IIWThDiqfa5vAGvif8Rj/HSMJPOCKxsVaYYTtyGnIO9NNTJupfb92rqdiBaZKcoC+qX31QY3eIY57Kq6PA0bErwxwpRiwrqfG2sun/su/l8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1594742946; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ujcU9LFhlHMMoxB1Kg7NboK4hTztfUJj6I53eRAQ1mY=; b=kuCwFPeYIr8Wjco+1UmcV3vWPOaYleDv73/Vr1i3KCbY43CWdUZ1rKdPZ4RbUO3EpUita21oNoLQojCcA8wZ4wdOHKAHcSV+d16pEvHguGjDXoHWhCd/g2c+r9qlwKZMq/MKTl0qJZFTdgmifkP1b+cmtDC/R1ZVnd7HV3QST+k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1594742946257455.08934024349276; Tue, 14 Jul 2020 09:09:06 -0700 (PDT) Received: from localhost ([::1]:50902 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jvNUO-0000uY-VO for importer@patchew.org; Tue, 14 Jul 2020 12:09:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54270) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jvNNo-0000O6-9Q for qemu-devel@nongnu.org; Tue, 14 Jul 2020 12:02:16 -0400 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:51115 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jvNNi-00081B-07 for qemu-devel@nongnu.org; Tue, 14 Jul 2020 12:02:15 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-170-i3CDEohtO9Om8e8G-9QpTQ-1; Tue, 14 Jul 2020 12:02:07 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F29601DE0; Tue, 14 Jul 2020 16:02:05 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-143.ams2.redhat.com [10.36.112.143]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A7D2B2B6F0; Tue, 14 Jul 2020 16:02:03 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 336EE17741CB; Tue, 14 Jul 2020 18:02:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1594742528; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ujcU9LFhlHMMoxB1Kg7NboK4hTztfUJj6I53eRAQ1mY=; b=eGPNI7sXkQdH8QB5I4jCwlo4c/8xrssX/wA1B7g+Xupw3GQOACqJacEIjUeFNyq5N5wF3k PotVIvWrjvIm6U89Jgz8zyBnAh6rE/cVAfFVvwptk8/DJ5ASwHh8aNIG7p8vhwRNrmvyaF z8YzE/XSRCSjX0le9Fk3ScuoI0h9/9E= X-MC-Unique: i3CDEohtO9Om8e8G-9QpTQ-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH for-5.1 3/5] qom: Change object_get_canonical_path_component() not to malloc Date: Tue, 14 Jul 2020 18:02:00 +0200 Message-Id: <20200714160202.3121879-4-armbru@redhat.com> In-Reply-To: <20200714160202.3121879-1-armbru@redhat.com> References: <20200714160202.3121879-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.61; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/14 03:57:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lvivier@redhat.com, thuth@redhat.com, berrange@redhat.com, ehabkost@redhat.com, pbonzini@redhat.com, alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" object_get_canonical_path_component() returns a malloced copy of a property name on success, null on failure. 19 of its 25 callers immediately free the returned copy. Change object_get_canonical_path_component() to return the property name directly. Since modifying the name would be wrong, adjust the return type to const char *. Drop the free from the 19 callers become simpler, add the g_strdup() to the other six. Signed-off-by: Markus Armbruster Reviewed-by: Li Qiang Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/qom/object.h | 2 +- backends/hostmem.c | 2 +- block/throttle-groups.c | 2 +- gdbstub.c | 2 +- hw/arm/xlnx-zynqmp.c | 6 ++---- hw/block/nvme.c | 5 ++--- hw/core/machine-qmp-cmds.c | 2 +- hw/core/machine.c | 5 ++--- hw/mem/nvdimm.c | 5 ++--- hw/mem/pc-dimm.c | 5 ++--- hw/misc/ivshmem.c | 5 ++--- hw/ppc/spapr_drc.c | 3 +-- hw/virtio/virtio-crypto.c | 5 ++--- hw/virtio/virtio-mem.c | 6 ++---- hw/virtio/virtio-pmem.c | 5 ++--- iothread.c | 9 ++++----- net/net.c | 6 ++---- qom/object.c | 7 +++---- qom/qom-hmp-cmds.c | 11 ++++------- scsi/pr-manager-helper.c | 3 +-- scsi/pr-manager.c | 2 +- softmmu/memory.c | 2 +- hw/ppc/trace-events | 2 +- 23 files changed, 41 insertions(+), 61 deletions(-) diff --git a/include/qom/object.h b/include/qom/object.h index 79c8f838b6..55d925d2c8 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -1462,7 +1462,7 @@ Object *object_get_internal_root(void); * path is the path within the composition tree starting from the root. * %NULL if the object doesn't have a parent (and thus a canonical path). */ -char *object_get_canonical_path_component(const Object *obj); +const char *object_get_canonical_path_component(const Object *obj); =20 /** * object_get_canonical_path: diff --git a/backends/hostmem.c b/backends/hostmem.c index c614f1bdc1..4bde00e8e7 100644 --- a/backends/hostmem.c +++ b/backends/hostmem.c @@ -33,7 +33,7 @@ char * host_memory_backend_get_name(HostMemoryBackend *backend) { if (!backend->use_canonical_path) { - return object_get_canonical_path_component(OBJECT(backend)); + return g_strdup(object_get_canonical_path_component(OBJECT(backend= ))); } =20 return object_get_canonical_path(OBJECT(backend)); diff --git a/block/throttle-groups.c b/block/throttle-groups.c index 03a53c89ea..98fea7fd47 100644 --- a/block/throttle-groups.c +++ b/block/throttle-groups.c @@ -771,7 +771,7 @@ static void throttle_group_obj_complete(UserCreatable *= obj, Error **errp) =20 /* set group name to object id if it exists */ if (!tg->name && tg->parent_obj.parent) { - tg->name =3D object_get_canonical_path_component(OBJECT(obj)); + tg->name =3D g_strdup(object_get_canonical_path_component(OBJECT(o= bj))); } /* We must have a group name at this point */ assert(tg->name); diff --git a/gdbstub.c b/gdbstub.c index 6950fd243f..f3a318cd7f 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2059,7 +2059,7 @@ static void handle_query_thread_extra(GdbCmdContext *= gdb_ctx, void *user_ctx) /* Print the CPU model and name in multiprocess mode */ ObjectClass *oc =3D object_get_class(OBJECT(cpu)); const char *cpu_model =3D object_class_get_name(oc); - g_autofree char *cpu_name =3D + const char *cpu_name =3D object_get_canonical_path_component(OBJECT(cpu)); g_string_printf(rs, "%s %s [%s]", cpu_model, cpu_name, cpu->halted ? "halted " : "running"); diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index 772cfa3771..e14323c991 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -190,7 +190,7 @@ static void xlnx_zynqmp_create_rpu(MachineState *ms, Xl= nxZynqMPState *s, qdev_prop_set_uint32(DEVICE(&s->rpu_cluster), "cluster-id", 1); =20 for (i =3D 0; i < num_rpus; i++) { - char *name; + const char *name; =20 object_initialize_child(OBJECT(&s->rpu_cluster), "rpu-cpu[*]", &s->rpu_cpu[i], @@ -204,7 +204,6 @@ static void xlnx_zynqmp_create_rpu(MachineState *ms, Xl= nxZynqMPState *s, } else { s->boot_cpu_ptr =3D &s->rpu_cpu[i]; } - g_free(name); =20 object_property_set_bool(OBJECT(&s->rpu_cpu[i]), "reset-hivecs", t= rue, &error_abort); @@ -341,7 +340,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) =20 /* Realize APUs before realizing the GIC. KVM requires this. */ for (i =3D 0; i < num_apus; i++) { - char *name; + const char *name; =20 object_property_set_int(OBJECT(&s->apu_cpu[i]), "psci-conduit", QEMU_PSCI_CONDUIT_SMC, &error_abort); @@ -354,7 +353,6 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) } else { s->boot_cpu_ptr =3D &s->apu_cpu[i]; } - g_free(name); =20 object_property_set_bool(OBJECT(&s->apu_cpu[i]), "has_el3", s->sec= ure, NULL); diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 1aee042d4c..3426e17e65 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1397,9 +1397,8 @@ static void nvme_check_constraints(NvmeCtrl *n, Error= **errp) =20 if (!n->params.cmb_size_mb && n->pmrdev) { if (host_memory_backend_is_mapped(n->pmrdev)) { - char *path =3D object_get_canonical_path_component(OBJECT(n->p= mrdev)); - error_setg(errp, "can't use already busy memdev: %s", path); - g_free(path); + error_setg(errp, "can't use already busy memdev: %s", + object_get_canonical_path_component(OBJECT(n->pmrde= v))); return; } =20 diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c index 2c5da8413d..963088b798 100644 --- a/hw/core/machine-qmp-cmds.c +++ b/hw/core/machine-qmp-cmds.c @@ -315,7 +315,7 @@ static int query_memdev(Object *obj, void *opaque) =20 m->value =3D g_malloc0(sizeof(*m->value)); =20 - m->value->id =3D object_get_canonical_path_component(obj); + m->value->id =3D g_strdup(object_get_canonical_path_component(obj)= ); m->value->has_id =3D !!m->value->id; =20 m->value->size =3D object_property_get_uint(obj, "size", diff --git a/hw/core/machine.c b/hw/core/machine.c index eb267b828d..2f881d6d75 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -1073,9 +1073,8 @@ MemoryRegion *machine_consume_memdev(MachineState *ma= chine, MemoryRegion *ret =3D host_memory_backend_get_memory(backend); =20 if (memory_region_is_mapped(ret)) { - char *path =3D object_get_canonical_path_component(OBJECT(backend)= ); - error_report("memory backend %s can't be used multiple times.", pa= th); - g_free(path); + error_report("memory backend %s can't be used multiple times.", + object_get_canonical_path_component(OBJECT(backend))); exit(EXIT_FAILURE); } host_memory_backend_set_mapped(backend, true); diff --git a/hw/mem/nvdimm.c b/hw/mem/nvdimm.c index d0d6e553cf..e1574bc07c 100644 --- a/hw/mem/nvdimm.c +++ b/hw/mem/nvdimm.c @@ -137,13 +137,12 @@ static void nvdimm_prepare_memory_region(NVDIMMDevice= *nvdimm, Error **errp) =20 if (size <=3D nvdimm->label_size || !pmem_size) { HostMemoryBackend *hostmem =3D dimm->hostmem; - char *path =3D object_get_canonical_path_component(OBJECT(hostmem)= ); =20 error_setg(errp, "the size of memdev %s (0x%" PRIx64 ") is too " "small to contain nvdimm label (0x%" PRIx64 ") and " "aligned PMEM (0x%" PRIx64 ")", - path, memory_region_size(mr), nvdimm->label_size, align= ); - g_free(path); + object_get_canonical_path_component(OBJECT(hostmem)), + memory_region_size(mr), nvdimm->label_size, align); return; } =20 diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index 9d3f0b9691..c30351070b 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -179,9 +179,8 @@ static void pc_dimm_realize(DeviceState *dev, Error **e= rrp) error_setg(errp, "'" PC_DIMM_MEMDEV_PROP "' property is not set"); return; } else if (host_memory_backend_is_mapped(dimm->hostmem)) { - char *path =3D object_get_canonical_path_component(OBJECT(dimm->ho= stmem)); - error_setg(errp, "can't use already busy memdev: %s", path); - g_free(path); + error_setg(errp, "can't use already busy memdev: %s", + object_get_canonical_path_component(OBJECT(dimm->hostme= m))); return; } if (((nb_numa_nodes > 0) && (dimm->node >=3D nb_numa_nodes)) || diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c index fc128b25e2..2b6882face 100644 --- a/hw/misc/ivshmem.c +++ b/hw/misc/ivshmem.c @@ -1037,9 +1037,8 @@ static void ivshmem_plain_realize(PCIDevice *dev, Err= or **errp) error_setg(errp, "You must specify a 'memdev'"); return; } else if (host_memory_backend_is_mapped(s->hostmem)) { - char *path =3D object_get_canonical_path_component(OBJECT(s->hostm= em)); - error_setg(errp, "can't use already busy memdev: %s", path); - g_free(path); + error_setg(errp, "can't use already busy memdev: %s", + object_get_canonical_path_component(OBJECT(s->hostmem))= ); return; } =20 diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index 43d12bc33a..fe998d8108 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -513,7 +513,7 @@ static void realize(DeviceState *d, Error **errp) SpaprDrc *drc =3D SPAPR_DR_CONNECTOR(d); Object *root_container; gchar *link_name; - char *child_name; + const char *child_name; =20 trace_spapr_drc_realize(spapr_drc_index(drc)); /* NOTE: we do this as part of realize/unrealize due to the fact @@ -529,7 +529,6 @@ static void realize(DeviceState *d, Error **errp) trace_spapr_drc_realize_child(spapr_drc_index(drc), child_name); object_property_add_alias(root_container, link_name, drc->owner, child_name); - g_free(child_name); g_free(link_name); vmstate_register(VMSTATE_IF(drc), spapr_drc_index(drc), &vmstate_spapr= _drc, drc); diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index bd9165c565..6da12e315f 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -786,9 +786,8 @@ static void virtio_crypto_device_realize(DeviceState *d= ev, Error **errp) error_setg(errp, "'cryptodev' parameter expects a valid object"); return; } else if (cryptodev_backend_is_used(vcrypto->cryptodev)) { - char *path =3D object_get_canonical_path_component(OBJECT(vcrypto-= >conf.cryptodev)); - error_setg(errp, "can't use already used cryptodev backend: %s", p= ath); - g_free(path); + error_setg(errp, "can't use already used cryptodev backend: %s", + object_get_canonical_path_component(OBJECT(vcrypto->con= f.cryptodev))); return; } =20 diff --git a/hw/virtio/virtio-mem.c b/hw/virtio/virtio-mem.c index 65850530e7..c12e9f79b0 100644 --- a/hw/virtio/virtio-mem.c +++ b/hw/virtio/virtio-mem.c @@ -409,11 +409,9 @@ static void virtio_mem_device_realize(DeviceState *dev= , Error **errp) error_setg(errp, "'%s' property is not set", VIRTIO_MEM_MEMDEV_PRO= P); return; } else if (host_memory_backend_is_mapped(vmem->memdev)) { - char *path =3D object_get_canonical_path_component(OBJECT(vmem->me= mdev)); - error_setg(errp, "'%s' property specifies a busy memdev: %s", - VIRTIO_MEM_MEMDEV_PROP, path); - g_free(path); + VIRTIO_MEM_MEMDEV_PROP, + object_get_canonical_path_component(OBJECT(vmem->memdev= ))); return; } else if (!memory_region_is_ram(&vmem->memdev->mr) || memory_region_is_rom(&vmem->memdev->mr) || diff --git a/hw/virtio/virtio-pmem.c b/hw/virtio/virtio-pmem.c index c3374b2f3f..1e0c137497 100644 --- a/hw/virtio/virtio-pmem.c +++ b/hw/virtio/virtio-pmem.c @@ -112,9 +112,8 @@ static void virtio_pmem_realize(DeviceState *dev, Error= **errp) } =20 if (host_memory_backend_is_mapped(pmem->memdev)) { - char *path =3D object_get_canonical_path_component(OBJECT(pmem->me= mdev)); - error_setg(errp, "can't use already busy memdev: %s", path); - g_free(path); + error_setg(errp, "can't use already busy memdev: %s", + object_get_canonical_path_component(OBJECT(pmem->memdev= ))); return; } =20 diff --git a/iothread.c b/iothread.c index 0598a6d20d..263ec6e5bc 100644 --- a/iothread.c +++ b/iothread.c @@ -165,7 +165,7 @@ static void iothread_complete(UserCreatable *obj, Error= **errp) { Error *local_error =3D NULL; IOThread *iothread =3D IOTHREAD(obj); - char *name, *thread_name; + char *thread_name; =20 iothread->stopping =3D false; iothread->running =3D true; @@ -195,12 +195,11 @@ static void iothread_complete(UserCreatable *obj, Err= or **errp) /* This assumes we are called from a thread with useful CPU affinity f= or us * to inherit. */ - name =3D object_get_canonical_path_component(OBJECT(obj)); - thread_name =3D g_strdup_printf("IO %s", name); + thread_name =3D g_strdup_printf("IO %s", + object_get_canonical_path_component(OBJECT(obj))); qemu_thread_create(&iothread->thread, thread_name, iothread_run, iothread, QEMU_THREAD_JOINABLE); g_free(thread_name); - g_free(name); =20 /* Wait for initialization to complete */ while (iothread->thread_id =3D=3D -1) { @@ -303,7 +302,7 @@ type_init(iothread_register_types) =20 char *iothread_get_id(IOThread *iothread) { - return object_get_canonical_path_component(OBJECT(iothread)); + return g_strdup(object_get_canonical_path_component(OBJECT(iothread))); } =20 AioContext *iothread_get_aio_context(IOThread *iothread) diff --git a/net/net.c b/net/net.c index 7fddcebaa2..bbaedb3c7a 100644 --- a/net/net.c +++ b/net/net.c @@ -1185,12 +1185,10 @@ void print_net_client(Monitor *mon, NetClientState = *nc) monitor_printf(mon, "filters:\n"); } QTAILQ_FOREACH(nf, &nc->filters, next) { - char *path =3D object_get_canonical_path_component(OBJECT(nf)); - - monitor_printf(mon, " - %s: type=3D%s", path, + monitor_printf(mon, " - %s: type=3D%s", + object_get_canonical_path_component(OBJECT(nf)), object_get_typename(OBJECT(nf))); netfilter_print_info(mon, nf); - g_free(path); } } =20 diff --git a/qom/object.c b/qom/object.c index 76f5f75239..00fdf89b3b 100644 --- a/qom/object.c +++ b/qom/object.c @@ -1931,7 +1931,7 @@ object_property_add_const_link(Object *obj, const cha= r *name, NULL, OBJ_PROP_LINK_DIRECT); } =20 -char *object_get_canonical_path_component(const Object *obj) +const char *object_get_canonical_path_component(const Object *obj) { ObjectProperty *prop =3D NULL; GHashTableIter iter; @@ -1947,7 +1947,7 @@ char *object_get_canonical_path_component(const Objec= t *obj) } =20 if (prop->opaque =3D=3D obj) { - return g_strdup(prop->name); + return prop->name; } } =20 @@ -1966,7 +1966,7 @@ char *object_get_canonical_path(const Object *obj) } =20 do { - char *component =3D object_get_canonical_path_component(obj); + const char *component =3D object_get_canonical_path_component(obj); =20 if (!component) { /* A canonical path must be complete, so discard what was @@ -1978,7 +1978,6 @@ char *object_get_canonical_path(const Object *obj) =20 newpath =3D g_strdup_printf("/%s%s", component, path ? path : ""); g_free(path); - g_free(component); path =3D newpath; obj =3D obj->parent; } while (obj !=3D root); diff --git a/qom/qom-hmp-cmds.c b/qom/qom-hmp-cmds.c index aaacadacca..4032c96089 100644 --- a/qom/qom-hmp-cmds.c +++ b/qom/qom-hmp-cmds.c @@ -96,10 +96,8 @@ static void print_qom_composition(Monitor *mon, Object *= obj, int indent); =20 static int qom_composition_compare(const void *a, const void *b, void *ign= ore) { - g_autofree char *ac =3D object_get_canonical_path_component(a); - g_autofree char *bc =3D object_get_canonical_path_component(b); - - return g_strcmp0(ac, bc); + return g_strcmp0(object_get_canonical_path_component(a), + object_get_canonical_path_component(b)); } =20 static int insert_qom_composition_child(Object *obj, void *opaque) @@ -112,18 +110,17 @@ static int insert_qom_composition_child(Object *obj, = void *opaque) =20 static void print_qom_composition(Monitor *mon, Object *obj, int indent) { - char *name; + const char *name; GQueue children; Object *child; =20 if (obj =3D=3D object_get_root()) { - name =3D g_strdup(""); + name =3D ""; } else { name =3D object_get_canonical_path_component(obj); } monitor_printf(mon, "%*s/%s (%s)\n", indent, "", name, object_get_typename(obj)); - g_free(name); =20 g_queue_init(&children); object_child_foreach(obj, insert_qom_composition_child, &children); diff --git a/scsi/pr-manager-helper.c b/scsi/pr-manager-helper.c index bf62cbec11..5acccfb4e3 100644 --- a/scsi/pr-manager-helper.c +++ b/scsi/pr-manager-helper.c @@ -42,11 +42,10 @@ typedef struct PRManagerHelper { =20 static void pr_manager_send_status_changed_event(PRManagerHelper *pr_mgr) { - char *id =3D object_get_canonical_path_component(OBJECT(pr_mgr)); + const char *id =3D object_get_canonical_path_component(OBJECT(pr_mgr)); =20 if (id) { qapi_event_send_pr_manager_status_changed(id, !!pr_mgr->ioc); - g_free(id); } } =20 diff --git a/scsi/pr-manager.c b/scsi/pr-manager.c index 0c866e8698..32b9287e68 100644 --- a/scsi/pr-manager.c +++ b/scsi/pr-manager.c @@ -128,7 +128,7 @@ static int query_one_pr_manager(Object *object, void *o= paque) =20 elem =3D g_new0(PRManagerInfoList, 1); info =3D g_new0(PRManagerInfo, 1); - info->id =3D object_get_canonical_path_component(object); + info->id =3D g_strdup(object_get_canonical_path_component(object)); info->connected =3D pr_manager_is_connected(pr_mgr); elem->value =3D info; elem->next =3D NULL; diff --git a/softmmu/memory.c b/softmmu/memory.c index 9200b20130..af25987518 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -1764,7 +1764,7 @@ const char *memory_region_name(const MemoryRegion *mr) { if (!mr->name) { ((MemoryRegion *)mr)->name =3D - object_get_canonical_path_component(OBJECT(mr)); + g_strdup(object_get_canonical_path_component(OBJECT(mr))); } return mr->name; } diff --git a/hw/ppc/trace-events b/hw/ppc/trace-events index 9ea620f23c..7c0be4102e 100644 --- a/hw/ppc/trace-events +++ b/hw/ppc/trace-events @@ -57,7 +57,7 @@ spapr_drc_detach(uint32_t index) "drc: 0x%"PRIx32 spapr_drc_awaiting_quiesce(uint32_t index) "drc: 0x%"PRIx32 spapr_drc_reset(uint32_t index) "drc: 0x%"PRIx32 spapr_drc_realize(uint32_t index) "drc: 0x%"PRIx32 -spapr_drc_realize_child(uint32_t index, char *childname) "drc: 0x%"PRIx32"= , child name: %s" +spapr_drc_realize_child(uint32_t index, const char *childname) "drc: 0x%"P= RIx32", child name: %s" spapr_drc_realize_complete(uint32_t index) "drc: 0x%"PRIx32 spapr_drc_unrealize(uint32_t index) "drc: 0x%"PRIx32 =20 --=20 2.26.2 From nobody Fri May 17 11:58:43 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1594742888; cv=none; d=zohomail.com; s=zohoarc; b=WztiJjTDGtw8F8HeI5yAWUU8X6iYwKVN3wsv4t0UZ62WqqdGRxNcxM9m4pNU27LJVGiN+BOnGyrH4KWVpuy9Lxh+hx9PxiaHePYNG4vhkqMWyf0jF4uqnnutuuO5cJlyIuW0WhbpnVf1adX2Bgu2wsEJHErrmYAQ68uPYArBbdc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1594742888; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rPjUnyc8EaEsTj7zhe25TRTnVCrTgwFFmTpiNFmR+iQ=; b=U59PLphUPrxnWf2GvueZDM/A5JGzAr52aAos37h2RgpldqDBrjZghAkL77qRZjyaIEySYxgTFrOALF6JbVPV0zsuYz6hnJ/Zues7QSDlQ8YcBmRahcgv+fZgwkLRRLWk9ZPsckqcQ++KgbSwaKlZq8N1ebcsIAdx0E6lr4WNkqo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1594742888568411.11077173905755; Tue, 14 Jul 2020 09:08:08 -0700 (PDT) Received: from localhost ([::1]:48456 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jvNTT-0008Kz-8T for importer@patchew.org; Tue, 14 Jul 2020 12:08:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54212) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jvNNk-0000KT-ND for qemu-devel@nongnu.org; Tue, 14 Jul 2020 12:02:14 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:31224 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jvNNh-00080i-02 for qemu-devel@nongnu.org; Tue, 14 Jul 2020 12:02:12 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-36-xid3NIrhMbKEcK4AUy6uPQ-1; Tue, 14 Jul 2020 12:02:04 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0972018C63C1; Tue, 14 Jul 2020 16:02:04 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-143.ams2.redhat.com [10.36.112.143]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A8B2360E1C; Tue, 14 Jul 2020 16:02:03 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 3779217741CC; Tue, 14 Jul 2020 18:02:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1594742527; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rPjUnyc8EaEsTj7zhe25TRTnVCrTgwFFmTpiNFmR+iQ=; b=drslve8yFvgfpvbdg8C3DeomreZ3dhJ8hfux6NLM/zar7iP+szQGZslIytvDFbhwuT/xAu Qz7I0C+vIxzJ/qot2HumMYvjDzF8CxSG/bAnrOmTkrSaQ+6yUpAW1IacOqjPHbGG105wZQ IajqHgtZWXet3bZaoylOuRM3M1+8350= X-MC-Unique: xid3NIrhMbKEcK4AUy6uPQ-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH for-5.1 4/5] qom: Document object_get_canonical_path() returns malloced string Date: Tue, 14 Jul 2020 18:02:01 +0200 Message-Id: <20200714160202.3121879-5-armbru@redhat.com> In-Reply-To: <20200714160202.3121879-1-armbru@redhat.com> References: <20200714160202.3121879-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.61; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/14 03:57:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lvivier@redhat.com, thuth@redhat.com, berrange@redhat.com, ehabkost@redhat.com, pbonzini@redhat.com, alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/qom/object.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/qom/object.h b/include/qom/object.h index 55d925d2c8..0f3a60617c 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -1467,8 +1467,9 @@ const char *object_get_canonical_path_component(const= Object *obj); /** * object_get_canonical_path: * - * Returns: The canonical path for a object. This is the path within the - * composition tree starting from the root. + * Returns: The canonical path for a object, newly allocated. This is + * the path within the composition tree starting from the root. Use + * g_free() to free it. */ char *object_get_canonical_path(const Object *obj); =20 --=20 2.26.2 From nobody Fri May 17 11:58:43 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1594742635; cv=none; d=zohomail.com; s=zohoarc; b=CZVugMhrKDHYhok9blpdi0l+hq/KGGjkzlgD/+p2g3kDKGAj0A4qHmZnuahycBma/naIvo9GuEANsqnmdhee4OZ70PL6A0bY9unkDWNCplRwappp1V1cK1wX+A35i6b/9+C4pN2aGU0zIHChew1FhQiHXqkoEEXs/3Xvo7g6kmQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1594742635; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=N1nzvUk7EEpzgnDqyA9M50UToID+wiZZOE4P6zSuRUQ=; b=hKQ3KNa0uznpwEvihFAuQqy5ZVksTn2lhhGXKgUvXNMfJ9gLNVH6NFNBEjtefQ6PypplhHA9rMGCwEjaS3ipE67i7XjB+/aOxrC/jCS/CpABPCEw4mNwpDSc9Pu6iwGNAnrS9pQDvS82c8IoIBK9VHq6oCtTHEcSpj/ygsaen38= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1594742635101521.2534574192209; Tue, 14 Jul 2020 09:03:55 -0700 (PDT) Received: from localhost ([::1]:33636 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jvNPN-0001zh-Hy for importer@patchew.org; Tue, 14 Jul 2020 12:03:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54248) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jvNNn-0000MU-J5 for qemu-devel@nongnu.org; Tue, 14 Jul 2020 12:02:15 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:59667 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jvNNi-000819-0P for qemu-devel@nongnu.org; Tue, 14 Jul 2020 12:02:15 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-228-enUGeZAkObiSeP7o9vKmqQ-1; Tue, 14 Jul 2020 12:02:06 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 63CD718C63C9; Tue, 14 Jul 2020 16:02:05 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-143.ams2.redhat.com [10.36.112.143]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 30EA978A4B; Tue, 14 Jul 2020 16:02:05 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 3C09117741CD; Tue, 14 Jul 2020 18:02:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1594742528; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=N1nzvUk7EEpzgnDqyA9M50UToID+wiZZOE4P6zSuRUQ=; b=SiD3JajM8cxewGqr3oah6VcspI85sJRBhkdxXlXBHAfXDR9B10Qqy9GdgMAbeM6TlbPWZy 9sc2/59ceJTUYQ90KKvug81UvwiZ5QeL4jiC3P7l6l9dsadx1jF4shfApvl1m4B6zQMFyP Y0YUfpmWfDv6/Ku3TUsETKYzsbMKOz4= X-MC-Unique: enUGeZAkObiSeP7o9vKmqQ-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH for-5.1 5/5] qom: Make info qom-tree sort children more efficiently Date: Tue, 14 Jul 2020 18:02:02 +0200 Message-Id: <20200714160202.3121879-6-armbru@redhat.com> In-Reply-To: <20200714160202.3121879-1-armbru@redhat.com> References: <20200714160202.3121879-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.61; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/14 03:57:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lvivier@redhat.com, thuth@redhat.com, berrange@redhat.com, ehabkost@redhat.com, pbonzini@redhat.com, alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Commit e8c9e65816 "qom: Make "info qom-tree" show children sorted" sorts children the simple, stupid, quadratic way. I thought the number of children would be small enough for this not to matter. I was wrong: there are outliers with several hundred children, e.g ARM machines nuri and smdkc210 each have a node with 513 children. While n^2 sorting isn't noticeable in normal, human usage even for n=3D513, it can be quite noticeable in certain automated tests. In particular, the sort made device-introspect-test even slower. Commit 3e7b80f84d "tests: improve performance of device-introspect-test" just fixed that by cutting back its excessive use of "info qom-tree". Sorting more efficiently makes sense regardless, so do it. Signed-off-by: Markus Armbruster Reviewed-by: Dr. David Alan Gilbert --- qom/qom-hmp-cmds.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/qom/qom-hmp-cmds.c b/qom/qom-hmp-cmds.c index 4032c96089..8861a109d5 100644 --- a/qom/qom-hmp-cmds.c +++ b/qom/qom-hmp-cmds.c @@ -94,25 +94,23 @@ typedef struct QOMCompositionState { =20 static void print_qom_composition(Monitor *mon, Object *obj, int indent); =20 -static int qom_composition_compare(const void *a, const void *b, void *ign= ore) +static int qom_composition_compare(const void *a, const void *b) { - return g_strcmp0(object_get_canonical_path_component(a), - object_get_canonical_path_component(b)); + return g_strcmp0(object_get_canonical_path_component(*(Object **)a), + object_get_canonical_path_component(*(Object **)b)); } =20 static int insert_qom_composition_child(Object *obj, void *opaque) { - GQueue *children =3D opaque; - - g_queue_insert_sorted(children, obj, qom_composition_compare, NULL); + g_array_append_val(opaque, obj); return 0; } =20 static void print_qom_composition(Monitor *mon, Object *obj, int indent) { + GArray *children =3D g_array_new(false, false, sizeof(Object *)); const char *name; - GQueue children; - Object *child; + int i; =20 if (obj =3D=3D object_get_root()) { name =3D ""; @@ -122,11 +120,14 @@ static void print_qom_composition(Monitor *mon, Objec= t *obj, int indent) monitor_printf(mon, "%*s/%s (%s)\n", indent, "", name, object_get_typename(obj)); =20 - g_queue_init(&children); - object_child_foreach(obj, insert_qom_composition_child, &children); - while ((child =3D g_queue_pop_head(&children))) { - print_qom_composition(mon, child, indent + 2); + object_child_foreach(obj, insert_qom_composition_child, children); + g_array_sort(children, qom_composition_compare); + + for (i =3D 0; i < children->len; i++) { + print_qom_composition(mon, g_array_index(children, Object *, i), + indent + 2); } + g_array_free(children, TRUE); } =20 void hmp_info_qom_tree(Monitor *mon, const QDict *dict) --=20 2.26.2