From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812245; cv=none; d=zoho.com; s=zohoarc; b=NXQOVWIvln3T2dFOq3glnmBYSZTgiBhIciuspmQznRTR3MJ1PXlYdrKky7Z8s4tjLgl1sDDDCy7n4lk/f68hGQ6ikunTS9V6kMp5DNi6Ar0sEIND4gugUqSKdR9MKgTksMt/D6PnxcPvvtmDBG8G2wJze/8Dh4vvCQwSUXnJ2+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812245; h=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=4vigpk//+SJrLv6rVs7qMX3nNbXlpXgIujh4VVw01ak=; b=ODEeCwY/zqS/OQFNPoC/cWDVhlyD8uRUzi8di63PILs4AYRkYkNQ4FyXG90AEwn7qdSVM/n/X3HBY3xr64LAVmNzH1LnbYfKsvEZgMkn6O7dqDkF0Qqh3g/14ftZbWct1lqvdwlirHiW6oNepLZGz/ZllRqqlWEILXOORE42ZtA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812245969467.21680083344415; Fri, 11 Oct 2019 09:44:05 -0700 (PDT) Received: from localhost ([::1]:54092 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy1L-0008Us-0S for importer@patchew.org; Fri, 11 Oct 2019 12:44:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35901) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQW-0005Yh-EM for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQV-00041L-8J for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:00 -0400 Received: from relay.sw.ru ([185.231.240.75]:47786) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQV-0003zo-12 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:05:59 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQS-0003XG-3M; Fri, 11 Oct 2019 19:05:56 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 001/126] hw/core/loader-fit: fix freeing errp in fit_load_fdt Date: Fri, 11 Oct 2019 19:03:47 +0300 Message-Id: <20191011160552.22907-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Aleksandar Rikalo , Paul Burton , vsementsov@virtuozzo.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" fit_load_fdt forget to check that errp is not NULL and to zero it after freeing. Fix it. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- hw/core/loader-fit.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/core/loader-fit.c b/hw/core/loader-fit.c index 953b16bc82..3ee9fb2f2e 100644 --- a/hw/core/loader-fit.c +++ b/hw/core/loader-fit.c @@ -200,7 +200,10 @@ static int fit_load_fdt(const struct fit_loader *ldr, = const void *itb, err =3D fit_image_addr(itb, img_off, "load", &load_addr, errp); if (err =3D=3D -ENOENT) { load_addr =3D ROUND_UP(kernel_end, 64 * KiB) + (10 * MiB); - error_free(*errp); + if (errp) { + error_free(*errp); + *errp =3D NULL; + } } else if (err) { error_prepend(errp, "unable to read FDT load address from FIT: "); ret =3D err; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570810906; cv=none; d=zoho.com; s=zohoarc; b=LUfPSYG+w2zo88xQ92h++CLoSgiHiw+n1jqhfb0SYYAyiy8eGYyxeAOxzVShgMSJw5n9uOatEo16zUXQDt9xDLcyPru++SJTYUbeEuDUGQ813tJvp2dhD9sAeQuRLc9VE8yKwfXidg6qok4+l1voYhTg22GKZJ1NFugSu7BSero= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810906; h=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=UOyShFsz8QrKMu8JZivdzEPXvZr1Wy9WrJDiD9dMk9c=; b=ne+TusIelJ8KJTaqAa85PoLFOX/VESFSq71bOX2NEiemOR71vjx8UJVDluWdessE22lNKlDbNMn7KgtvHc+OCKX/R63lo19HJpS0DLIDZ98BNL9ykQTDHw/EMyeqC2XzdMJAySe5bqofdxnwGa0drz8rE6OnnYK4F42eRBIT55Q= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570810906324669.3462478220165; Fri, 11 Oct 2019 09:21:46 -0700 (PDT) Received: from localhost ([::1]:53676 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxfl-0006QB-8u for importer@patchew.org; Fri, 11 Oct 2019 12:21:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35904) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQW-0005Yv-Dy for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQV-00041i-C2 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:00 -0400 Received: from relay.sw.ru ([185.231.240.75]:47784) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQV-0003zn-34 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:05:59 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQS-0003XG-IH; Fri, 11 Oct 2019 19:05:56 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 002/126] net/net: Clean up variable shadowing in net_client_init() Date: Fri, 11 Oct 2019 19:03:48 +0300 Message-Id: <20191011160552.22907-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Jason Wang , vsementsov@virtuozzo.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Variable int err in inner scope shadows Error *err in outer scope. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- net/net.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/net/net.c b/net/net.c index 84aa6d8d00..9e93c3f8a1 100644 --- a/net/net.c +++ b/net/net.c @@ -1126,16 +1126,13 @@ static int net_client_init(QemuOpts *opts, bool is_= netdev, Error **errp) =20 prefix_addr =3D substrings[0]; =20 - if (substrings[1]) { - /* User-specified prefix length. */ - int err; - - err =3D qemu_strtoul(substrings[1], NULL, 10, &prefix_len); - if (err) { - error_setg(errp, QERR_INVALID_PARAMETER_VALUE, - "ipv6-prefixlen", "a number"); - goto out; - } + /* Handle user-specified prefix length. */ + if (substrings[1] && + qemu_strtoul(substrings[1], NULL, 10, &prefix_len)) + { + error_setg(errp, QERR_INVALID_PARAMETER_VALUE, + "ipv6-prefixlen", "a number"); + goto out; } =20 qemu_opt_set(opts, "ipv6-prefix", prefix_addr, &error_abort); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570810087; cv=none; d=zoho.com; s=zohoarc; b=IVoc5GjXfAjZI0yg1411zv8JP1Bo6WnxSOSXoa90JLRK4dAPwsjjapjjpo0HjG7JvuvDnZT9/qkHldYvmvdRBijE2obxPv6c8ckFh+O9wITR82cJ7xUjxA7scaBjbWw4BinOB5iaJY99dfLDtJkF5L0vwzQxsyOBAeZLvpH2gJI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810087; h=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=tngXWSrvPKLYV292Mma6xG1RSKgyw4fIAxAFnyumabc=; b=fnjFqxOot01eTUSy/dODNV33x+kbS3iM+Zdy+SzyhHkLNmeGCgIl0iCn0YcsGcZmopZNpE4GWYkpi/MwQpZn3ztRMH9ypTu8rP5BjAX1Xh+Mr5Und5ZptikRFSTz1E/R/b78BLgqEY01Jg7f8IOl7QwsLk9lY1BlWm2rkHYhhoU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570810087589122.48733651328848; Fri, 11 Oct 2019 09:08:07 -0700 (PDT) Received: from localhost ([::1]:53298 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxSM-0007lx-Uv for importer@patchew.org; Fri, 11 Oct 2019 12:07:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35916) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQW-0005ZT-Mu for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQV-00041b-Bt for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:00 -0400 Received: from relay.sw.ru ([185.231.240.75]:47792) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQV-00040M-39 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:05:59 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQS-0003XG-Ur; Fri, 11 Oct 2019 19:05:57 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 003/126] error: rename errp to errp_in where it is IN-argument Date: Fri, 11 Oct 2019 19:03:49 +0300 Message-Id: <20191011160552.22907-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, armbru@redhat.com, Michael Roth Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Error **errp is almost always OUT-argument: it's assumed to be NULL, or pointer to NULL-initialized pointer, or pointer to error_abort or error_fatal, for callee to report error. But very few functions instead get Error **errp as IN-argument: it's assumed to be set (or, maybe, NULL), and callee should clean it, or add some information. In such cases, rename errp to errp_in. This patch updates only error API functions. There still a few functions with errp-in semantics, they will be updated in further commits. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/qapi/error.h | 8 ++++---- util/error.c | 30 +++++++++++++++--------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/include/qapi/error.h b/include/qapi/error.h index 3f95141a01..12532bdf69 100644 --- a/include/qapi/error.h +++ b/include/qapi/error.h @@ -233,13 +233,13 @@ void error_propagate_prepend(Error **dst_errp, Error = *local_err, * Prepend some text to @errp's human-readable error message. * The text is made by formatting @fmt, @ap like vprintf(). */ -void error_vprepend(Error **errp, const char *fmt, va_list ap); +void error_vprepend(Error **errp_in, const char *fmt, va_list ap); =20 /* * Prepend some text to @errp's human-readable error message. * The text is made by formatting @fmt, ... like printf(). */ -void error_prepend(Error **errp, const char *fmt, ...) +void error_prepend(Error **errp_in, const char *fmt, ...) GCC_FMT_ATTR(2, 3); =20 /* @@ -256,7 +256,7 @@ void error_prepend(Error **errp, const char *fmt, ...) * May be called multiple times. The resulting hint should end with a * newline. */ -void error_append_hint(Error **errp, const char *fmt, ...) +void error_append_hint(Error **errp_in, const char *fmt, ...) GCC_FMT_ATTR(2, 3); =20 /* @@ -283,7 +283,7 @@ void error_free(Error *err); /* * Convenience function to assert that *@errp is set, then silently free i= t. */ -void error_free_or_abort(Error **errp); +void error_free_or_abort(Error **errp_in); =20 /* * Convenience function to warn_report() and free @err. diff --git a/util/error.c b/util/error.c index d4532ce318..275586faa8 100644 --- a/util/error.c +++ b/util/error.c @@ -121,41 +121,41 @@ void error_setg_file_open_internal(Error **errp, "Could not open '%s'", filename); } =20 -void error_vprepend(Error **errp, const char *fmt, va_list ap) +void error_vprepend(Error **errp_in, const char *fmt, va_list ap) { GString *newmsg; =20 - if (!errp) { + if (!errp_in) { return; } =20 newmsg =3D g_string_new(NULL); g_string_vprintf(newmsg, fmt, ap); - g_string_append(newmsg, (*errp)->msg); - g_free((*errp)->msg); - (*errp)->msg =3D g_string_free(newmsg, 0); + g_string_append(newmsg, (*errp_in)->msg); + g_free((*errp_in)->msg); + (*errp_in)->msg =3D g_string_free(newmsg, 0); } =20 -void error_prepend(Error **errp, const char *fmt, ...) +void error_prepend(Error **errp_in, const char *fmt, ...) { va_list ap; =20 va_start(ap, fmt); - error_vprepend(errp, fmt, ap); + error_vprepend(errp_in, fmt, ap); va_end(ap); } =20 -void error_append_hint(Error **errp, const char *fmt, ...) +void error_append_hint(Error **errp_in, const char *fmt, ...) { va_list ap; int saved_errno =3D errno; Error *err; =20 - if (!errp) { + if (!errp_in) { return; } - err =3D *errp; - assert(err && errp !=3D &error_abort && errp !=3D &error_fatal); + err =3D *errp_in; + assert(err && errp_in !=3D &error_abort && errp_in !=3D &error_fatal); =20 if (!err->hint) { err->hint =3D g_string_new(NULL); @@ -271,11 +271,11 @@ void error_free(Error *err) } } =20 -void error_free_or_abort(Error **errp) +void error_free_or_abort(Error **errp_in) { - assert(errp && *errp); - error_free(*errp); - *errp =3D NULL; + assert(errp_in && *errp_in); + error_free(*errp_in); + *errp_in =3D NULL; } =20 void error_propagate(Error **dst_errp, Error *local_err) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811313; cv=none; d=zoho.com; s=zohoarc; b=j9EKZzzq3Gixa6cp4GDHJn5FIUOVLHUn6IPxNzk8z3hZInA5ILzjohJp+caTBFgopiqXK65A++FC2pYR+Jxtt4iZbS6ff3QelJmxChvRpwLB4e60gL1ld8qEbTmsx1SOM4Trn5MXXQsix47BqSJhzFL59oMCqILoD9cY87rz45M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811313; h=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=qeSMSSUIE42CXSvzA1JQd4frbGMhp7D85dpRJuoxz/c=; b=V5H9E4axI5WiC57MO0mlKkWW+Joka9aJbi1b0zSTcFR/3lZJjVi3Ss8tMKVJwsRF+gTisAFRlfzmqhktZFkINIWUNYFnANFrwMGy+HmobKczdELQwBK5TheCk96zTl+i23d6BWfy4296RjB6/PJ6SQ5WKj4JNJr+3WdHJL/qtNo= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811313467970.4178100803765; Fri, 11 Oct 2019 09:28:33 -0700 (PDT) Received: from localhost ([::1]:53822 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxmK-0006wl-5d for importer@patchew.org; Fri, 11 Oct 2019 12:28:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35959) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQY-0005bk-CT for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQV-00041r-Di for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:02 -0400 Received: from relay.sw.ru ([185.231.240.75]:47790) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQV-000409-11 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:05:59 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQT-0003XG-Cm; Fri, 11 Oct 2019 19:05:57 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 004/126] hmp: drop Error pointer indirection in hmp_handle_error Date: Fri, 11 Oct 2019 19:03:50 +0300 Message-Id: <20191011160552.22907-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , armbru@redhat.com, "Dr. David Alan Gilbert" , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" We don't need Error **, as all callers pass local Error object, which isn't used after the call. Use Error * instead. Signed-off-by: Vladimir Sementsov-Ogievskiy Acked-by: Dr. David Alan Gilbert --- include/monitor/hmp.h | 2 +- dump/dump-hmp-cmds.c | 4 +- hw/core/machine-hmp-cmds.c | 6 +- monitor/hmp-cmds.c | 155 ++++++++++++++++++------------------- qdev-monitor.c | 4 +- qom/qom-hmp-cmds.c | 4 +- 6 files changed, 87 insertions(+), 88 deletions(-) diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h index a0e9511440..3d329853b2 100644 --- a/include/monitor/hmp.h +++ b/include/monitor/hmp.h @@ -16,7 +16,7 @@ =20 #include "qemu/readline.h" =20 -void hmp_handle_error(Monitor *mon, Error **errp); +void hmp_handle_error(Monitor *mon, Error *err); =20 void hmp_info_name(Monitor *mon, const QDict *qdict); void hmp_info_version(Monitor *mon, const QDict *qdict); diff --git a/dump/dump-hmp-cmds.c b/dump/dump-hmp-cmds.c index 3dbf44372c..e5053b04cd 100644 --- a/dump/dump-hmp-cmds.c +++ b/dump/dump-hmp-cmds.c @@ -32,7 +32,7 @@ void hmp_dump_guest_memory(Monitor *mon, const QDict *qdi= ct) =20 if (zlib + lzo + snappy + win_dmp > 1) { error_setg(&err, "only one of '-z|-l|-s|-w' can be set"); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -66,7 +66,7 @@ void hmp_dump_guest_memory(Monitor *mon, const QDict *qdi= ct) =20 qmp_dump_guest_memory(paging, prot, true, detach, has_begin, begin, has_length, length, true, dump_format, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); g_free(prot); } =20 diff --git a/hw/core/machine-hmp-cmds.c b/hw/core/machine-hmp-cmds.c index cd970cc4c5..b76f7223af 100644 --- a/hw/core/machine-hmp-cmds.c +++ b/hw/core/machine-hmp-cmds.c @@ -55,7 +55,7 @@ void hmp_cpu_add(Monitor *mon, const QDict *qdict) =20 cpuid =3D qdict_get_int(qdict, "id"); qmp_cpu_add(cpuid, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdict) @@ -66,7 +66,7 @@ void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdi= ct) CpuInstanceProperties *c; =20 if (err !=3D NULL) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -135,7 +135,7 @@ void hmp_info_memdev(Monitor *mon, const QDict *qdict) monitor_printf(mon, "\n"); =20 qapi_free_MemdevList(memdev_list); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_info_numa(Monitor *mon, const QDict *qdict) diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index b2551c16d1..c5dea307b6 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -60,11 +60,10 @@ #include #endif =20 -void hmp_handle_error(Monitor *mon, Error **errp) +void hmp_handle_error(Monitor *mon, Error *err) { - assert(errp); - if (*errp) { - error_reportf_err(*errp, "Error: "); + if (err) { + error_reportf_err(err, "Error: "); } } =20 @@ -734,7 +733,7 @@ void hmp_info_vnc(Monitor *mon, const QDict *qdict) =20 info2l =3D qmp_query_vnc_servers(&err); if (err) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } if (!info2l) { @@ -850,7 +849,7 @@ void hmp_info_balloon(Monitor *mon, const QDict *qdict) =20 info =3D qmp_query_balloon(&err); if (err) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -1172,7 +1171,7 @@ void hmp_sync_profile(Monitor *mon, const QDict *qdic= t) Error *err =3D NULL; =20 error_setg(&err, QERR_INVALID_PARAMETER, op); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } } =20 @@ -1191,7 +1190,7 @@ void hmp_exit_preconfig(Monitor *mon, const QDict *qd= ict) Error *err =3D NULL; =20 qmp_x_exit_preconfig(&err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_cpu(Monitor *mon, const QDict *qdict) @@ -1220,7 +1219,7 @@ void hmp_memsave(Monitor *mon, const QDict *qdict) } =20 qmp_memsave(addr, size, filename, true, cpu_index, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_pmemsave(Monitor *mon, const QDict *qdict) @@ -1231,7 +1230,7 @@ void hmp_pmemsave(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_pmemsave(addr, size, filename, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_ringbuf_write(Monitor *mon, const QDict *qdict) @@ -1242,7 +1241,7 @@ void hmp_ringbuf_write(Monitor *mon, const QDict *qdi= ct) =20 qmp_ringbuf_write(chardev, data, false, 0, &err); =20 - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_ringbuf_read(Monitor *mon, const QDict *qdict) @@ -1255,7 +1254,7 @@ void hmp_ringbuf_read(Monitor *mon, const QDict *qdic= t) =20 data =3D qmp_ringbuf_read(chardev, size, false, 0, &err); if (err) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -1280,7 +1279,7 @@ void hmp_cont(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_cont(&err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_system_wakeup(Monitor *mon, const QDict *qdict) @@ -1288,7 +1287,7 @@ void hmp_system_wakeup(Monitor *mon, const QDict *qdi= ct) Error *err =3D NULL; =20 qmp_system_wakeup(&err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_nmi(Monitor *mon, const QDict *qdict) @@ -1296,7 +1295,7 @@ void hmp_nmi(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_inject_nmi(&err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_set_link(Monitor *mon, const QDict *qdict) @@ -1306,7 +1305,7 @@ void hmp_set_link(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_set_link(name, up, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_block_passwd(Monitor *mon, const QDict *qdict) @@ -1316,7 +1315,7 @@ void hmp_block_passwd(Monitor *mon, const QDict *qdic= t) Error *err =3D NULL; =20 qmp_block_passwd(true, device, false, NULL, password, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_balloon(Monitor *mon, const QDict *qdict) @@ -1325,7 +1324,7 @@ void hmp_balloon(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_balloon(value, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_block_resize(Monitor *mon, const QDict *qdict) @@ -1335,7 +1334,7 @@ void hmp_block_resize(Monitor *mon, const QDict *qdic= t) Error *err =3D NULL; =20 qmp_block_resize(true, device, false, NULL, size, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_drive_mirror(Monitor *mon, const QDict *qdict) @@ -1358,11 +1357,11 @@ void hmp_drive_mirror(Monitor *mon, const QDict *qd= ict) =20 if (!filename) { error_setg(&err, QERR_MISSING_PARAMETER, "target"); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } qmp_drive_mirror(&mirror, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_drive_backup(Monitor *mon, const QDict *qdict) @@ -1388,12 +1387,12 @@ void hmp_drive_backup(Monitor *mon, const QDict *qd= ict) =20 if (!filename) { error_setg(&err, QERR_MISSING_PARAMETER, "target"); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 qmp_drive_backup(&backup, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict) @@ -1409,7 +1408,7 @@ void hmp_snapshot_blkdev(Monitor *mon, const QDict *q= dict) /* In the future, if 'snapshot-file' is not specified, the snapshot will be taken internally. Today it's actually required. */ error_setg(&err, QERR_MISSING_PARAMETER, "snapshot-file"); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -1418,7 +1417,7 @@ void hmp_snapshot_blkdev(Monitor *mon, const QDict *q= dict) filename, false, NULL, !!format, format, true, mode, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_snapshot_blkdev_internal(Monitor *mon, const QDict *qdict) @@ -1428,7 +1427,7 @@ void hmp_snapshot_blkdev_internal(Monitor *mon, const= QDict *qdict) Error *err =3D NULL; =20 qmp_blockdev_snapshot_internal_sync(device, name, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_snapshot_delete_blkdev_internal(Monitor *mon, const QDict *qdict) @@ -1440,7 +1439,7 @@ void hmp_snapshot_delete_blkdev_internal(Monitor *mon= , const QDict *qdict) =20 qmp_blockdev_snapshot_delete_internal_sync(device, !!id, id, true, name, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_loadvm(Monitor *mon, const QDict *qdict) @@ -1454,7 +1453,7 @@ void hmp_loadvm(Monitor *mon, const QDict *qdict) if (load_snapshot(name, &err) =3D=3D 0 && saved_vm_running) { vm_start(); } - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_savevm(Monitor *mon, const QDict *qdict) @@ -1462,7 +1461,7 @@ void hmp_savevm(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 save_snapshot(qdict_get_try_str(qdict, "name"), &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_delvm(Monitor *mon, const QDict *qdict) @@ -1476,7 +1475,7 @@ void hmp_delvm(Monitor *mon, const QDict *qdict) "deleting snapshot on device '%s': ", bdrv_get_device_name(bs)); } - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_info_snapshots(Monitor *mon, const QDict *qdict) @@ -1652,7 +1651,7 @@ void hmp_migrate_continue(Monitor *mon, const QDict *= qdict) qmp_migrate_continue(val, &err); } =20 - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_migrate_incoming(Monitor *mon, const QDict *qdict) @@ -1662,7 +1661,7 @@ void hmp_migrate_incoming(Monitor *mon, const QDict *= qdict) =20 qmp_migrate_incoming(uri, &err); =20 - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_migrate_recover(Monitor *mon, const QDict *qdict) @@ -1672,7 +1671,7 @@ void hmp_migrate_recover(Monitor *mon, const QDict *q= dict) =20 qmp_migrate_recover(uri, &err); =20 - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_migrate_pause(Monitor *mon, const QDict *qdict) @@ -1681,7 +1680,7 @@ void hmp_migrate_pause(Monitor *mon, const QDict *qdi= ct) =20 qmp_migrate_pause(&err); =20 - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 /* Kept for backwards compatibility */ @@ -1697,7 +1696,7 @@ void hmp_migrate_set_cache_size(Monitor *mon, const Q= Dict *qdict) Error *err =3D NULL; =20 qmp_migrate_set_cache_size(value, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 /* Kept for backwards compatibility */ @@ -1728,7 +1727,7 @@ void hmp_migrate_set_capability(Monitor *mon, const Q= Dict *qdict) =20 end: qapi_free_MigrationCapabilityStatusList(caps); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_migrate_set_parameter(Monitor *mon, const QDict *qdict) @@ -1869,7 +1868,7 @@ void hmp_migrate_set_parameter(Monitor *mon, const QD= ict *qdict) cleanup: qapi_free_MigrateSetParameters(p); visit_free(v); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_client_migrate_info(Monitor *mon, const QDict *qdict) @@ -1886,14 +1885,14 @@ void hmp_client_migrate_info(Monitor *mon, const QD= ict *qdict) qmp_client_migrate_info(protocol, hostname, has_port, port, has_tls_port, tls_port, !!cert_subject, cert_subject, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_migrate_start_postcopy(Monitor *mon, const QDict *qdict) { Error *err =3D NULL; qmp_migrate_start_postcopy(&err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_x_colo_lost_heartbeat(Monitor *mon, const QDict *qdict) @@ -1901,7 +1900,7 @@ void hmp_x_colo_lost_heartbeat(Monitor *mon, const QD= ict *qdict) Error *err =3D NULL; =20 qmp_x_colo_lost_heartbeat(&err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_set_password(Monitor *mon, const QDict *qdict) @@ -1912,7 +1911,7 @@ void hmp_set_password(Monitor *mon, const QDict *qdic= t) Error *err =3D NULL; =20 qmp_set_password(protocol, password, !!connected, connected, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_expire_password(Monitor *mon, const QDict *qdict) @@ -1922,7 +1921,7 @@ void hmp_expire_password(Monitor *mon, const QDict *q= dict) Error *err =3D NULL; =20 qmp_expire_password(protocol, whenstr, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_eject(Monitor *mon, const QDict *qdict) @@ -1932,7 +1931,7 @@ void hmp_eject(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_eject(true, device, false, NULL, true, force, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 #ifdef CONFIG_VNC @@ -1978,7 +1977,7 @@ void hmp_change(Monitor *mon, const QDict *qdict) read_only, BLOCKDEV_CHANGE_READ_ONLY_MODE_RETAIN, &er= r); if (err) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } } @@ -1988,7 +1987,7 @@ void hmp_change(Monitor *mon, const QDict *qdict) &err); } =20 - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_block_set_io_throttle(Monitor *mon, const QDict *qdict) @@ -2016,7 +2015,7 @@ void hmp_block_set_io_throttle(Monitor *mon, const QD= ict *qdict) } =20 qmp_block_set_io_throttle(&throttle, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_block_stream(Monitor *mon, const QDict *qdict) @@ -2031,7 +2030,7 @@ void hmp_block_stream(Monitor *mon, const QDict *qdic= t) BLOCKDEV_ON_ERROR_REPORT, false, false, false, false, &error); =20 - hmp_handle_error(mon, &error); + hmp_handle_error(mon, error); } =20 void hmp_block_job_set_speed(Monitor *mon, const QDict *qdict) @@ -2042,7 +2041,7 @@ void hmp_block_job_set_speed(Monitor *mon, const QDic= t *qdict) =20 qmp_block_job_set_speed(device, value, &error); =20 - hmp_handle_error(mon, &error); + hmp_handle_error(mon, error); } =20 void hmp_block_job_cancel(Monitor *mon, const QDict *qdict) @@ -2053,7 +2052,7 @@ void hmp_block_job_cancel(Monitor *mon, const QDict *= qdict) =20 qmp_block_job_cancel(device, true, force, &error); =20 - hmp_handle_error(mon, &error); + hmp_handle_error(mon, error); } =20 void hmp_block_job_pause(Monitor *mon, const QDict *qdict) @@ -2063,7 +2062,7 @@ void hmp_block_job_pause(Monitor *mon, const QDict *q= dict) =20 qmp_block_job_pause(device, &error); =20 - hmp_handle_error(mon, &error); + hmp_handle_error(mon, error); } =20 void hmp_block_job_resume(Monitor *mon, const QDict *qdict) @@ -2073,7 +2072,7 @@ void hmp_block_job_resume(Monitor *mon, const QDict *= qdict) =20 qmp_block_job_resume(device, &error); =20 - hmp_handle_error(mon, &error); + hmp_handle_error(mon, error); } =20 void hmp_block_job_complete(Monitor *mon, const QDict *qdict) @@ -2083,7 +2082,7 @@ void hmp_block_job_complete(Monitor *mon, const QDict= *qdict) =20 qmp_block_job_complete(device, &error); =20 - hmp_handle_error(mon, &error); + hmp_handle_error(mon, error); } =20 typedef struct HMPMigrationStatus @@ -2143,7 +2142,7 @@ void hmp_migrate(Monitor *mon, const QDict *qdict) qmp_migrate(uri, !!blk, blk, !!inc, inc, false, false, true, resume, &err); if (err) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -2181,7 +2180,7 @@ void hmp_netdev_add(Monitor *mon, const QDict *qdict) } =20 out: - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_netdev_del(Monitor *mon, const QDict *qdict) @@ -2190,7 +2189,7 @@ void hmp_netdev_del(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_netdev_del(id, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_object_add(Monitor *mon, const QDict *qdict) @@ -2201,7 +2200,7 @@ void hmp_object_add(Monitor *mon, const QDict *qdict) =20 opts =3D qemu_opts_from_qdict(qemu_find_opts("object"), qdict, &err); if (err) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -2209,7 +2208,7 @@ void hmp_object_add(Monitor *mon, const QDict *qdict) qemu_opts_del(opts); =20 if (err) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } if (obj) { object_unref(obj); @@ -2222,7 +2221,7 @@ void hmp_getfd(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_getfd(fdname, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_closefd(Monitor *mon, const QDict *qdict) @@ -2231,7 +2230,7 @@ void hmp_closefd(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_closefd(fdname, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_sendkey(Monitor *mon, const QDict *qdict) @@ -2290,7 +2289,7 @@ void hmp_sendkey(Monitor *mon, const QDict *qdict) } =20 qmp_send_key(head, has_hold_time, hold_time, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); =20 out: qapi_free_KeyValueList(head); @@ -2309,7 +2308,7 @@ void hmp_screendump(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_screendump(filename, id !=3D NULL, id, id !=3D NULL, head, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_nbd_server_start(Monitor *mon, const QDict *qdict) @@ -2364,7 +2363,7 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *= qdict) qapi_free_BlockInfoList(block_list); =20 exit: - hmp_handle_error(mon, &local_err); + hmp_handle_error(mon, local_err); } =20 void hmp_nbd_server_add(Monitor *mon, const QDict *qdict) @@ -2376,7 +2375,7 @@ void hmp_nbd_server_add(Monitor *mon, const QDict *qd= ict) =20 qmp_nbd_server_add(device, !!name, name, true, writable, false, NULL, &local_err); - hmp_handle_error(mon, &local_err); + hmp_handle_error(mon, local_err); } =20 void hmp_nbd_server_remove(Monitor *mon, const QDict *qdict) @@ -2387,7 +2386,7 @@ void hmp_nbd_server_remove(Monitor *mon, const QDict = *qdict) =20 /* Rely on NBD_SERVER_REMOVE_MODE_SAFE being the default */ qmp_nbd_server_remove(name, force, NBD_SERVER_REMOVE_MODE_HARD, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_nbd_server_stop(Monitor *mon, const QDict *qdict) @@ -2395,7 +2394,7 @@ void hmp_nbd_server_stop(Monitor *mon, const QDict *q= dict) Error *err =3D NULL; =20 qmp_nbd_server_stop(&err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_chardev_add(Monitor *mon, const QDict *qdict) @@ -2411,7 +2410,7 @@ void hmp_chardev_add(Monitor *mon, const QDict *qdict) qemu_chr_new_from_opts(opts, NULL, &err); qemu_opts_del(opts); } - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_chardev_change(Monitor *mon, const QDict *qdict) @@ -2445,7 +2444,7 @@ end: qapi_free_ChardevReturn(ret); qapi_free_ChardevBackend(backend); qemu_opts_del(opts); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_chardev_remove(Monitor *mon, const QDict *qdict) @@ -2453,7 +2452,7 @@ void hmp_chardev_remove(Monitor *mon, const QDict *qd= ict) Error *local_err =3D NULL; =20 qmp_chardev_remove(qdict_get_str(qdict, "id"), &local_err); - hmp_handle_error(mon, &local_err); + hmp_handle_error(mon, local_err); } =20 void hmp_chardev_send_break(Monitor *mon, const QDict *qdict) @@ -2461,7 +2460,7 @@ void hmp_chardev_send_break(Monitor *mon, const QDict= *qdict) Error *local_err =3D NULL; =20 qmp_chardev_send_break(qdict_get_str(qdict, "id"), &local_err); - hmp_handle_error(mon, &local_err); + hmp_handle_error(mon, local_err); } =20 void hmp_qemu_io(Monitor *mon, const QDict *qdict) @@ -2517,7 +2516,7 @@ void hmp_qemu_io(Monitor *mon, const QDict *qdict) =20 fail: blk_unref(local_blk); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_object_del(Monitor *mon, const QDict *qdict) @@ -2526,7 +2525,7 @@ void hmp_object_del(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 user_creatable_del(id, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_info_memory_devices(Monitor *mon, const QDict *qdict) @@ -2576,7 +2575,7 @@ void hmp_info_memory_devices(Monitor *mon, const QDic= t *qdict) } =20 qapi_free_MemoryDeviceInfoList(info_list); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_info_iothreads(Monitor *mon, const QDict *qdict) @@ -2605,7 +2604,7 @@ void hmp_rocker(Monitor *mon, const QDict *qdict) =20 rocker =3D qmp_query_rocker(name, &err); if (err !=3D NULL) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -2624,7 +2623,7 @@ void hmp_rocker_ports(Monitor *mon, const QDict *qdic= t) =20 list =3D qmp_query_rocker_ports(name, &err); if (err !=3D NULL) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -2653,7 +2652,7 @@ void hmp_rocker_of_dpa_flows(Monitor *mon, const QDic= t *qdict) =20 list =3D qmp_query_rocker_of_dpa_flows(name, tbl_id !=3D -1, tbl_id, &= err); if (err !=3D NULL) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -2804,7 +2803,7 @@ void hmp_rocker_of_dpa_groups(Monitor *mon, const QDi= ct *qdict) =20 list =3D qmp_query_rocker_of_dpa_groups(name, type !=3D 9, type, &err); if (err !=3D NULL) { - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); return; } =20 @@ -2911,7 +2910,7 @@ void hmp_info_vm_generation_id(Monitor *mon, const QD= ict *qdict) if (info) { monitor_printf(mon, "%s\n", info->guid); } - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); qapi_free_GuidInfo(info); } =20 @@ -2930,5 +2929,5 @@ void hmp_info_memory_size_summary(Monitor *mon, const= QDict *qdict) =20 qapi_free_MemoryInfo(info); } - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } diff --git a/qdev-monitor.c b/qdev-monitor.c index 148df9cacf..85b58620d1 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -857,7 +857,7 @@ void hmp_device_add(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_device_add((QDict *)qdict, NULL, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_device_del(Monitor *mon, const QDict *qdict) @@ -866,7 +866,7 @@ void hmp_device_del(Monitor *mon, const QDict *qdict) Error *err =3D NULL; =20 qmp_device_del(id, &err); - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 BlockBackend *blk_by_qdev_id(const char *id, Error **errp) diff --git a/qom/qom-hmp-cmds.c b/qom/qom-hmp-cmds.c index a268e01eb4..cd08233a4c 100644 --- a/qom/qom-hmp-cmds.c +++ b/qom/qom-hmp-cmds.c @@ -37,7 +37,7 @@ void hmp_qom_list(Monitor *mon, const QDict *qdict) } qapi_free_ObjectPropertyInfoList(start); } - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 void hmp_qom_set(Monitor *mon, const QDict *qdict) @@ -59,7 +59,7 @@ void hmp_qom_set(Monitor *mon, const QDict *qdict) } object_property_parse(obj, value, property, &err); } - hmp_handle_error(mon, &err); + hmp_handle_error(mon, err); } =20 typedef struct QOMCompositionState { --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811140; cv=none; d=zoho.com; s=zohoarc; b=AdVGcXcHJGDRq12ACkqOPKIHfdHefzX7dVFUBAW4runTwY19DwdQKXKE6HpJ5rgvPjxTXFmVig5Hr/ndhLVzanpS5SK+dIUS+usfGtXHP7q/HGbhIGH6legUtWqWJ0nYUBFiG2cXEZhLTFxw2uzkVsXyMAF8NzMwWV46Aj1UfpU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811140; h=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=503Ljiv3Jd4peKUTi2DX1VQm95b4WJcWsdjIoahmhAs=; b=C4zwVlrlGTpB8DTeXMAe/E65ovxWBAvCmKQdu83PHVSwv0+DrdQP09VKTaT+WodcPu2rsVD84B4CwUUXCLFpBfJxcc1LyinR+rplo2MtgA/1ir30B73MgVM4nbMV/T/MvwVJ3wbR965fJrvJwN6f9VOG3NnQhOxlevckUq3HLo8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811140063442.26740791622547; Fri, 11 Oct 2019 09:25:40 -0700 (PDT) Received: from localhost ([::1]:53772 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxjW-0003Os-6V for importer@patchew.org; Fri, 11 Oct 2019 12:25:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35910) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQW-0005ZB-Fj for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQV-00041W-Bd for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:00 -0400 Received: from relay.sw.ru ([185.231.240.75]:47796) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQV-00040O-3D for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:05:59 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQT-0003XG-Lr; Fri, 11 Oct 2019 19:05:57 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 005/126] vnc: drop Error pointer indirection in vnc_client_io_error Date: Fri, 11 Oct 2019 19:03:51 +0300 Message-Id: <20191011160552.22907-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, armbru@redhat.com, Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" We don't need Error **, as all callers pass local Error object, which isn't used after the call, or NULL. Use Error * instead. Signed-off-by: Vladimir Sementsov-Ogievskiy --- ui/vnc.h | 2 +- ui/vnc.c | 20 +++++++------------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/ui/vnc.h b/ui/vnc.h index fea79c2fc9..4e2637ce6c 100644 --- a/ui/vnc.h +++ b/ui/vnc.h @@ -547,7 +547,7 @@ uint32_t read_u32(uint8_t *data, size_t offset); =20 /* Protocol stage functions */ void vnc_client_error(VncState *vs); -size_t vnc_client_io_error(VncState *vs, ssize_t ret, Error **errp); +size_t vnc_client_io_error(VncState *vs, ssize_t ret, Error *err); =20 void start_client_init(VncState *vs); void start_auth_vnc(VncState *vs); diff --git a/ui/vnc.c b/ui/vnc.c index 87b8045afe..4100d6e404 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -1312,7 +1312,7 @@ void vnc_disconnect_finish(VncState *vs) g_free(vs); } =20 -size_t vnc_client_io_error(VncState *vs, ssize_t ret, Error **errp) +size_t vnc_client_io_error(VncState *vs, ssize_t ret, Error *err) { if (ret <=3D 0) { if (ret =3D=3D 0) { @@ -1320,15 +1320,11 @@ size_t vnc_client_io_error(VncState *vs, ssize_t re= t, Error **errp) vnc_disconnect_start(vs); } else if (ret !=3D QIO_CHANNEL_ERR_BLOCK) { trace_vnc_client_io_error(vs, vs->ioc, - errp ? error_get_pretty(*errp) : - "Unknown"); + err ? error_get_pretty(err) : "Unkno= wn"); vnc_disconnect_start(vs); } =20 - if (errp) { - error_free(*errp); - *errp =3D NULL; - } + error_free(err); return 0; } return ret; @@ -1361,10 +1357,9 @@ size_t vnc_client_write_buf(VncState *vs, const uint= 8_t *data, size_t datalen) { Error *err =3D NULL; ssize_t ret; - ret =3D qio_channel_write( - vs->ioc, (const char *)data, datalen, &err); + ret =3D qio_channel_write(vs->ioc, (const char *)data, datalen, &err); VNC_DEBUG("Wrote wire %p %zd -> %ld\n", data, datalen, ret); - return vnc_client_io_error(vs, ret, &err); + return vnc_client_io_error(vs, ret, err); } =20 =20 @@ -1488,10 +1483,9 @@ size_t vnc_client_read_buf(VncState *vs, uint8_t *da= ta, size_t datalen) { ssize_t ret; Error *err =3D NULL; - ret =3D qio_channel_read( - vs->ioc, (char *)data, datalen, &err); + ret =3D qio_channel_read(vs->ioc, (char *)data, datalen, &err); VNC_DEBUG("Read wire %p %zd -> %ld\n", data, datalen, ret); - return vnc_client_io_error(vs, ret, &err); + return vnc_client_io_error(vs, ret, err); } =20 =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570810350; cv=none; d=zoho.com; s=zohoarc; b=PYZHNdH2ZDcdCA6etMaZOMrWvuAledYytYAELYtUDUtbo4RL1LcyNPMHYVLlW8+6BY0LdUnLoKKs+ZNmehGw1fpxTSSZU8FDIZuM5yKxH5QgA5CmGAjITEMchZMDEcxt3Tf47FDB9Wc6EVL5l6Tf+TIYHmJERF31hhvfxpnO+88= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810350; h=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=ZoBgwXRvwlRFIr7ZbIsyo+7ilckyA6cr3d37gzGk374=; b=gEYUrwBgXAL9u/8nbDDAfatP3SGCOexNS7idHU5thLIudY4SIxM6J4T8mg0hmpPZMSbLf5j0I0x9teJ1u3Slk3LhOIv+gqhu4dphZjs2Ing2qg8rEQ71y3zaRv1DpslBZbpEe+Hf/dbTPZA2Meui6qb1GZij2uq0WPBviAJzsVc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570810350961213.91535585196777; Fri, 11 Oct 2019 09:12:30 -0700 (PDT) Received: from localhost ([::1]:53456 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxWl-0005tP-JU for importer@patchew.org; Fri, 11 Oct 2019 12:12:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35926) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQX-0005a2-0N for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQV-00041z-Jh for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:00 -0400 Received: from relay.sw.ru ([185.231.240.75]:47800) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQV-00040i-BC for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:05:59 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQT-0003XG-Tg; Fri, 11 Oct 2019 19:05:58 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 006/126] qdev-monitor: well form error hint helpers Date: Fri, 11 Oct 2019 19:03:52 +0300 Message-Id: <20191011160552.22907-7-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Paolo Bonzini , vsementsov@virtuozzo.com, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , armbru@redhat.com, Eduardo Habkost Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Make qbus_list_bus and qbus_list_dev hint append helpers well formed: rename errp to errp_in, as it is IN-parameter here (which is unusual for errp), rename functions to be error_append_*_hint. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau --- qdev-monitor.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/qdev-monitor.c b/qdev-monitor.c index 85b58620d1..d14ef6af01 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -326,36 +326,36 @@ static Object *qdev_get_peripheral_anon(void) return dev; } =20 -static void qbus_list_bus(DeviceState *dev, Error **errp) +static void error_append_qbus_bus_list_hint(DeviceState *dev, Error **errp= _in) { BusState *child; const char *sep =3D " "; =20 - error_append_hint(errp, "child buses at \"%s\":", + error_append_hint(errp_in, "child buses at \"%s\":", dev->id ? dev->id : object_get_typename(OBJECT(dev))= ); QLIST_FOREACH(child, &dev->child_bus, sibling) { - error_append_hint(errp, "%s\"%s\"", sep, child->name); + error_append_hint(errp_in, "%s\"%s\"", sep, child->name); sep =3D ", "; } - error_append_hint(errp, "\n"); + error_append_hint(errp_in, "\n"); } =20 -static void qbus_list_dev(BusState *bus, Error **errp) +static void error_append_qbus_dev_list_hint(BusState *bus, Error **errp_in) { BusChild *kid; const char *sep =3D " "; =20 - error_append_hint(errp, "devices at \"%s\":", bus->name); + error_append_hint(errp_in, "devices at \"%s\":", bus->name); QTAILQ_FOREACH(kid, &bus->children, sibling) { DeviceState *dev =3D kid->child; - error_append_hint(errp, "%s\"%s\"", sep, + error_append_hint(errp_in, "%s\"%s\"", sep, object_get_typename(OBJECT(dev))); if (dev->id) { - error_append_hint(errp, "/\"%s\"", dev->id); + error_append_hint(errp_in, "/\"%s\"", dev->id); } sep =3D ", "; } - error_append_hint(errp, "\n"); + error_append_hint(errp_in, "\n"); } =20 static BusState *qbus_find_bus(DeviceState *dev, char *elem) @@ -498,7 +498,7 @@ static BusState *qbus_find(const char *path, Error **er= rp) if (!dev) { error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND, "Device '%s' not found", elem); - qbus_list_dev(bus, errp); + error_append_qbus_dev_list_hint(bus, errp); return NULL; } =20 @@ -516,7 +516,7 @@ static BusState *qbus_find(const char *path, Error **er= rp) if (dev->num_child_bus) { error_setg(errp, "Device '%s' has multiple child buses", elem); - qbus_list_bus(dev, errp); + error_append_qbus_bus_list_hint(dev, errp); } else { error_setg(errp, "Device '%s' has no child bus", elem); } @@ -532,7 +532,7 @@ static BusState *qbus_find(const char *path, Error **er= rp) bus =3D qbus_find_bus(dev, elem); if (!bus) { error_setg(errp, "Bus '%s' not found", elem); - qbus_list_bus(dev, errp); + error_append_qbus_bus_list_hint(dev, errp); return NULL; } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570810210; cv=none; d=zoho.com; s=zohoarc; b=BhF9QSGoWCx2E2gQ85o8GM7mX3eBNBn88bbEUktq4UGXkAmnxmof119f0mR0XC43HsG07f5GK5RtL7HQ9sy+hQtjmNo50tvwYOi//hBb9yshBTE7QwvptuYLsbVNSsRQWL0F82Pv1yqc8rlaWFqBNSx9C99jIkUOHLmP1kTdEX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810210; h=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=74QCnEG2lZn8yRBAbDgB5V4oEeolrwMen2Qd/xbK+Lw=; b=U84VQYfZjdczM3owzZi+dJH7/YjOV8jYnXCq60EWhxHvjBVsyO+PU6Hygv8kYFDb0DBrAdQzRGhOS/DEok1GNRIf4kB/3Bu4VBcg7ONq9Lfi6Y4VDBFAcfFJ3eVWwwpvdfRr+qQvgNoY0+Vt+KqBXbrOF0Jvyq/uOBfAClEPOGg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 15708102104702.4585226544314764; Fri, 11 Oct 2019 09:10:10 -0700 (PDT) Received: from localhost ([::1]:53416 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxUX-0002ie-4H for importer@patchew.org; Fri, 11 Oct 2019 12:10:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35921) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQW-0005Zn-Rz for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQV-00042O-Sj for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:00 -0400 Received: from relay.sw.ru ([185.231.240.75]:47806) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQV-000419-L2; Fri, 11 Oct 2019 12:05:59 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQU-0003XG-5T; Fri, 11 Oct 2019 19:05:58 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 007/126] nbd: well form nbd_iter_channel_error errp handler Date: Fri, 11 Oct 2019 19:03:53 +0300 Message-Id: <20191011160552.22907-8-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Make nbd_iter_channel_error errp handler well formed: rename errp to errp_in, as it is IN-parameter here (which is unusual for errp). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 813c40d8f0..c66fdf54b9 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -684,18 +684,18 @@ typedef struct NBDReplyChunkIter { } NBDReplyChunkIter; =20 static void nbd_iter_channel_error(NBDReplyChunkIter *iter, - int ret, Error **local_err) + int ret, Error **errp_in) { - assert(ret < 0); + assert(ret < 0 && errp_in && *errp_in); =20 if (!iter->ret) { iter->ret =3D ret; - error_propagate(&iter->err, *local_err); + error_propagate(&iter->err, *errp_in); } else { - error_free(*local_err); + error_free(*errp_in); } =20 - *local_err =3D NULL; + *errp_in =3D NULL; } =20 static void nbd_iter_request_error(NBDReplyChunkIter *iter, int ret) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570810554; cv=none; d=zoho.com; s=zohoarc; b=iqUcMb8STB21IXjWHKCb3qh7f0e1htcuyel6R3dKd8yHzVtnp+3OevlsklLKCofdLiAqTfQbWXLwHQDMdmhvT0u5TuurkYZDiUQW4JrSrVgGzTlGrjjcG88MC6Pp/F7hwMNoaF00W2DLzGpbWoj88ckZVZ/UBzZZ+7UE7ykDcO4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810554; h=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=Hq85d1T2bp59TvHqSv399WBNNrqn/wIFLwHMXumSp/U=; b=jA4KDbP7UK7Bqit0bwDz2H84LFznCB/LgyeMRpXL+y6ZnQszHUVABf4NsdY7kxLWq63Tpy9njnWKUKfDaXXWfZ8S8oCyNQ9TASOWZ9eod1W8WhF3gk2HIyGERC6QjV+sJoLI/6AXW9xvxA4xXca17wf5V9FREBEbyuwUIidC0jk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570810554107882.8179306436011; Fri, 11 Oct 2019 09:15:54 -0700 (PDT) Received: from localhost ([::1]:53552 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxa4-0000Wb-Ts for importer@patchew.org; Fri, 11 Oct 2019 12:15:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35993) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQZ-0005dT-Bt for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQY-00044r-6C for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:47836) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQX-00043h-TZ; Fri, 11 Oct 2019 12:06:02 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQU-0003XG-HD; Fri, 11 Oct 2019 19:05:58 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 008/126] ppc: well form kvmppc_hint_smt_possible error hint helper Date: Fri, 11 Oct 2019 19:03:54 +0300 Message-Id: <20191011160552.22907-9-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, qemu-ppc@nongnu.org, armbru@redhat.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Make kvmppc_hint_smt_possible hint append helper well formed: rename errp to errp_in, as it is IN-parameter here (which is unusual for errp), rename function to be error_append_*_hint. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau --- target/ppc/kvm_ppc.h | 4 ++-- hw/ppc/spapr.c | 2 +- target/ppc/kvm.c | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h index 98bd7d5da6..35f1d499ad 100644 --- a/target/ppc/kvm_ppc.h +++ b/target/ppc/kvm_ppc.h @@ -28,7 +28,7 @@ void kvmppc_set_papr(PowerPCCPU *cpu); int kvmppc_set_compat(PowerPCCPU *cpu, uint32_t compat_pvr); void kvmppc_set_mpic_proxy(PowerPCCPU *cpu, int mpic_proxy); int kvmppc_smt_threads(void); -void kvmppc_hint_smt_possible(Error **errp); +void error_append_kvmppc_smt_possible_hint(Error **errp_in); int kvmppc_set_smt_threads(int smt); int kvmppc_clear_tsr_bits(PowerPCCPU *cpu, uint32_t tsr_bits); int kvmppc_or_tsr_bits(PowerPCCPU *cpu, uint32_t tsr_bits); @@ -164,7 +164,7 @@ static inline int kvmppc_smt_threads(void) return 1; } =20 -static inline void kvmppc_hint_smt_possible(Error **errp) +static inline void error_append_kvmppc_smt_possible_hint(Error **errp_in) { return; } diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 514a17ae74..6729269aa9 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2565,7 +2565,7 @@ static void spapr_set_vsmt_mode(SpaprMachineState *sp= apr, Error **errp) " requires the use of VSMT mode %d.\= n", smp_threads, kvm_smt, spapr->vsmt); } - kvmppc_hint_smt_possible(&local_err); + error_append_kvmppc_smt_possible_hint(&local_err); goto out; } } diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index 820724cc7d..af6e667bf8 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -2076,7 +2076,7 @@ int kvmppc_set_smt_threads(int smt) return ret; } =20 -void kvmppc_hint_smt_possible(Error **errp) +void error_append_kvmppc_smt_possible_hint(Error **errp_in) { int i; GString *g; @@ -2091,10 +2091,10 @@ void kvmppc_hint_smt_possible(Error **errp) } } s =3D g_string_free(g, false); - error_append_hint(errp, "%s.\n", s); + error_append_hint(errp_in, "%s.\n", s); g_free(s); } else { - error_append_hint(errp, + error_append_hint(errp_in, "This KVM seems to be too old to support VSMT.\n= "); } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811051; cv=none; d=zoho.com; s=zohoarc; b=eXwuhet4MKEedqVk8cN9nfCCtNqGPqzcJ4DfZAU1pXoiZnv6AujaG1cGy7zocsCf8kT44mi38fqMS0MgDFcx+NWOPooq6oYZtmcGLo4SoTyUG6qLroTEHUKA+XU4kWtykXTX8FglQpqxZsEnQQ69NvY2XWwIDLpUoC/eN1kE7QU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811051; h=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=2Nn4V2GDVUe/Pg1r4I/5JtRHR0Ra91upsQ+Oso3lS48=; b=HarxBx7P0JFKxoXpyUx4jACHbOsHJ4OFf2hM3J2BdEEmE7g6ZuUzpmO99xB5Hn6QFzSOrJapdqG4X0jNgjs+KSvgJ4FeI9/ZzSD9nZfLXw32JQl5MoPPKu1woouAZJntPNn4x/bkCMC9P+3jgjrgUSIZpgXRTPogevta6KbWIu4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811051022863.2204506574782; Fri, 11 Oct 2019 09:24:11 -0700 (PDT) Received: from localhost ([::1]:53750 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxi3-0001SX-GE for importer@patchew.org; Fri, 11 Oct 2019 12:24:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35991) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQZ-0005dL-95 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQY-000451-7B for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:47826) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQX-00043W-Tj for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:02 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQU-0003XG-Th; Fri, 11 Oct 2019 19:05:59 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 009/126] 9pfs: well form error hint helpers Date: Fri, 11 Oct 2019 19:03:55 +0300 Message-Id: <20191011160552.22907-10-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Make error_append_security_model_hint and error_append_socket_sockfd_hint hint append helpers well formed: rename errp to errp_in, as it is IN-parameter here (which is unusual for errp). Signed-off-by: Vladimir Sementsov-Ogievskiy Acked-by: Greg Kurz --- hw/9pfs/9p-local.c | 4 ++-- hw/9pfs/9p-proxy.c | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c index 08e673a79c..35635e7e7e 100644 --- a/hw/9pfs/9p-local.c +++ b/hw/9pfs/9p-local.c @@ -1469,9 +1469,9 @@ static void local_cleanup(FsContext *ctx) g_free(data); } =20 -static void error_append_security_model_hint(Error **errp) +static void error_append_security_model_hint(Error **errp_in) { - error_append_hint(errp, "Valid options are: security_model=3D" + error_append_hint(errp_in, "Valid options are: security_model=3D" "[passthrough|mapped-xattr|mapped-file|none]\n"); } =20 diff --git a/hw/9pfs/9p-proxy.c b/hw/9pfs/9p-proxy.c index 57a8c1c808..0cea8b19fa 100644 --- a/hw/9pfs/9p-proxy.c +++ b/hw/9pfs/9p-proxy.c @@ -1114,9 +1114,10 @@ static int connect_namedsocket(const char *path, Err= or **errp) return sockfd; } =20 -static void error_append_socket_sockfd_hint(Error **errp) +static void error_append_socket_sockfd_hint(Error **errp_in) { - error_append_hint(errp, "Either specify socket=3D/some/path where /som= e/path" + error_append_hint(errp_in, + "Either specify socket=3D/some/path where /some/path" " points to a listening AF_UNIX socket or sock_fd=3D= fd" " where fd is a file descriptor to a connected AF_UN= IX" " socket\n"); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570810796; cv=none; d=zoho.com; s=zohoarc; b=R0eRsZnKxymsreMvgdRA9e5MWFY6x93kXLedQ6m8px6I4aJqldZAmnTy6C5y8sIfmIXVw1LLwr6Zh2aIZ41Tz674UFgmbrSTlBSYOSqePpZUmu9rTusX7qphwezs1jPd8bEYj7Wl5CcZfrS1zHzH4bBX9PwSWmz5Z3YRGntjcaA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810796; h=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=Bo9ljG30gkQ/l8j/sMYUEzkWTJjTYP38OmHQncOerXY=; b=G4qfiBpLdThcNOd7yDN+8qVl9mTdcVQF66KT6uJu0PgQ44wJdmxm5JnROa9C9FOHiT+mnxtfVg/gJJU7uN80KY+gNsTLyMB9iKhqX9xLTkUk5asVs54bOxPU9eV4eXW8AM54Est+LrtFTdW8VFPP/5ENWguOFmx4ptTArfE4+lQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570810796419470.8614749170026; Fri, 11 Oct 2019 09:19:56 -0700 (PDT) Received: from localhost ([::1]:53628 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxdt-0003cu-Ib for importer@patchew.org; Fri, 11 Oct 2019 12:19:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35992) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQZ-0005dR-Bb for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQY-00044w-6m for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:47828) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQX-00043U-Si for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:02 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQV-0003XG-N0; Fri, 11 Oct 2019 19:06:00 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 010/126] hw/core/qdev: cleanup Error ** variables Date: Fri, 11 Oct 2019 19:03:56 +0300 Message-Id: <20191011160552.22907-11-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Paolo Bonzini , vsementsov@virtuozzo.com, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , armbru@redhat.com, Eduardo Habkost Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Rename Error ** parameter in check_only_migratable to common errp. In device_set_realized: - Move "if (local_err !=3D NULL)" closer to error setters. - Drop 'Error **local_errp': it doesn't save any LoCs, but it's very unusual. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Reviewed-by: Marc-Andr=C3=A9 Lureau --- hw/core/qdev.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index cbad6c1d55..e3be8cc3c4 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -796,12 +796,12 @@ static bool device_get_realized(Object *obj, Error **= errp) return dev->realized; } =20 -static bool check_only_migratable(Object *obj, Error **err) +static bool check_only_migratable(Object *obj, Error **errp) { DeviceClass *dc =3D DEVICE_GET_CLASS(obj); =20 if (!vmstate_check_only_migratable(dc->vmsd)) { - error_setg(err, "Device %s is not migratable, but " + error_setg(errp, "Device %s is not migratable, but " "--only-migratable was specified", object_get_typename(obj)); return false; @@ -850,10 +850,9 @@ static void device_set_realized(Object *obj, bool valu= e, Error **errp) =20 if (dc->realize) { dc->realize(dev, &local_err); - } - - if (local_err !=3D NULL) { - goto fail; + if (local_err !=3D NULL) { + goto fail; + } } =20 DEVICE_LISTENER_CALL(realize, Forward, dev); @@ -894,27 +893,26 @@ static void device_set_realized(Object *obj, bool val= ue, Error **errp) } =20 } else if (!value && dev->realized) { - Error **local_errp =3D NULL; + /* We want to catch in local_err only first error */ QLIST_FOREACH(bus, &dev->child_bus, sibling) { - local_errp =3D local_err ? NULL : &local_err; object_property_set_bool(OBJECT(bus), false, "realized", - local_errp); + local_err ? NULL : &local_err); } if (qdev_get_vmsd(dev)) { vmstate_unregister(dev, qdev_get_vmsd(dev), dev); } if (dc->unrealize) { - local_errp =3D local_err ? NULL : &local_err; - dc->unrealize(dev, local_errp); + dc->unrealize(dev, local_err ? NULL : &local_err); } dev->pending_deleted_event =3D true; DEVICE_LISTENER_CALL(unrealize, Reverse, dev); - } =20 - if (local_err !=3D NULL) { - goto fail; + if (local_err !=3D NULL) { + goto fail; + } } =20 + assert(local_err =3D=3D NULL); dev->realized =3D value; return; =20 @@ -952,7 +950,7 @@ static bool device_get_hotpluggable(Object *obj, Error = **errp) qbus_is_hotpluggable(dev->parent_bus)); } =20 -static bool device_get_hotplugged(Object *obj, Error **err) +static bool device_get_hotplugged(Object *obj, Error **errp) { DeviceState *dev =3D DEVICE(obj); =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812511; cv=none; d=zoho.com; s=zohoarc; b=OxY1JTjQcjzo02nF0LvwJ3QVpkCrsjEA3qhmvSIWxvPWmyhx8GmoYKVYoES+2TIHL9Tp4ynUec013IZTLeBBmntYh2w9qiX24X3vzDR96eIO+GBo2862mal/otDmACGXhYsBXcQQ+fbzFdZZW8o9AQ+LBmyXWaUvKzDu0SZ+2/o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812511; h=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=n3evzbt2SvgSowZydeY167GdVaiPzzxLFF1UuVw8UEc=; b=IxUZ9mmwfgiAB0Et1lPcA+wCvtGbkaXlO0VJ32aIrhgqyoTqQT05iozHh+51mzKZVUjO5wqzY9cGRBMmK/DT8ubIzUsskjlKR7rDoncv5tyTWNpNJVSlIskTcoVIpLlpOykXiUpxmCrFavLgXu3xNrzEmN/pART1hIGy109qZAQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812511163993.2419356992913; Fri, 11 Oct 2019 09:48:31 -0700 (PDT) Received: from localhost ([::1]:54134 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy5b-0003wS-Ts for importer@patchew.org; Fri, 11 Oct 2019 12:48:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35987) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQZ-0005d0-4Q for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQY-00044c-4z for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:47830) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQX-00043e-Ti; Fri, 11 Oct 2019 12:06:02 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQW-0003XG-8v; Fri, 11 Oct 2019 19:06:00 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 011/126] block/snapshot: rename Error ** parameter to more common errp Date: Fri, 11 Oct 2019 19:03:57 +0300 Message-Id: <20191011160552.22907-12-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, qemu-block@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/snapshot.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block/snapshot.c b/block/snapshot.c index 8081616ae9..bd9fb01817 100644 --- a/block/snapshot.c +++ b/block/snapshot.c @@ -426,7 +426,7 @@ fail: } =20 int bdrv_all_delete_snapshot(const char *name, BlockDriverState **first_ba= d_bs, - Error **err) + Error **errp) { int ret =3D 0; BlockDriverState *bs; @@ -441,7 +441,7 @@ int bdrv_all_delete_snapshot(const char *name, BlockDri= verState **first_bad_bs, bdrv_snapshot_find(bs, snapshot, name) >=3D 0) { ret =3D bdrv_snapshot_delete(bs, snapshot->id_str, - snapshot->name, err); + snapshot->name, errp); } aio_context_release(ctx); if (ret < 0) { --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811052; cv=none; d=zoho.com; s=zohoarc; b=DeCquC5SCsfNfjOJqu+GwzhQYTxQxe/Cbv0+UlcDDjzSvdMWKQOPiPDWxjmow9JnPrs7cpxyaoEoYuQY0TpO8qlw6nSHYW6I0HLeKro4ZpFRCrvq1rgWt39xojrV6aHO8ofaNekK6PSZoVH+jnmAtpcpskF4n88r/D9smOuDQng= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811052; h=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=IW19aYzHUbkvAfV4mBaVbBzmYogpntF1XS8Uug5phO0=; b=fwMDtYAlfvLlyqPncQyun1ZBnzFwlH9R3FfeSESHU5aRDrx5E9ThGofhiaz4Y9UCR7hEjKWeArciTzubcv/3e5dW3MYreKDib9qKCwFjtvGdxUOAHhT8bPk8JhCoBYuUDsFwtToONQwlZhM3WwRqPSvskldcUuEfPvkp8RmVboA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811052215746.7330632861198; Fri, 11 Oct 2019 09:24:12 -0700 (PDT) Received: from localhost ([::1]:53752 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxi6-0001Wt-Nz for importer@patchew.org; Fri, 11 Oct 2019 12:24:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36138) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQn-0005yA-3V for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQk-0004Gl-VI for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:15 -0400 Received: from relay.sw.ru ([185.231.240.75]:47862) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQk-000461-Np for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:14 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQW-0003XG-Er; Fri, 11 Oct 2019 19:06:00 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 012/126] hw/i386/amd_iommu: rename Error ** parameter to more common errp Date: Fri, 11 Oct 2019 19:03:58 +0300 Message-Id: <20191011160552.22907-13-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, Eduardo Habkost , "Michael S. Tsirkin" , armbru@redhat.com, Paolo Bonzini , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/i386/amd_iommu.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index d3726361dd..c496a0679b 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -1533,7 +1533,7 @@ static void amdvi_reset(DeviceState *dev) amdvi_init(s); } =20 -static void amdvi_realize(DeviceState *dev, Error **err) +static void amdvi_realize(DeviceState *dev, Error **errp) { int ret =3D 0; AMDVIState *s =3D AMD_IOMMU_DEVICE(dev); @@ -1548,21 +1548,21 @@ static void amdvi_realize(DeviceState *dev, Error *= *err) /* This device should take care of IOMMU PCI properties */ x86_iommu->type =3D TYPE_AMD; qdev_set_parent_bus(DEVICE(&s->pci), &bus->qbus); - object_property_set_bool(OBJECT(&s->pci), true, "realized", err); + object_property_set_bool(OBJECT(&s->pci), true, "realized", errp); ret =3D pci_add_capability(&s->pci.dev, AMDVI_CAPAB_ID_SEC, 0, - AMDVI_CAPAB_SIZE, err); + AMDVI_CAPAB_SIZE, errp); if (ret < 0) { return; } s->capab_offset =3D ret; =20 ret =3D pci_add_capability(&s->pci.dev, PCI_CAP_ID_MSI, 0, - AMDVI_CAPAB_REG_SIZE, err); + AMDVI_CAPAB_REG_SIZE, errp); if (ret < 0) { return; } ret =3D pci_add_capability(&s->pci.dev, PCI_CAP_ID_HT, 0, - AMDVI_CAPAB_REG_SIZE, err); + AMDVI_CAPAB_REG_SIZE, errp); if (ret < 0) { return; } @@ -1577,8 +1577,8 @@ static void amdvi_realize(DeviceState *dev, Error **e= rr) sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->mmio); sysbus_mmio_map(SYS_BUS_DEVICE(s), 0, AMDVI_BASE_ADDR); pci_setup_iommu(bus, amdvi_host_dma_iommu, s); - s->devid =3D object_property_get_int(OBJECT(&s->pci), "addr", err); - msi_init(&s->pci.dev, 0, 1, true, false, err); + s->devid =3D object_property_get_int(OBJECT(&s->pci), "addr", errp); + msi_init(&s->pci.dev, 0, 1, true, false, errp); amdvi_init(s); } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570810919; cv=none; d=zoho.com; s=zohoarc; b=kCgW+DqdWaEy1i0Y0V9+ySbtUsBX8wGKrVibNAqRl1Cf3JxYM06QVlrrAx2GbDbd+8QrNfluwtmk+Hg56GKpjshcrUVrO5lFC/CrAGxJr673JKQjrq/qpf+BIEVGzhp3HBr8k0ScLgX2Xb7ZFHhjmfM3CVoCJ/TsDrty48hWsHE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810919; h=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=/u4l46TGIjQXx+vDts9CuN0+TYVhCmlNbfqNcjrlt0w=; b=R3Tla7wvj/RTVCpqnY26L7XSCfx+WqNMJD/eE6U7Y85DPJojz8SnT6XoM6eFIriDTR/rOqRj7Mc3kc6LL84FopFDfT5I0W1BnKL8etveL3N9+8tM5eOyLlHFYtisNjF5iDak1NLB+g9GtTk7IbrFCyPT696DdSfPEOyzs7lghtk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081091992213.62513032607285; Fri, 11 Oct 2019 09:21:59 -0700 (PDT) Received: from localhost ([::1]:53678 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxfy-0006fb-Kl for importer@patchew.org; Fri, 11 Oct 2019 12:21:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36113) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQl-0005wq-AG for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQk-0004Fx-4m for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:15 -0400 Received: from relay.sw.ru ([185.231.240.75]:47844) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQj-00045D-Si for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:14 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQX-0003XG-4n; Fri, 11 Oct 2019 19:06:01 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 013/126] qga: rename Error ** parameter to more common errp Date: Fri, 11 Oct 2019 19:03:59 +0300 Message-Id: <20191011160552.22907-14-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, armbru@redhat.com, Michael Roth Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy --- qga/commands-posix.c | 2 +- qga/commands-win32.c | 2 +- qga/commands.c | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/qga/commands-posix.c b/qga/commands-posix.c index dfc05f5b8a..6dcd2d5db6 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -2780,7 +2780,7 @@ static double ga_get_login_time(struct utmpx *user_in= fo) return seconds + useconds; } =20 -GuestUserList *qmp_guest_get_users(Error **err) +GuestUserList *qmp_guest_get_users(Error **errp) { GHashTable *cache =3D NULL; GuestUserList *head =3D NULL, *cur_item =3D NULL; diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 6b67f16faf..9789465b4a 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -1946,7 +1946,7 @@ typedef struct _GA_WTSINFOA { =20 } GA_WTSINFOA; =20 -GuestUserList *qmp_guest_get_users(Error **err) +GuestUserList *qmp_guest_get_users(Error **errp) { #define QGA_NANOSECONDS 10000000 =20 diff --git a/qga/commands.c b/qga/commands.c index 0c7d1385c2..43c323cead 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -143,7 +143,7 @@ static GuestExecInfo *guest_exec_info_find(int64_t pid_= numeric) return NULL; } =20 -GuestExecStatus *qmp_guest_exec_status(int64_t pid, Error **err) +GuestExecStatus *qmp_guest_exec_status(int64_t pid, Error **errp) { GuestExecInfo *gei; GuestExecStatus *ges; @@ -152,7 +152,7 @@ GuestExecStatus *qmp_guest_exec_status(int64_t pid, Err= or **err) =20 gei =3D guest_exec_info_find(pid); if (gei =3D=3D NULL) { - error_setg(err, QERR_INVALID_PARAMETER, "pid"); + error_setg(errp, QERR_INVALID_PARAMETER, "pid"); return NULL; } =20 @@ -385,7 +385,7 @@ GuestExec *qmp_guest_exec(const char *path, bool has_env, strList *env, bool has_input_data, const char *input_data, bool has_capture_output, bool capture_output, - Error **err) + Error **errp) { GPid pid; GuestExec *ge =3D NULL; @@ -405,7 +405,7 @@ GuestExec *qmp_guest_exec(const char *path, arglist.next =3D has_arg ? arg : NULL; =20 if (has_input_data) { - input =3D qbase64_decode(input_data, -1, &ninput, err); + input =3D qbase64_decode(input_data, -1, &ninput, errp); if (!input) { return NULL; } @@ -424,7 +424,7 @@ GuestExec *qmp_guest_exec(const char *path, guest_exec_task_setup, NULL, &pid, has_input_data ? &in_fd : N= ULL, has_output ? &out_fd : NULL, has_output ? &err_fd : NULL, &ger= r); if (!ret) { - error_setg(err, QERR_QGA_COMMAND_FAILED, gerr->message); + error_setg(errp, QERR_QGA_COMMAND_FAILED, gerr->message); g_error_free(gerr); goto done; } @@ -499,7 +499,7 @@ int ga_parse_whence(GuestFileWhence *whence, Error **er= rp) return -1; } =20 -GuestHostName *qmp_guest_get_host_name(Error **err) +GuestHostName *qmp_guest_get_host_name(Error **errp) { GuestHostName *result =3D NULL; gchar const *hostname =3D g_get_host_name(); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811567; cv=none; d=zoho.com; s=zohoarc; b=RCEQuyYcWA+5M9lSRx/oAmBt1B7ln1WIO77GaBpT/8APAPre9k1cUJF6PXco106APnOFoxhGViDMPLYiwsHm0gCVfhU4VxSv515EAtUN+k0CTRlmjvBoYAU5V8AiBwJpMnVoNQnV+/bDLMW94EVQ4QN6txu3w2XYmGUbs91PsEM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811567; h=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=8A3/c7ECMwp6bFi8eEfXiu9HGO3hOsMY3lGpj2Prqf0=; b=SuEbmG7bP7lK8czGH/CCtdmwKcxoQThpl6GDlhXT2Ku0U+qO6WQCInlNa+MYxw9bxENIZnc/AsPmm7ChZqJY0+Mv8wg0cjImTRpIhhidum2FiG/yXKQqvgYEmMMWMm/Goeoc0Q7jHlGV4vviyGfDmGNXmVpW594gC/OQ8ox9Uck= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811567766690.8386033526294; Fri, 11 Oct 2019 09:32:47 -0700 (PDT) Received: from localhost ([::1]:53912 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxqH-0002l4-K5 for importer@patchew.org; Fri, 11 Oct 2019 12:32:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36108) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQl-0005wY-43 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQk-0004Fr-4d for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:15 -0400 Received: from relay.sw.ru ([185.231.240.75]:47854) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQj-00045R-Sj for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:14 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQY-0003XG-6B; Fri, 11 Oct 2019 19:06:02 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 014/126] monitor/qmp-cmds: rename Error ** parameter to more common errp Date: Fri, 11 Oct 2019 19:04:00 +0300 Message-Id: <20191011160552.22907-15-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy --- monitor/qmp-cmds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c index 0880341a2d..c6faa3eaf0 100644 --- a/monitor/qmp-cmds.c +++ b/monitor/qmp-cmds.c @@ -109,7 +109,7 @@ void qmp_system_reset(Error **errp) qemu_system_reset_request(SHUTDOWN_CAUSE_HOST_QMP_SYSTEM_RESET); } =20 -void qmp_system_powerdown(Error **erp) +void qmp_system_powerdown(Error **errp) { qemu_system_powerdown_request(); } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812557; cv=none; d=zoho.com; s=zohoarc; b=lrxHSnmzLbmTccex04r+8m2YJb56rMLLDL0E4USpeuyCYFKEiAHA+MCaArzTfqvLL8Ksk2LAYCCH1qyVWHqDKOVrH+CT8ryRo2Af8+8urYurx+MUUP3Ke5fy3CH0UEm+fja1PhaxAodKhuGvaccgNGx8gg8ZjBIMdT0/oM2Ini8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812557; h=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=oujTSoJQ8qDUK4mQvo4C0mcujXvYHXEUyMpfSZweveg=; b=YO6eOunAx0SHI0sRCcI6mKQgu7trX8OZBC596hMmul41+A+GSB8MCfikD85o9xbUIwj+PGAe+goqKUiHKxxngexPUp+IyJjhtceLR92EFNlURsRAUo2nPHVHZyekKV1SIw4ql1ED0giGTClyEWrmczivKFmAQH6VMlhy1MXjjig= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081255725492.6322354308005; Fri, 11 Oct 2019 09:49:17 -0700 (PDT) Received: from localhost ([::1]:54144 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy6N-0004xf-Lc for importer@patchew.org; Fri, 11 Oct 2019 12:49:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36378) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQw-0006Fp-7f for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQu-0004Sn-W1 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:26 -0400 Received: from relay.sw.ru ([185.231.240.75]:47872) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQu-000464-NT; Fri, 11 Oct 2019 12:06:24 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQY-0003XG-NT; Fri, 11 Oct 2019 19:06:03 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 015/126] hw/s390x: rename Error ** parameter to more common errp Date: Fri, 11 Oct 2019 19:04:01 +0300 Message-Id: <20191011160552.22907-16-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, David Hildenbrand , Cornelia Huck , armbru@redhat.com, Halil Pasic , Christian Borntraeger , qemu-s390x@nongnu.org, Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Cornelia Huck --- hw/s390x/event-facility.c | 2 +- hw/s390x/s390-stattrib.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c index 66205697ae..dc733ee2af 100644 --- a/hw/s390x/event-facility.c +++ b/hw/s390x/event-facility.c @@ -439,7 +439,7 @@ static void sclp_event_set_allow_all_mask_sizes(Object = *obj, bool value, ef->allow_all_mask_sizes =3D value; } =20 -static bool sclp_event_get_allow_all_mask_sizes(Object *obj, Error **e) +static bool sclp_event_get_allow_all_mask_sizes(Object *obj, Error **errp) { SCLPEventFacility *ef =3D (SCLPEventFacility *)obj; =20 diff --git a/hw/s390x/s390-stattrib.c b/hw/s390x/s390-stattrib.c index bf5ac014c4..58121b9f68 100644 --- a/hw/s390x/s390-stattrib.c +++ b/hw/s390x/s390-stattrib.c @@ -352,7 +352,8 @@ static void s390_stattrib_class_init(ObjectClass *oc, v= oid *data) dc->realize =3D s390_stattrib_realize; } =20 -static inline bool s390_stattrib_get_migration_enabled(Object *obj, Error = **e) +static inline bool s390_stattrib_get_migration_enabled(Object *obj, + Error **errp) { S390StAttribState *s =3D S390_STATTRIB(obj); =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812686; cv=none; d=zoho.com; s=zohoarc; b=NealrA02LK7r9r9biA7qmoGUHDCWU8Q3PL/yZvCUSJI1BgaYt2G3HuMsGI1g98DPwOa7L/Tat7LoxBPK5KMy4vycxfqfckmlvwdwyu1T5EMAIhP/K/EatN7Ok2q8vsJZSb4d4+/qcIvLXliTRpYqJtI2NtTJgvWTWw2aT4OP8Ds= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812686; h=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=cDzoVJ/uJfqIVAYk61Yqa01kkZ0jeE6z7gajQ/472OI=; b=IoKIJfKelVX0DuKm2YQOjFJh+OizRAGBZMcEU2eD59pbLk0+of1A2zp2T1/khsf8vQMuHb+53ocn+osaJSp/eVzPQIQhKITyvBP/1CBr53cXk5nlzPgm0X4sy5tTPnYpbm3URSeeaIWoNq8qS5YDMfudh6nilXYW7ccBU5uqqtA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812686484424.99031681620136; Fri, 11 Oct 2019 09:51:26 -0700 (PDT) Received: from localhost ([::1]:54172 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy8T-00080C-4m for importer@patchew.org; Fri, 11 Oct 2019 12:51:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36132) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQl-0005xw-Ts for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQk-0004Gd-Ua for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:15 -0400 Received: from relay.sw.ru ([185.231.240.75]:47866) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQk-000463-Nh for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:14 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQZ-0003XG-4s; Fri, 11 Oct 2019 19:06:03 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 016/126] hw/sd: rename Error ** parameter to more common errp Date: Fri, 11 Oct 2019 19:04:02 +0300 Message-Id: <20191011160552.22907-17-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- hw/sd/sdhci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index e08ec3e398..e56031b5e4 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1459,7 +1459,7 @@ static void sdhci_sysbus_finalize(Object *obj) sdhci_uninitfn(s); } =20 -static void sdhci_sysbus_realize(DeviceState *dev, Error ** errp) +static void sdhci_sysbus_realize(DeviceState *dev, Error **errp) { SDHCIState *s =3D SYSBUS_SDHCI(dev); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811792; cv=none; d=zoho.com; s=zohoarc; b=QlmMCQmr2u1oOyWtUaUAvcOj2gPYL0A896ezWv9f2hKkKm3TwAVtRfGM72gZR7gCg2jXPduFTncVx4CbaXmi8rDmqHQCXzm/sD0W1cihaSNYJhzNkg55Ann7R5JrDE8W3nWP8afqaJgqjxtRXte9I8UB/2xiJK8R04Gp+aax3+M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811792; h=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=LVNxSRbj3QFFSaG7GfamympdyrpLYI2VI1HgyVAz+AU=; b=c9abmoNjtfYHiY9A26ripSzgmqV+TuKaiBB0kimga4VSYznQvc96mvsZ6xveYwFLS4KW2WZ3y2MdVaf/rj+gUyxRLjLz27xF+VsHOnbAQEKm6SrggcYmtbJJASz9sMHXxI+ipR/l5yfofYwVebXuqER+at8hCBNynmRJsOOIQ2k= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811792248887.4714911333411; Fri, 11 Oct 2019 09:36:32 -0700 (PDT) Received: from localhost ([::1]:53980 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxtz-0006m0-ST for importer@patchew.org; Fri, 11 Oct 2019 12:36:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36144) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQm-0005ya-Bm for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQl-0004HD-8C for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:16 -0400 Received: from relay.sw.ru ([185.231.240.75]:47874) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQl-00046G-0Y for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:15 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQZ-0003XG-KW; Fri, 11 Oct 2019 19:06:03 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 017/126] hw/tpm: rename Error ** parameter to more common errp Date: Fri, 11 Oct 2019 19:04:03 +0300 Message-Id: <20191011160552.22907-18-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, armbru@redhat.com, Stefan Berger Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Stefan Berger --- hw/tpm/tpm_emulator.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/tpm/tpm_emulator.c b/hw/tpm/tpm_emulator.c index 22f9113432..10d587ed40 100644 --- a/hw/tpm/tpm_emulator.c +++ b/hw/tpm/tpm_emulator.c @@ -155,7 +155,7 @@ static int tpm_emulator_unix_tx_bufs(TPMEmulator *tpm_e= mu, const uint8_t *in, uint32_t in_len, uint8_t *out, uint32_t out_len, bool *selftest_done, - Error **err) + Error **errp) { ssize_t ret; bool is_selftest =3D false; @@ -165,20 +165,20 @@ static int tpm_emulator_unix_tx_bufs(TPMEmulator *tpm= _emu, is_selftest =3D tpm_util_is_selftest(in, in_len); } =20 - ret =3D qio_channel_write_all(tpm_emu->data_ioc, (char *)in, in_len, e= rr); + ret =3D qio_channel_write_all(tpm_emu->data_ioc, (char *)in, in_len, e= rrp); if (ret !=3D 0) { return -1; } =20 ret =3D qio_channel_read_all(tpm_emu->data_ioc, (char *)out, - sizeof(struct tpm_resp_hdr), err); + sizeof(struct tpm_resp_hdr), errp); if (ret !=3D 0) { return -1; } =20 ret =3D qio_channel_read_all(tpm_emu->data_ioc, (char *)out + sizeof(struct tpm_resp_hdr), - tpm_cmd_get_size(out) - sizeof(struct tpm_resp_hdr), err); + tpm_cmd_get_size(out) - sizeof(struct tpm_resp_hdr), errp); if (ret !=3D 0) { return -1; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813584; cv=none; d=zoho.com; s=zohoarc; b=ojhLFfAiCPhVfpiYd1SyTXTeZ4LaQvBf78WJHL6X59TApgGSSHMjbt0wTDegyvnAS5K2yq130qwIDJqQ1kjXMlZtS28yx+LxULZ+91Pa6NWu2Enx2DmLGiXjopvYeqH0fcQvM3Uc7MjCKbHH7O0bJscE6PzKSybMh46ON+03YZU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813584; h=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=3cnSeynW7ZRA2y3AIq7dnm64K9PgTaPFPnZYrF4VHCM=; b=SB7PBcINB+ejD4JAaPJ7y2u7CpR1FpfqnN49GVpwvCn1xdCFq/U13D7yBDcatvUTDxzWS1iEZYcBKAytEoca8YLKVqyOyW94hi6T0VuxxhAJ/C+K93fgVs75Fbk3nFcPvJZD3zkxtbY4yK3oJP8B6Y+bg07Ppgwd3zyeldlSypU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570813584340737.2394521296779; Fri, 11 Oct 2019 10:06:24 -0700 (PDT) Received: from localhost ([::1]:54350 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyMr-0002q4-Mc for importer@patchew.org; Fri, 11 Oct 2019 13:06:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36243) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQr-00067u-OK for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQq-0004N3-GQ for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:21 -0400 Received: from relay.sw.ru ([185.231.240.75]:47950) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQq-0004Ab-9G for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:20 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQZ-0003XG-UG; Fri, 11 Oct 2019 19:06:04 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 018/126] hw/usb: rename Error ** parameter to more common errp Date: Fri, 11 Oct 2019 19:04:04 +0300 Message-Id: <20191011160552.22907-19-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, armbru@redhat.com, Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/usb/dev-network.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c index 5de6213cc4..b81a8abe83 100644 --- a/hw/usb/dev-network.c +++ b/hw/usb/dev-network.c @@ -1342,7 +1342,7 @@ static NetClientInfo net_usbnet_info =3D { .cleanup =3D usbnet_cleanup, }; =20 -static void usb_net_realize(USBDevice *dev, Error **errrp) +static void usb_net_realize(USBDevice *dev, Error **errp) { USBNetState *s =3D USB_NET(dev); =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814603; cv=none; d=zoho.com; s=zohoarc; b=DjyRIzetIbOn3j0+VIZE4ylw4H+N4S2+KT+lxu+jEefoCw+uHPUkyUMy9D8Gq/7VuROYLsHuxFUVKFg9sX0uWoT/dGcWsSxQRLAU8oS0ImU5DLL89/E8VDKcQ0U2GZsQ+aatmFA8jJ4No72xDjo9O0syBP+R8VzhXJ3WhpS9VOk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814603; h=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=6FbhcFiTMQJ26F+9wZ9v3iwthsLjvwwKFtOwgGfE7nY=; b=UKvha/yK6qS1jtuuWXb8H8N44GPAF9PsYBoE0q9zVgrZgqDTU+Zv8owAqqzfI6Cina2di25oJFG8A6GAWCJ6OH1sxRfc/zfDXjGb6/P4k1DEGTRfZCIRSMYwGmFsVIYFx7CjXnKdBftChK8XyAKddjl+rlTr5XE83tGA39aL3WU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814603797499.06836982564676; Fri, 11 Oct 2019 10:23:23 -0700 (PDT) Received: from localhost ([::1]:54598 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIydM-0007ix-8h for importer@patchew.org; Fri, 11 Oct 2019 13:23:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36400) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQw-0006Gz-Sg for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQv-0004UT-Os for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:26 -0400 Received: from relay.sw.ru ([185.231.240.75]:47878) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQv-00046T-Go; Fri, 11 Oct 2019 12:06:25 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQa-0003XG-3v; Fri, 11 Oct 2019 19:06:04 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 019/126] include/block/snapshot.h: rename Error ** parameter to more common errp Date: Fri, 11 Oct 2019 19:04:05 +0300 Message-Id: <20191011160552.22907-20-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, qemu-block@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/block/snapshot.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/block/snapshot.h b/include/block/snapshot.h index b5d5084a12..2bfcd57578 100644 --- a/include/block/snapshot.h +++ b/include/block/snapshot.h @@ -78,7 +78,7 @@ int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState= *bs, =20 bool bdrv_all_can_snapshot(BlockDriverState **first_bad_bs); int bdrv_all_delete_snapshot(const char *name, BlockDriverState **first_bs= d_bs, - Error **err); + Error **errp); int bdrv_all_goto_snapshot(const char *name, BlockDriverState **first_bad_= bs, Error **errp); int bdrv_all_find_snapshot(const char *name, BlockDriverState **first_bad_= bs); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812852; cv=none; d=zoho.com; s=zohoarc; b=EDeh+UPPkPHVwdaAV7bJ72ObURXg7OSZGOvxuTx8ESbZ2Q5MEWeysRrcwPdL9d1/eKjf8i50arnLgKYVALPEN0LddlPUUzbD0hU40JilfYhH/ahWrIWKkcKYaNnePbTuFtaNWCGmDGk+6WzaVAJ448LI9MBii7y0pjmHklBJzlU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812852; h=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=Nvke3aFGDBOhgx2/EcG2Fglxsjn8ywfktYymHiqsX+c=; b=i80wZrSCJB0/xLygoECgnlA+dqV9VCOmvLGAcZDnSOlatC/0jbb5lqUmjIp8qz6Q8vtxloPhg8wiAD8JsOhJg//5lQj/Aold2s5m5AnambQ5gVyDmduo8ICSQsPyJBvfWtetYIarBrX3R369uSWOMo3TL+GMSMq5RgCgsH51p0M= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812852049914.640090057775; Fri, 11 Oct 2019 09:54:12 -0700 (PDT) Received: from localhost ([::1]:54202 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyB4-00034t-2a for importer@patchew.org; Fri, 11 Oct 2019 12:54:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36162) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQn-0005zT-02 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQl-0004IE-VT for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:16 -0400 Received: from relay.sw.ru ([185.231.240.75]:47886) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQl-00046b-OI for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:15 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQa-0003XG-EW; Fri, 11 Oct 2019 19:06:04 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 020/126] include/qom/object.h: rename Error ** parameter to more common errp Date: Fri, 11 Oct 2019 19:04:06 +0300 Message-Id: <20191011160552.22907-21-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Paolo Bonzini , vsementsov@virtuozzo.com, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , armbru@redhat.com, Eduardo Habkost Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/qom/object.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/qom/object.h b/include/qom/object.h index 128d00c77f..716f6f655d 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -1635,9 +1635,9 @@ void object_class_property_add_uint32_ptr(ObjectClass= *klass, const char *name, * property of type 'uint64'. */ void object_property_add_uint64_ptr(Object *obj, const char *name, - const uint64_t *v, Error **Errp); + const uint64_t *v, Error **errp); void object_class_property_add_uint64_ptr(ObjectClass *klass, const char *= name, - const uint64_t *v, Error **Errp); + const uint64_t *v, Error **errp); =20 /** * object_property_add_alias: --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813013; cv=none; d=zoho.com; s=zohoarc; b=YVZR8J5fW0C9ws+0TKaMqbWMCWEUQD/8LGwEFl4oAyb1dhn+9Xveo2ZaHAgG9ClprY0BvX+OvMKHsQC7BuaCnbGINM7adH06iTGTkx3Pz5V0brUZpSY/ZIhBvOvU4q05aOYaek6ZxfwgCt747DfgVFQ19X4RRif0TjbiloXue70= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813013; h=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=8LJ1nNH6dcOfz78wCKEJE9pf8TT8GGVnlK5ztn2DUYQ=; b=SuhpuTkm5CQgk1iY4HBjQSJ7l3HFyYExJd3ejFefx0HihSwKKSDWIE4fU8a40rr03/ovierPWreDqSaq3UrXqOmUQFA9+EVA/V8cO50Xh5+5UnlrZCfRWMwBSi1UXaVgb8LE8DZWoEJG0IS5vMsh5SmcdkZw2ZNjfkotNC0i8Pg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813013643250.2427051808213; Fri, 11 Oct 2019 09:56:53 -0700 (PDT) Received: from localhost ([::1]:54228 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyDj-0006ot-UK for importer@patchew.org; Fri, 11 Oct 2019 12:56:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36169) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQn-000602-6z for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQm-0004IR-7d for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:17 -0400 Received: from relay.sw.ru ([185.231.240.75]:47890) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQl-00046m-W2 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:16 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQa-0003XG-L7; Fri, 11 Oct 2019 19:06:04 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 021/126] qapi/error: add (Error **errp) cleaning APIs Date: Fri, 11 Oct 2019 19:04:07 +0300 Message-Id: <20191011160552.22907-22-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: vsementsov@virtuozzo.com, armbru@redhat.com, Michael Roth Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/qapi/error.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/include/qapi/error.h b/include/qapi/error.h index 12532bdf69..d6898d833b 100644 --- a/include/qapi/error.h +++ b/include/qapi/error.h @@ -309,6 +309,29 @@ void warn_reportf_err(Error *err, const char *fmt, ...) void error_reportf_err(Error *err, const char *fmt, ...) GCC_FMT_ATTR(2, 3); =20 +/* + * Functions to clean Error **errp: call corresponding Error *err cleaning + * function an set pointer to NULL + */ +static inline void error_free_errp(Error **errp_in) +{ + error_free(*errp_in); + *errp_in =3D NULL; +} + +static inline void error_report_errp(Error **errp_in) +{ + error_report_err(*errp_in); + *errp_in =3D NULL; +} + +static inline void warn_report_errp(Error **errp_in) +{ + warn_report_err(*errp_in); + *errp_in =3D NULL; +} + + /* * Just like error_setg(), except you get to specify the error class. * Note: use of error classes other than ERROR_CLASS_GENERIC_ERROR is --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813206; cv=none; d=zoho.com; s=zohoarc; b=VpDabBaNuTVdKolHeSZBorSsKLaD8EpcHlU3xTDfm+gj4djeBJQm5teRyZMb3twaBL63EkLMEWRx+Oasx66Hp2KnKkOfHafCPoYJuldmGo4tYHiVMhLH9lpb8f2uVpdMTe0BDe5qks/mQtc2S9fynpH4JSJKU+spt65ALlzZjCo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813206; h=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=A8PFEAFgGC84FBq6p9kxc6U2NmnWPvj8EuwmbPUAo9M=; b=JD+Xpvs5dhTIW+4vXcdB8uoXYCj341NOQGtTRjdRiQ7uWsosnZKczSEdPg9Lew78/efqgtspkX6NVu9R/DfMHE9OAH0jlnbj9e859Dd3eUFMDioWa83IpbvMkZwZ5F+cYo+9QxponwYOWtO/SukaDpQ6JYRYCtSAvgnnyHYua3s= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813206739272.76572766309175; Fri, 11 Oct 2019 10:00:06 -0700 (PDT) Received: from localhost ([::1]:54252 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyGo-0002Mr-F0 for importer@patchew.org; Fri, 11 Oct 2019 13:00:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36203) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQp-00063a-7q for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQo-0004Kn-9D for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:19 -0400 Received: from relay.sw.ru ([185.231.240.75]:47918) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQo-00048h-1U for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:18 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQa-0003XG-Rs; Fri, 11 Oct 2019 19:06:05 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 022/126] backends/cryptodev: drop local_err from cryptodev_backend_complete() Date: Fri, 11 Oct 2019 19:04:08 +0300 Message-Id: <20191011160552.22907-23-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: "Gonglei \(Arei\)" , vsementsov@virtuozzo.com, armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" No reason for local_err here, use errp directly instead. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- backends/cryptodev.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/backends/cryptodev.c b/backends/cryptodev.c index 3c071eab95..5a9735684e 100644 --- a/backends/cryptodev.c +++ b/backends/cryptodev.c @@ -176,19 +176,10 @@ cryptodev_backend_complete(UserCreatable *uc, Error *= *errp) { CryptoDevBackend *backend =3D CRYPTODEV_BACKEND(uc); CryptoDevBackendClass *bc =3D CRYPTODEV_BACKEND_GET_CLASS(uc); - Error *local_err =3D NULL; =20 if (bc->init) { - bc->init(backend, &local_err); - if (local_err) { - goto out; - } + bc->init(backend, errp); } - - return; - -out: - error_propagate(errp, local_err); } =20 void cryptodev_backend_set_used(CryptoDevBackend *backend, bool used) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814906; cv=none; d=zoho.com; s=zohoarc; b=SuFZxxk9gNJqLqbaoU4drqrvLowiyeJMBtTOOcpX/ZikvWO9CINPGozI2vhRa9WH/XfQsX3IQttAwmvY8ousltMmrHcohMJVfxhdNIjdftUJ5p6CXUKRgR6pLhSqI8cXwC5B3E5too0JcJySRkEQzf3TnUqAULJvGNACdJN9BWk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814906; h=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=Yih2rhbeXpBnPejRxqq39pULduiYsGVJ11yQ9jfXawI=; b=od3yRBGeFy6d20iadvAHs8arWkHIvk33QDuGlcbyzqBt/ZTjNF9mGyrl+lWGZvHLvohkIPDI8OwjOoFc01U2SxT619n4XzWAEYQU+nfMFVh/c9H4+pseStSWWBY3DVmz2lLJ21bbn8sCFQJyEd1hs/vibYUMZc4WSadJFWVH/oY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814906789801.9947962504358; Fri, 11 Oct 2019 10:28:26 -0700 (PDT) Received: from localhost ([::1]:54656 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyiH-0006e0-F2 for importer@patchew.org; Fri, 11 Oct 2019 13:28:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36440) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQy-0006It-4n for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQw-0004Vh-QX for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:27 -0400 Received: from relay.sw.ru ([185.231.240.75]:47894) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQw-00047A-JD; Fri, 11 Oct 2019 12:06:26 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQb-0003XG-3k; Fri, 11 Oct 2019 19:06:05 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 023/126] hw/vfio/ap: drop local_err from vfio_ap_realize Date: Fri, 11 Oct 2019 19:04:09 +0300 Message-Id: <20191011160552.22907-24-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Tony Krowiak , vsementsov@virtuozzo.com, Pierre Morel , qemu-s390x@nongnu.org, Cornelia Huck , armbru@redhat.com, Halil Pasic , Christian Borntraeger , Alex Williamson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" No reason for local_err here, use errp directly instead. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau --- hw/vfio/ap.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c index da6a20669d..db816e1860 100644 --- a/hw/vfio/ap.c +++ b/hw/vfio/ap.c @@ -87,16 +87,14 @@ static VFIOGroup *vfio_ap_get_group(VFIOAPDevice *vapde= v, Error **errp) =20 static void vfio_ap_realize(DeviceState *dev, Error **errp) { - int ret; char *mdevid; - Error *local_err =3D NULL; VFIOGroup *vfio_group; APDevice *apdev =3D AP_DEVICE(dev); VFIOAPDevice *vapdev =3D VFIO_AP_DEVICE(apdev); =20 - vfio_group =3D vfio_ap_get_group(vapdev, &local_err); + vfio_group =3D vfio_ap_get_group(vapdev, errp); if (!vfio_group) { - goto out_err; + return; } =20 vapdev->vdev.ops =3D &vfio_ap_ops; @@ -113,18 +111,10 @@ static void vfio_ap_realize(DeviceState *dev, Error *= *errp) */ vapdev->vdev.balloon_allowed =3D true; =20 - ret =3D vfio_get_device(vfio_group, mdevid, &vapdev->vdev, &local_err); - if (ret) { - goto out_get_dev_err; - } - - return; + vfio_get_device(vfio_group, mdevid, &vapdev->vdev, errp); =20 -out_get_dev_err: vfio_ap_put_device(vapdev); vfio_put_group(vfio_group); -out_err: - error_propagate(errp, local_err); } =20 static void vfio_ap_unrealize(DeviceState *dev, Error **errp) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570817570; cv=none; d=zoho.com; s=zohoarc; b=OIqScYAi9Dwq34k2qu5xBj0/ZVt+qh0A7s/s0l2X3psB4JgUDuUbnbdjCZUoPr/KbqMzEMrm9PKPYlQUml78ufZ4NJdLfc3FeS3fd1n1yzDdCYXgiSdS9R4H7LabTDXkaqmeNOOUguU3HfT1vbBWi/cfQ3Wkvo5LpkheD8sM6k8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570817570; 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=S5Q5QWYld7SPhCl+Sp2foYjyj8RsJveahHQmOIJ1k0g=; b=ieCM29mOxek+I+bR/ctte7QNXvzfKHnmw4xLcR74yP09GWZKi89vBq2ZM4xfhGqWGsZvSIptrzsktK3NpLlTDQiok1cLP3CbzDmEfQSTsEACIfYtX59K4ye66RHscXe3lxNfPcDZhEJ9Ke140N3Ka/abLCfcgqR8wTOWQB7r74A= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570817570044511.84355963010535; Fri, 11 Oct 2019 11:12:50 -0700 (PDT) Received: from localhost ([::1]:55204 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzPE-0000GZ-8h for importer@patchew.org; Fri, 11 Oct 2019 14:12:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37610) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRm-0007mh-Aj for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:07:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRj-0005Ev-Tx for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:07:18 -0400 Received: from relay.sw.ru ([185.231.240.75]:48110) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRj-0004GG-LO; Fri, 11 Oct 2019 12:07:15 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQb-0003XG-BC; Fri, 11 Oct 2019 19:06:05 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 024/126] error: auto propagated local_err Date: Fri, 11 Oct 2019 19:04:10 +0300 Message-Id: <20191011160552.22907-25-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Ronnie Sahlberg , Jeff Cody , Jan Kiszka , Alberto Garcia , Hailiang Zhang , qemu-block@nongnu.org, Aleksandar Rikalo , Halil Pasic , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Anthony Perard , Samuel Thibault , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anthony Green , Laurent Vivier , Eduardo Habkost , Xie Changlong , Peter Lieven , "Dr. David Alan Gilbert" , Beniamino Galvani , Eric Auger , Alex Williamson , Stefan Hajnoczi , John Snow , Richard Henderson , Kevin Wolf , vsementsov@virtuozzo.com, Andrew Jeffery , Chris Wulff , Subbaraya Sundeep , Michael Walle , qemu-ppc@nongnu.org, Bastian Koppelmann , Igor Mammedov , Fam Zheng , Peter Maydell , sheepdog@lists.wpkg.org, Matthew Rosato , David Hildenbrand , Palmer Dabbelt , Thomas Huth , Max Filippov , "Denis V. Lunev" , Hannes Reinecke , Stefano Stabellini , "Gonglei \(Arei\)" , Liu Yuan , Artyom Tarasenko , Eric Farman , Amit Shah , Stefan Weil , Greg Kurz , Yuval Shaia , qemu-s390x@nongnu.org, qemu-arm@nongnu.org, Peter Chubb , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Stafford Horne , qemu-riscv@nongnu.org, Cornelia Huck , Aleksandar Markovic , Aurelien Jarno , Paul Burton , Sagar Karandikar , Paul Durrant , Jason Wang , Gerd Hoffmann , "Edgar E. Iglesias" , Guan Xuetao , Ari Sundholm , Juan Quintela , Michael Roth , Christian Borntraeger , Joel Stanley , Jason Dillaman , Antony Pavlov , xen-devel@lists.xenproject.org, integration@gluster.org, Laszlo Ersek , "Richard W.M. Jones" , Andrew Baumann , Max Reitz , "Michael S. Tsirkin" , Mark Cave-Ayland , Vincenzo Maffione , Marek Vasut , armbru@redhat.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Alistair Francis , Pavel Dovgalyuk , Giuseppe Lettieri , Luigi Rizzo , David Gibson , Tony Krowiak , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Xiao Guangrong , Pierre Morel , Wen Congyang , Jean-Christophe Dubois , Paolo Bonzini , Stefan Berger Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Here is introduced ERRP_AUTO_PROPAGATE macro, to be used at start of functions with errp OUT parameter. It has three goals: 1. Fix issue with error_fatal & error_prepend/error_append_hint: user can't see this additional information, because exit() happens in error_setg earlier than information is added. [Reported by Greg Kurz] 2. Fix issue with error_abort & error_propagate: when we wrap error_abort by local_err+error_propagate, resulting coredump will refer to error_propagate and not to the place where error happened. (the macro itself doesn't fix the issue, but it allows to [3.] drop all local_err+error_propagate pattern, which will definitely fix the issue) [Reported by Kevin Wolf] 3. Drop local_err+error_propagate pattern, which is used to workaround void functions with errp parameter, when caller wants to know resulting status. (Note: actually these functions could be merely updated to return int error code). To achieve these goals, we need to add invocation of the macro at start of functions, which needs error_prepend/error_append_hint (1.); add invocation of the macro at start of functions which do local_err+error_propagate scenario the check errors, drop local errors from them and just use *errp instead (2., 3.). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Reviewed-by: Marc-Andr=C3=A9 Lureau --- CC: Gerd Hoffmann CC: "Gonglei (Arei)" CC: Eduardo Habkost CC: Igor Mammedov CC: Laurent Vivier CC: Amit Shah CC: Kevin Wolf CC: Max Reitz CC: John Snow CC: Ari Sundholm CC: Pavel Dovgalyuk CC: Paolo Bonzini CC: Stefan Hajnoczi CC: Fam Zheng CC: Stefan Weil CC: Ronnie Sahlberg CC: Peter Lieven CC: Eric Blake CC: "Denis V. Lunev" CC: Markus Armbruster CC: Alberto Garcia CC: Jason Dillaman CC: Wen Congyang CC: Xie Changlong CC: Liu Yuan CC: "Richard W.M. Jones" CC: Jeff Cody CC: "Marc-Andr=C3=A9 Lureau" CC: "Daniel P. Berrang=C3=A9" CC: Richard Henderson CC: Greg Kurz CC: "Michael S. Tsirkin" CC: Marcel Apfelbaum CC: Beniamino Galvani CC: Peter Maydell CC: "C=C3=A9dric Le Goater" CC: Andrew Jeffery CC: Joel Stanley CC: Andrew Baumann CC: "Philippe Mathieu-Daud=C3=A9" CC: Antony Pavlov CC: Jean-Christophe Dubois CC: Peter Chubb CC: Subbaraya Sundeep CC: Eric Auger CC: Alistair Francis CC: "Edgar E. Iglesias" CC: Stefano Stabellini CC: Anthony Perard CC: Paul Durrant CC: Paul Burton CC: Aleksandar Rikalo CC: Chris Wulff CC: Marek Vasut CC: David Gibson CC: Cornelia Huck CC: Halil Pasic CC: Christian Borntraeger CC: "Herv=C3=A9 Poussineau" CC: Xiao Guangrong CC: Aurelien Jarno CC: Aleksandar Markovic CC: Mark Cave-Ayland CC: Jason Wang CC: Laszlo Ersek CC: Yuval Shaia CC: Palmer Dabbelt CC: Sagar Karandikar CC: Bastian Koppelmann CC: David Hildenbrand CC: Thomas Huth CC: Eric Farman CC: Matthew Rosato CC: Hannes Reinecke CC: Michael Walle CC: Artyom Tarasenko CC: Stefan Berger CC: Samuel Thibault CC: Alex Williamson CC: Tony Krowiak CC: Pierre Morel CC: Michael Roth CC: Hailiang Zhang CC: Juan Quintela CC: "Dr. David Alan Gilbert" CC: Luigi Rizzo CC: Giuseppe Lettieri CC: Vincenzo Maffione CC: Jan Kiszka CC: Anthony Green CC: Stafford Horne CC: Guan Xuetao CC: Max Filippov CC: qemu-block@nongnu.org CC: integration@gluster.org CC: sheepdog@lists.wpkg.org CC: qemu-arm@nongnu.org CC: xen-devel@lists.xenproject.org CC: qemu-ppc@nongnu.org CC: qemu-s390x@nongnu.org CC: qemu-riscv@nongnu.org include/qapi/error.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/include/qapi/error.h b/include/qapi/error.h index d6898d833b..47238d9065 100644 --- a/include/qapi/error.h +++ b/include/qapi/error.h @@ -345,6 +345,44 @@ void error_set_internal(Error **errp, ErrorClass err_class, const char *fmt, ...) GCC_FMT_ATTR(6, 7); =20 +typedef struct ErrorPropagator { + Error *local_err; + Error **errp; +} ErrorPropagator; + +static inline void error_propagator_cleanup(ErrorPropagator *prop) +{ + error_propagate(prop->errp, prop->local_err); +} + +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(ErrorPropagator, error_propagator_cleanup= ); + +/* + * ERRP_AUTO_PROPAGATE + * + * This macro is created to be the first line of a function with Error **e= rrp + * OUT parameter. It's needed only in cases where we want to use error_pre= pend, + * error_append_hint or dereference *errp. It's still safe (but useless) in + * other cases. + * + * If errp is NULL or points to error_fatal, it is rewritten to point to a + * local Error object, which will be automatically propagated to the origi= nal + * errp on function exit (see error_propagator_cleanup). + * + * After invocation of this macro it is always safe to dereference errp + * (as it's not NULL anymore) and to add information (by error_prepend or + * error_append_hint) + * (as, if it was error_fatal, we swapped it with a local_error to be + * propagated on cleanup). + * + * Note: we don't wrap the error_abort case, as we want resulting coredump + * to point to the place where the error happened, not to error_propagate. + */ +#define ERRP_AUTO_PROPAGATE() \ + g_auto(ErrorPropagator) _auto_errp_prop =3D {.errp =3D errp}; \ + errp =3D ((errp =3D=3D NULL || *errp =3D=3D error_fatal) \ + ? &_auto_errp_prop.local_err : errp) + /* * Special error destination to abort on error. * See error_setg() and error_propagate() for details. --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570816456; cv=none; d=zoho.com; s=zohoarc; b=TFJWoqwQZitqPUmUOR72Nl6EnjOUkquQb76LZGKwaHIy9b4knbm6SRgdfegHrkgvdBG3V9L8lrsM6HpFn0jGF+1X2MNFLgPH6zCgtFZyfU1qWIYv/6drOMwkW7o5BNgRm9loVsUK3etZJF0iON+1zyQW1nE7DyKDhZkHSgzGIdQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570816456; 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=fhpRDYcuAdENJA+HGKDpu4wh9pMPJV8HIjJMWhRDZZA=; b=OtaF//WmWG+8Hdq45XoPHsq18I+Q52kpayC55OMfKP8tBYsNf+3wimBGY6nSc9q9RpaF3lsHf+NjaBfqF+bKiD/IEzcRWAy+6mRNglf2zDlUcuolxRtGosB/9+D36a5jvbp6LPe088PZKwNNp8OkubTqc0Jz5fFOBO8VQkBWNy4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570816456013831.4479787017015; Fri, 11 Oct 2019 10:54:16 -0700 (PDT) Received: from localhost ([::1]:54976 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIz7G-0004FN-BC for importer@patchew.org; Fri, 11 Oct 2019 13:54:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37605) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRl-0007m0-Uh for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:07:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRj-0005Eq-Tc for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:07:17 -0400 Received: from relay.sw.ru ([185.231.240.75]:48104) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRj-0004GF-LL; Fri, 11 Oct 2019 12:07:15 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQb-0003XG-IB; Fri, 11 Oct 2019 19:06:05 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 025/126] scripts: add coccinelle script to use auto propagated errp Date: Fri, 11 Oct 2019 19:04:11 +0300 Message-Id: <20191011160552.22907-26-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Ronnie Sahlberg , Jeff Cody , Jan Kiszka , Alberto Garcia , Hailiang Zhang , qemu-block@nongnu.org, Aleksandar Rikalo , Halil Pasic , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Anthony Perard , Samuel Thibault , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anthony Green , Laurent Vivier , Eduardo Habkost , Xie Changlong , Peter Lieven , "Dr. David Alan Gilbert" , Beniamino Galvani , Eric Auger , Alex Williamson , Stefan Hajnoczi , John Snow , Richard Henderson , Kevin Wolf , vsementsov@virtuozzo.com, Andrew Jeffery , Chris Wulff , Subbaraya Sundeep , Michael Walle , qemu-ppc@nongnu.org, Bastian Koppelmann , Igor Mammedov , Fam Zheng , Peter Maydell , sheepdog@lists.wpkg.org, Matthew Rosato , David Hildenbrand , Palmer Dabbelt , Thomas Huth , Max Filippov , "Denis V. Lunev" , Hannes Reinecke , Stefano Stabellini , "Gonglei \(Arei\)" , Liu Yuan , Artyom Tarasenko , Eric Farman , Amit Shah , Stefan Weil , Greg Kurz , Yuval Shaia , qemu-s390x@nongnu.org, qemu-arm@nongnu.org, Peter Chubb , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Stafford Horne , qemu-riscv@nongnu.org, Cornelia Huck , Aleksandar Markovic , Aurelien Jarno , Paul Burton , Sagar Karandikar , Paul Durrant , Jason Wang , Gerd Hoffmann , "Edgar E. Iglesias" , Guan Xuetao , Ari Sundholm , Juan Quintela , Michael Roth , Christian Borntraeger , Joel Stanley , Jason Dillaman , Antony Pavlov , xen-devel@lists.xenproject.org, integration@gluster.org, Laszlo Ersek , "Richard W.M. Jones" , Andrew Baumann , Max Reitz , "Michael S. Tsirkin" , Mark Cave-Ayland , Vincenzo Maffione , Marek Vasut , armbru@redhat.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Alistair Francis , Pavel Dovgalyuk , Giuseppe Lettieri , Luigi Rizzo , David Gibson , Tony Krowiak , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Xiao Guangrong , Pierre Morel , Wen Congyang , Jean-Christophe Dubois , Paolo Bonzini , Stefan Berger Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Vladimir Sementsov-Ogievskiy --- CC: Gerd Hoffmann CC: "Gonglei (Arei)" CC: Eduardo Habkost CC: Igor Mammedov CC: Laurent Vivier CC: Amit Shah CC: Kevin Wolf CC: Max Reitz CC: John Snow CC: Ari Sundholm CC: Pavel Dovgalyuk CC: Paolo Bonzini CC: Stefan Hajnoczi CC: Fam Zheng CC: Stefan Weil CC: Ronnie Sahlberg CC: Peter Lieven CC: Eric Blake CC: "Denis V. Lunev" CC: Markus Armbruster CC: Alberto Garcia CC: Jason Dillaman CC: Wen Congyang CC: Xie Changlong CC: Liu Yuan CC: "Richard W.M. Jones" CC: Jeff Cody CC: "Marc-Andr=C3=A9 Lureau" CC: "Daniel P. Berrang=C3=A9" CC: Richard Henderson CC: Greg Kurz CC: "Michael S. Tsirkin" CC: Marcel Apfelbaum CC: Beniamino Galvani CC: Peter Maydell CC: "C=C3=A9dric Le Goater" CC: Andrew Jeffery CC: Joel Stanley CC: Andrew Baumann CC: "Philippe Mathieu-Daud=C3=A9" CC: Antony Pavlov CC: Jean-Christophe Dubois CC: Peter Chubb CC: Subbaraya Sundeep CC: Eric Auger CC: Alistair Francis CC: "Edgar E. Iglesias" CC: Stefano Stabellini CC: Anthony Perard CC: Paul Durrant CC: Paul Burton CC: Aleksandar Rikalo CC: Chris Wulff CC: Marek Vasut CC: David Gibson CC: Cornelia Huck CC: Halil Pasic CC: Christian Borntraeger CC: "Herv=C3=A9 Poussineau" CC: Xiao Guangrong CC: Aurelien Jarno CC: Aleksandar Markovic CC: Mark Cave-Ayland CC: Jason Wang CC: Laszlo Ersek CC: Yuval Shaia CC: Palmer Dabbelt CC: Sagar Karandikar CC: Bastian Koppelmann CC: David Hildenbrand CC: Thomas Huth CC: Eric Farman CC: Matthew Rosato CC: Hannes Reinecke CC: Michael Walle CC: Artyom Tarasenko CC: Stefan Berger CC: Samuel Thibault CC: Alex Williamson CC: Tony Krowiak CC: Pierre Morel CC: Michael Roth CC: Hailiang Zhang CC: Juan Quintela CC: "Dr. David Alan Gilbert" CC: Luigi Rizzo CC: Giuseppe Lettieri CC: Vincenzo Maffione CC: Jan Kiszka CC: Anthony Green CC: Stafford Horne CC: Guan Xuetao CC: Max Filippov CC: qemu-block@nongnu.org CC: integration@gluster.org CC: sheepdog@lists.wpkg.org CC: qemu-arm@nongnu.org CC: xen-devel@lists.xenproject.org CC: qemu-ppc@nongnu.org CC: qemu-s390x@nongnu.org CC: qemu-riscv@nongnu.org scripts/coccinelle/auto-propagated-errp.cocci | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 scripts/coccinelle/auto-propagated-errp.cocci diff --git a/scripts/coccinelle/auto-propagated-errp.cocci b/scripts/coccin= elle/auto-propagated-errp.cocci new file mode 100644 index 0000000000..d9731620aa --- /dev/null +++ b/scripts/coccinelle/auto-propagated-errp.cocci @@ -0,0 +1,118 @@ +@rule0@ +// Add invocation to errp-functions where necessary +identifier fn, local_err; +symbol errp; +@@ + + fn(..., Error **errp, ...) + { ++ ERRP_AUTO_PROPAGATE(); + <+... +( + error_append_hint(errp, ...); +| + error_prepend(errp, ...); +| + Error *local_err =3D NULL; +) + ...+> + } + +@@ +// Drop doubled invocation +identifier rule0.fn; +@@ + + fn(...) +{ +- ERRP_AUTO_PROPAGATE(); + ERRP_AUTO_PROPAGATE(); + ... +} + +@rule1@ +// Drop local_err +identifier fn, local_err; +symbol errp; +@@ + + fn(..., Error **errp, ...) + { + <... +- Error *local_err =3D NULL; + ...> + } + +@@ +// Handle pattern with goto, otherwise we'll finish up +// with labels at function end which will not compile. +identifier rule1.fn; +identifier rule1.local_err; +identifier OUT; +@@ + + fn(...) + { + <... +- goto OUT; ++ return; + ...> +- OUT: +- error_propagate(errp, local_err); + } + +@@ +identifier rule1.fn; +identifier rule1.local_err; +@@ + + fn(...) + { + <... +( +- error_free(local_err); +- local_err =3D NULL; ++ error_free_errp(errp); +| +- error_free(local_err); ++ error_free_errp(errp); +| +- error_report_err(local_err); ++ error_report_errp(errp); +| +- warn_report_err(local_err); ++ warn_report_errp(errp); +| +- error_propagate_prepend(errp, local_err, ++ error_prepend(errp, + ...); +| +- error_propagate(errp, local_err); +) + ...> + } + +@@ +identifier rule1.fn; +identifier rule1.local_err; +@@ + + fn(...) + { + <... +( +- &local_err ++ errp +| +- local_err ++ *errp +) + ...> + } + +@@ +symbol errp; +@@ + +- *errp !=3D NULL ++ *errp --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814004; cv=none; d=zoho.com; s=zohoarc; b=d3yrfbrialUmnxM8qI5Guaeg9Q7jpDxe4wV6VR29xxHy6Av7IbAdltbEnyyAWFH52UE6q1vZp+zP9a1F/Vf3fWOR/TJUMbxsMKBubXPPbXsguUqmd06F7wcQurHlW1FCAPBvQE+CM5hHEmGv8hz+u1Jd6eKIR9IpoM9hB1Oqxhc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814004; 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=Wh4v8yhw8idUv4k/LLyR8aclxgRQCay6q6zQL+5EfuY=; b=FDoJ3EGxGQbtn2PNs5jnU9xzXFmlLkwRVRy5zP+EBsKdcC0cLYa2telHVIlohDuJBVDSauxTrg4SGzbVGs8mpIaRlK7J69uir+MAp9ConbAMUwRAN6ammeyhD7VsPTUpEP47Qo/No0clKytoiiSzcw8LxSVCEWgTACZR35+AzXE= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814004350724.4261892708755; Fri, 11 Oct 2019 10:13:24 -0700 (PDT) Received: from localhost ([::1]:54426 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyTj-0003dL-72 for importer@patchew.org; Fri, 11 Oct 2019 13:13:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37612) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRm-0007mz-FM for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:07:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRk-0005F1-2V for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:07:18 -0400 Received: from relay.sw.ru ([185.231.240.75]:48100) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRj-0004GL-Mi; Fri, 11 Oct 2019 12:07:16 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQb-0003XG-Ro; Fri, 11 Oct 2019 19:06:05 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 026/126] python: add commit-per-subsystem.py Date: Fri, 11 Oct 2019 19:04:12 +0300 Message-Id: <20191011160552.22907-27-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Ronnie Sahlberg , Jeff Cody , Jan Kiszka , Alberto Garcia , Hailiang Zhang , qemu-block@nongnu.org, Aleksandar Rikalo , Halil Pasic , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Anthony Perard , Samuel Thibault , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Anthony Green , Laurent Vivier , Eduardo Habkost , Xie Changlong , Peter Lieven , "Dr. David Alan Gilbert" , Beniamino Galvani , Eric Auger , Alex Williamson , Stefan Hajnoczi , John Snow , Richard Henderson , Kevin Wolf , vsementsov@virtuozzo.com, Andrew Jeffery , Chris Wulff , Subbaraya Sundeep , Michael Walle , qemu-ppc@nongnu.org, Bastian Koppelmann , Igor Mammedov , Fam Zheng , Peter Maydell , sheepdog@lists.wpkg.org, Matthew Rosato , David Hildenbrand , Palmer Dabbelt , Thomas Huth , Max Filippov , "Denis V. Lunev" , Hannes Reinecke , Stefano Stabellini , "Gonglei \(Arei\)" , Liu Yuan , Artyom Tarasenko , Eric Farman , Amit Shah , Stefan Weil , Greg Kurz , Yuval Shaia , qemu-s390x@nongnu.org, qemu-arm@nongnu.org, Peter Chubb , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Stafford Horne , qemu-riscv@nongnu.org, Cornelia Huck , Aleksandar Markovic , Aurelien Jarno , Paul Burton , Sagar Karandikar , Paul Durrant , Jason Wang , Gerd Hoffmann , "Edgar E. Iglesias" , Guan Xuetao , Ari Sundholm , Juan Quintela , Michael Roth , Christian Borntraeger , Joel Stanley , Jason Dillaman , Antony Pavlov , xen-devel@lists.xenproject.org, integration@gluster.org, Laszlo Ersek , "Richard W.M. Jones" , Andrew Baumann , Max Reitz , "Michael S. Tsirkin" , Mark Cave-Ayland , Vincenzo Maffione , Marek Vasut , armbru@redhat.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Alistair Francis , Pavel Dovgalyuk , Giuseppe Lettieri , Luigi Rizzo , David Gibson , Tony Krowiak , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Xiao Guangrong , Pierre Morel , Wen Congyang , Jean-Christophe Dubois , Paolo Bonzini , Stefan Berger Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Add script to automatically commit tree-wide changes per-subsystem. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Aleksandar Markovic --- CC: Gerd Hoffmann CC: "Gonglei (Arei)" CC: Eduardo Habkost CC: Igor Mammedov CC: Laurent Vivier CC: Amit Shah CC: Kevin Wolf CC: Max Reitz CC: John Snow CC: Ari Sundholm CC: Pavel Dovgalyuk CC: Paolo Bonzini CC: Stefan Hajnoczi CC: Fam Zheng CC: Stefan Weil CC: Ronnie Sahlberg CC: Peter Lieven CC: Eric Blake CC: "Denis V. Lunev" CC: Markus Armbruster CC: Alberto Garcia CC: Jason Dillaman CC: Wen Congyang CC: Xie Changlong CC: Liu Yuan CC: "Richard W.M. Jones" CC: Jeff Cody CC: "Marc-Andr=C3=A9 Lureau" CC: "Daniel P. Berrang=C3=A9" CC: Richard Henderson CC: Greg Kurz CC: "Michael S. Tsirkin" CC: Marcel Apfelbaum CC: Beniamino Galvani CC: Peter Maydell CC: "C=C3=A9dric Le Goater" CC: Andrew Jeffery CC: Joel Stanley CC: Andrew Baumann CC: "Philippe Mathieu-Daud=C3=A9" CC: Antony Pavlov CC: Jean-Christophe Dubois CC: Peter Chubb CC: Subbaraya Sundeep CC: Eric Auger CC: Alistair Francis CC: "Edgar E. Iglesias" CC: Stefano Stabellini CC: Anthony Perard CC: Paul Durrant CC: Paul Burton CC: Aleksandar Rikalo CC: Chris Wulff CC: Marek Vasut CC: David Gibson CC: Cornelia Huck CC: Halil Pasic CC: Christian Borntraeger CC: "Herv=C3=A9 Poussineau" CC: Xiao Guangrong CC: Aurelien Jarno CC: Aleksandar Markovic CC: Mark Cave-Ayland CC: Jason Wang CC: Laszlo Ersek CC: Yuval Shaia CC: Palmer Dabbelt CC: Sagar Karandikar CC: Bastian Koppelmann CC: David Hildenbrand CC: Thomas Huth CC: Eric Farman CC: Matthew Rosato CC: Hannes Reinecke CC: Michael Walle CC: Artyom Tarasenko CC: Stefan Berger CC: Samuel Thibault CC: Alex Williamson CC: Tony Krowiak CC: Pierre Morel CC: Michael Roth CC: Hailiang Zhang CC: Juan Quintela CC: "Dr. David Alan Gilbert" CC: Luigi Rizzo CC: Giuseppe Lettieri CC: Vincenzo Maffione CC: Jan Kiszka CC: Anthony Green CC: Stafford Horne CC: Guan Xuetao CC: Max Filippov CC: qemu-block@nongnu.org CC: integration@gluster.org CC: sheepdog@lists.wpkg.org CC: qemu-arm@nongnu.org CC: xen-devel@lists.xenproject.org CC: qemu-ppc@nongnu.org CC: qemu-s390x@nongnu.org CC: qemu-riscv@nongnu.org python/commit-per-subsystem.py | 204 +++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100755 python/commit-per-subsystem.py diff --git a/python/commit-per-subsystem.py b/python/commit-per-subsystem.py new file mode 100755 index 0000000000..2ccf84cb15 --- /dev/null +++ b/python/commit-per-subsystem.py @@ -0,0 +1,204 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2019 Virtuozzo International GmbH +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import subprocess +import sys +import os +import glob + + +def git_add(pattern): + subprocess.run(['git', 'add', pattern]) + + +def git_commit(msg): + subprocess.run(['git', 'commit', '-m', msg], capture_output=3DTrue) + + +def git_changed_files(): + ret =3D subprocess.check_output(['git', 'diff', '--name-only'], encodi= ng=3D'utf-8').split('\n') + if ret[-1] =3D=3D '': + del ret[-1] + return ret + + +maintainers =3D sys.argv[1] +message =3D sys.argv[2].strip() + +subsystem =3D None + +remap =3D { + 'Block layer core': 'block', + 'Block Jobs': 'block', + 'Dirty Bitmaps': 'block', + 'Block QAPI, monitor, command line': 'block', + 'Block I/O path': 'block', + 'Throttling infrastructure': 'block', + 'Architecture support': 's390x', + 'Guest CPU Cores (KVM)': 'kvm', + 'Guest CPU Cores (Xen)': 'xen', + 'Guest CPU cores (TCG)': 'tcg', + 'Network Block Device (NBD)': 'nbd', + 'Parallel NOR Flash devices': 'pflash', + 'Firmware configuration (fw_cfg)': 'fw_cfg', + 'Block SCSI subsystem': 'scsi', + 'Network device backends': 'net', + 'Netmap network backend': 'net', + 'Host Memory Backends': 'hostmem', + 'Cryptodev Backends': 'cryptodev', + 'QEMU Guest Agent': 'qga', + 'COLO Framework': 'colo', + 'Command line option argument parsing': 'cmdline', + 'Character device backends': 'chardev' +} + + +class Maintainers: + def add(self, subsystem, path, mapper, mapper_name, glob_count=3D1): + if subsystem in remap: + subsystem =3D remap[subsystem] + if subsystem not in self.subsystems: + self.subsystems.append(subsystem) + + if path[-1] =3D=3D '/': + path =3D path[:-1] + + if path in mapper: + if mapper[path][1] =3D=3D glob_count: + print('Warning: "{}" both in "{}" and "{}" in {} mapper wi= th ' + 'same glob-count=3D{}. {} ignored for this path.'.fo= rmat( + path, mapper[path][0], subsystem, mapper_name, glo= b_count, + subsystem)) + return + if mapper[path][1] < glob_count: + # silently ignore worse match + return + + mapper[path] =3D (subsystem, glob_count) + + def __init__(self, file_name): + self.map_file =3D {} + self.map_glob_file =3D {} + self.map_dir =3D {} + self.map_glob_dir =3D {} + self.map_unmaintained_dir =3D { + 'python': ('python', 1), + 'hw/misc': ('misc', 1) + } + self.subsystems =3D ['python', 'misc'] + subsystem =3D None + + with open(file_name) as f: + mode2 =3D False + prevline =3D '' + for line in f: + line =3D line.rstrip() + if not line: + continue + if len(line) >=3D 2 and line[1] =3D=3D ':': + if line[0] =3D=3D 'F': + fname =3D line[3:] + if fname in ['*', '*/']: + continue + if os.path.isfile(fname): + self.add(subsystem, fname, self.map_file, 'fil= e') + elif os.path.isdir(fname): + self.add(subsystem, fname, self.map_dir, 'dir') + else: + paths =3D glob.glob(fname) + if not paths: + print('Warning: nothing corresponds to "{}= "'.format(fname)) + continue + + n =3D len(paths) + for f in paths: + if os.path.isfile(f): + self.add(subsystem, f, self.map_glob_f= ile, 'glob-file', n) + else: + assert os.path.isdir(f) + self.add(subsystem, f, self.map_glob_d= ir, 'glob-dir', n) + elif line[:3] =3D=3D '---': + subsystem =3D prevline + if subsystem =3D=3D 'Devices': + mode2 =3D True + elif mode2: + subsystem =3D line + prevline =3D line + + def find_in_map_dir(self, file_name, mapper): + while file_name !=3D '' and file_name not in mapper: + file_name =3D os.path.dirname(file_name) + + return None if file_name =3D=3D '' else mapper[file_name][0] + + def find_in_map_file(self, file_name, mapper): + if file_name in mapper: + return mapper[file_name][0] + + def find_subsystem(self, file_name): + s =3D self.find_in_map_file(file_name, self.map_file) + if s is not None: + return s + + s =3D self.find_in_map_file(file_name, self.map_glob_file) + if s is not None: + return s + + s =3D self.find_in_map_dir(file_name, self.map_dir) + if s is not None: + return s + + s =3D self.find_in_map_dir(file_name, self.map_glob_dir) + if s is not None: + return s + + s =3D self.find_in_map_dir(file_name, self.map_unmaintained_dir) + if s is not None: + return s + + self.subsystems.append(file_name) + return file_name + + +def commit(subsystem): + msg =3D subsystem + if msg in remap: + msg =3D remap[msg] + msg +=3D ': ' + message + git_commit(msg) + +mnt =3D Maintainers(maintainers) +res =3D {} +for f in git_changed_files(): + s =3D mnt.find_subsystem(f) + if s in res: + res[s].append(f) + else: + res[s] =3D [f] + +for s in mnt.subsystems: + if s in res: + print(s) + for f in res[s]: + print(' ', f) + +for s in mnt.subsystems: + if s in res: + for f in res[s]: + git_add(f) + commit(s) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813446; cv=none; d=zoho.com; s=zohoarc; b=TcGJAmJCkD/jIEHOwJYhDU/TqxUUkYIoYEde1g4gTG2vnPCNrfprAVr/jtJtJEoC36xZHYjvE8uxxn8MFPJOw0xoIpiCpoi9JteXTTOeCU407SJNeUDGQPtGt7gTcD/Ylrg8BSm739pG5SDseKvGGx4I/6l3e/3z3H3wfTd7WMQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813446; h=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=w037kaWY+7b3Kcmo+Za+94mRm5UzDcVN80qloQ0ZeYc=; b=I3+zyhp8aVBE6cgMRNJ9/ln+BIFAw2jk5wKPafqTy7F/Dxn8JBcZkyiLbq6dm5LHO0LPCQb5NZowHO3RC8g93+gHUoaUDWmlUXKlEImLlGDrehRS+8n8qTc2D80IGYbeaCJTu+NtobrD59S2e0HMx6I6S5dTe/SPsGJpNwAOUf0= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813446003150.31782372550117; Fri, 11 Oct 2019 10:04:06 -0700 (PDT) Received: from localhost ([::1]:54308 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyKi-0007Wj-Hx for importer@patchew.org; Fri, 11 Oct 2019 13:04:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36207) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQp-000641-G9 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQn-0004Ji-Vc for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:19 -0400 Received: from relay.sw.ru ([185.231.240.75]:47908) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQn-00048C-O7 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:17 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQc-0003XG-8s; Fri, 11 Oct 2019 19:06:06 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 027/126] misc: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:13 +0300 Message-Id: <20191011160552.22907-28-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/misc/ivshmem.c | 37 ++++++++++++++++--------------------- hw/misc/tmp105.c | 7 +++---- hw/misc/tmp421.c | 7 +++---- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c index 5e3b05eae0..31292c3f43 100644 --- a/hw/misc/ivshmem.c +++ b/hw/misc/ivshmem.c @@ -474,11 +474,11 @@ static void ivshmem_add_kvm_msi_virq(IVShmemState *s,= int vector, =20 static void setup_interrupt(IVShmemState *s, int vector, Error **errp) { + ERRP_AUTO_PROPAGATE(); EventNotifier *n =3D &s->peers[s->vm_id].eventfds[vector]; bool with_irqfd =3D kvm_msi_via_irqfd_enabled() && ivshmem_has_feature(s, IVSHMEM_MSI); PCIDevice *pdev =3D PCI_DEVICE(s); - Error *err =3D NULL; =20 IVSHMEM_DPRINTF("setting up interrupt for vector: %d\n", vector); =20 @@ -487,9 +487,8 @@ static void setup_interrupt(IVShmemState *s, int vector= , Error **errp) watch_vector_notifier(s, n, vector); } else if (msix_enabled(pdev)) { IVSHMEM_DPRINTF("with irqfd\n"); - ivshmem_add_kvm_msi_virq(s, vector, &err); - if (err) { - error_propagate(errp, err); + ivshmem_add_kvm_msi_virq(s, vector, errp); + if (*errp) { return; } =20 @@ -506,7 +505,7 @@ static void setup_interrupt(IVShmemState *s, int vector= , Error **errp) =20 static void process_msg_shmem(IVShmemState *s, int fd, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); struct stat buf; size_t size; =20 @@ -527,9 +526,8 @@ static void process_msg_shmem(IVShmemState *s, int fd, = Error **errp) =20 /* mmap the region and map into the BAR2 */ memory_region_init_ram_from_fd(&s->server_bar2, OBJECT(s), - "ivshmem.bar2", size, true, fd, &local_= err); - if (local_err) { - error_propagate(errp, local_err); + "ivshmem.bar2", size, true, fd, errp); + if (*errp) { return; } =20 @@ -662,13 +660,12 @@ static int64_t ivshmem_recv_msg(IVShmemState *s, int = *pfd, Error **errp) =20 static void ivshmem_recv_setup(IVShmemState *s, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); int64_t msg; int fd; =20 - msg =3D ivshmem_recv_msg(s, &fd, &err); - if (err) { - error_propagate(errp, err); + msg =3D ivshmem_recv_msg(s, &fd, errp); + if (*errp) { return; } if (msg !=3D IVSHMEM_PROTOCOL_VERSION) { @@ -694,9 +691,8 @@ static void ivshmem_recv_setup(IVShmemState *s, Error *= *errp) * older versions of the device accepted it out of order, but * broke when an interrupt setup message arrived before it. */ - msg =3D ivshmem_recv_msg(s, &fd, &err); - if (err) { - error_propagate(errp, err); + msg =3D ivshmem_recv_msg(s, &fd, errp); + if (*errp) { return; } if (fd !=3D -1 || msg < 0 || msg > IVSHMEM_MAX_PEERS) { @@ -709,14 +705,12 @@ static void ivshmem_recv_setup(IVShmemState *s, Error= **errp) * Receive more messages until we got shared memory. */ do { - msg =3D ivshmem_recv_msg(s, &fd, &err); - if (err) { - error_propagate(errp, err); + msg =3D ivshmem_recv_msg(s, &fd, errp); + if (*errp) { return; } - process_msg(s, msg, fd, &err); - if (err) { - error_propagate(errp, err); + process_msg(s, msg, fd, errp); + if (*errp) { return; } } while (msg !=3D -1); @@ -864,6 +858,7 @@ static void ivshmem_write_config(PCIDevice *pdev, uint3= 2_t address, =20 static void ivshmem_common_realize(PCIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); IVShmemState *s =3D IVSHMEM_COMMON(dev); Error *err =3D NULL; uint8_t *pci_conf; diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c index 75ddad3a12..c603f7024d 100644 --- a/hw/misc/tmp105.c +++ b/hw/misc/tmp105.c @@ -71,13 +71,12 @@ static void tmp105_get_temperature(Object *obj, Visitor= *v, const char *name, static void tmp105_set_temperature(Object *obj, Visitor *v, const char *na= me, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); TMP105State *s =3D TMP105(obj); - Error *local_err =3D NULL; int64_t temp; =20 - visit_type_int(v, name, &temp, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &temp, errp); + if (*errp) { return; } if (temp >=3D 128000 || temp < -128000) { diff --git a/hw/misc/tmp421.c b/hw/misc/tmp421.c index 9f044705fa..20f069513c 100644 --- a/hw/misc/tmp421.c +++ b/hw/misc/tmp421.c @@ -140,16 +140,15 @@ static void tmp421_get_temperature(Object *obj, Visit= or *v, const char *name, static void tmp421_set_temperature(Object *obj, Visitor *v, const char *na= me, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); TMP421State *s =3D TMP421(obj); - Error *local_err =3D NULL; int64_t temp; bool ext_range =3D (s->config[0] & TMP421_CONFIG_RANGE); int offset =3D ext_range * 64 * 256; int tempid; =20 - visit_type_int(v, name, &temp, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &temp, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813486; cv=none; d=zoho.com; s=zohoarc; b=FCzuhdcSAIhFFCld+A0yQez6fXKsLxJF23pZQLDqL8p7lcsiCVA1U4L8eJ6hEaWxvPRwshJ7gtySMUCGPmjTOrzFNwb7SoEQCTtQZTpQjbvP+ynRsu+W9hOGrA0SnLih+4AVC55riQIrfGC7ADfOwWd2zx9KzXwA2pAG355UY94= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813486; h=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=+AipQ/R3IpjlcM4Wrw44mKt3Wh32nV4HUy5xfhEE520=; b=lmvFgOow7elff9pAgmN93fYQrjr3KUQJcY3qZ8rOaavAbCNCEFKXowv/5eh3VjVSEOspnGYZJFfbsjItU2vioyAoJC8w8kGBEyUDTL+EoO3HHs36hZ9Jb8nO5TWDppXtaGQ1VD86GzvwlPVzZ+fuDiEbr7KU+XtWENPl0U8TKEE= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813486522139.85063201239518; Fri, 11 Oct 2019 10:04:46 -0700 (PDT) Received: from localhost ([::1]:54328 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyLN-00009w-35 for importer@patchew.org; Fri, 11 Oct 2019 13:04:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36564) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR0-0006Ny-Mf for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQy-0004aC-9e for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:30 -0400 Received: from relay.sw.ru ([185.231.240.75]:47914) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQx-00048G-SA; Fri, 11 Oct 2019 12:06:28 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQc-0003XG-Hd; Fri, 11 Oct 2019 19:06:06 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 028/126] s390x: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:14 +0300 Message-Id: <20191011160552.22907-29-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Eric Farman , vsementsov@virtuozzo.com, David Hildenbrand , qemu-s390x@nongnu.org, Cornelia Huck , armbru@redhat.com, Greg Kurz , Halil Pasic , Christian Borntraeger , Alex Williamson , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/intc/s390_flic_kvm.c | 9 ++++----- hw/s390x/3270-ccw.c | 13 ++++++------- hw/s390x/css-bridge.c | 7 +++---- hw/s390x/css.c | 7 +++---- hw/s390x/s390-skeys.c | 7 +++---- hw/s390x/s390-virtio-ccw.c | 11 +++++------ hw/s390x/sclp.c | 15 ++++++--------- hw/s390x/tod-kvm.c | 14 ++++++-------- hw/vfio/ccw.c | 24 +++++++++++------------- target/s390x/cpu.c | 26 ++++++++++++-------------- 10 files changed, 59 insertions(+), 74 deletions(-) diff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c index cedccba8a9..5550cecef8 100644 --- a/hw/intc/s390_flic_kvm.c +++ b/hw/intc/s390_flic_kvm.c @@ -578,14 +578,14 @@ typedef struct KVMS390FLICStateClass { =20 static void kvm_s390_flic_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); KVMS390FLICState *flic_state =3D KVM_S390_FLIC(dev); struct kvm_create_device cd =3D {0}; struct kvm_device_attr test_attr =3D {0}; int ret; - Error *errp_local =3D NULL; =20 - KVM_S390_FLIC_GET_CLASS(dev)->parent_realize(dev, &errp_local); - if (errp_local) { + KVM_S390_FLIC_GET_CLASS(dev)->parent_realize(dev, errp); + if (*errp) { goto fail; } flic_state->fd =3D -1; @@ -593,7 +593,7 @@ static void kvm_s390_flic_realize(DeviceState *dev, Err= or **errp) cd.type =3D KVM_DEV_TYPE_FLIC; ret =3D kvm_vm_ioctl(kvm_state, KVM_CREATE_DEVICE, &cd); if (ret < 0) { - error_setg_errno(&errp_local, errno, "Creating the KVM device fail= ed"); + error_setg_errno(errp, errno, "Creating the KVM device failed"); trace_flic_create_device(errno); goto fail; } @@ -605,7 +605,6 @@ static void kvm_s390_flic_realize(DeviceState *dev, Err= or **errp) KVM_HAS_DEVICE_ATTR, test_attr= ); return; fail: - error_propagate(errp, errp_local); } =20 static void kvm_s390_flic_reset(DeviceState *dev) diff --git a/hw/s390x/3270-ccw.c b/hw/s390x/3270-ccw.c index c19a75b9b7..830d7f385e 100644 --- a/hw/s390x/3270-ccw.c +++ b/hw/s390x/3270-ccw.c @@ -95,13 +95,13 @@ static int emulated_ccw_3270_cb(SubchDev *sch, CCW1 ccw) =20 static void emulated_ccw_3270_realize(DeviceState *ds, Error **errp) { + ERRP_AUTO_PROPAGATE(); uint16_t chpid; EmulatedCcw3270Device *dev =3D EMULATED_CCW_3270(ds); EmulatedCcw3270Class *ck =3D EMULATED_CCW_3270_GET_CLASS(dev); CcwDevice *cdev =3D CCW_DEVICE(ds); CCWDeviceClass *cdk =3D CCW_DEVICE_GET_CLASS(cdev); SubchDev *sch; - Error *err =3D NULL; =20 sch =3D css_create_sch(cdev->devno, errp); if (!sch) { @@ -117,7 +117,7 @@ static void emulated_ccw_3270_realize(DeviceState *ds, = Error **errp) chpid =3D css_find_free_chpid(sch->cssid); =20 if (chpid > MAX_CHPID) { - error_setg(&err, "No available chpid to use."); + error_setg(errp, "No available chpid to use."); goto out_err; } =20 @@ -128,20 +128,19 @@ static void emulated_ccw_3270_realize(DeviceState *ds= , Error **errp) sch->do_subchannel_work =3D do_subchannel_work_virtual; sch->ccw_cb =3D emulated_ccw_3270_cb; =20 - ck->init(dev, &err); - if (err) { + ck->init(dev, errp); + if (*errp) { goto out_err; } =20 - cdk->realize(cdev, &err); - if (err) { + cdk->realize(cdev, errp); + if (*errp) { goto out_err; } =20 return; =20 out_err: - error_propagate(errp, err); css_subch_assign(sch->cssid, sch->ssid, sch->schid, sch->devno, NULL); cdev->sch =3D NULL; g_free(sch); diff --git a/hw/s390x/css-bridge.c b/hw/s390x/css-bridge.c index 15a8ed96de..93dca01b0f 100644 --- a/hw/s390x/css-bridge.c +++ b/hw/s390x/css-bridge.c @@ -30,15 +30,14 @@ static void ccw_device_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CcwDevice *ccw_dev =3D CCW_DEVICE(dev); CCWDeviceClass *k =3D CCW_DEVICE_GET_CLASS(ccw_dev); SubchDev *sch =3D ccw_dev->sch; - Error *err =3D NULL; =20 if (k->unplug) { - k->unplug(hotplug_dev, dev, &err); - if (err) { - error_propagate(errp, err); + k->unplug(hotplug_dev, dev, errp); + if (*errp) { return; } } diff --git a/hw/s390x/css.c b/hw/s390x/css.c index 844caab408..e911d2fbd2 100644 --- a/hw/s390x/css.c +++ b/hw/s390x/css.c @@ -2351,10 +2351,10 @@ static void get_css_devid(Object *obj, Visitor *v, = const char *name, static void set_css_devid(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; CssDevId *dev_id =3D qdev_get_prop_ptr(dev, prop); - Error *local_err =3D NULL; char *str; int num, n1, n2; unsigned int cssid, ssid, devid; @@ -2364,9 +2364,8 @@ static void set_css_devid(Object *obj, Visitor *v, co= nst char *name, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } =20 diff --git a/hw/s390x/s390-skeys.c b/hw/s390x/s390-skeys.c index bd37f39120..f176db09c9 100644 --- a/hw/s390x/s390-skeys.c +++ b/hw/s390x/s390-skeys.c @@ -107,11 +107,11 @@ void hmp_dump_skeys(Monitor *mon, const QDict *qdict) =20 void qmp_dump_skeys(const char *filename, Error **errp) { + ERRP_AUTO_PROPAGATE(); S390SKeysState *ss =3D s390_get_skeys_device(); S390SKeysClass *skeyclass =3D S390_SKEYS_GET_CLASS(ss); const uint64_t total_count =3D ram_size / TARGET_PAGE_SIZE; uint64_t handled_count =3D 0, cur_count; - Error *lerr =3D NULL; vaddr cur_gfn =3D 0; uint8_t *buf; int ret; @@ -155,8 +155,8 @@ void qmp_dump_skeys(const char *filename, Error **errp) } =20 /* write keys to stream */ - write_keys(f, buf, cur_gfn, cur_count, &lerr); - if (lerr) { + write_keys(f, buf, cur_gfn, cur_count, errp); + if (*errp) { goto out_free; } =20 @@ -165,7 +165,6 @@ void qmp_dump_skeys(const char *filename, Error **errp) } =20 out_free: - error_propagate(errp, lerr); g_free(buf); out: fclose(f); diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 18ad279a00..3c5e4c9804 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -61,19 +61,18 @@ S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) static S390CPU *s390x_new_cpu(const char *typename, uint32_t core_id, Error **errp) { + ERRP_AUTO_PROPAGATE(); S390CPU *cpu =3D S390_CPU(object_new(typename)); - Error *err =3D NULL; =20 - object_property_set_int(OBJECT(cpu), core_id, "core-id", &err); - if (err !=3D NULL) { + object_property_set_int(OBJECT(cpu), core_id, "core-id", errp); + if (*errp) { goto out; } - object_property_set_bool(OBJECT(cpu), true, "realized", &err); + object_property_set_bool(OBJECT(cpu), true, "realized", errp); =20 out: object_unref(OBJECT(cpu)); - if (err) { - error_propagate(errp, err); + if (*errp) { cpu =3D NULL; } return cpu; diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c index f57ce7b739..4cacd7b3a8 100644 --- a/hw/s390x/sclp.c +++ b/hw/s390x/sclp.c @@ -300,16 +300,16 @@ void s390_sclp_init(void) =20 static void sclp_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *machine =3D MACHINE(qdev_get_machine()); SCLPDevice *sclp =3D SCLP(dev); - Error *err =3D NULL; uint64_t hw_limit; int ret; =20 object_property_set_bool(OBJECT(sclp->event_facility), true, "realized= ", - &err); - if (err) { - goto out; + errp); + if (*errp) { + return; } /* * qdev_device_add searches the sysbus for TYPE_SCLP_EVENTS_BUS. As lo= ng @@ -320,14 +320,11 @@ static void sclp_realize(DeviceState *dev, Error **er= rp) =20 ret =3D s390_set_memory_limit(machine->maxram_size, &hw_limit); if (ret =3D=3D -E2BIG) { - error_setg(&err, "host supports a maximum of %" PRIu64 " GB", + error_setg(errp, "host supports a maximum of %" PRIu64 " GB", hw_limit / GiB); } else if (ret) { - error_setg(&err, "setting the guest size failed"); + error_setg(errp, "setting the guest size failed"); } - -out: - error_propagate(errp, err); } =20 static void sclp_memory_init(SCLPDevice *sclp) diff --git a/hw/s390x/tod-kvm.c b/hw/s390x/tod-kvm.c index 6e21d83181..f59d07b375 100644 --- a/hw/s390x/tod-kvm.c +++ b/hw/s390x/tod-kvm.c @@ -55,7 +55,7 @@ static void kvm_s390_set_tod_raw(const S390TOD *tod, Erro= r **errp) =20 static void kvm_s390_tod_set(S390TODState *td, const S390TOD *tod, Error *= *errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 /* * Somebody (e.g. migration) set the TOD. We'll store it into KVM to @@ -64,9 +64,8 @@ static void kvm_s390_tod_set(S390TODState *td, const S390= TOD *tod, Error **errp) * is the point where we want to stop the initially running TOD to fire * it back up when actually starting the migrated guest. */ - kvm_s390_set_tod_raw(tod, &local_err); - if (local_err) { - error_propagate(errp, local_err); + kvm_s390_set_tod_raw(tod, errp); + if (*errp) { return; } =20 @@ -106,13 +105,12 @@ static void kvm_s390_tod_vm_state_change(void *opaque= , int running, =20 static void kvm_s390_tod_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); S390TODState *td =3D S390_TOD(dev); S390TODClass *tdc =3D S390_TOD_GET_CLASS(td); - Error *local_err =3D NULL; =20 - tdc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + tdc->parent_realize(dev, errp); + if (*errp) { return; } =20 diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c index 6863f6c69f..057c2e4f09 100644 --- a/hw/vfio/ccw.c +++ b/hw/vfio/ccw.c @@ -476,38 +476,38 @@ static VFIOGroup *vfio_ccw_get_group(S390CCWDevice *c= dev, Error **errp) =20 static void vfio_ccw_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VFIOGroup *group; CcwDevice *ccw_dev =3D DO_UPCAST(CcwDevice, parent_obj, dev); S390CCWDevice *cdev =3D DO_UPCAST(S390CCWDevice, parent_obj, ccw_dev); VFIOCCWDevice *vcdev =3D DO_UPCAST(VFIOCCWDevice, cdev, cdev); S390CCWDeviceClass *cdc =3D S390_CCW_DEVICE_GET_CLASS(cdev); - Error *err =3D NULL; =20 /* Call the class init function for subchannel. */ if (cdc->realize) { - cdc->realize(cdev, vcdev->vdev.sysfsdev, &err); - if (err) { - goto out_err_propagate; + cdc->realize(cdev, vcdev->vdev.sysfsdev, errp); + if (*errp) { + return; } } =20 - group =3D vfio_ccw_get_group(cdev, &err); + group =3D vfio_ccw_get_group(cdev, errp); if (!group) { goto out_group_err; } =20 - vfio_ccw_get_device(group, vcdev, &err); - if (err) { + vfio_ccw_get_device(group, vcdev, errp); + if (*errp) { goto out_device_err; } =20 - vfio_ccw_get_region(vcdev, &err); - if (err) { + vfio_ccw_get_region(vcdev, errp); + if (*errp) { goto out_region_err; } =20 - vfio_ccw_register_io_notifier(vcdev, &err); - if (err) { + vfio_ccw_register_io_notifier(vcdev, errp); + if (*errp) { goto out_notifier_err; } =20 @@ -523,8 +523,6 @@ out_group_err: if (cdc->unrealize) { cdc->unrealize(cdev, NULL); } -out_err_propagate: - error_propagate(errp, err); } =20 static void vfio_ccw_unrealize(DeviceState *dev, Error **errp) diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index 3abe7e80fd..5569b48934 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -184,42 +184,42 @@ static void s390_cpu_disas_set_info(CPUState *cpu, di= sassemble_info *info) =20 static void s390_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); S390CPUClass *scc =3D S390_CPU_GET_CLASS(dev); #if !defined(CONFIG_USER_ONLY) S390CPU *cpu =3D S390_CPU(dev); #endif - Error *err =3D NULL; =20 /* the model has to be realized before qemu_init_vcpu() due to kvm */ - s390_realize_cpu_model(cs, &err); - if (err) { - goto out; + s390_realize_cpu_model(cs, errp); + if (*errp) { + return; } =20 #if !defined(CONFIG_USER_ONLY) MachineState *ms =3D MACHINE(qdev_get_machine()); unsigned int max_cpus =3D ms->smp.max_cpus; if (cpu->env.core_id >=3D max_cpus) { - error_setg(&err, "Unable to add CPU with core-id: %" PRIu32 + error_setg(errp, "Unable to add CPU with core-id: %" PRIu32 ", maximum core-id: %d", cpu->env.core_id, max_cpus - 1); - goto out; + return; } =20 if (cpu_exists(cpu->env.core_id)) { - error_setg(&err, "Unable to add CPU with core-id: %" PRIu32 + error_setg(errp, "Unable to add CPU with core-id: %" PRIu32 ", it already exists", cpu->env.core_id); - goto out; + return; } =20 /* sync cs->cpu_index and env->core_id. The latter is needed for TCG. = */ cs->cpu_index =3D cpu->env.core_id; #endif =20 - cpu_exec_realizefn(cs, &err); - if (err !=3D NULL) { - goto out; + cpu_exec_realizefn(cs, errp); + if (*errp) { + return; } =20 #if !defined(CONFIG_USER_ONLY) @@ -240,9 +240,7 @@ static void s390_cpu_realizefn(DeviceState *dev, Error = **errp) cpu_reset(cs); } =20 - scc->parent_realize(dev, &err); -out: - error_propagate(errp, err); + scc->parent_realize(dev, errp); } =20 static GuestPanicInformation *s390_cpu_get_crash_info(CPUState *cs) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570816273; cv=none; d=zoho.com; s=zohoarc; b=EXKiD8VMZliVr9sZ/jV3fAN9bkGPkh40KBTPZI++01qdX6iPD2iGWz75PtBu2okRwZG7vB/MVoj4YvthC2xNlOGXwhYDY01UtMt/ZLda/exNNPuaya4R4REEl6tMe/C6z/9tmlXnkgcpvG71kTGq0wOunylMm/oGhn5ptylSk0M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570816273; h=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=IabvAUOqw3BdiPHFs2uPlTlYFfFtj4cShm+gUPjJrb4=; b=Xw8E3ICoChfgF3YrtTj0O502eBuSs9nKiqyKM5eyWCJ9OOCAaFomu8uogj6iUq34jd+XOyrxAJhzAaa8xVjO7uZ9U5GDywnXwrvwDcfuhPItgc0wNNXavL5oRC7ZRFPL5qkr3EPvDRmZwJh+RKTRXf+E9XMliPGzy7utTxP3Arc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570816273345685.4950758035164; Fri, 11 Oct 2019 10:51:13 -0700 (PDT) Received: from localhost ([::1]:54932 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIz4J-00006X-TY for importer@patchew.org; Fri, 11 Oct 2019 13:51:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37469) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRT-0007Ey-Hu for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:07:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRM-0004zM-Da for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:59 -0400 Received: from relay.sw.ru ([185.231.240.75]:47994) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRL-0004BR-NW; Fri, 11 Oct 2019 12:06:52 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQc-0003XG-VH; Fri, 11 Oct 2019 19:06:07 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 029/126] tcg: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:15 +0300 Message-Id: <20191011160552.22907-30-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Peter Maydell , Sagar Karandikar , "Michael S. Tsirkin" , Anthony Green , Palmer Dabbelt , Mark Cave-Ayland , Max Filippov , Alistair Francis , "Edgar E. Iglesias" , Guan Xuetao , Marek Vasut , Aleksandar Rikalo , armbru@redhat.com, David Gibson , Artyom Tarasenko , Eduardo Habkost , Greg Kurz , Eric Auger , qemu-arm@nongnu.org, Stafford Horne , Richard Henderson , Kevin Wolf , vsementsov@virtuozzo.com, qemu-riscv@nongnu.org, Bastian Koppelmann , Chris Wulff , Laurent Vivier , Michael Walle , qemu-ppc@nongnu.org, Aleksandar Markovic , Paolo Bonzini , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- exec.c | 21 +++--- hw/arm/armv7m.c | 52 ++++++-------- hw/arm/smmu-common.c | 7 +- hw/arm/smmuv3.c | 7 +- hw/cpu/a15mpcore.c | 7 +- hw/cpu/a9mpcore.c | 27 +++---- hw/cpu/arm11mpcore.c | 22 +++--- hw/i386/pc.c | 120 +++++++++++++------------------- hw/intc/nios2_iic.c | 6 +- hw/mips/cps.c | 46 ++++++------ hw/riscv/riscv_hart.c | 7 +- hw/riscv/sifive_e.c | 7 +- hw/riscv/sifive_u.c | 11 ++- hw/sd/milkymist-memcard.c | 11 +-- target/alpha/cpu.c | 7 +- target/arm/cpu.c | 7 +- target/arm/cpu64.c | 11 ++- target/cris/cpu.c | 7 +- target/hppa/cpu.c | 7 +- target/i386/cpu.c | 117 ++++++++++++++----------------- target/lm32/cpu.c | 7 +- target/m68k/cpu.c | 7 +- target/microblaze/cpu.c | 7 +- target/mips/cpu.c | 7 +- target/moxie/cpu.c | 7 +- target/nios2/cpu.c | 7 +- target/openrisc/cpu.c | 7 +- target/ppc/compat.c | 20 +++--- target/ppc/translate_init.inc.c | 26 +++---- target/riscv/cpu.c | 7 +- target/sh4/cpu.c | 7 +- target/sparc/cpu.c | 14 ++-- target/tricore/cpu.c | 7 +- target/unicore32/cpu.c | 7 +- target/xtensa/cpu.c | 7 +- 35 files changed, 280 insertions(+), 371 deletions(-) diff --git a/exec.c b/exec.c index bdcfcdff3f..2dc17769f7 100644 --- a/exec.c +++ b/exec.c @@ -2239,10 +2239,10 @@ static void dirty_memory_extend(ram_addr_t old_ram_= size, =20 static void ram_block_add(RAMBlock *new_block, Error **errp, bool shared) { + ERRP_AUTO_PROPAGATE(); RAMBlock *block; RAMBlock *last_block =3D NULL; ram_addr_t old_ram_size, new_ram_size; - Error *err =3D NULL; =20 old_ram_size =3D last_ram_page(); =20 @@ -2252,9 +2252,8 @@ static void ram_block_add(RAMBlock *new_block, Error = **errp, bool shared) if (!new_block->host) { if (xen_enabled()) { xen_ram_alloc(new_block->offset, new_block->max_length, - new_block->mr, &err); - if (err) { - error_propagate(errp, err); + new_block->mr, errp); + if (*errp) { qemu_mutex_unlock_ramlist(); return; } @@ -2319,8 +2318,8 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, Mem= oryRegion *mr, uint32_t ram_flags, int fd, Error **errp) { + ERRP_AUTO_PROPAGATE(); RAMBlock *new_block; - Error *local_err =3D NULL; int64_t file_size; =20 /* Just support these ram flags by now. */ @@ -2368,10 +2367,9 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, Me= moryRegion *mr, return NULL; } =20 - ram_block_add(new_block, &local_err, ram_flags & RAM_SHARED); - if (local_err) { + ram_block_add(new_block, errp, ram_flags & RAM_SHARED); + if (*errp) { g_free(new_block); - error_propagate(errp, local_err); return NULL; } return new_block; @@ -2413,8 +2411,8 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, ra= m_addr_t max_size, void *host, bool resizeable, bool share, MemoryRegion *mr, Error **errp) { + ERRP_AUTO_PROPAGATE(); RAMBlock *new_block; - Error *local_err =3D NULL; =20 size =3D HOST_PAGE_ALIGN(size); max_size =3D HOST_PAGE_ALIGN(max_size); @@ -2433,10 +2431,9 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, r= am_addr_t max_size, if (resizeable) { new_block->flags |=3D RAM_RESIZEABLE; } - ram_block_add(new_block, &local_err, share); - if (local_err) { + ram_block_add(new_block, errp, share); + if (*errp) { g_free(new_block); - error_propagate(errp, local_err); return NULL; } return new_block; diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c index 7a3c48f002..1a738789de 100644 --- a/hw/arm/armv7m.c +++ b/hw/arm/armv7m.c @@ -148,9 +148,9 @@ static void armv7m_instance_init(Object *obj) =20 static void armv7m_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); ARMv7MState *s =3D ARMV7M(dev); SysBusDevice *sbd; - Error *err =3D NULL; int i; =20 if (!s->board_memory) { @@ -161,50 +161,44 @@ static void armv7m_realize(DeviceState *dev, Error **= errp) memory_region_add_subregion_overlap(&s->container, 0, s->board_memory,= -1); =20 s->cpu =3D ARM_CPU(object_new_with_props(s->cpu_type, OBJECT(s), "cpu", - &err, NULL)); - if (err !=3D NULL) { - error_propagate(errp, err); + errp, NULL)); + if (*errp) { return; } =20 object_property_set_link(OBJECT(s->cpu), OBJECT(&s->container), "memor= y", &error_abort); if (object_property_find(OBJECT(s->cpu), "idau", NULL)) { - object_property_set_link(OBJECT(s->cpu), s->idau, "idau", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_link(OBJECT(s->cpu), s->idau, "idau", errp); + if (*errp) { return; } } if (object_property_find(OBJECT(s->cpu), "init-svtor", NULL)) { object_property_set_uint(OBJECT(s->cpu), s->init_svtor, - "init-svtor", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "init-svtor", errp); + if (*errp) { return; } } if (object_property_find(OBJECT(s->cpu), "start-powered-off", NULL)) { object_property_set_bool(OBJECT(s->cpu), s->start_powered_off, - "start-powered-off", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "start-powered-off", errp); + if (*errp) { return; } } if (object_property_find(OBJECT(s->cpu), "vfp", NULL)) { object_property_set_bool(OBJECT(s->cpu), s->vfp, - "vfp", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "vfp", errp); + if (*errp) { return; } } if (object_property_find(OBJECT(s->cpu), "dsp", NULL)) { object_property_set_bool(OBJECT(s->cpu), s->dsp, - "dsp", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "dsp", errp); + if (*errp) { return; } } @@ -216,16 +210,14 @@ static void armv7m_realize(DeviceState *dev, Error **= errp) s->cpu->env.nvic =3D &s->nvic; s->nvic.cpu =3D s->cpu; =20 - object_property_set_bool(OBJECT(s->cpu), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(s->cpu), true, "realized", errp); + if (*errp) { return; } =20 /* Note that we must realize the NVIC after the CPU */ - object_property_set_bool(OBJECT(&s->nvic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->nvic), true, "realized", errp); + if (*errp) { return; } =20 @@ -250,16 +242,14 @@ static void armv7m_realize(DeviceState *dev, Error **= errp) Object *obj =3D OBJECT(&s->bitband[i]); SysBusDevice *sbd =3D SYS_BUS_DEVICE(&s->bitband[i]); =20 - object_property_set_int(obj, bitband_input_addr[i], "base", &e= rr); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_int(obj, bitband_input_addr[i], "base", er= rp); + if (*errp) { return; } object_property_set_link(obj, OBJECT(s->board_memory), "source-memory", &error_abort); - object_property_set_bool(obj, true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(obj, true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/arm/smmu-common.c b/hw/arm/smmu-common.c index 245817d23e..b89d72db08 100644 --- a/hw/arm/smmu-common.c +++ b/hw/arm/smmu-common.c @@ -421,13 +421,12 @@ void smmu_inv_notifiers_all(SMMUState *s) =20 static void smmu_base_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SMMUState *s =3D ARM_SMMU(dev); SMMUBaseClass *sbc =3D ARM_SMMU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - sbc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + sbc->parent_realize(dev, errp); + if (*errp) { return; } s->configs =3D g_hash_table_new_full(NULL, NULL, NULL, g_free); diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index e2fbb8357e..d6ffd3a665 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1385,15 +1385,14 @@ static void smmu_reset(DeviceState *dev) =20 static void smmu_realize(DeviceState *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); SMMUState *sys =3D ARM_SMMU(d); SMMUv3State *s =3D ARM_SMMUV3(sys); SMMUv3Class *c =3D ARM_SMMUV3_GET_CLASS(s); SysBusDevice *dev =3D SYS_BUS_DEVICE(d); - Error *local_err =3D NULL; =20 - c->parent_realize(d, &local_err); - if (local_err) { - error_propagate(errp, local_err); + c->parent_realize(d, errp); + if (*errp) { return; } =20 diff --git a/hw/cpu/a15mpcore.c b/hw/cpu/a15mpcore.c index 7e9983aa19..d010be7476 100644 --- a/hw/cpu/a15mpcore.c +++ b/hw/cpu/a15mpcore.c @@ -49,12 +49,12 @@ static void a15mp_priv_initfn(Object *obj) =20 static void a15mp_priv_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); A15MPPrivState *s =3D A15MPCORE_PRIV(dev); DeviceState *gicdev; SysBusDevice *busdev; int i; - Error *err =3D NULL; bool has_el3; bool has_el2 =3D false; Object *cpuobj; @@ -77,9 +77,8 @@ static void a15mp_priv_realize(DeviceState *dev, Error **= errp) qdev_prop_set_bit(gicdev, "has-virtualization-extensions", has_el2= ); } =20 - object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gic), true, "realized", errp); + if (*errp) { return; } busdev =3D SYS_BUS_DEVICE(&s->gic); diff --git a/hw/cpu/a9mpcore.c b/hw/cpu/a9mpcore.c index 6872a3a00a..9a66401cdd 100644 --- a/hw/cpu/a9mpcore.c +++ b/hw/cpu/a9mpcore.c @@ -46,21 +46,20 @@ static void a9mp_priv_initfn(Object *obj) =20 static void a9mp_priv_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); A9MPPrivState *s =3D A9MPCORE_PRIV(dev); DeviceState *scudev, *gicdev, *gtimerdev, *mptimerdev, *wdtdev; SysBusDevice *scubusdev, *gicbusdev, *gtimerbusdev, *mptimerbusdev, *wdtbusdev; - Error *err =3D NULL; int i; bool has_el3; Object *cpuobj; =20 scudev =3D DEVICE(&s->scu); qdev_prop_set_uint32(scudev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->scu), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->scu), true, "realized", errp); + if (*errp) { return; } scubusdev =3D SYS_BUS_DEVICE(&s->scu); @@ -77,9 +76,8 @@ static void a9mp_priv_realize(DeviceState *dev, Error **e= rrp) object_property_get_bool(cpuobj, "has_el3", &error_abort); qdev_prop_set_bit(gicdev, "has-security-extensions", has_el3); =20 - object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gic), true, "realized", errp); + if (*errp) { return; } gicbusdev =3D SYS_BUS_DEVICE(&s->gic); @@ -92,27 +90,24 @@ static void a9mp_priv_realize(DeviceState *dev, Error *= *errp) =20 gtimerdev =3D DEVICE(&s->gtimer); qdev_prop_set_uint32(gtimerdev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->gtimer), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gtimer), true, "realized", errp); + if (*errp) { return; } gtimerbusdev =3D SYS_BUS_DEVICE(&s->gtimer); =20 mptimerdev =3D DEVICE(&s->mptimer); qdev_prop_set_uint32(mptimerdev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->mptimer), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->mptimer), true, "realized", errp); + if (*errp) { return; } mptimerbusdev =3D SYS_BUS_DEVICE(&s->mptimer); =20 wdtdev =3D DEVICE(&s->wdt); qdev_prop_set_uint32(wdtdev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->wdt), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->wdt), true, "realized", errp); + if (*errp) { return; } wdtbusdev =3D SYS_BUS_DEVICE(&s->wdt); diff --git a/hw/cpu/arm11mpcore.c b/hw/cpu/arm11mpcore.c index e78f5d080c..21c2fa6289 100644 --- a/hw/cpu/arm11mpcore.c +++ b/hw/cpu/arm11mpcore.c @@ -69,26 +69,24 @@ static void mpcore_priv_map_setup(ARM11MPCorePriveState= *s) =20 static void mpcore_priv_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); ARM11MPCorePriveState *s =3D ARM11MPCORE_PRIV(dev); DeviceState *scudev =3D DEVICE(&s->scu); DeviceState *gicdev =3D DEVICE(&s->gic); DeviceState *mptimerdev =3D DEVICE(&s->mptimer); DeviceState *wdtimerdev =3D DEVICE(&s->wdtimer); - Error *err =3D NULL; =20 qdev_prop_set_uint32(scudev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->scu), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->scu), true, "realized", errp); + if (*errp) { return; } =20 qdev_prop_set_uint32(gicdev, "num-cpu", s->num_cpu); qdev_prop_set_uint32(gicdev, "num-irq", s->num_irq); - object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gic), true, "realized", errp); + if (*errp) { return; } =20 @@ -99,16 +97,14 @@ static void mpcore_priv_realize(DeviceState *dev, Error= **errp) qdev_init_gpio_in(dev, mpcore_priv_set_irq, s->num_irq - 32); =20 qdev_prop_set_uint32(mptimerdev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->mptimer), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->mptimer), true, "realized", errp); + if (*errp) { return; } =20 qdev_prop_set_uint32(wdtimerdev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->wdtimer), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->wdtimer), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/i386/pc.c b/hw/i386/pc.c index bcda50efcc..bd94cff454 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1376,8 +1376,8 @@ void pc_acpi_smi_interrupt(void *opaque, int irq, int= level) =20 static void pc_new_cpu(PCMachineState *pcms, int64_t apic_id, Error **errp) { + ERRP_AUTO_PROPAGATE(); Object *cpu =3D NULL; - Error *local_err =3D NULL; CPUX86State *env =3D NULL; =20 cpu =3D object_new(MACHINE(pcms)->cpu_type); @@ -1385,11 +1385,10 @@ static void pc_new_cpu(PCMachineState *pcms, int64_= t apic_id, Error **errp) env =3D &X86_CPU(cpu)->env; env->nr_dies =3D pcms->smp_dies; =20 - object_property_set_uint(cpu, apic_id, "apic-id", &local_err); - object_property_set_bool(cpu, true, "realized", &local_err); + object_property_set_uint(cpu, apic_id, "apic-id", errp); + object_property_set_bool(cpu, true, "realized", errp); =20 object_unref(cpu); - error_propagate(errp, local_err); } =20 /* @@ -1474,9 +1473,9 @@ void pc_smp_parse(MachineState *ms, QemuOpts *opts) =20 void pc_hot_add_cpu(MachineState *ms, const int64_t id, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCMachineState *pcms =3D PC_MACHINE(ms); int64_t apic_id =3D x86_cpu_apic_id_from_index(pcms, id); - Error *local_err =3D NULL; =20 if (id < 0) { error_setg(errp, "Invalid CPU id: %" PRIi64, id); @@ -1490,9 +1489,8 @@ void pc_hot_add_cpu(MachineState *ms, const int64_t i= d, Error **errp) return; } =20 - pc_new_cpu(PC_MACHINE(ms), apic_id, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pc_new_cpu(PC_MACHINE(ms), apic_id, errp); + if (*errp) { return; } } @@ -1990,12 +1988,12 @@ void ioapic_init_gsi(GSIState *gsi_state, const cha= r *parent_name) static void pc_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *d= ev, Error **errp) { + ERRP_AUTO_PROPAGATE(); const PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); const PCMachineClass *pcmc =3D PC_MACHINE_GET_CLASS(pcms); const MachineState *ms =3D MACHINE(hotplug_dev); const bool is_nvdimm =3D object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM); const uint64_t legacy_align =3D TARGET_PAGE_SIZE; - Error *local_err =3D NULL; =20 /* * When -no-acpi is used with Q35 machine type, no ACPI is built, @@ -2013,9 +2011,8 @@ static void pc_memory_pre_plug(HotplugHandler *hotplu= g_dev, DeviceState *dev, return; } =20 - hotplug_handler_pre_plug(pcms->acpi_dev, dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + hotplug_handler_pre_plug(pcms->acpi_dev, dev, errp); + if (*errp) { return; } =20 @@ -2026,14 +2023,14 @@ static void pc_memory_pre_plug(HotplugHandler *hotp= lug_dev, DeviceState *dev, static void pc_memory_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); MachineState *ms =3D MACHINE(hotplug_dev); bool is_nvdimm =3D object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM); =20 - pc_dimm_plug(PC_DIMM(dev), MACHINE(pcms), &local_err); - if (local_err) { - goto out; + pc_dimm_plug(PC_DIMM(dev), MACHINE(pcms), errp); + if (*errp) { + return; } =20 if (is_nvdimm) { @@ -2041,14 +2038,12 @@ static void pc_memory_plug(HotplugHandler *hotplug_= dev, } =20 hotplug_handler_plug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &error_abor= t); -out: - error_propagate(errp, local_err); } =20 static void pc_memory_unplug_request(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); =20 /* @@ -2057,38 +2052,34 @@ static void pc_memory_unplug_request(HotplugHandler= *hotplug_dev, * addition to cover this case. */ if (!pcms->acpi_dev || !acpi_enabled) { - error_setg(&local_err, + error_setg(errp, "memory hotplug is not enabled: missing acpi device or = acpi disabled"); - goto out; + return; } =20 if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) { - error_setg(&local_err, + error_setg(errp, "nvdimm device hot unplug is not supported yet."); - goto out; + return; } =20 hotplug_handler_unplug_request(HOTPLUG_HANDLER(pcms->acpi_dev), dev, - &local_err); -out: - error_propagate(errp, local_err); + errp); } =20 static void pc_memory_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); - Error *local_err =3D NULL; =20 - hotplug_handler_unplug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &local_er= r); - if (local_err) { - goto out; + hotplug_handler_unplug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, errp); + if (*errp) { + return; } =20 pc_dimm_unplug(PC_DIMM(dev), MACHINE(pcms)); object_property_set_bool(OBJECT(dev), false, "realized", NULL); - out: - error_propagate(errp, local_err); } =20 static int pc_apic_cmp(const void *a, const void *b) @@ -2120,15 +2111,15 @@ static CPUArchId *pc_find_cpu_slot(MachineState *ms= , uint32_t id, int *idx) static void pc_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUArchId *found_cpu; - Error *local_err =3D NULL; X86CPU *cpu =3D X86_CPU(dev); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); =20 if (pcms->acpi_dev) { - hotplug_handler_plug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &local_= err); - if (local_err) { - goto out; + hotplug_handler_plug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, errp); + if (*errp) { + return; } } =20 @@ -2143,51 +2134,46 @@ static void pc_cpu_plug(HotplugHandler *hotplug_dev, =20 found_cpu =3D pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, NULL); found_cpu->cpu =3D OBJECT(dev); -out: - error_propagate(errp, local_err); } static void pc_cpu_unplug_request_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); int idx =3D -1; - Error *local_err =3D NULL; X86CPU *cpu =3D X86_CPU(dev); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); =20 if (!pcms->acpi_dev) { - error_setg(&local_err, "CPU hot unplug not supported without ACPI"= ); - goto out; + error_setg(errp, "CPU hot unplug not supported without ACPI"); + return; } =20 pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, &idx); assert(idx !=3D -1); if (idx =3D=3D 0) { - error_setg(&local_err, "Boot CPU is unpluggable"); - goto out; + error_setg(errp, "Boot CPU is unpluggable"); + return; } =20 hotplug_handler_unplug_request(HOTPLUG_HANDLER(pcms->acpi_dev), dev, - &local_err); - if (local_err) { - goto out; + errp); + if (*errp) { + return; } =20 - out: - error_propagate(errp, local_err); - } =20 static void pc_cpu_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUArchId *found_cpu; - Error *local_err =3D NULL; X86CPU *cpu =3D X86_CPU(dev); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); =20 - hotplug_handler_unplug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &local_er= r); - if (local_err) { - goto out; + hotplug_handler_unplug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, errp); + if (*errp) { + return; } =20 found_cpu =3D pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, NULL); @@ -2199,8 +2185,6 @@ static void pc_cpu_unplug_cb(HotplugHandler *hotplug_= dev, /* Update the number of CPUs in CMOS */ rtc_set_cpus_count(pcms->rtc, pcms->boot_cpus); fw_cfg_modify_i16(pcms->fw_cfg, FW_CFG_NB_CPUS, pcms->boot_cpus); - out: - error_propagate(errp, local_err); } =20 static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev, @@ -2353,8 +2337,8 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_d= ev, static void pc_virtio_pmem_pci_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); HotplugHandler *hotplug_dev2 =3D qdev_get_bus_hotplug_handler(dev); - Error *local_err =3D NULL; =20 if (!hotplug_dev2) { /* @@ -2370,18 +2354,17 @@ static void pc_virtio_pmem_pci_pre_plug(HotplugHand= ler *hotplug_dev, * succeeds, branch of to the actual hotplug handler. */ memory_device_pre_plug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev), NULL, - &local_err); - if (!local_err) { - hotplug_handler_pre_plug(hotplug_dev2, dev, &local_err); + errp); + if (!*errp) { + hotplug_handler_pre_plug(hotplug_dev2, dev, errp); } - error_propagate(errp, local_err); } =20 static void pc_virtio_pmem_pci_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); HotplugHandler *hotplug_dev2 =3D qdev_get_bus_hotplug_handler(dev); - Error *local_err =3D NULL; =20 /* * Plug the memory device first and then branch off to the actual @@ -2389,11 +2372,10 @@ static void pc_virtio_pmem_pci_plug(HotplugHandler = *hotplug_dev, * device bits. */ memory_device_plug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev)); - hotplug_handler_plug(hotplug_dev2, dev, &local_err); - if (local_err) { + hotplug_handler_plug(hotplug_dev2, dev, errp); + if (*errp) { memory_device_unplug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev)); } - error_propagate(errp, local_err); } =20 static void pc_virtio_pmem_pci_unplug_request(HotplugHandler *hotplug_dev, @@ -2504,20 +2486,18 @@ static void pc_machine_set_max_ram_below_4g(Object = *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCMachineState *pcms =3D PC_MACHINE(obj); - Error *error =3D NULL; uint64_t value; =20 - visit_type_size(v, name, &value, &error); - if (error) { - error_propagate(errp, error); + visit_type_size(v, name, &value, errp); + if (*errp) { return; } if (value > 4 * GiB) { - error_setg(&error, + error_setg(errp, "Machine option 'max-ram-below-4g=3D%"PRIu64 "' expects size less than or equal to 4G", value); - error_propagate(errp, error); return; } =20 diff --git a/hw/intc/nios2_iic.c b/hw/intc/nios2_iic.c index 3a5d86c2a4..a291536bbe 100644 --- a/hw/intc/nios2_iic.c +++ b/hw/intc/nios2_iic.c @@ -65,13 +65,13 @@ static void altera_iic_init(Object *obj) =20 static void altera_iic_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct AlteraIIC *pv =3D ALTERA_IIC(dev); - Error *err =3D NULL; =20 - pv->cpu =3D object_property_get_link(OBJECT(dev), "cpu", &err); + pv->cpu =3D object_property_get_link(OBJECT(dev), "cpu", errp); if (!pv->cpu) { error_setg(errp, "altera,iic: CPU link not found: %s", - error_get_pretty(err)); + error_get_pretty(*errp)); return; } } diff --git a/hw/mips/cps.c b/hw/mips/cps.c index 1660f86908..0ea7959193 100644 --- a/hw/mips/cps.c +++ b/hw/mips/cps.c @@ -67,11 +67,11 @@ static bool cpu_mips_itu_supported(CPUMIPSState *env) =20 static void mips_cps_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MIPSCPSState *s =3D MIPS_CPS(dev); CPUMIPSState *env; MIPSCPU *cpu; int i; - Error *err =3D NULL; target_ulong gcr_base; bool itu_present =3D false; bool saar_present =3D false; @@ -101,16 +101,15 @@ static void mips_cps_realize(DeviceState *dev, Error = **errp) if (itu_present) { sysbus_init_child_obj(OBJECT(dev), "itu", &s->itu, sizeof(s->itu), TYPE_MIPS_ITU); - object_property_set_int(OBJECT(&s->itu), 16, "num-fifo", &err); - object_property_set_int(OBJECT(&s->itu), 16, "num-semaphores", &er= r); + object_property_set_int(OBJECT(&s->itu), 16, "num-fifo", errp); + object_property_set_int(OBJECT(&s->itu), 16, "num-semaphores", err= p); object_property_set_bool(OBJECT(&s->itu), saar_present, "saar-pres= ent", - &err); + errp); if (saar_present) { qdev_prop_set_ptr(DEVICE(&s->itu), "saar", (void *)&env->CP0_S= AAR); } - object_property_set_bool(OBJECT(&s->itu), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->itu), true, "realized", errp); + if (*errp) { return; } =20 @@ -121,11 +120,10 @@ static void mips_cps_realize(DeviceState *dev, Error = **errp) /* Cluster Power Controller */ sysbus_init_child_obj(OBJECT(dev), "cpc", &s->cpc, sizeof(s->cpc), TYPE_MIPS_CPC); - object_property_set_int(OBJECT(&s->cpc), s->num_vp, "num-vp", &err); - object_property_set_int(OBJECT(&s->cpc), 1, "vp-start-running", &err); - object_property_set_bool(OBJECT(&s->cpc), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_int(OBJECT(&s->cpc), s->num_vp, "num-vp", errp); + object_property_set_int(OBJECT(&s->cpc), 1, "vp-start-running", errp); + object_property_set_bool(OBJECT(&s->cpc), true, "realized", errp); + if (*errp) { return; } =20 @@ -135,11 +133,10 @@ static void mips_cps_realize(DeviceState *dev, Error = **errp) /* Global Interrupt Controller */ sysbus_init_child_obj(OBJECT(dev), "gic", &s->gic, sizeof(s->gic), TYPE_MIPS_GIC); - object_property_set_int(OBJECT(&s->gic), s->num_vp, "num-vp", &err); - object_property_set_int(OBJECT(&s->gic), 128, "num-irq", &err); - object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_int(OBJECT(&s->gic), s->num_vp, "num-vp", errp); + object_property_set_int(OBJECT(&s->gic), 128, "num-irq", errp); + object_property_set_bool(OBJECT(&s->gic), true, "realized", errp); + if (*errp) { return; } =20 @@ -151,14 +148,13 @@ static void mips_cps_realize(DeviceState *dev, Error = **errp) =20 sysbus_init_child_obj(OBJECT(dev), "gcr", &s->gcr, sizeof(s->gcr), TYPE_MIPS_GCR); - object_property_set_int(OBJECT(&s->gcr), s->num_vp, "num-vp", &err); - object_property_set_int(OBJECT(&s->gcr), 0x800, "gcr-rev", &err); - object_property_set_int(OBJECT(&s->gcr), gcr_base, "gcr-base", &err); - object_property_set_link(OBJECT(&s->gcr), OBJECT(&s->gic.mr), "gic", &= err); - object_property_set_link(OBJECT(&s->gcr), OBJECT(&s->cpc.mr), "cpc", &= err); - object_property_set_bool(OBJECT(&s->gcr), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_int(OBJECT(&s->gcr), s->num_vp, "num-vp", errp); + object_property_set_int(OBJECT(&s->gcr), 0x800, "gcr-rev", errp); + object_property_set_int(OBJECT(&s->gcr), gcr_base, "gcr-base", errp); + object_property_set_link(OBJECT(&s->gcr), OBJECT(&s->gic.mr), "gic", e= rrp); + object_property_set_link(OBJECT(&s->gcr), OBJECT(&s->cpc.mr), "cpc", e= rrp); + object_property_set_bool(OBJECT(&s->gcr), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/riscv/riscv_hart.c b/hw/riscv/riscv_hart.c index 5b98227db6..4c83693e48 100644 --- a/hw/riscv/riscv_hart.c +++ b/hw/riscv/riscv_hart.c @@ -43,7 +43,7 @@ static void riscv_harts_cpu_reset(void *opaque) static void riscv_hart_realize(RISCVHartArrayState *s, int idx, char *cpu_type, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 object_initialize_child(OBJECT(s), "harts[*]", &s->harts[idx], sizeof(RISCVCPU), cpu_type, @@ -51,9 +51,8 @@ static void riscv_hart_realize(RISCVHartArrayState *s, in= t idx, s->harts[idx].env.mhartid =3D s->hartid_base + idx; qemu_register_reset(riscv_harts_cpu_reset, &s->harts[idx]); object_property_set_bool(OBJECT(&s->harts[idx]), true, - "realized", &err); - if (err) { - error_propagate(errp, err); + "realized", errp); + if (*errp) { return; } } diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index 0f9d641a0e..fbac83c684 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -134,9 +134,9 @@ static void riscv_sifive_e_soc_init(Object *obj) =20 static void riscv_sifive_e_soc_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(qdev_get_machine()); const struct MemmapEntry *memmap =3D sifive_e_memmap; - Error *err =3D NULL; =20 SiFiveESoCState *s =3D RISCV_E_SOC(dev); MemoryRegion *sys_mem =3D get_system_memory(); @@ -171,9 +171,8 @@ static void riscv_sifive_e_soc_realize(DeviceState *dev= , Error **errp) =20 /* GPIO */ =20 - object_property_set_bool(OBJECT(&s->gpio), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gpio), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 9f8e84bf2e..ab30e78969 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -426,6 +426,7 @@ static void riscv_sifive_u_soc_init(Object *obj) =20 static void riscv_sifive_u_soc_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(qdev_get_machine()); SiFiveUSoCState *s =3D RISCV_U_SOC(dev); const struct MemmapEntry *memmap =3D sifive_u_memmap; @@ -435,7 +436,6 @@ static void riscv_sifive_u_soc_realize(DeviceState *dev= , Error **errp) char *plic_hart_config; size_t plic_hart_config_len; int i; - Error *err =3D NULL; NICInfo *nd =3D &nd_table[0]; =20 object_property_set_bool(OBJECT(&s->e_cpus), true, "realized", @@ -493,10 +493,10 @@ static void riscv_sifive_u_soc_realize(DeviceState *d= ev, Error **errp) memmap[SIFIVE_U_CLINT].size, ms->smp.cpus, SIFIVE_SIP_BASE, SIFIVE_TIMECMP_BASE, SIFIVE_TIME_BASE); =20 - object_property_set_bool(OBJECT(&s->prci), true, "realized", &err); + object_property_set_bool(OBJECT(&s->prci), true, "realized", errp); sysbus_mmio_map(SYS_BUS_DEVICE(&s->prci), 0, memmap[SIFIVE_U_PRCI].bas= e); =20 - object_property_set_bool(OBJECT(&s->otp), true, "realized", &err); + object_property_set_bool(OBJECT(&s->otp), true, "realized", errp); sysbus_mmio_map(SYS_BUS_DEVICE(&s->otp), 0, memmap[SIFIVE_U_OTP].base); =20 for (i =3D 0; i < SIFIVE_U_PLIC_NUM_SOURCES; i++) { @@ -509,9 +509,8 @@ static void riscv_sifive_u_soc_realize(DeviceState *dev= , Error **errp) } object_property_set_int(OBJECT(&s->gem), GEM_REVISION, "revision", &error_abort); - object_property_set_bool(OBJECT(&s->gem), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gem), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->gem), 0, memmap[SIFIVE_U_GEM].base); diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c index 926e1af475..0aee7abc69 100644 --- a/hw/sd/milkymist-memcard.c +++ b/hw/sd/milkymist-memcard.c @@ -265,11 +265,11 @@ static void milkymist_memcard_init(Object *obj) =20 static void milkymist_memcard_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MilkymistMemcardState *s =3D MILKYMIST_MEMCARD(dev); DeviceState *carddev; BlockBackend *blk; DriveInfo *dinfo; - Error *err =3D NULL; =20 qbus_create_inplace(&s->sdbus, sizeof(s->sdbus), TYPE_SD_BUS, dev, "sd-bus"); @@ -279,10 +279,11 @@ static void milkymist_memcard_realize(DeviceState *de= v, Error **errp) dinfo =3D drive_get_next(IF_SD); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; carddev =3D qdev_create(BUS(&s->sdbus), TYPE_SD_CARD); - qdev_prop_set_drive(carddev, "drive", blk, &err); - object_property_set_bool(OBJECT(carddev), true, "realized", &err); - if (err) { - error_setg(errp, "failed to init SD card: %s", error_get_pretty(er= r)); + qdev_prop_set_drive(carddev, "drive", blk, errp); + object_property_set_bool(OBJECT(carddev), true, "realized", errp); + if (*errp) { + error_setg(errp, "failed to init SD card: %s", + error_get_pretty(*errp)); return; } s->enabled =3D blk && blk_is_inserted(blk); diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c index b3fd6643e8..f093783c34 100644 --- a/target/alpha/cpu.c +++ b/target/alpha/cpu.c @@ -56,13 +56,12 @@ static void alpha_cpu_disas_set_info(CPUState *cpu, dis= assemble_info *info) =20 static void alpha_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); AlphaCPUClass *acc =3D ALPHA_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 2399c14471..07b4bbe82b 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -1200,12 +1200,12 @@ static void arm_cpu_finalizefn(Object *obj) =20 static void arm_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); ARMCPU *cpu =3D ARM_CPU(dev); ARMCPUClass *acc =3D ARM_CPU_GET_CLASS(dev); CPUARMState *env =3D &cpu->env; int pagebits; - Error *local_err =3D NULL; bool no_aa32 =3D false; =20 /* If we needed to query the host kernel for the CPU features @@ -1248,9 +1248,8 @@ static void arm_cpu_realizefn(DeviceState *dev, Error= **errp) arm_gt_stimer_cb, cpu); #endif =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index d7f5bf610a..15a96e68be 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -266,17 +266,16 @@ static void cpu_max_get_sve_vq(Object *obj, Visitor *= v, const char *name, static void cpu_max_set_sve_vq(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); ARMCPU *cpu =3D ARM_CPU(obj); - Error *err =3D NULL; =20 - visit_type_uint32(v, name, &cpu->sve_max_vq, &err); + visit_type_uint32(v, name, &cpu->sve_max_vq, errp); =20 - if (!err && (cpu->sve_max_vq =3D=3D 0 || cpu->sve_max_vq > ARM_MAX_VQ)= ) { - error_setg(&err, "unsupported SVE vector length"); - error_append_hint(&err, "Valid sve-max-vq in range [1-%d]\n", + if (!*errp && (cpu->sve_max_vq =3D=3D 0 || cpu->sve_max_vq > ARM_MAX_V= Q)) { + error_setg(errp, "unsupported SVE vector length"); + error_append_hint(errp, "Valid sve-max-vq in range [1-%d]\n", ARM_MAX_VQ); } - error_propagate(errp, err); } =20 /* -cpu max: if KVM is enabled, like -cpu host (best possible with this ho= st); diff --git a/target/cris/cpu.c b/target/cris/cpu.c index 7adfd6caf4..296b68dff6 100644 --- a/target/cris/cpu.c +++ b/target/cris/cpu.c @@ -124,13 +124,12 @@ void cris_cpu_list(void) =20 static void cris_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); CRISCPUClass *ccc =3D CRIS_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c index 71b6aca45d..f6f2e3980c 100644 --- a/target/hppa/cpu.c +++ b/target/hppa/cpu.c @@ -89,13 +89,12 @@ static void hppa_cpu_do_unaligned_access(CPUState *cs, = vaddr addr, =20 static void hppa_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); HPPACPUClass *acc =3D HPPA_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 44f1bbdcac..4e350906cb 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -3391,16 +3391,15 @@ static void x86_cpuid_version_set_family(Object *ob= j, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *cpu =3D X86_CPU(obj); CPUX86State *env =3D &cpu->env; const int64_t min =3D 0; const int64_t max =3D 0xff + 0xf; - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } if (value < min || value > max) { @@ -3434,16 +3433,15 @@ static void x86_cpuid_version_set_model(Object *obj= , Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *cpu =3D X86_CPU(obj); CPUX86State *env =3D &cpu->env; const int64_t min =3D 0; const int64_t max =3D 0xff; - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } if (value < min || value > max) { @@ -3472,16 +3470,15 @@ static void x86_cpuid_version_set_stepping(Object *= obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *cpu =3D X86_CPU(obj); CPUX86State *env =3D &cpu->env; const int64_t min =3D 0; const int64_t max =3D 0xf; - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } if (value < min || value > max) { @@ -3578,15 +3575,14 @@ static void x86_cpuid_get_tsc_freq(Object *obj, Vis= itor *v, const char *name, static void x86_cpuid_set_tsc_freq(Object *obj, Visitor *v, const char *na= me, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *cpu =3D X86_CPU(obj); const int64_t min =3D 0; const int64_t max =3D INT64_MAX; - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } if (value < min || value > max) { @@ -4247,49 +4243,46 @@ static void x86_cpu_to_dict_full(X86CPU *cpu, QDict= *props) =20 static void object_apply_props(Object *obj, QDict *props, Error **errp) { + ERRP_AUTO_PROPAGATE(); const QDictEntry *prop; - Error *err =3D NULL; =20 for (prop =3D qdict_first(props); prop; prop =3D qdict_next(props, pro= p)) { object_property_set_qobject(obj, qdict_entry_value(prop), - qdict_entry_key(prop), &err); - if (err) { + qdict_entry_key(prop), errp); + if (*errp) { break; } } - - error_propagate(errp, err); } =20 /* Create X86CPU object according to model+props specification */ static X86CPU *x86_cpu_from_model(const char *model, QDict *props, Error *= *errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *xc =3D NULL; X86CPUClass *xcc; - Error *err =3D NULL; =20 xcc =3D X86_CPU_CLASS(cpu_class_by_name(TYPE_X86_CPU, model)); if (xcc =3D=3D NULL) { - error_setg(&err, "CPU model '%s' not found", model); + error_setg(errp, "CPU model '%s' not found", model); goto out; } =20 xc =3D X86_CPU(object_new(object_class_get_name(OBJECT_CLASS(xcc)))); if (props) { - object_apply_props(OBJECT(xc), props, &err); - if (err) { + object_apply_props(OBJECT(xc), props, errp); + if (*errp) { goto out; } } =20 - x86_cpu_expand_features(xc, &err); - if (err) { + x86_cpu_expand_features(xc, errp); + if (*errp) { goto out; } =20 out: - if (err) { - error_propagate(errp, err); + if (*errp) { object_unref(OBJECT(xc)); xc =3D NULL; } @@ -4301,8 +4294,8 @@ qmp_query_cpu_model_expansion(CpuModelExpansionType t= ype, CpuModelInfo *model, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *xc =3D NULL; - Error *err =3D NULL; CpuModelExpansionInfo *ret =3D g_new0(CpuModelExpansionInfo, 1); QDict *props =3D NULL; const char *base_name; @@ -4310,8 +4303,8 @@ qmp_query_cpu_model_expansion(CpuModelExpansionType t= ype, xc =3D x86_cpu_from_model(model->name, model->has_props ? qobject_to(QDict, model->props) : - NULL, &err); - if (err) { + NULL, errp); + if (*errp) { goto out; } =20 @@ -4335,7 +4328,7 @@ qmp_query_cpu_model_expansion(CpuModelExpansionType t= ype, x86_cpu_to_dict_full(xc, props); break; default: - error_setg(&err, "Unsupported expansion type"); + error_setg(errp, "Unsupported expansion type"); goto out; } =20 @@ -4345,8 +4338,7 @@ qmp_query_cpu_model_expansion(CpuModelExpansionType t= ype, =20 out: object_unref(OBJECT(xc)); - if (err) { - error_propagate(errp, err); + if (*errp) { qapi_free_CpuModelExpansionInfo(ret); ret =3D NULL; } @@ -5297,24 +5289,24 @@ static void x86_cpu_enable_xsave_components(X86CPU = *cpu) */ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUX86State *env =3D &cpu->env; FeatureWord w; int i; GList *l; - Error *local_err =3D NULL; =20 for (l =3D plus_features; l; l =3D l->next) { const char *prop =3D l->data; - object_property_set_bool(OBJECT(cpu), true, prop, &local_err); - if (local_err) { + object_property_set_bool(OBJECT(cpu), true, prop, errp); + if (*errp) { goto out; } } =20 for (l =3D minus_features; l; l =3D l->next) { const char *prop =3D l->data; - object_property_set_bool(OBJECT(cpu), false, prop, &local_err); - if (local_err) { + object_property_set_bool(OBJECT(cpu), false, prop, errp); + if (*errp) { goto out; } } @@ -5410,8 +5402,7 @@ static void x86_cpu_expand_features(X86CPU *cpu, Erro= r **errp) } =20 out: - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + if (*errp) { } } =20 @@ -5471,17 +5462,17 @@ static void x86_cpu_filter_features(X86CPU *cpu, bo= ol verbose) =20 static void x86_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); X86CPU *cpu =3D X86_CPU(dev); X86CPUClass *xcc =3D X86_CPU_GET_CLASS(dev); CPUX86State *env =3D &cpu->env; - Error *local_err =3D NULL; static bool ht_warned; =20 if (xcc->host_cpuid_required) { if (!accel_uses_host_cpuid()) { char *name =3D x86_cpu_class_get_model_name(xcc); - error_setg(&local_err, "CPU model '%s' requires KVM", name); + error_setg(errp, "CPU model '%s' requires KVM", name); g_free(name); goto out; } @@ -5502,15 +5493,15 @@ static void x86_cpu_realizefn(DeviceState *dev, Err= or **errp) return; } =20 - x86_cpu_expand_features(cpu, &local_err); - if (local_err) { + x86_cpu_expand_features(cpu, errp); + if (*errp) { goto out; } =20 x86_cpu_filter_features(cpu, cpu->check_cpuid || cpu->enforce_cpuid); =20 if (cpu->enforce_cpuid && x86_cpu_have_filtered_features(cpu)) { - error_setg(&local_err, + error_setg(errp, accel_uses_host_cpuid() ? "Host doesn't support requested features" : "TCG doesn't support requested features"); @@ -5625,9 +5616,8 @@ static void x86_cpu_realizefn(DeviceState *dev, Error= **errp) } =20 =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 @@ -5636,8 +5626,8 @@ static void x86_cpu_realizefn(DeviceState *dev, Error= **errp) qemu_register_reset(x86_cpu_machine_reset_cb, cpu); =20 if (cpu->env.features[FEAT_1_EDX] & CPUID_APIC || ms->smp.cpus > 1) { - x86_cpu_apic_create(cpu, &local_err); - if (local_err !=3D NULL) { + x86_cpu_apic_create(cpu, errp); + if (*errp) { goto out; } } @@ -5694,26 +5684,25 @@ static void x86_cpu_realizefn(DeviceState *dev, Err= or **errp) ht_warned =3D true; } =20 - x86_cpu_apic_realize(cpu, &local_err); - if (local_err !=3D NULL) { + x86_cpu_apic_realize(cpu, errp); + if (*errp) { goto out; } cpu_reset(cs); =20 - xcc->parent_realize(dev, &local_err); + xcc->parent_realize(dev, errp); =20 out: - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + if (*errp) { return; } } =20 static void x86_cpu_unrealizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *cpu =3D X86_CPU(dev); X86CPUClass *xcc =3D X86_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 #ifndef CONFIG_USER_ONLY cpu_remove_sync(CPU(dev)); @@ -5725,9 +5714,8 @@ static void x86_cpu_unrealizefn(DeviceState *dev, Err= or **errp) cpu->apic_state =3D NULL; } =20 - xcc->parent_unrealize(dev, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + xcc->parent_unrealize(dev, errp); + if (*errp) { return; } } @@ -5750,10 +5738,10 @@ static void x86_cpu_get_bit_prop(Object *obj, Visit= or *v, const char *name, static void x86_cpu_set_bit_prop(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); X86CPU *cpu =3D X86_CPU(obj); BitProperty *fp =3D opaque; - Error *local_err =3D NULL; bool value; =20 if (dev->realized) { @@ -5761,9 +5749,8 @@ static void x86_cpu_set_bit_prop(Object *obj, Visitor= *v, const char *name, return; } =20 - visit_type_bool(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_bool(v, name, &value, errp); + if (*errp) { return; } =20 diff --git a/target/lm32/cpu.c b/target/lm32/cpu.c index b35537de62..c876c8d7d4 100644 --- a/target/lm32/cpu.c +++ b/target/lm32/cpu.c @@ -122,13 +122,12 @@ static void lm32_cpu_disas_set_info(CPUState *cpu, di= sassemble_info *info) =20 static void lm32_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); LM32CPUClass *lcc =3D LM32_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index e6596de29c..b83eca5cfa 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -216,16 +216,15 @@ static void any_cpu_initfn(Object *obj) =20 static void m68k_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); M68kCPU *cpu =3D M68K_CPU(dev); M68kCPUClass *mcc =3D M68K_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 register_m68k_insns(&cpu->env); =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c index 9cfd7445e7..d1591cc23a 100644 --- a/target/microblaze/cpu.c +++ b/target/microblaze/cpu.c @@ -140,6 +140,7 @@ static void mb_disas_set_info(CPUState *cpu, disassembl= e_info *info) =20 static void mb_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); MicroBlazeCPUClass *mcc =3D MICROBLAZE_CPU_GET_CLASS(dev); MicroBlazeCPU *cpu =3D MICROBLAZE_CPU(cs); @@ -147,11 +148,9 @@ static void mb_cpu_realizefn(DeviceState *dev, Error *= *errp) uint8_t version_code =3D 0; const char *version; int i =3D 0; - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/mips/cpu.c b/target/mips/cpu.c index bbcf7ca463..89b661e7ff 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -136,14 +136,13 @@ static void mips_cpu_disas_set_info(CPUState *s, disa= ssemble_info *info) =20 static void mips_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); MIPSCPU *cpu =3D MIPS_CPU(dev); MIPSCPUClass *mcc =3D MIPS_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/moxie/cpu.c b/target/moxie/cpu.c index 48996d0554..19fe37284c 100644 --- a/target/moxie/cpu.c +++ b/target/moxie/cpu.c @@ -55,13 +55,12 @@ static void moxie_cpu_disas_set_info(CPUState *cpu, dis= assemble_info *info) =20 static void moxie_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); MoxieCPUClass *mcc =3D MOXIE_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index ca9c7a6df5..3cdaa0010b 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -82,13 +82,12 @@ static ObjectClass *nios2_cpu_class_by_name(const char = *cpu_model) =20 static void nios2_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); Nios2CPUClass *ncc =3D NIOS2_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/openrisc/cpu.c b/target/openrisc/cpu.c index 506aec6bfb..f297a2f96d 100644 --- a/target/openrisc/cpu.c +++ b/target/openrisc/cpu.c @@ -67,13 +67,12 @@ static void openrisc_cpu_reset(CPUState *s) =20 static void openrisc_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); OpenRISCCPUClass *occ =3D OPENRISC_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/ppc/compat.c b/target/ppc/compat.c index 7de4bf3122..610de2fb07 100644 --- a/target/ppc/compat.c +++ b/target/ppc/compat.c @@ -251,13 +251,12 @@ static void ppc_compat_prop_get(Object *obj, Visitor = *v, const char *name, static void ppc_compat_prop_set(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); char *value; uint32_t compat_pvr; =20 - visit_type_str(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &value, errp); + if (*errp) { return; } =20 @@ -292,16 +291,16 @@ void ppc_compat_add_property(Object *obj, const char = *name, uint32_t *compat_pvr, const char *basedesc, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); gchar *namesv[ARRAY_SIZE(compat_table) + 1]; gchar *names, *desc; int i; =20 object_property_add(obj, name, "string", ppc_compat_prop_get, ppc_compat_prop_set, NULL, - compat_pvr, &local_err); - if (local_err) { - goto out; + compat_pvr, errp); + if (*errp) { + return; } =20 for (i =3D 0; i < ARRAY_SIZE(compat_table); i++) { @@ -315,11 +314,8 @@ void ppc_compat_add_property(Object *obj, const char *= name, =20 names =3D g_strjoinv(", ", namesv); desc =3D g_strdup_printf("%s. Valid values are %s.", basedesc, names); - object_property_set_description(obj, name, desc, &local_err); + object_property_set_description(obj, name, desc, errp); =20 g_free(names); g_free(desc); - -out: - error_propagate(errp, local_err); } diff --git a/target/ppc/translate_init.inc.c b/target/ppc/translate_init.in= c.c index ba726dec4d..1f4c2d4b94 100644 --- a/target/ppc/translate_init.inc.c +++ b/target/ppc/translate_init.inc.c @@ -9807,14 +9807,13 @@ static int ppc_fixup_cpu(PowerPCCPU *cpu) =20 static void ppc_cpu_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); PowerPCCPU *cpu =3D POWERPC_CPU(dev); PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } if (cpu->vcpu_id =3D=3D UNASSIGNED_CPU_INDEX) { @@ -9828,9 +9827,8 @@ static void ppc_cpu_realize(DeviceState *dev, Error *= *errp) } } =20 - create_ppc_opcodes(cpu, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + create_ppc_opcodes(cpu, errp); + if (*errp) { goto unrealize; } init_ppc_proc(cpu); @@ -10033,15 +10031,14 @@ unrealize: =20 static void ppc_cpu_unrealize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PowerPCCPU *cpu =3D POWERPC_CPU(dev); PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); - Error *local_err =3D NULL; opc_handler_t **table, **table_2; int i, j, k; =20 - pcc->parent_unrealize(dev, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + pcc->parent_unrealize(dev, errp); + if (*errp) { return; } =20 @@ -10188,6 +10185,7 @@ static ObjectClass *ppc_cpu_class_by_name(const cha= r *name) static void ppc_cpu_parse_featurestr(const char *type, char *features, Error **errp) { + ERRP_AUTO_PROPAGATE(); Object *machine =3D qdev_get_machine(); const PowerPCCPUClass *pcc =3D POWERPC_CPU_CLASS(object_class_by_name(= type)); =20 @@ -10199,7 +10197,6 @@ static void ppc_cpu_parse_featurestr(const char *ty= pe, char *features, int i; char **inpieces; char *s =3D features; - Error *local_err =3D NULL; char *compat_str =3D NULL; =20 /* @@ -10227,11 +10224,10 @@ static void ppc_cpu_parse_featurestr(const char *= type, char *features, =20 if (compat_str) { char *v =3D compat_str + strlen("compat=3D"); - object_property_set_str(machine, v, "max-cpu-compat", &local_e= rr); + object_property_set_str(machine, v, "max-cpu-compat", errp); } g_strfreev(inpieces); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } } diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index f13e298a36..6f27404b89 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -316,17 +316,16 @@ static void riscv_cpu_disas_set_info(CPUState *s, dis= assemble_info *info) =20 static void riscv_cpu_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); RISCVCPU *cpu =3D RISCV_CPU(dev); CPURISCVState *env =3D &cpu->env; RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(dev); int priv_version =3D PRIV_VERSION_1_11_0; target_ulong target_misa =3D 0; - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c index d0a7707991..d17d398a75 100644 --- a/target/sh4/cpu.c +++ b/target/sh4/cpu.c @@ -174,13 +174,12 @@ static void sh7785_class_init(ObjectClass *oc, void *= data) =20 static void superh_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); SuperHCPUClass *scc =3D SUPERH_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c index bc65929552..2f631ed63b 100644 --- a/target/sparc/cpu.c +++ b/target/sparc/cpu.c @@ -736,9 +736,9 @@ static ObjectClass *sparc_cpu_class_by_name(const char = *cpu_model) =20 static void sparc_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); SPARCCPUClass *scc =3D SPARC_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; SPARCCPU *cpu =3D SPARC_CPU(dev); CPUSPARCState *env =3D &cpu->env; =20 @@ -762,9 +762,8 @@ static void sparc_cpu_realizefn(DeviceState *dev, Error= **errp) env->version |=3D env->def.nwindows - 1; #endif =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 @@ -798,15 +797,14 @@ static void sparc_get_nwindows(Object *obj, Visitor *= v, const char *name, static void sparc_set_nwindows(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); const int64_t min =3D MIN_NWINDOWS; const int64_t max =3D MAX_NWINDOWS; SPARCCPU *cpu =3D SPARC_CPU(obj); - Error *err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &err); - if (err) { - error_propagate(errp, err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } =20 diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c index df807c1d74..becb4a1ae9 100644 --- a/target/tricore/cpu.c +++ b/target/tricore/cpu.c @@ -71,15 +71,14 @@ static bool tricore_cpu_has_work(CPUState *cs) =20 static void tricore_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); TriCoreCPU *cpu =3D TRICORE_CPU(dev); TriCoreCPUClass *tcc =3D TRICORE_CPU_GET_CLASS(dev); CPUTriCoreState *env =3D &cpu->env; - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/unicore32/cpu.c b/target/unicore32/cpu.c index b27fb9689f..1f3fbe6c1a 100644 --- a/target/unicore32/cpu.c +++ b/target/unicore32/cpu.c @@ -84,13 +84,12 @@ static void uc32_any_cpu_initfn(Object *obj) =20 static void uc32_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); UniCore32CPUClass *ucc =3D UNICORE32_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c index c65dcf9dd7..0b2811f8e0 100644 --- a/target/xtensa/cpu.c +++ b/target/xtensa/cpu.c @@ -131,17 +131,16 @@ static void xtensa_cpu_disas_set_info(CPUState *cs, d= isassemble_info *info) =20 static void xtensa_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); XtensaCPUClass *xcc =3D XTENSA_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 #ifndef CONFIG_USER_ONLY xtensa_irq_init(&XTENSA_CPU(dev)->env); #endif =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815125; cv=none; d=zoho.com; s=zohoarc; b=LdydwzkS5rGL8SznX2m5Xw+bC4klDI/6WBLgPBj0vo5BX/6mQ+CVVDkjr1g2EjjiIyHumrqa3koE5EhTTkJwQcTQBp0yoC1k4T+zk3MbrCvTJgCgAJnLOsxcMnv7L30l3f3RmvmpmiU/BftQyUCoIyfbjTs2PbOAGqkvANQWAnY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815125; h=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=aYHCbr94O96vJbcGNmpiy9Yjmt46UDFOQEa/j3xHXeg=; b=AX8pdVCljlZfX6mEuz1k+2NJVfliiWUFFd1bflvNx76sY6UeK2bMOgpaijDX1vP9BgzRhd5wgoT2OWHRRaK4z/7fXsliNmXesbmHetid3EZeFx0XfduWnMRKroT+CODAcgpdJ092EzbbP0z6wu1dHZMMyvPlXhoSQAGZBG7eb08= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815125635808.7499412724067; Fri, 11 Oct 2019 10:32:05 -0700 (PDT) Received: from localhost ([::1]:54696 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyln-0002Te-T8 for importer@patchew.org; Fri, 11 Oct 2019 13:32:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37015) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRD-0006jZ-3z for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR8-0004ox-VP for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:42 -0400 Received: from relay.sw.ru ([185.231.240.75]:47926) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR8-000499-NT; Fri, 11 Oct 2019 12:06:38 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQd-0003XG-6W; Fri, 11 Oct 2019 19:06:07 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 030/126] kvm: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:16 +0300 Message-Id: <20191011160552.22907-31-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, David Hildenbrand , Cornelia Huck , armbru@redhat.com, Greg Kurz , Halil Pasic , Christian Borntraeger , qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, Richard Henderson , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Cornelia Huck --- target/ppc/kvm.c | 8 ++++---- target/s390x/cpu_models.c | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index af6e667bf8..d58a3f5bf5 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -237,6 +237,7 @@ static int kvm_booke206_tlb_init(PowerPCCPU *cpu) #if defined(TARGET_PPC64) static void kvm_get_smmu_info(struct kvm_ppc_smmu_info *info, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; =20 assert(kvm_state !=3D NULL); @@ -325,18 +326,17 @@ bool kvmppc_hpt_needs_host_contiguous_pages(void) =20 void kvm_check_mmu(PowerPCCPU *cpu, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct kvm_ppc_smmu_info smmu_info; int iq, ik, jq, jk; - Error *local_err =3D NULL; =20 /* For now, we only have anything to check on hash64 MMUs */ if (!cpu->hash64_opts || !kvm_enabled()) { return; } =20 - kvm_get_smmu_info(&smmu_info, &local_err); - if (local_err) { - error_propagate(errp, local_err); + kvm_get_smmu_info(&smmu_info, errp); + if (*errp) { return; } =20 diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index 009afc38b9..32f2e5e822 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -840,6 +840,7 @@ static void error_prepend_missing_feat(const char *name= , void *opaque) static void check_compatibility(const S390CPUModel *max_model, const S390CPUModel *model, Error **errp) { + ERRP_AUTO_PROPAGATE(); S390FeatBitmap missing; =20 if (model->def->gen > max_model->def->gen) { @@ -922,6 +923,7 @@ static inline void apply_cpu_model(const S390CPUModel *= model, Error **errp) =20 void s390_realize_cpu_model(CPUState *cs, Error **errp) { + ERRP_AUTO_PROPAGATE(); S390CPUClass *xcc =3D S390_CPU_GET_CLASS(cs); S390CPU *cpu =3D S390_CPU(cs); const S390CPUModel *max_model; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570810065; cv=none; d=zoho.com; s=zohoarc; b=DLLgWh4NwNOT3eYPpZM2hYJ7paSdS7QzItC/IT//NOrX/ksa55uinSH7uXXN+vxFqp91Gcqkj7drGBT3143hjwnpvuynx4I6xZLaq1OA4O3ITX6zv2GeTc5FLF8brTeK/4k+7zD2bNO3LfHA66iAIpvK/KJ7J8jMbVQxI0n6j+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570810065; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4DkqOhKT7iPn/pUtM3DddG+3AC0B4d0/4bTLqhp3++Q=; b=NkEIv96MbVApXtFF2qVxsbLIagzSV2hiUVA9HOQHew33AcQmoRBMKbXk+HCm1LOlmvuNwHOvqToGmY+FsCpJ+kfzKOkTFqaffdWEh+liVGAQbJbRdoZu99QFWYR9sstfFNUYyDsarkDeRNaNz2dbXj1mx9Zub7BCRK9ValHUkMw= ARC-Authentication-Results: i=1; mx.zoho.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1570810065264583.8305638224332; Fri, 11 Oct 2019 09:07:45 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iIxR5-0001BL-KP; Fri, 11 Oct 2019 16:06:35 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iIxR4-0001BE-CU for xen-devel@lists.xenproject.org; Fri, 11 Oct 2019 16:06:34 +0000 Received: from relay.sw.ru (unknown [185.231.240.75]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 171e0912-ec41-11e9-933c-12813bfff9fa; Fri, 11 Oct 2019 16:06:32 +0000 (UTC) Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQd-0003XG-Ez; Fri, 11 Oct 2019 19:06:07 +0300 X-Inumbo-ID: 171e0912-ec41-11e9-933c-12813bfff9fa From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Date: Fri, 11 Oct 2019 19:04:17 +0300 Message-Id: <20191011160552.22907-32-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Subject: [Xen-devel] [RFC v5 031/126] xen: introduce ERRP_AUTO_PROPAGATE X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, Paul Durrant , armbru@redhat.com, Greg Kurz , Stefano Stabellini , Stefan Hajnoczi , Anthony Perard , xen-devel@lists.xenproject.org, Max Reitz Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy Acked-by: Anthony PERARD --- hw/block/dataplane/xen-block.c | 17 ++--- hw/block/xen-block.c | 119 ++++++++++++++------------------- hw/xen/xen-backend.c | 7 +- hw/xen/xen-bus.c | 92 ++++++++++++------------- hw/xen/xen-host-pci-device.c | 27 ++++---- hw/xen/xen_pt.c | 25 +++---- hw/xen/xen_pt_config_init.c | 20 +++--- 7 files changed, 139 insertions(+), 168 deletions(-) diff --git a/hw/block/dataplane/xen-block.c b/hw/block/dataplane/xen-block.c index 3b9caeb2fa..c38e3c3d85 100644 --- a/hw/block/dataplane/xen-block.c +++ b/hw/block/dataplane/xen-block.c @@ -727,8 +727,8 @@ void xen_block_dataplane_start(XenBlockDataPlane *datap= lane, unsigned int protocol, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenDevice *xendev =3D dataplane->xendev; - Error *local_err =3D NULL; unsigned int ring_size; unsigned int i; =20 @@ -764,9 +764,8 @@ void xen_block_dataplane_start(XenBlockDataPlane *datap= lane, } =20 xen_device_set_max_grant_refs(xendev, dataplane->nr_ring_ref, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { goto stop; } =20 @@ -774,9 +773,8 @@ void xen_block_dataplane_start(XenBlockDataPlane *datap= lane, dataplane->ring_ref, dataplane->nr_ring_ref, PROT_READ | PROT_WRITE, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { goto stop; } =20 @@ -809,9 +807,8 @@ void xen_block_dataplane_start(XenBlockDataPlane *datap= lane, dataplane->event_channel =3D xen_device_bind_event_channel(xendev, dataplane->ctx, event_channe= l, xen_block_dataplane_event, dataplane, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { goto stop; } =20 diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c index 879fc310a4..8f4165edd9 100644 --- a/hw/block/xen-block.c +++ b/hw/block/xen-block.c @@ -194,6 +194,7 @@ static const BlockDevOps xen_block_dev_ops =3D { =20 static void xen_block_realize(XenDevice *xendev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBlockDevice *blockdev =3D XEN_BLOCK_DEVICE(xendev); XenBlockDeviceClass *blockdev_class =3D XEN_BLOCK_DEVICE_GET_CLASS(xendev); @@ -201,7 +202,6 @@ static void xen_block_realize(XenDevice *xendev, Error = **errp) XenBlockVdev *vdev =3D &blockdev->props.vdev; BlockConf *conf =3D &blockdev->props.conf; BlockBackend *blk =3D conf->blk; - Error *local_err =3D NULL; =20 if (vdev->type =3D=3D XEN_BLOCK_VDEV_TYPE_INVALID) { error_setg(errp, "vdev property not set"); @@ -211,9 +211,8 @@ static void xen_block_realize(XenDevice *xendev, Error = **errp) trace_xen_block_realize(type, vdev->disk, vdev->partition); =20 if (blockdev_class->realize) { - blockdev_class->realize(blockdev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + blockdev_class->realize(blockdev, errp); + if (*errp) { return; } } @@ -283,8 +282,8 @@ static void xen_block_frontend_changed(XenDevice *xende= v, enum xenbus_state frontend_state, Error **errp) { + ERRP_AUTO_PROPAGATE(); enum xenbus_state backend_state =3D xen_device_backend_get_state(xende= v); - Error *local_err =3D NULL; =20 switch (frontend_state) { case XenbusStateInitialised: @@ -293,15 +292,13 @@ static void xen_block_frontend_changed(XenDevice *xen= dev, break; } =20 - xen_block_disconnect(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_block_disconnect(xendev, errp); + if (*errp) { break; } =20 - xen_block_connect(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_block_connect(xendev, errp); + if (*errp) { break; } =20 @@ -314,9 +311,8 @@ static void xen_block_frontend_changed(XenDevice *xende= v, =20 case XenbusStateClosed: case XenbusStateUnknown: - xen_block_disconnect(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_block_disconnect(xendev, errp); + if (*errp) { break; } =20 @@ -403,10 +399,10 @@ static int vbd_name_to_disk(const char *name, const c= har **endp, static void xen_block_set_vdev(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; XenBlockVdev *vdev =3D qdev_get_prop_ptr(dev, prop); - Error *local_err =3D NULL; char *str, *p; const char *end; =20 @@ -415,9 +411,8 @@ static void xen_block_set_vdev(Object *obj, Visitor *v,= const char *name, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } =20 @@ -671,9 +666,9 @@ static void xen_block_blockdev_del(const char *node_nam= e, Error **errp) static char *xen_block_blockdev_add(const char *id, QDict *qdict, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *driver =3D qdict_get_try_str(qdict, "driver"); BlockdevOptions *options =3D NULL; - Error *local_err =3D NULL; char *node_name; Visitor *v; =20 @@ -688,18 +683,16 @@ static char *xen_block_blockdev_add(const char *id, Q= Dict *qdict, trace_xen_block_blockdev_add(node_name); =20 v =3D qobject_input_visitor_new(QOBJECT(qdict)); - visit_type_BlockdevOptions(v, NULL, &options, &local_err); + visit_type_BlockdevOptions(v, NULL, &options, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { goto fail; } =20 - qmp_blockdev_add(options, &local_err); + qmp_blockdev_add(options, errp); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { goto fail; } =20 @@ -718,14 +711,12 @@ fail: =20 static void xen_block_drive_destroy(XenBlockDrive *drive, Error **errp) { + ERRP_AUTO_PROPAGATE(); char *node_name =3D drive->node_name; =20 if (node_name) { - Error *local_err =3D NULL; - - xen_block_blockdev_del(node_name, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_block_blockdev_del(node_name, errp); + if (*errp) { return; } g_free(node_name); @@ -739,6 +730,7 @@ static XenBlockDrive *xen_block_drive_create(const char= *id, const char *device_type, QDict *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *params =3D qdict_get_try_str(opts, "params"); const char *mode =3D qdict_get_try_str(opts, "mode"); const char *direct_io_safe =3D qdict_get_try_str(opts, "direct-io-safe= "); @@ -746,7 +738,6 @@ static XenBlockDrive *xen_block_drive_create(const char= *id, char *driver =3D NULL; char *filename =3D NULL; XenBlockDrive *drive =3D NULL; - Error *local_err =3D NULL; QDict *file_layer; QDict *driver_layer; =20 @@ -825,13 +816,12 @@ static XenBlockDrive *xen_block_drive_create(const ch= ar *id, =20 g_assert(!drive->node_name); drive->node_name =3D xen_block_blockdev_add(drive->id, driver_layer, - &local_err); + errp); =20 qobject_unref(driver_layer); =20 done: - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { xen_block_drive_destroy(drive, NULL); return NULL; } @@ -856,15 +846,13 @@ static void xen_block_iothread_destroy(XenBlockIOThre= ad *iothread, static XenBlockIOThread *xen_block_iothread_create(const char *id, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBlockIOThread *iothread =3D g_new(XenBlockIOThread, 1); - Error *local_err =3D NULL; =20 iothread->id =3D g_strdup(id); =20 - qmp_object_add(TYPE_IOTHREAD, id, false, NULL, &local_err); - if (local_err) { - error_propagate(errp, local_err); - + qmp_object_add(TYPE_IOTHREAD, id, false, NULL, errp); + if (*errp) { g_free(iothread->id); g_free(iothread); return NULL; @@ -876,6 +864,7 @@ static XenBlockIOThread *xen_block_iothread_create(cons= t char *id, static void xen_block_device_create(XenBackendInstance *backend, QDict *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBus *xenbus =3D xen_backend_get_bus(backend); const char *name =3D xen_backend_get_name(backend); unsigned long number; @@ -883,7 +872,6 @@ static void xen_block_device_create(XenBackendInstance = *backend, XenBlockDrive *drive =3D NULL; XenBlockIOThread *iothread =3D NULL; XenDevice *xendev =3D NULL; - Error *local_err =3D NULL; const char *type; XenBlockDevice *blockdev; =20 @@ -915,15 +903,15 @@ static void xen_block_device_create(XenBackendInstanc= e *backend, goto fail; } =20 - drive =3D xen_block_drive_create(vdev, device_type, opts, &local_err); + drive =3D xen_block_drive_create(vdev, device_type, opts, errp); if (!drive) { - error_propagate_prepend(errp, local_err, "failed to create drive: = "); + error_prepend(errp, "failed to create drive: "); goto fail; } =20 - iothread =3D xen_block_iothread_create(vdev, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + iothread =3D xen_block_iothread_create(vdev, errp); + if (*errp) { + error_prepend(errp, "failed to create iothread: "); goto fail; } @@ -931,24 +919,24 @@ static void xen_block_device_create(XenBackendInstanc= e *backend, xendev =3D XEN_DEVICE(qdev_create(BUS(xenbus), type)); blockdev =3D XEN_BLOCK_DEVICE(xendev); =20 - object_property_set_str(OBJECT(xendev), vdev, "vdev", &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, "failed to set 'vdev': "); + object_property_set_str(OBJECT(xendev), vdev, "vdev", errp); + if (*errp) { + error_prepend(errp, "failed to set 'vdev': "); goto fail; } =20 object_property_set_str(OBJECT(xendev), xen_block_drive_get_node_name(drive), "drive", - &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, "failed to set 'drive': "= ); + errp); + if (*errp) { + error_prepend(errp, "failed to set 'drive': "); goto fail; } =20 object_property_set_str(OBJECT(xendev), iothread->id, "iothread", - &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + errp); + if (*errp) { + error_prepend(errp, "failed to set 'iothread': "); goto fail; } @@ -956,9 +944,9 @@ static void xen_block_device_create(XenBackendInstance = *backend, blockdev->iothread =3D iothread; blockdev->drive =3D drive; =20 - object_property_set_bool(OBJECT(xendev), true, "realized", &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + object_property_set_bool(OBJECT(xendev), true, "realized", errp); + if (*errp) { + error_prepend(errp, "realization of device %s failed: ", type); goto fail; @@ -984,6 +972,7 @@ fail: static void xen_block_device_destroy(XenBackendInstance *backend, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenDevice *xendev =3D xen_backend_get_device(backend); XenBlockDevice *blockdev =3D XEN_BLOCK_DEVICE(xendev); XenBlockVdev *vdev =3D &blockdev->props.vdev; @@ -995,22 +984,18 @@ static void xen_block_device_destroy(XenBackendInstan= ce *backend, object_unparent(OBJECT(xendev)); =20 if (iothread) { - Error *local_err =3D NULL; - - xen_block_iothread_destroy(iothread, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + xen_block_iothread_destroy(iothread, errp); + if (*errp) { + error_prepend(errp, "failed to destroy iothread: "); return; } } =20 if (drive) { - Error *local_err =3D NULL; - - xen_block_drive_destroy(drive, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + xen_block_drive_destroy(drive, errp); + if (*errp) { + error_prepend(errp, "failed to destroy drive: "); } } diff --git a/hw/xen/xen-backend.c b/hw/xen/xen-backend.c index da065f81b7..1cc0694053 100644 --- a/hw/xen/xen-backend.c +++ b/hw/xen/xen-backend.c @@ -98,9 +98,9 @@ static void xen_backend_list_remove(XenBackendInstance *b= ackend) void xen_backend_device_create(XenBus *xenbus, const char *type, const char *name, QDict *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); const XenBackendImpl *impl =3D xen_backend_table_lookup(type); XenBackendInstance *backend; - Error *local_error =3D NULL; =20 if (!impl) { return; @@ -110,9 +110,8 @@ void xen_backend_device_create(XenBus *xenbus, const ch= ar *type, backend->xenbus =3D xenbus; backend->name =3D g_strdup(name); =20 - impl->create(backend, opts, &local_error); - if (local_error) { - error_propagate(errp, local_error); + impl->create(backend, opts, errp); + if (*errp) { g_free(backend->name); g_free(backend); return; diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c index c2ad22a42d..ceecf0dacb 100644 --- a/hw/xen/xen-bus.c +++ b/hw/xen/xen-bus.c @@ -53,9 +53,9 @@ static char *xen_device_get_frontend_path(XenDevice *xend= ev) =20 static void xen_device_unplug(XenDevice *xendev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBus *xenbus =3D XEN_BUS(qdev_get_parent_bus(DEVICE(xendev))); const char *type =3D object_get_typename(OBJECT(xendev)); - Error *local_err =3D NULL; xs_transaction_t tid; =20 trace_xen_device_unplug(type, xendev->name); @@ -69,14 +69,14 @@ again: } =20 xs_node_printf(xenbus->xsh, tid, xendev->backend_path, "online", - &local_err, "%u", 0); - if (local_err) { + errp, "%u", 0); + if (*errp) { goto abort; } =20 xs_node_printf(xenbus->xsh, tid, xendev->backend_path, "state", - &local_err, "%u", XenbusStateClosing); - if (local_err) { + errp, "%u", XenbusStateClosing); + if (*errp) { goto abort; } =20 @@ -96,7 +96,6 @@ abort: * from ending the transaction. */ xs_transaction_end(xenbus->xsh, tid, true); - error_propagate(errp, local_err); } =20 static void xen_bus_print_dev(Monitor *mon, DeviceState *dev, int indent) @@ -205,15 +204,13 @@ static XenWatch *watch_list_add(XenWatchList *watch_l= ist, const char *node, const char *key, XenWatchHandler handler, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenWatch *watch =3D new_watch(node, key, handler, opaque); - Error *local_err =3D NULL; =20 notifier_list_add(&watch_list->notifiers, &watch->notifier); =20 - xs_node_watch(watch_list->xsh, node, key, watch->token, &local_err); - if (local_err) { - error_propagate(errp, local_err); - + xs_node_watch(watch_list->xsh, node, key, watch->token, errp); + if (*errp) { notifier_remove(&watch->notifier); free_watch(watch); =20 @@ -255,11 +252,11 @@ static void xen_bus_backend_create(XenBus *xenbus, co= nst char *type, const char *name, char *path, Error **errp) { + ERRP_AUTO_PROPAGATE(); xs_transaction_t tid; char **key; QDict *opts; unsigned int i, n; - Error *local_err =3D NULL; =20 trace_xen_bus_backend_create(type, path); =20 @@ -314,11 +311,11 @@ again: return; } =20 - xen_backend_device_create(xenbus, type, name, opts, &local_err); + xen_backend_device_create(xenbus, type, name, opts, errp); qobject_unref(opts); =20 - if (local_err) { - error_propagate_prepend(errp, local_err, + if (*errp) { + error_prepend(errp, "failed to create '%s' device '%s': ", type, name); } @@ -451,9 +448,9 @@ static void xen_bus_unrealize(BusState *bus, Error **er= rp) =20 static void xen_bus_realize(BusState *bus, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBus *xenbus =3D XEN_BUS(bus); unsigned int domid; - Error *local_err =3D NULL; =20 trace_xen_bus_realize(); =20 @@ -476,10 +473,10 @@ static void xen_bus_realize(BusState *bus, Error **er= rp) =20 xenbus->backend_watch =3D xen_bus_add_watch(xenbus, "", /* domain root node */ - "backend", xen_bus_backend_changed, &local_err); - if (local_err) { + "backend", xen_bus_backend_changed, errp); + if (*errp) { /* This need not be treated as a hard error so don't propagate */ - error_reportf_err(local_err, + error_reportf_err(*errp, "failed to set up enumeration watch: "); } =20 @@ -692,9 +689,9 @@ static void xen_device_remove_watch(XenDevice *xendev, = XenWatch *watch, =20 static void xen_device_backend_create(XenDevice *xendev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBus *xenbus =3D XEN_BUS(qdev_get_parent_bus(DEVICE(xendev))); struct xs_permissions perms[2]; - Error *local_err =3D NULL; =20 xendev->backend_path =3D xen_device_get_backend_path(xendev); =20 @@ -706,9 +703,9 @@ static void xen_device_backend_create(XenDevice *xendev= , Error **errp) g_assert(xenbus->xsh); =20 xs_node_create(xenbus->xsh, XBT_NULL, xendev->backend_path, perms, - ARRAY_SIZE(perms), &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + ARRAY_SIZE(perms), errp); + if (*errp) { + error_prepend(errp, "failed to create backend: "); return; } @@ -716,9 +713,9 @@ static void xen_device_backend_create(XenDevice *xendev= , Error **errp) xendev->backend_state_watch =3D xen_device_add_watch(xendev, xendev->backend_path, "state", xen_device_backend_changed, - &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + errp); + if (*errp) { + error_prepend(errp, "failed to watch backend state: "); return; } @@ -726,9 +723,9 @@ static void xen_device_backend_create(XenDevice *xendev= , Error **errp) xendev->backend_online_watch =3D xen_device_add_watch(xendev, xendev->backend_path, "online", xen_device_backend_changed, - &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + errp); + if (*errp) { + error_prepend(errp, "failed to watch backend online: "); return; } @@ -866,9 +863,9 @@ static bool xen_device_frontend_exists(XenDevice *xende= v) =20 static void xen_device_frontend_create(XenDevice *xendev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBus *xenbus =3D XEN_BUS(qdev_get_parent_bus(DEVICE(xendev))); struct xs_permissions perms[2]; - Error *local_err =3D NULL; =20 xendev->frontend_path =3D xen_device_get_frontend_path(xendev); =20 @@ -885,9 +882,9 @@ static void xen_device_frontend_create(XenDevice *xende= v, Error **errp) g_assert(xenbus->xsh); =20 xs_node_create(xenbus->xsh, XBT_NULL, xendev->frontend_path, perms, - ARRAY_SIZE(perms), &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + ARRAY_SIZE(perms), errp); + if (*errp) { + error_prepend(errp, "failed to create frontend: "); return; } @@ -895,9 +892,9 @@ static void xen_device_frontend_create(XenDevice *xende= v, Error **errp) =20 xendev->frontend_state_watch =3D xen_device_add_watch(xendev, xendev->frontend_path, "state", - xen_device_frontend_changed, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + xen_device_frontend_changed, errp); + if (*errp) { + error_prepend(errp, "failed to watch frontend state: "); } } @@ -1228,11 +1225,11 @@ static void xen_device_exit(Notifier *n, void *data) =20 static void xen_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenDevice *xendev =3D XEN_DEVICE(dev); XenDeviceClass *xendev_class =3D XEN_DEVICE_GET_CLASS(xendev); XenBus *xenbus =3D XEN_BUS(qdev_get_parent_bus(DEVICE(xendev))); const char *type =3D object_get_typename(OBJECT(xendev)); - Error *local_err =3D NULL; =20 if (xendev->frontend_id =3D=3D DOMID_INVALID) { xendev->frontend_id =3D xen_domid; @@ -1248,9 +1245,9 @@ static void xen_device_realize(DeviceState *dev, Erro= r **errp) goto unrealize; } =20 - xendev->name =3D xendev_class->get_name(xendev, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + xendev->name =3D xendev_class->get_name(xendev, errp); + if (*errp) { + error_prepend(errp, "failed to get device name: "); goto unrealize; } @@ -1274,22 +1271,19 @@ static void xen_device_realize(DeviceState *dev, Er= ror **errp) xendev->feature_grant_copy =3D (xengnttab_grant_copy(xendev->xgth, 0, NULL) =3D=3D 0); =20 - xen_device_backend_create(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_device_backend_create(xendev, errp); + if (*errp) { goto unrealize; } =20 - xen_device_frontend_create(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_device_frontend_create(xendev, errp); + if (*errp) { goto unrealize; } =20 if (xendev_class->realize) { - xendev_class->realize(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xendev_class->realize(xendev, errp); + if (*errp) { goto unrealize; } } diff --git a/hw/xen/xen-host-pci-device.c b/hw/xen/xen-host-pci-device.c index 1b44dcafaf..02379c341c 100644 --- a/hw/xen/xen-host-pci-device.c +++ b/hw/xen/xen-host-pci-device.c @@ -333,8 +333,8 @@ void xen_host_pci_device_get(XenHostPCIDevice *d, uint1= 6_t domain, uint8_t bus, uint8_t dev, uint8_t func, Error **errp) { + ERRP_AUTO_PROPAGATE(); unsigned int v; - Error *err =3D NULL; =20 d->config_fd =3D -1; d->domain =3D domain; @@ -342,36 +342,36 @@ void xen_host_pci_device_get(XenHostPCIDevice *d, uin= t16_t domain, d->dev =3D dev; d->func =3D func; =20 - xen_host_pci_config_open(d, &err); - if (err) { + xen_host_pci_config_open(d, errp); + if (*errp) { goto error; } =20 - xen_host_pci_get_resource(d, &err); - if (err) { + xen_host_pci_get_resource(d, errp); + if (*errp) { goto error; } =20 - xen_host_pci_get_hex_value(d, "vendor", &v, &err); - if (err) { + xen_host_pci_get_hex_value(d, "vendor", &v, errp); + if (*errp) { goto error; } d->vendor_id =3D v; =20 - xen_host_pci_get_hex_value(d, "device", &v, &err); - if (err) { + xen_host_pci_get_hex_value(d, "device", &v, errp); + if (*errp) { goto error; } d->device_id =3D v; =20 - xen_host_pci_get_dec_value(d, "irq", &v, &err); - if (err) { + xen_host_pci_get_dec_value(d, "irq", &v, errp); + if (*errp) { goto error; } d->irq =3D v; =20 - xen_host_pci_get_hex_value(d, "class", &v, &err); - if (err) { + xen_host_pci_get_hex_value(d, "class", &v, errp); + if (*errp) { goto error; } d->class_code =3D v; @@ -381,7 +381,6 @@ void xen_host_pci_device_get(XenHostPCIDevice *d, uint1= 6_t domain, return; =20 error: - error_propagate(errp, err); =20 if (d->config_fd >=3D 0) { close(d->config_fd); diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c index 8fbaf2eae9..4bf9353bcb 100644 --- a/hw/xen/xen_pt.c +++ b/hw/xen/xen_pt.c @@ -765,12 +765,12 @@ static void xen_pt_destroy(PCIDevice *d) { =20 static void xen_pt_realize(PCIDevice *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenPCIPassthroughState *s =3D XEN_PT_DEVICE(d); int i, rc =3D 0; uint8_t machine_irq =3D 0, scratch; uint16_t cmd =3D 0; int pirq =3D XEN_PT_UNASSIGNED_PIRQ; - Error *err =3D NULL; =20 /* register real device */ XEN_PT_LOG(d, "Assigning real physical device %02x:%02x.%d" @@ -781,10 +781,9 @@ static void xen_pt_realize(PCIDevice *d, Error **errp) xen_host_pci_device_get(&s->real_device, s->hostaddr.domain, s->hostaddr.bus, s->hostaddr.slot, s->hostaddr.function, - &err); - if (err) { - error_append_hint(&err, "Failed to \"open\" the real pci device"); - error_propagate(errp, err); + errp); + if (*errp) { + error_append_hint(errp, "Failed to \"open\" the real pci device"); return; } =20 @@ -811,11 +810,10 @@ static void xen_pt_realize(PCIDevice *d, Error **errp) return; } =20 - xen_pt_setup_vga(s, &s->real_device, &err); - if (err) { - error_append_hint(&err, "Setup VGA BIOS of passthrough" - " GFX failed"); - error_propagate(errp, err); + xen_pt_setup_vga(s, &s->real_device, errp); + if (*errp) { + error_append_hint(errp, "Setup VGA BIOS of passthrough" + " GFX failed"); xen_host_pci_device_put(&s->real_device); return; } @@ -828,10 +826,9 @@ static void xen_pt_realize(PCIDevice *d, Error **errp) xen_pt_register_regions(s, &cmd); =20 /* reinitialize each config register to be emulated */ - xen_pt_config_init(s, &err); - if (err) { - error_append_hint(&err, "PCI Config space initialisation failed"); - error_propagate(errp, err); + xen_pt_config_init(s, errp); + if (*errp) { + error_append_hint(errp, "PCI Config space initialisation failed"); rc =3D -1; goto err_out; } diff --git a/hw/xen/xen_pt_config_init.c b/hw/xen/xen_pt_config_init.c index 31ec5add1d..af3fbd1bfb 100644 --- a/hw/xen/xen_pt_config_init.c +++ b/hw/xen/xen_pt_config_init.c @@ -2008,8 +2008,8 @@ static void xen_pt_config_reg_init(XenPCIPassthroughS= tate *s, =20 void xen_pt_config_init(XenPCIPassthroughState *s, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i, rc; - Error *err =3D NULL; =20 QLIST_INIT(&s->reg_grps); =20 @@ -2052,10 +2052,9 @@ void xen_pt_config_init(XenPCIPassthroughState *s, E= rror **errp) reg_grp_offset, ®_grp_entry->size); if (rc < 0) { - error_setg(&err, "Failed to initialize %d/%zu, type =3D 0x= %x," + error_setg(errp, "Failed to initialize %d/%zu, type =3D 0x= %x," " rc: %d", i, ARRAY_SIZE(xen_pt_emu_reg_grps), xen_pt_emu_reg_grps[i].grp_type, rc); - error_propagate(errp, err); xen_pt_config_delete(s); return; } @@ -2068,13 +2067,14 @@ void xen_pt_config_init(XenPCIPassthroughState *s, = Error **errp) =20 /* initialize capability register */ for (j =3D 0; regs->size !=3D 0; j++, regs++) { - xen_pt_config_reg_init(s, reg_grp_entry, regs, &err); - if (err) { - error_append_hint(&err, "Failed to init register %= d" - " offsets 0x%x in grp_type =3D 0x%x (%d/%z= u)", j, - regs->offset, xen_pt_emu_reg_grps[i].grp_t= ype, - i, ARRAY_SIZE(xen_pt_emu_reg_grps)); - error_propagate(errp, err); + xen_pt_config_reg_init(s, reg_grp_entry, regs, errp); + if (*errp) { + error_append_hint(errp, "Failed to init register %= d" + " offsets 0x%x in grp_type =3D 0= x%x (%d/%zu)", + j, + regs->offset, + xen_pt_emu_reg_grps[i].grp_type, + i, ARRAY_SIZE(xen_pt_emu_reg_grp= s)); xen_pt_config_delete(s); return; } --=20 2.21.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813710; cv=none; d=zoho.com; s=zohoarc; b=K/eMCvaHTRrJ2erv9x3fyUaz6INCgDMUaHrV5y4c0feyduL9xP5oxkdujJo82+QXbk1tsXjRGZtiDYIHm2lbblWYCguv6ZIk75l9626p1CdsUs8gn0JIWmLK9GHidYA8wUuBzjlSSxfwxcCK4uennRkJwozw6aitrHlfDnUADec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813710; h=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=UnNRnvH1tvtlOW4f5A1V/t9sUiVrsN+OPQX9uY7afRE=; b=mFKlRtSvnl30GM32zuU0yP8p7orH1rSnAotnbpJSzL5dCPy/YLIdhAbKaLavLY1rKXIbsGNXskEdShc9Gw9nVhG61pgAffQsOck86kJT4sx7zG8zm0tTmwIDD1kC0iKk2v4sx+lHBKogjLczS9UCykcC0I9s+kBZ1h3D4rAXCqg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813710836868.3435054565772; Fri, 11 Oct 2019 10:08:30 -0700 (PDT) Received: from localhost ([::1]:54378 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyOz-0006ML-B6 for importer@patchew.org; Fri, 11 Oct 2019 13:08:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36268) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQs-00069l-PP for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQp-0004M5-IH for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:22 -0400 Received: from relay.sw.ru ([185.231.240.75]:47936) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQp-00049j-6I for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:19 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQd-0003XG-Pg; Fri, 11 Oct 2019 19:06:07 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 032/126] Hosts: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:18 +0300 Message-Id: <20191011160552.22907-33-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Michael Roth , armbru@redhat.com, Greg Kurz , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- qga/commands-win32.c | 139 +++++++++++++++++++------------------------ util/oslib-posix.c | 6 +- 2 files changed, 64 insertions(+), 81 deletions(-) diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 9789465b4a..70e4311a98 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -240,15 +240,15 @@ void qmp_guest_file_close(int64_t handle, Error **err= p) =20 static void acquire_privilege(const char *name, Error **errp) { + ERRP_AUTO_PROPAGATE(); HANDLE token =3D NULL; TOKEN_PRIVILEGES priv; - Error *local_err =3D NULL; =20 if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &token)) { if (!LookupPrivilegeValue(NULL, name, &priv.Privileges[0].Luid)) { - error_setg(&local_err, QERR_QGA_COMMAND_FAILED, + error_setg(errp, QERR_QGA_COMMAND_FAILED, "no luid for requested privilege"); goto out; } @@ -257,13 +257,13 @@ static void acquire_privilege(const char *name, Error= **errp) priv.Privileges[0].Attributes =3D SE_PRIVILEGE_ENABLED; =20 if (!AdjustTokenPrivileges(token, FALSE, &priv, 0, NULL, 0)) { - error_setg(&local_err, QERR_QGA_COMMAND_FAILED, + error_setg(errp, QERR_QGA_COMMAND_FAILED, "unable to acquire requested privilege"); goto out; } =20 } else { - error_setg(&local_err, QERR_QGA_COMMAND_FAILED, + error_setg(errp, QERR_QGA_COMMAND_FAILED, "failed to open privilege token"); } =20 @@ -271,25 +271,23 @@ out: if (token) { CloseHandle(token); } - error_propagate(errp, local_err); } =20 static void execute_async(DWORD WINAPI (*func)(LPVOID), LPVOID opaque, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 HANDLE thread =3D CreateThread(NULL, 0, func, opaque, 0, NULL); if (!thread) { - error_setg(&local_err, QERR_QGA_COMMAND_FAILED, + error_setg(errp, QERR_QGA_COMMAND_FAILED, "failed to dispatch asynchronous command"); - error_propagate(errp, local_err); } } =20 void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); UINT shutdown_flag =3D EWX_FORCE; =20 slog("guest-shutdown called, mode: %s", mode); @@ -308,9 +306,8 @@ void qmp_guest_shutdown(bool has_mode, const char *mode= , Error **errp) =20 /* Request a shutdown privilege, but try to shut down the system anyway. */ - acquire_privilege(SE_SHUTDOWN_NAME, &local_err); - if (local_err) { - error_propagate(errp, local_err); + acquire_privilege(SE_SHUTDOWN_NAME, errp); + if (*errp) { return; } =20 @@ -409,6 +406,7 @@ GuestFileSeek *qmp_guest_file_seek(int64_t handle, int6= 4_t offset, GuestFileWhence *whence_code, Error **errp) { + ERRP_AUTO_PROPAGATE(); GuestFileHandle *gfh; GuestFileSeek *seek_data; HANDLE fh; @@ -416,7 +414,6 @@ GuestFileSeek *qmp_guest_file_seek(int64_t handle, int6= 4_t offset, off_pos.QuadPart =3D offset; BOOL res; int whence; - Error *err =3D NULL; =20 gfh =3D guest_file_handle_find(handle, errp); if (!gfh) { @@ -424,9 +421,8 @@ GuestFileSeek *qmp_guest_file_seek(int64_t handle, int6= 4_t offset, } =20 /* We stupidly exposed 'whence':'int' in our qapi */ - whence =3D ga_parse_whence(whence_code, &err); - if (err) { - error_propagate(errp, err); + whence =3D ga_parse_whence(whence_code, errp); + if (*errp) { return NULL; } =20 @@ -792,10 +788,10 @@ out_free: static void get_single_disk_info(int disk_number, GuestDiskAddress *disk, Error **errp) { + ERRP_AUTO_PROPAGATE(); SCSI_ADDRESS addr, *scsi_ad; DWORD len; HANDLE disk_h; - Error *local_err =3D NULL; =20 scsi_ad =3D &addr; =20 @@ -807,9 +803,8 @@ static void get_single_disk_info(int disk_number, return; } =20 - get_disk_properties(disk_h, disk, &local_err); - if (local_err) { - error_propagate(errp, local_err); + get_disk_properties(disk_h, disk, errp); + if (*errp) { goto err_close; } =20 @@ -819,9 +814,8 @@ static void get_single_disk_info(int disk_number, * if that doesn't hold since that suggests some other unexpected * breakage */ - disk->pci_controller =3D get_pci_info(disk_number, &local_err); - if (local_err) { - error_propagate(errp, local_err); + disk->pci_controller =3D get_pci_info(disk_number, errp); + if (*errp) { goto err_close; } if (disk->bus_type =3D=3D GUEST_DISK_BUS_TYPE_SCSI @@ -854,7 +848,7 @@ err_close: * volume is returned for the spanned disk group (LVM) */ static GuestDiskAddressList *build_guest_disk_info(char *guid, Error **err= p) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); GuestDiskAddressList *list =3D NULL, *cur_item =3D NULL; GuestDiskAddress *disk =3D NULL; int i; @@ -900,11 +894,11 @@ static GuestDiskAddressList *build_guest_disk_info(ch= ar *guid, Error **errp) disk =3D g_malloc0(sizeof(GuestDiskAddress)); disk->has_dev =3D true; disk->dev =3D g_strdup(name); - get_single_disk_info(0xffffffff, disk, &local_err); - if (local_err) { + get_single_disk_info(0xffffffff, disk, errp); + if (*errp) { g_debug("failed to get disk info, ignoring error: %s", - error_get_pretty(local_err)); - error_free(local_err); + error_get_pretty(*errp)); + error_free_errp(errp); goto out; } list =3D g_malloc0(sizeof(*list)); @@ -936,9 +930,8 @@ static GuestDiskAddressList *build_guest_disk_info(char= *guid, Error **errp) disk->dev =3D g_strdup_printf("\\\\.\\PhysicalDrive%lu", extents->Extents[i].DiskNumber); =20 - get_single_disk_info(extents->Extents[i].DiskNumber, disk, &local_= err); - if (local_err) { - error_propagate(errp, local_err); + get_single_disk_info(extents->Extents[i].DiskNumber, disk, errp); + if (*errp) { goto out; } cur_item =3D g_malloc0(sizeof(*list)); @@ -1090,8 +1083,8 @@ int64_t qmp_guest_fsfreeze_freeze_list(bool has_mount= points, strList *mountpoints, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i; - Error *local_err =3D NULL; =20 if (!vss_initialized()) { error_setg(errp, QERR_UNSUPPORTED); @@ -1103,20 +1096,19 @@ int64_t qmp_guest_fsfreeze_freeze_list(bool has_mou= ntpoints, /* cannot risk guest agent blocking itself on a write in this state */ ga_set_frozen(ga_state); =20 - qga_vss_fsfreeze(&i, true, mountpoints, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qga_vss_fsfreeze(&i, true, mountpoints, errp); + if (*errp) { goto error; } =20 return i; =20 error: - local_err =3D NULL; - qmp_guest_fsfreeze_thaw(&local_err); - if (local_err) { - g_debug("cleanup thaw: %s", error_get_pretty(local_err)); - error_free(local_err); + *errp =3D NULL; + qmp_guest_fsfreeze_thaw(errp); + if (*errp) { + g_debug("cleanup thaw: %s", error_get_pretty(*errp)); + error_free_errp(errp); } return 0; } @@ -1281,36 +1273,33 @@ typedef enum { =20 static void check_suspend_mode(GuestSuspendMode mode, Error **errp) { + ERRP_AUTO_PROPAGATE(); SYSTEM_POWER_CAPABILITIES sys_pwr_caps; - Error *local_err =3D NULL; =20 ZeroMemory(&sys_pwr_caps, sizeof(sys_pwr_caps)); if (!GetPwrCapabilities(&sys_pwr_caps)) { - error_setg(&local_err, QERR_QGA_COMMAND_FAILED, + error_setg(errp, QERR_QGA_COMMAND_FAILED, "failed to determine guest suspend capabilities"); - goto out; + return; } =20 switch (mode) { case GUEST_SUSPEND_MODE_DISK: if (!sys_pwr_caps.SystemS4) { - error_setg(&local_err, QERR_QGA_COMMAND_FAILED, + error_setg(errp, QERR_QGA_COMMAND_FAILED, "suspend-to-disk not supported by OS"); } break; case GUEST_SUSPEND_MODE_RAM: if (!sys_pwr_caps.SystemS3) { - error_setg(&local_err, QERR_QGA_COMMAND_FAILED, + error_setg(errp, QERR_QGA_COMMAND_FAILED, "suspend-to-ram not supported by OS"); } break; default: - error_setg(&local_err, QERR_INVALID_PARAMETER_VALUE, "mode", + error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "mode", "GuestSuspendMode"); } - -out: - error_propagate(errp, local_err); } =20 static DWORD WINAPI do_suspend(LPVOID opaque) @@ -1328,32 +1317,30 @@ static DWORD WINAPI do_suspend(LPVOID opaque) =20 void qmp_guest_suspend_disk(Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); GuestSuspendMode *mode =3D g_new(GuestSuspendMode, 1); =20 *mode =3D GUEST_SUSPEND_MODE_DISK; - check_suspend_mode(*mode, &local_err); - acquire_privilege(SE_SHUTDOWN_NAME, &local_err); - execute_async(do_suspend, mode, &local_err); + check_suspend_mode(*mode, errp); + acquire_privilege(SE_SHUTDOWN_NAME, errp); + execute_async(do_suspend, mode, errp); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { g_free(mode); } } =20 void qmp_guest_suspend_ram(Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); GuestSuspendMode *mode =3D g_new(GuestSuspendMode, 1); =20 *mode =3D GUEST_SUSPEND_MODE_RAM; - check_suspend_mode(*mode, &local_err); - acquire_privilege(SE_SHUTDOWN_NAME, &local_err); - execute_async(do_suspend, mode, &local_err); + check_suspend_mode(*mode, errp); + acquire_privilege(SE_SHUTDOWN_NAME, errp); + execute_async(do_suspend, mode, errp); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { g_free(mode); } } @@ -1616,7 +1603,7 @@ int64_t qmp_guest_get_time(Error **errp) =20 void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); SYSTEMTIME ts; FILETIME tf; LONGLONG time; @@ -1681,9 +1668,8 @@ void qmp_guest_set_time(bool has_time, int64_t time_n= s, Error **errp) return; } =20 - acquire_privilege(SE_SYSTEMTIME_NAME, &local_err); - if (local_err) { - error_propagate(errp, local_err); + acquire_privilege(SE_SYSTEMTIME_NAME, errp); + if (*errp) { return; } =20 @@ -1695,10 +1681,10 @@ void qmp_guest_set_time(bool has_time, int64_t time= _ns, Error **errp) =20 GuestLogicalProcessorList *qmp_guest_get_vcpus(Error **errp) { + ERRP_AUTO_PROPAGATE(); PSYSTEM_LOGICAL_PROCESSOR_INFORMATION pslpi, ptr; DWORD length; GuestLogicalProcessorList *head, **link; - Error *local_err =3D NULL; int64_t current; =20 ptr =3D pslpi =3D NULL; @@ -1712,16 +1698,16 @@ GuestLogicalProcessorList *qmp_guest_get_vcpus(Erro= r **errp) (length > sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION))) { ptr =3D pslpi =3D g_malloc0(length); if (GetLogicalProcessorInformation(pslpi, &length) =3D=3D FALSE) { - error_setg(&local_err, "Failed to get processor information: %= d", + error_setg(errp, "Failed to get processor information: %d", (int)GetLastError()); } } else { - error_setg(&local_err, + error_setg(errp, "Failed to get processor information buffer length: %d", (int)GetLastError()); } =20 - while ((local_err =3D=3D NULL) && (length > 0)) { + while ((*errp =3D=3D NULL) && (length > 0)) { if (pslpi->Relationship =3D=3D RelationProcessorCore) { ULONG_PTR cpu_bits =3D pslpi->ProcessorMask; =20 @@ -1750,16 +1736,15 @@ GuestLogicalProcessorList *qmp_guest_get_vcpus(Erro= r **errp) =20 g_free(ptr); =20 - if (local_err =3D=3D NULL) { + if (*errp =3D=3D NULL) { if (head !=3D NULL) { return head; } /* there's no guest with zero VCPUs */ - error_setg(&local_err, "Guest reported zero VCPUs"); + error_setg(errp, "Guest reported zero VCPUs"); } =20 qapi_free_GuestLogicalProcessorList(head); - error_propagate(errp, local_err); return NULL; } =20 @@ -2186,22 +2171,20 @@ static char *ga_get_current_arch(void) =20 GuestOSInfo *qmp_guest_get_osinfo(Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); OSVERSIONINFOEXW os_version =3D {0}; bool server; char *product_name; GuestOSInfo *info; =20 - ga_get_win_version(&os_version, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ga_get_win_version(&os_version, errp); + if (*errp) { return NULL; } =20 server =3D os_version.wProductType !=3D VER_NT_WORKSTATION; - product_name =3D ga_get_win_product_name(&local_err); + product_name =3D ga_get_win_product_name(errp); if (product_name =3D=3D NULL) { - error_propagate(errp, local_err); return NULL; } =20 diff --git a/util/oslib-posix.c b/util/oslib-posix.c index f8693384fc..ad4cbe9c16 100644 --- a/util/oslib-posix.c +++ b/util/oslib-posix.c @@ -542,6 +542,7 @@ char *qemu_get_pid_name(pid_t pid) =20 pid_t qemu_fork(Error **errp) { + ERRP_AUTO_PROPAGATE(); sigset_t oldmask, newmask; struct sigaction sig_action; int saved_errno; @@ -600,10 +601,9 @@ pid_t qemu_fork(Error **errp) * propagate that to children */ sigemptyset(&newmask); if (pthread_sigmask(SIG_SETMASK, &newmask, NULL) !=3D 0) { - Error *local_err =3D NULL; - error_setg_errno(&local_err, errno, + error_setg_errno(errp, errno, "cannot unblock signals"); - error_report_err(local_err); + error_report_errp(errp); _exit(1); } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813913; cv=none; d=zoho.com; s=zohoarc; b=idWF2eWIXYuW0IxZGTnfXfT64jfiMtQcVZQvXeCZuXsXiiqlhq2WrAH8ybHyXFNEcCZrm+dqp+KAlvfRTfR0L5wkVWceFo3qCEwccDvEwkGLhYVo1AvYW5tJ1JxWsftfszHizTnmAZwSC7YZf66CncrsVUCKpjsibD+gI1+Pyts= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813913; h=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=OFlFOdTibifvA14RWI3WKsriPymOojwd38ta21wFsZE=; b=hsV1p396oTaasG7wcXmlsYeWNU0D6mDv7McpVPekaB8u4x8kWmMVRPyzJxzhi6wiOdB8LstU7NswD+TpbbVOwnxp+i6fXoZeCSaMy0dVeEHDookQzvsZCFqAuXY6BPcLptJz1oZuEcZrVDRXv6siJ6sufxE1CYQUMAxFeRwy0MA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813913835614.2105592473538; Fri, 11 Oct 2019 10:11:53 -0700 (PDT) Received: from localhost ([::1]:54412 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIySG-000204-4g for importer@patchew.org; Fri, 11 Oct 2019 13:11:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37108) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRF-0006nn-PO for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR5-0004jg-1W for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:45 -0400 Received: from relay.sw.ru ([185.231.240.75]:48052) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR4-0004Et-2r; Fri, 11 Oct 2019 12:06:34 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQe-0003XG-6g; Fri, 11 Oct 2019 19:06:08 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 033/126] ARM Machines: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:19 +0300 Message-Id: <20191011160552.22907-34-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Peter Maydell , Subbaraya Sundeep , vsementsov@virtuozzo.com, Antony Pavlov , Andrew Jeffery , Jason Wang , Alistair Francis , armbru@redhat.com, Andrew Baumann , Greg Kurz , Beniamino Galvani , qemu-arm@nongnu.org, Peter Chubb , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , "Edgar E. Iglesias" , Jean-Christophe Dubois , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Joel Stanley Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/arm/allwinner-a10.c | 27 +++++------ hw/arm/aspeed_soc.c | 1 + hw/arm/bcm2835_peripherals.c | 85 ++++++++++++++------------------ hw/arm/bcm2836.c | 41 +++++++--------- hw/arm/digic.c | 22 ++++----- hw/arm/fsl-imx25.c | 62 ++++++++++-------------- hw/arm/fsl-imx31.c | 57 +++++++++------------- hw/arm/fsl-imx6.c | 81 +++++++++++++------------------ hw/arm/integratorcp.c | 7 ++- hw/arm/msf2-soc.c | 22 ++++----- hw/arm/nrf51_soc.c | 47 ++++++++---------- hw/arm/stm32f205_soc.c | 39 ++++++--------- hw/arm/virt.c | 2 + hw/arm/xlnx-versal-virt.c | 7 ++- hw/arm/xlnx-zynqmp.c | 86 ++++++++++++++------------------- hw/cpu/realview_mpcore.c | 12 ++--- hw/display/bcm2835_fb.c | 6 +-- hw/dma/bcm2835_dma.c | 6 +-- hw/dma/xilinx_axidma.c | 22 ++++----- hw/gpio/aspeed_gpio.c | 7 ++- hw/gpio/bcm2835_gpio.c | 10 ++-- hw/intc/arm_gic.c | 7 ++- hw/intc/arm_gic_kvm.c | 12 ++--- hw/intc/arm_gicv3.c | 12 ++--- hw/intc/arm_gicv3_its_kvm.c | 7 ++- hw/intc/arm_gicv3_kvm.c | 17 +++---- hw/intc/armv7m_nvic.c | 12 ++--- hw/intc/realview_gic.c | 7 ++- hw/microblaze/xlnx-zynqmp-pmu.c | 12 ++--- hw/misc/bcm2835_mbox.c | 6 +-- hw/misc/bcm2835_property.c | 10 ++-- hw/misc/msf2-sysreg.c | 1 + hw/net/xilinx_axienet.c | 22 ++++----- hw/nvram/nrf51_nvm.c | 7 ++- hw/timer/aspeed_timer.c | 6 +-- hw/watchdog/wdt_aspeed.c | 5 +- 36 files changed, 332 insertions(+), 460 deletions(-) diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c index 118032c8c7..d33af2939c 100644 --- a/hw/arm/allwinner-a10.c +++ b/hw/arm/allwinner-a10.c @@ -47,23 +47,21 @@ static void aw_a10_init(Object *obj) =20 static void aw_a10_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); AwA10State *s =3D AW_A10(dev); SysBusDevice *sysbusdev; uint8_t i; qemu_irq fiq, irq; - Error *err =3D NULL; =20 - object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cpu), true, "realized", errp); + if (*errp) { return; } irq =3D qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_IRQ); fiq =3D qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ); =20 - object_property_set_bool(OBJECT(&s->intc), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->intc), true, "realized", errp); + if (*errp) { return; } sysbusdev =3D SYS_BUS_DEVICE(&s->intc); @@ -74,9 +72,8 @@ static void aw_a10_realize(DeviceState *dev, Error **errp) s->irq[i] =3D qdev_get_gpio_in(DEVICE(&s->intc), i); } =20 - object_property_set_bool(OBJECT(&s->timer), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->timer), true, "realized", errp); + if (*errp) { return; } sysbusdev =3D SYS_BUS_DEVICE(&s->timer); @@ -98,18 +95,16 @@ static void aw_a10_realize(DeviceState *dev, Error **er= rp) qemu_check_nic_model(&nd_table[0], TYPE_AW_EMAC); qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]); } - object_property_set_bool(OBJECT(&s->emac), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->emac), true, "realized", errp); + if (*errp) { return; } sysbusdev =3D SYS_BUS_DEVICE(&s->emac); sysbus_mmio_map(sysbusdev, 0, AW_A10_EMAC_BASE); sysbus_connect_irq(sysbusdev, 0, s->irq[55]); =20 - object_property_set_bool(OBJECT(&s->sata), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->sata), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->sata), 0, AW_A10_SATA_BASE); diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c index cf1d0cf921..929ed713ac 100644 --- a/hw/arm/aspeed_soc.c +++ b/hw/arm/aspeed_soc.c @@ -234,6 +234,7 @@ static void aspeed_soc_init(Object *obj) =20 static void aspeed_soc_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i; AspeedSoCState *s =3D ASPEED_SOC(dev); AspeedSoCClass *sc =3D ASPEED_SOC_GET_CLASS(s); diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c index 8984e2e91f..36b9e9b9cf 100644 --- a/hw/arm/bcm2835_peripherals.c +++ b/hw/arm/bcm2835_peripherals.c @@ -109,17 +109,17 @@ static void bcm2835_peripherals_init(Object *obj) =20 static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); BCM2835PeripheralState *s =3D BCM2835_PERIPHERALS(dev); Object *obj; MemoryRegion *ram; - Error *err =3D NULL; uint64_t ram_size, vcram_size; int n; =20 - obj =3D object_property_get_link(OBJECT(dev), "ram", &err); + obj =3D object_property_get_link(OBJECT(dev), "ram", errp); if (obj =3D=3D NULL) { error_setg(errp, "%s: required ram link not found: %s", - __func__, error_get_pretty(err)); + __func__, error_get_pretty(*errp)); return; } =20 @@ -143,9 +143,8 @@ static void bcm2835_peripherals_realize(DeviceState *de= v, Error **errp) } =20 /* Interrupt Controller */ - object_property_set_bool(OBJECT(&s->ic), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->ic), true, "realized", errp); + if (*errp) { return; } =20 @@ -155,9 +154,8 @@ static void bcm2835_peripherals_realize(DeviceState *de= v, Error **errp) =20 /* UART0 */ qdev_prop_set_chr(DEVICE(&s->uart0), "chardev", serial_hd(0)); - object_property_set_bool(OBJECT(&s->uart0), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->uart0), true, "realized", errp); + if (*errp) { return; } =20 @@ -169,9 +167,8 @@ static void bcm2835_peripherals_realize(DeviceState *de= v, Error **errp) /* AUX / UART1 */ qdev_prop_set_chr(DEVICE(&s->aux), "chardev", serial_hd(1)); =20 - object_property_set_bool(OBJECT(&s->aux), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->aux), true, "realized", errp); + if (*errp) { return; } =20 @@ -182,9 +179,8 @@ static void bcm2835_peripherals_realize(DeviceState *de= v, Error **errp) INTERRUPT_AUX)); =20 /* Mailboxes */ - object_property_set_bool(OBJECT(&s->mboxes), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->mboxes), true, "realized", errp); + if (*errp) { return; } =20 @@ -195,22 +191,19 @@ static void bcm2835_peripherals_realize(DeviceState *= dev, Error **errp) INTERRUPT_ARM_MAILBOX)); =20 /* Framebuffer */ - vcram_size =3D object_property_get_uint(OBJECT(s), "vcram-size", &err); - if (err) { - error_propagate(errp, err); + vcram_size =3D object_property_get_uint(OBJECT(s), "vcram-size", errp); + if (*errp) { return; } =20 object_property_set_uint(OBJECT(&s->fb), ram_size - vcram_size, - "vcram-base", &err); - if (err) { - error_propagate(errp, err); + "vcram-base", errp); + if (*errp) { return; } =20 - object_property_set_bool(OBJECT(&s->fb), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->fb), true, "realized", errp); + if (*errp) { return; } =20 @@ -220,9 +213,8 @@ static void bcm2835_peripherals_realize(DeviceState *de= v, Error **errp) qdev_get_gpio_in(DEVICE(&s->mboxes), MBOX_CHAN_FB)); =20 /* Property channel */ - object_property_set_bool(OBJECT(&s->property), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->property), true, "realized", errp); + if (*errp) { return; } =20 @@ -233,9 +225,8 @@ static void bcm2835_peripherals_realize(DeviceState *de= v, Error **errp) qdev_get_gpio_in(DEVICE(&s->mboxes), MBOX_CHAN_PROPE= RTY)); =20 /* Random Number Generator */ - object_property_set_bool(OBJECT(&s->rng), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->rng), true, "realized", errp); + if (*errp) { return; } =20 @@ -252,19 +243,17 @@ static void bcm2835_peripherals_realize(DeviceState *= dev, Error **errp) * For the exact details please refer to the Arasan documentation: * SD3.0_Host_AHB_eMMC4.4_Usersguide_ver5.9_jan11_10.pdf */ - object_property_set_uint(OBJECT(&s->sdhci), 3, "sd-spec-version", &err= ); + object_property_set_uint(OBJECT(&s->sdhci), 3, "sd-spec-version", errp= ); object_property_set_uint(OBJECT(&s->sdhci), BCM2835_SDHC_CAPAREG, "cap= areg", - &err); + errp); object_property_set_bool(OBJECT(&s->sdhci), true, "pending-insert-quir= k", - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } =20 - object_property_set_bool(OBJECT(&s->sdhci), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->sdhci), true, "realized", errp); + if (*errp) { return; } =20 @@ -275,9 +264,8 @@ static void bcm2835_peripherals_realize(DeviceState *de= v, Error **errp) INTERRUPT_ARASANSDIO)); =20 /* SDHOST */ - object_property_set_bool(OBJECT(&s->sdhost), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->sdhost), true, "realized", errp); + if (*errp) { return; } =20 @@ -288,9 +276,8 @@ static void bcm2835_peripherals_realize(DeviceState *de= v, Error **errp) INTERRUPT_SDIO)); =20 /* DMA Channels */ - object_property_set_bool(OBJECT(&s->dma), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->dma), true, "realized", errp); + if (*errp) { return; } =20 @@ -307,9 +294,8 @@ static void bcm2835_peripherals_realize(DeviceState *de= v, Error **errp) } =20 /* GPIO */ - object_property_set_bool(OBJECT(&s->gpio), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gpio), true, "realized", errp); + if (*errp) { return; } =20 @@ -317,9 +303,8 @@ static void bcm2835_peripherals_realize(DeviceState *de= v, Error **errp) sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->gpio), 0)); =20 object_property_add_alias(OBJECT(s), "sd-bus", OBJECT(&s->gpio), "sd-b= us", - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } } diff --git a/hw/arm/bcm2836.c b/hw/arm/bcm2836.c index 493a913f89..c8cfdd4ee9 100644 --- a/hw/arm/bcm2836.c +++ b/hw/arm/bcm2836.c @@ -68,38 +68,35 @@ static void bcm2836_init(Object *obj) =20 static void bcm2836_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); BCM283XState *s =3D BCM283X(dev); BCM283XClass *bc =3D BCM283X_GET_CLASS(dev); const BCM283XInfo *info =3D bc->info; Object *obj; - Error *err =3D NULL; int n; =20 /* common peripherals from bcm2835 */ =20 - obj =3D object_property_get_link(OBJECT(dev), "ram", &err); + obj =3D object_property_get_link(OBJECT(dev), "ram", errp); if (obj =3D=3D NULL) { error_setg(errp, "%s: required ram link not found: %s", - __func__, error_get_pretty(err)); + __func__, error_get_pretty(*errp)); return; } =20 - object_property_add_const_link(OBJECT(&s->peripherals), "ram", obj, &e= rr); - if (err) { - error_propagate(errp, err); + object_property_add_const_link(OBJECT(&s->peripherals), "ram", obj, er= rp); + if (*errp) { return; } =20 - object_property_set_bool(OBJECT(&s->peripherals), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->peripherals), true, "realized", er= rp); + if (*errp) { return; } =20 object_property_add_alias(OBJECT(s), "sd-bus", OBJECT(&s->peripherals), - "sd-bus", &err); - if (err) { - error_propagate(errp, err); + "sd-bus", errp); + if (*errp) { return; } =20 @@ -107,9 +104,8 @@ static void bcm2836_realize(DeviceState *dev, Error **e= rrp) BCM2836_PERI_BASE, 1); =20 /* bcm2836 interrupt controller (and mailboxes, etc.) */ - object_property_set_bool(OBJECT(&s->control), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->control), true, "realized", errp); + if (*errp) { return; } =20 @@ -127,23 +123,20 @@ static void bcm2836_realize(DeviceState *dev, Error *= *errp) /* set periphbase/CBAR value for CPU-local registers */ object_property_set_int(OBJECT(&s->cpus[n]), BCM2836_PERI_BASE + MCORE_OFFSET, - "reset-cbar", &err); - if (err) { - error_propagate(errp, err); + "reset-cbar", errp); + if (*errp) { return; } =20 /* start powered off if not enabled */ object_property_set_bool(OBJECT(&s->cpus[n]), n >=3D s->enabled_cp= us, - "start-powered-off", &err); - if (err) { - error_propagate(errp, err); + "start-powered-off", errp); + if (*errp) { return; } =20 - object_property_set_bool(OBJECT(&s->cpus[n]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cpus[n]), true, "realized", er= rp); + if (*errp) { return; } =20 diff --git a/hw/arm/digic.c b/hw/arm/digic.c index 22434a65a2..25e872305d 100644 --- a/hw/arm/digic.c +++ b/hw/arm/digic.c @@ -55,27 +55,24 @@ static void digic_init(Object *obj) =20 static void digic_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); DigicState *s =3D DIGIC(dev); - Error *err =3D NULL; SysBusDevice *sbd; int i; =20 - object_property_set_bool(OBJECT(&s->cpu), true, "reset-hivecs", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cpu), true, "reset-hivecs", errp); + if (*errp) { return; } =20 - object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cpu), true, "realized", errp); + if (*errp) { return; } =20 for (i =3D 0; i < DIGIC4_NB_TIMERS; i++) { - object_property_set_bool(OBJECT(&s->timer[i]), true, "realized", &= err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->timer[i]), true, "realized", e= rrp); + if (*errp) { return; } =20 @@ -84,9 +81,8 @@ static void digic_realize(DeviceState *dev, Error **errp) } =20 qdev_prop_set_chr(DEVICE(&s->uart), "chardev", serial_hd(0)); - object_property_set_bool(OBJECT(&s->uart), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->uart), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c index 3cb5a8fdfd..22a8e889bf 100644 --- a/hw/arm/fsl-imx25.c +++ b/hw/arm/fsl-imx25.c @@ -75,19 +75,17 @@ static void fsl_imx25_init(Object *obj) =20 static void fsl_imx25_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); FslIMX25State *s =3D FSL_IMX25(dev); uint8_t i; - Error *err =3D NULL; =20 - object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cpu), true, "realized", errp); + if (*errp) { return; } =20 - object_property_set_bool(OBJECT(&s->avic), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->avic), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->avic), 0, FSL_IMX25_AVIC_ADDR); @@ -96,9 +94,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error **e= rrp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->avic), 1, qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ)); =20 - object_property_set_bool(OBJECT(&s->ccm), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->ccm), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->ccm), 0, FSL_IMX25_CCM_ADDR); @@ -118,9 +115,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error *= *errp) =20 qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i)); =20 - object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", er= rp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, serial_table[i].ad= dr); @@ -143,9 +139,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error *= *errp) =20 s->gpt[i].ccm =3D IMX_CCM(&s->ccm); =20 - object_property_set_bool(OBJECT(&s->gpt[i]), true, "realized", &er= r); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gpt[i]), true, "realized", err= p); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpt[i]), 0, gpt_table[i].addr); @@ -166,9 +161,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error *= *errp) =20 s->epit[i].ccm =3D IMX_CCM(&s->ccm); =20 - object_property_set_bool(OBJECT(&s->epit[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->epit[i]), true, "realized", er= rp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->epit[i]), 0, epit_table[i].addr= ); @@ -179,9 +173,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error *= *errp) =20 qdev_set_nic_properties(DEVICE(&s->fec), &nd_table[0]); =20 - object_property_set_bool(OBJECT(&s->fec), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->fec), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->fec), 0, FSL_IMX25_FEC_ADDR); @@ -200,9 +193,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error *= *errp) { FSL_IMX25_I2C3_ADDR, FSL_IMX25_I2C3_IRQ } }; =20 - object_property_set_bool(OBJECT(&s->i2c[i]), true, "realized", &er= r); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->i2c[i]), true, "realized", err= p); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->i2c[i]), 0, i2c_table[i].addr); @@ -223,9 +215,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error *= *errp) { FSL_IMX25_GPIO4_ADDR, FSL_IMX25_GPIO4_IRQ } }; =20 - object_property_set_bool(OBJECT(&s->gpio[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gpio[i]), true, "realized", er= rp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpio[i]), 0, gpio_table[i].addr= ); @@ -237,17 +228,15 @@ static void fsl_imx25_realize(DeviceState *dev, Error= **errp) =20 /* initialize 2 x 16 KB ROM */ memory_region_init_rom(&s->rom[0], NULL, - "imx25.rom0", FSL_IMX25_ROM0_SIZE, &err); - if (err) { - error_propagate(errp, err); + "imx25.rom0", FSL_IMX25_ROM0_SIZE, errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), FSL_IMX25_ROM0_ADDR, &s->rom[0]); memory_region_init_rom(&s->rom[1], NULL, - "imx25.rom1", FSL_IMX25_ROM1_SIZE, &err); - if (err) { - error_propagate(errp, err); + "imx25.rom1", FSL_IMX25_ROM1_SIZE, errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), FSL_IMX25_ROM1_ADDR, @@ -255,9 +244,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error *= *errp) =20 /* initialize internal RAM (128 KB) */ memory_region_init_ram(&s->iram, NULL, "imx25.iram", FSL_IMX25_IRAM_SI= ZE, - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), FSL_IMX25_IRAM_ADDR, diff --git a/hw/arm/fsl-imx31.c b/hw/arm/fsl-imx31.c index 55e90d104b..d818d8882a 100644 --- a/hw/arm/fsl-imx31.c +++ b/hw/arm/fsl-imx31.c @@ -67,19 +67,17 @@ static void fsl_imx31_init(Object *obj) =20 static void fsl_imx31_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); FslIMX31State *s =3D FSL_IMX31(dev); uint16_t i; - Error *err =3D NULL; =20 - object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cpu), true, "realized", errp); + if (*errp) { return; } =20 - object_property_set_bool(OBJECT(&s->avic), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->avic), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->avic), 0, FSL_IMX31_AVIC_ADDR); @@ -88,9 +86,8 @@ static void fsl_imx31_realize(DeviceState *dev, Error **e= rrp) sysbus_connect_irq(SYS_BUS_DEVICE(&s->avic), 1, qdev_get_gpio_in(DEVICE(&s->cpu), ARM_CPU_FIQ)); =20 - object_property_set_bool(OBJECT(&s->ccm), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->ccm), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->ccm), 0, FSL_IMX31_CCM_ADDR); @@ -107,9 +104,8 @@ static void fsl_imx31_realize(DeviceState *dev, Error *= *errp) =20 qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i)); =20 - object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", er= rp); + if (*errp) { return; } =20 @@ -121,9 +117,8 @@ static void fsl_imx31_realize(DeviceState *dev, Error *= *errp) =20 s->gpt.ccm =3D IMX_CCM(&s->ccm); =20 - object_property_set_bool(OBJECT(&s->gpt), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gpt), true, "realized", errp); + if (*errp) { return; } =20 @@ -143,9 +138,8 @@ static void fsl_imx31_realize(DeviceState *dev, Error *= *errp) =20 s->epit[i].ccm =3D IMX_CCM(&s->ccm); =20 - object_property_set_bool(OBJECT(&s->epit[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->epit[i]), true, "realized", er= rp); + if (*errp) { return; } =20 @@ -167,9 +161,8 @@ static void fsl_imx31_realize(DeviceState *dev, Error *= *errp) }; =20 /* Initialize the I2C */ - object_property_set_bool(OBJECT(&s->i2c[i]), true, "realized", &er= r); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->i2c[i]), true, "realized", err= p); + if (*errp) { return; } /* Map I2C memory */ @@ -193,9 +186,8 @@ static void fsl_imx31_realize(DeviceState *dev, Error *= *errp) =20 object_property_set_bool(OBJECT(&s->gpio[i]), false, "has-edge-sel= ", &error_abort); - object_property_set_bool(OBJECT(&s->gpio[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gpio[i]), true, "realized", er= rp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpio[i]), 0, gpio_table[i].addr= ); @@ -207,9 +199,8 @@ static void fsl_imx31_realize(DeviceState *dev, Error *= *errp) =20 /* On a real system, the first 16k is a `secure boot rom' */ memory_region_init_rom(&s->secure_rom, NULL, "imx31.secure_rom", - FSL_IMX31_SECURE_ROM_SIZE, &err); - if (err) { - error_propagate(errp, err); + FSL_IMX31_SECURE_ROM_SIZE, errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), FSL_IMX31_SECURE_ROM_= ADDR, @@ -217,9 +208,8 @@ static void fsl_imx31_realize(DeviceState *dev, Error *= *errp) =20 /* There is also a 16k ROM */ memory_region_init_rom(&s->rom, NULL, "imx31.rom", - FSL_IMX31_ROM_SIZE, &err); - if (err) { - error_propagate(errp, err); + FSL_IMX31_ROM_SIZE, errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), FSL_IMX31_ROM_ADDR, @@ -227,9 +217,8 @@ static void fsl_imx31_realize(DeviceState *dev, Error *= *errp) =20 /* initialize internal RAM (16 KB) */ memory_region_init_ram(&s->iram, NULL, "imx31.iram", FSL_IMX31_IRAM_SI= ZE, - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), FSL_IMX31_IRAM_ADDR, diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index 552145b24e..d2ac86dfda 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -97,10 +97,10 @@ static void fsl_imx6_init(Object *obj) =20 static void fsl_imx6_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(qdev_get_machine()); FslIMX6State *s =3D FSL_IMX6(dev); uint16_t i; - Error *err =3D NULL; unsigned int smp_cpus =3D ms->smp.cpus; =20 if (smp_cpus > FSL_IMX6_NUM_CPUS) { @@ -123,9 +123,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) "start-powered-off", &error_abort); } =20 - object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &er= r); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", err= p); + if (*errp) { return; } } @@ -137,9 +136,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) FSL_IMX6_MAX_IRQ + GIC_INTERNAL, "num-irq", &error_abort); =20 - object_property_set_bool(OBJECT(&s->a9mpcore), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->a9mpcore), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->a9mpcore), 0, FSL_IMX6_A9MPCORE_ADD= R); @@ -151,16 +149,14 @@ static void fsl_imx6_realize(DeviceState *dev, Error = **errp) qdev_get_gpio_in(DEVICE(&s->cpu[i]), ARM_CPU_FI= Q)); } =20 - object_property_set_bool(OBJECT(&s->ccm), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->ccm), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->ccm), 0, FSL_IMX6_CCM_ADDR); =20 - object_property_set_bool(OBJECT(&s->src), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->src), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->src), 0, FSL_IMX6_SRC_ADDR); @@ -180,9 +176,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) =20 qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i)); =20 - object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", er= rp); + if (*errp) { return; } =20 @@ -194,9 +189,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) =20 s->gpt.ccm =3D IMX_CCM(&s->ccm); =20 - object_property_set_bool(OBJECT(&s->gpt), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gpt), true, "realized", errp); + if (*errp) { return; } =20 @@ -217,9 +211,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) =20 s->epit[i].ccm =3D IMX_CCM(&s->ccm); =20 - object_property_set_bool(OBJECT(&s->epit[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->epit[i]), true, "realized", er= rp); + if (*errp) { return; } =20 @@ -240,9 +233,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) { FSL_IMX6_I2C3_ADDR, FSL_IMX6_I2C3_IRQ } }; =20 - object_property_set_bool(OBJECT(&s->i2c[i]), true, "realized", &er= r); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->i2c[i]), true, "realized", err= p); + if (*errp) { return; } =20 @@ -300,9 +292,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) &error_abort); object_property_set_bool(OBJECT(&s->gpio[i]), true, "has-upper-pin= -irq", &error_abort); - object_property_set_bool(OBJECT(&s->gpio[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gpio[i]), true, "realized", er= rp); + if (*errp) { return; } =20 @@ -329,12 +320,11 @@ static void fsl_imx6_realize(DeviceState *dev, Error = **errp) =20 /* UHS-I SDIO3.0 SDR104 1.8V ADMA */ object_property_set_uint(OBJECT(&s->esdhc[i]), 3, "sd-spec-version= ", - &err); + errp); object_property_set_uint(OBJECT(&s->esdhc[i]), IMX6_ESDHC_CAPABILI= TIES, - "capareg", &err); - object_property_set_bool(OBJECT(&s->esdhc[i]), true, "realized", &= err); - if (err) { - error_propagate(errp, err); + "capareg", errp); + object_property_set_bool(OBJECT(&s->esdhc[i]), true, "realized", e= rrp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->esdhc[i]), 0, esdhc_table[i].ad= dr); @@ -357,9 +347,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) }; =20 /* Initialize the SPI */ - object_property_set_bool(OBJECT(&s->spi[i]), true, "realized", &er= r); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->spi[i]), true, "realized", err= p); + if (*errp) { return; } =20 @@ -370,9 +359,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) } =20 qdev_set_nic_properties(DEVICE(&s->eth), &nd_table[0]); - object_property_set_bool(OBJECT(&s->eth), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->eth), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->eth), 0, FSL_IMX6_ENET_ADDR); @@ -385,9 +373,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) =20 /* ROM memory */ memory_region_init_rom(&s->rom, NULL, "imx6.rom", - FSL_IMX6_ROM_SIZE, &err); - if (err) { - error_propagate(errp, err); + FSL_IMX6_ROM_SIZE, errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), FSL_IMX6_ROM_ADDR, @@ -395,9 +382,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) =20 /* CAAM memory */ memory_region_init_rom(&s->caam, NULL, "imx6.caam", - FSL_IMX6_CAAM_MEM_SIZE, &err); - if (err) { - error_propagate(errp, err); + FSL_IMX6_CAAM_MEM_SIZE, errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), FSL_IMX6_CAAM_MEM_ADD= R, @@ -405,9 +391,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) =20 /* OCRAM memory */ memory_region_init_ram(&s->ocram, NULL, "imx6.ocram", FSL_IMX6_OCRAM_S= IZE, - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), FSL_IMX6_OCRAM_ADDR, diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index 524970840d..5049a78fb9 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -284,14 +284,13 @@ static void integratorcm_init(Object *obj) =20 static void integratorcm_realize(DeviceState *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); IntegratorCMState *s =3D INTEGRATOR_CM(d); SysBusDevice *dev =3D SYS_BUS_DEVICE(d); - Error *local_err =3D NULL; =20 memory_region_init_ram(&s->flash, OBJECT(d), "integrator.flash", 0x100= 000, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } =20 diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c index 008fd9327a..82808c4b15 100644 --- a/hw/arm/msf2-soc.c +++ b/hw/arm/msf2-soc.c @@ -85,10 +85,10 @@ static void m2sxxx_soc_initfn(Object *obj) =20 static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp) { + ERRP_AUTO_PROPAGATE(); MSF2State *s =3D MSF2_SOC(dev_soc); DeviceState *dev, *armv7m; SysBusDevice *busdev; - Error *err =3D NULL; int i; =20 MemoryRegion *system_memory =3D get_system_memory(); @@ -120,9 +120,8 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Er= ror **errp) qdev_prop_set_bit(armv7m, "enable-bitband", true); object_property_set_link(OBJECT(&s->armv7m), OBJECT(get_system_memory(= )), "memory", &error_abort); - object_property_set_bool(OBJECT(&s->armv7m), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->armv7m), true, "realized", errp); + if (*errp) { return; } =20 @@ -148,9 +147,8 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Er= ror **errp) dev =3D DEVICE(&s->timer); /* APB0 clock is the timer input clock */ qdev_prop_set_uint32(dev, "clock-frequency", s->m3clk / s->apb0div); - object_property_set_bool(OBJECT(&s->timer), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->timer), true, "realized", errp); + if (*errp) { return; } busdev =3D SYS_BUS_DEVICE(dev); @@ -163,9 +161,8 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Er= ror **errp) dev =3D DEVICE(&s->sysreg); qdev_prop_set_uint32(dev, "apb0divisor", s->apb0div); qdev_prop_set_uint32(dev, "apb1divisor", s->apb1div); - object_property_set_bool(OBJECT(&s->sysreg), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->sysreg), true, "realized", errp); + if (*errp) { return; } busdev =3D SYS_BUS_DEVICE(dev); @@ -174,9 +171,8 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Er= ror **errp) for (i =3D 0; i < MSF2_NUM_SPIS; i++) { gchar *bus_name; =20 - object_property_set_bool(OBJECT(&s->spi[i]), true, "realized", &er= r); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->spi[i]), true, "realized", err= p); + if (*errp) { return; } =20 diff --git a/hw/arm/nrf51_soc.c b/hw/arm/nrf51_soc.c index 74029169d0..b7025d0830 100644 --- a/hw/arm/nrf51_soc.c +++ b/hw/arm/nrf51_soc.c @@ -54,9 +54,9 @@ static const MemoryRegionOps clock_ops =3D { =20 static void nrf51_soc_realize(DeviceState *dev_soc, Error **errp) { + ERRP_AUTO_PROPAGATE(); NRF51State *s =3D NRF51_SOC(dev_soc); MemoryRegion *mr; - Error *err =3D NULL; uint8_t i =3D 0; hwaddr base_addr =3D 0; =20 @@ -66,31 +66,27 @@ static void nrf51_soc_realize(DeviceState *dev_soc, Err= or **errp) } =20 object_property_set_link(OBJECT(&s->cpu), OBJECT(&s->container), "memo= ry", - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } - object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cpu), true, "realized", errp); + if (*errp) { return; } =20 memory_region_add_subregion_overlap(&s->container, 0, s->board_memory,= -1); =20 memory_region_init_ram(&s->sram, OBJECT(s), "nrf51.sram", s->sram_size, - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } memory_region_add_subregion(&s->container, NRF51_SRAM_BASE, &s->sram); =20 /* UART */ - object_property_set_bool(OBJECT(&s->uart), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->uart), true, "realized", errp); + if (*errp) { return; } mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->uart), 0); @@ -100,9 +96,8 @@ static void nrf51_soc_realize(DeviceState *dev_soc, Erro= r **errp) BASE_TO_IRQ(NRF51_UART_BASE))); =20 /* RNG */ - object_property_set_bool(OBJECT(&s->rng), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->rng), true, "realized", errp); + if (*errp) { return; } =20 @@ -114,15 +109,13 @@ static void nrf51_soc_realize(DeviceState *dev_soc, E= rror **errp) =20 /* UICR, FICR, NVMC, FLASH */ object_property_set_uint(OBJECT(&s->nvm), s->flash_size, "flash-size", - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } =20 - object_property_set_bool(OBJECT(&s->nvm), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->nvm), true, "realized", errp); + if (*errp) { return; } =20 @@ -136,9 +129,8 @@ static void nrf51_soc_realize(DeviceState *dev_soc, Err= or **errp) memory_region_add_subregion_overlap(&s->container, NRF51_FLASH_BASE, m= r, 0); =20 /* GPIO */ - object_property_set_bool(OBJECT(&s->gpio), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gpio), true, "realized", errp); + if (*errp) { return; } =20 @@ -150,9 +142,8 @@ static void nrf51_soc_realize(DeviceState *dev_soc, Err= or **errp) =20 /* TIMER */ for (i =3D 0; i < NRF51_NUM_TIMERS; i++) { - object_property_set_bool(OBJECT(&s->timer[i]), true, "realized", &= err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->timer[i]), true, "realized", e= rrp); + if (*errp) { return; } =20 diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c index f5a5c2d80c..f475ed0661 100644 --- a/hw/arm/stm32f205_soc.c +++ b/hw/arm/stm32f205_soc.c @@ -82,10 +82,10 @@ static void stm32f205_soc_initfn(Object *obj) =20 static void stm32f205_soc_realize(DeviceState *dev_soc, Error **errp) { + ERRP_AUTO_PROPAGATE(); STM32F205State *s =3D STM32F205_SOC(dev_soc); DeviceState *dev, *armv7m; SysBusDevice *busdev; - Error *err =3D NULL; int i; =20 MemoryRegion *system_memory =3D get_system_memory(); @@ -114,17 +114,15 @@ static void stm32f205_soc_realize(DeviceState *dev_so= c, Error **errp) qdev_prop_set_bit(armv7m, "enable-bitband", true); object_property_set_link(OBJECT(&s->armv7m), OBJECT(get_system_memory(= )), "memory", &error_abort); - object_property_set_bool(OBJECT(&s->armv7m), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->armv7m), true, "realized", errp); + if (*errp) { return; } =20 /* System configuration controller */ dev =3D DEVICE(&s->syscfg); - object_property_set_bool(OBJECT(&s->syscfg), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->syscfg), true, "realized", errp); + if (*errp) { return; } busdev =3D SYS_BUS_DEVICE(dev); @@ -135,9 +133,8 @@ static void stm32f205_soc_realize(DeviceState *dev_soc,= Error **errp) for (i =3D 0; i < STM_NUM_USARTS; i++) { dev =3D DEVICE(&(s->usart[i])); qdev_prop_set_chr(dev, "chardev", serial_hd(i)); - object_property_set_bool(OBJECT(&s->usart[i]), true, "realized", &= err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->usart[i]), true, "realized", e= rrp); + if (*errp) { return; } busdev =3D SYS_BUS_DEVICE(dev); @@ -149,9 +146,8 @@ static void stm32f205_soc_realize(DeviceState *dev_soc,= Error **errp) for (i =3D 0; i < STM_NUM_TIMERS; i++) { dev =3D DEVICE(&(s->timer[i])); qdev_prop_set_uint64(dev, "clock-frequency", 1000000000); - object_property_set_bool(OBJECT(&s->timer[i]), true, "realized", &= err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->timer[i]), true, "realized", e= rrp); + if (*errp) { return; } busdev =3D SYS_BUS_DEVICE(dev); @@ -161,10 +157,9 @@ static void stm32f205_soc_realize(DeviceState *dev_soc= , Error **errp) =20 /* ADC 1 to 3 */ object_property_set_int(OBJECT(s->adc_irqs), STM_NUM_ADCS, - "num-lines", &err); - object_property_set_bool(OBJECT(s->adc_irqs), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "num-lines", errp); + object_property_set_bool(OBJECT(s->adc_irqs), true, "realized", errp); + if (*errp) { return; } qdev_connect_gpio_out(DEVICE(s->adc_irqs), 0, @@ -172,9 +167,8 @@ static void stm32f205_soc_realize(DeviceState *dev_soc,= Error **errp) =20 for (i =3D 0; i < STM_NUM_ADCS; i++) { dev =3D DEVICE(&(s->adc[i])); - object_property_set_bool(OBJECT(&s->adc[i]), true, "realized", &er= r); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->adc[i]), true, "realized", err= p); + if (*errp) { return; } busdev =3D SYS_BUS_DEVICE(dev); @@ -186,9 +180,8 @@ static void stm32f205_soc_realize(DeviceState *dev_soc,= Error **errp) /* SPI 1 and 2 */ for (i =3D 0; i < STM_NUM_SPIS; i++) { dev =3D DEVICE(&(s->spi[i])); - object_property_set_bool(OBJECT(&s->spi[i]), true, "realized", &er= r); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->spi[i]), true, "realized", err= p); + if (*errp) { return; } busdev =3D SYS_BUS_DEVICE(dev); diff --git a/hw/arm/virt.c b/hw/arm/virt.c index d74538b021..ce2e57fd59 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1793,6 +1793,7 @@ static char *virt_get_gic_version(Object *obj, Error = **errp) =20 static void virt_set_gic_version(Object *obj, const char *value, Error **e= rrp) { + ERRP_AUTO_PROPAGATE(); VirtMachineState *vms =3D VIRT_MACHINE(obj); =20 if (!strcmp(value, "3")) { @@ -1825,6 +1826,7 @@ static char *virt_get_iommu(Object *obj, Error **errp) =20 static void virt_set_iommu(Object *obj, const char *value, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtMachineState *vms =3D VIRT_MACHINE(obj); =20 if (!strcmp(value, "smmuv3")) { diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 462493c467..7f30e56dc7 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -232,13 +232,12 @@ static void fdt_add_gem_nodes(VersalVirt *s) =20 static void fdt_nop_memory_nodes(void *fdt, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); char **node_path; int n =3D 0; =20 - node_path =3D qemu_fdt_node_unit_path(fdt, "memory", &err); - if (err) { - error_propagate(errp, err); + node_path =3D qemu_fdt_node_unit_path(fdt, "memory", errp); + if (*errp) { return; } while (node_path[n]) { diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index fb03c60ebb..3fe46b265b 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -176,7 +176,7 @@ static inline int arm_gic_ppi_index(int cpu_nr, int ppi= _index) static void xlnx_zynqmp_create_rpu(MachineState *ms, XlnxZynqMPState *s, const char *boot_cpu, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); int i; int num_rpus =3D MIN(ms->smp.cpus - XLNX_ZYNQMP_NUM_APU_CPUS, XLNX_ZYNQMP_NUM_RPU_CPUS); @@ -212,9 +212,8 @@ static void xlnx_zynqmp_create_rpu(MachineState *ms, Xl= nxZynqMPState *s, object_property_set_bool(OBJECT(&s->rpu_cpu[i]), true, "reset-hive= cs", &error_abort); object_property_set_bool(OBJECT(&s->rpu_cpu[i]), true, "realized", - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } } @@ -294,6 +293,7 @@ static void xlnx_zynqmp_init(Object *obj) =20 static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(qdev_get_machine()); XlnxZynqMPState *s =3D XLNX_ZYNQMP(dev); MemoryRegion *system_memory =3D get_system_memory(); @@ -303,7 +303,6 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) const char *boot_cpu =3D s->boot_cpu ? s->boot_cpu : "apu-cpu[0]"; ram_addr_t ddr_low_size, ddr_high_size; qemu_irq gic_spi[GIC_NUM_SPI_INTR]; - Error *err =3D NULL; =20 ram_size =3D memory_region_size(s->ddr_ram); =20 @@ -384,16 +383,14 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Err= or **errp) object_property_set_int(OBJECT(&s->apu_cpu[i]), num_apus, "core-count", &error_abort); object_property_set_bool(OBJECT(&s->apu_cpu[i]), true, "realized", - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } } =20 - object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gic), true, "realized", errp); + if (*errp) { return; } =20 @@ -461,9 +458,8 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) "RPUs just use -smp 6."); } =20 - xlnx_zynqmp_create_rpu(ms, s, boot_cpu, &err); - if (err) { - error_propagate(errp, err); + xlnx_zynqmp_create_rpu(ms, s, boot_cpu, errp); + if (*errp) { return; } =20 @@ -487,9 +483,8 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) &error_abort); object_property_set_int(OBJECT(&s->gem[i]), 2, "num-priority-queue= s", &error_abort); - object_property_set_bool(OBJECT(&s->gem[i]), true, "realized", &er= r); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gem[i]), true, "realized", err= p); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->gem[i]), 0, gem_addr[i]); @@ -499,9 +494,8 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) =20 for (i =3D 0; i < XLNX_ZYNQMP_NUM_UARTS; i++) { qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i)); - object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", er= rp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, uart_addr[i]); @@ -511,9 +505,8 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) =20 object_property_set_int(OBJECT(&s->sata), SATA_NUM_PORTS, "num-ports", &error_abort); - object_property_set_bool(OBJECT(&s->sata), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->sata), true, "realized", errp); + if (*errp) { return; } =20 @@ -530,12 +523,11 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Err= or **errp) * - SDIO Specification Version 3.0 * - eMMC Specification Version 4.51 */ - object_property_set_uint(sdhci, 3, "sd-spec-version", &err); - object_property_set_uint(sdhci, SDHCI_CAPABILITIES, "capareg", &er= r); - object_property_set_uint(sdhci, UHS_I, "uhs", &err); - object_property_set_bool(sdhci, true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_uint(sdhci, 3, "sd-spec-version", errp); + object_property_set_uint(sdhci, SDHCI_CAPABILITIES, "capareg", err= p); + object_property_set_uint(sdhci, UHS_I, "uhs", errp); + object_property_set_bool(sdhci, true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(sbd, 0, sdhci_addr[i]); @@ -550,7 +542,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) for (i =3D 0; i < XLNX_ZYNQMP_NUM_SPIS; i++) { gchar *bus_name; =20 - object_property_set_bool(OBJECT(&s->spi[i]), true, "realized", &er= r); + object_property_set_bool(OBJECT(&s->spi[i]), true, "realized", err= p); =20 sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 0, spi_addr[i]); sysbus_connect_irq(SYS_BUS_DEVICE(&s->spi[i]), 0, @@ -564,7 +556,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) g_free(bus_name); } =20 - object_property_set_bool(OBJECT(&s->qspi), true, "realized", &err); + object_property_set_bool(OBJECT(&s->qspi), true, "realized", errp); sysbus_mmio_map(SYS_BUS_DEVICE(&s->qspi), 0, QSPI_ADDR); sysbus_mmio_map(SYS_BUS_DEVICE(&s->qspi), 1, LQSPI_ADDR); sysbus_connect_irq(SYS_BUS_DEVICE(&s->qspi), 0, gic_spi[QSPI_IRQ]); @@ -583,17 +575,15 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Err= or **errp) g_free(target_bus); } =20 - object_property_set_bool(OBJECT(&s->dp), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->dp), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->dp), 0, DP_ADDR); sysbus_connect_irq(SYS_BUS_DEVICE(&s->dp), 0, gic_spi[DP_IRQ]); =20 - object_property_set_bool(OBJECT(&s->dpdma), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->dpdma), true, "realized", errp); + if (*errp) { return; } object_property_set_link(OBJECT(&s->dp), OBJECT(&s->dpdma), "dpdma", @@ -601,27 +591,24 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Err= or **errp) sysbus_mmio_map(SYS_BUS_DEVICE(&s->dpdma), 0, DPDMA_ADDR); sysbus_connect_irq(SYS_BUS_DEVICE(&s->dpdma), 0, gic_spi[DPDMA_IRQ]); =20 - object_property_set_bool(OBJECT(&s->ipi), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->ipi), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->ipi), 0, IPI_ADDR); sysbus_connect_irq(SYS_BUS_DEVICE(&s->ipi), 0, gic_spi[IPI_IRQ]); =20 - object_property_set_bool(OBJECT(&s->rtc), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->rtc), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->rtc), 0, RTC_ADDR); sysbus_connect_irq(SYS_BUS_DEVICE(&s->rtc), 0, gic_spi[RTC_IRQ]); =20 for (i =3D 0; i < XLNX_ZYNQMP_NUM_GDMA_CH; i++) { - object_property_set_uint(OBJECT(&s->gdma[i]), 128, "bus-width", &e= rr); - object_property_set_bool(OBJECT(&s->gdma[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_uint(OBJECT(&s->gdma[i]), 128, "bus-width", er= rp); + object_property_set_bool(OBJECT(&s->gdma[i]), true, "realized", er= rp); + if (*errp) { return; } =20 @@ -631,9 +618,8 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) } =20 for (i =3D 0; i < XLNX_ZYNQMP_NUM_ADMA_CH; i++) { - object_property_set_bool(OBJECT(&s->adma[i]), true, "realized", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->adma[i]), true, "realized", er= rp); + if (*errp) { return; } =20 diff --git a/hw/cpu/realview_mpcore.c b/hw/cpu/realview_mpcore.c index ae2c9913f6..c48a0140c6 100644 --- a/hw/cpu/realview_mpcore.c +++ b/hw/cpu/realview_mpcore.c @@ -60,19 +60,18 @@ static void mpcore_rirq_set_irq(void *opaque, int irq, = int level) =20 static void realview_mpcore_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); mpcore_rirq_state *s =3D REALVIEW_MPCORE_RIRQ(dev); DeviceState *priv =3D DEVICE(&s->priv); DeviceState *gic; SysBusDevice *gicbusdev; - Error *err =3D NULL; int n; int i; =20 qdev_prop_set_uint32(priv, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->priv), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->priv), true, "realized", errp); + if (*errp) { return; } sysbus_pass_irq(sbd, SYS_BUS_DEVICE(&s->priv)); @@ -81,9 +80,8 @@ static void realview_mpcore_realize(DeviceState *dev, Err= or **errp) } /* ??? IRQ routing is hardcoded to "normal" mode. */ for (n =3D 0; n < 4; n++) { - object_property_set_bool(OBJECT(&s->gic[n]), true, "realized", &er= r); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gic[n]), true, "realized", err= p); + if (*errp) { return; } gic =3D DEVICE(&s->gic[n]); diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c index 8f856878cd..fa2bca37c4 100644 --- a/hw/display/bcm2835_fb.c +++ b/hw/display/bcm2835_fb.c @@ -401,8 +401,8 @@ static void bcm2835_fb_reset(DeviceState *dev) =20 static void bcm2835_fb_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); BCM2835FBState *s =3D BCM2835_FB(dev); - Error *err =3D NULL; Object *obj; =20 if (s->vcram_base =3D=3D 0) { @@ -410,10 +410,10 @@ static void bcm2835_fb_realize(DeviceState *dev, Erro= r **errp) return; } =20 - obj =3D object_property_get_link(OBJECT(dev), "dma-mr", &err); + obj =3D object_property_get_link(OBJECT(dev), "dma-mr", errp); if (obj =3D=3D NULL) { error_setg(errp, "%s: required dma-mr link not found: %s", - __func__, error_get_pretty(err)); + __func__, error_get_pretty(*errp)); return; } =20 diff --git a/hw/dma/bcm2835_dma.c b/hw/dma/bcm2835_dma.c index 192bd377a0..a455f4dc57 100644 --- a/hw/dma/bcm2835_dma.c +++ b/hw/dma/bcm2835_dma.c @@ -371,14 +371,14 @@ static void bcm2835_dma_reset(DeviceState *dev) =20 static void bcm2835_dma_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); BCM2835DMAState *s =3D BCM2835_DMA(dev); - Error *err =3D NULL; Object *obj; =20 - obj =3D object_property_get_link(OBJECT(dev), "dma-mr", &err); + obj =3D object_property_get_link(OBJECT(dev), "dma-mr", errp); if (obj =3D=3D NULL) { error_setg(errp, "%s: required dma-mr link not found: %s", - __func__, error_get_pretty(err)); + __func__, error_get_pretty(*errp)); return; } =20 diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c index a254275b64..872ef84635 100644 --- a/hw/dma/xilinx_axidma.c +++ b/hw/dma/xilinx_axidma.c @@ -520,29 +520,29 @@ static const MemoryRegionOps axidma_ops =3D { =20 static void xilinx_axidma_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XilinxAXIDMA *s =3D XILINX_AXI_DMA(dev); XilinxAXIDMAStreamSlave *ds =3D XILINX_AXI_DMA_DATA_STREAM(&s->rx_data= _dev); XilinxAXIDMAStreamSlave *cs =3D XILINX_AXI_DMA_CONTROL_STREAM( &s->rx_control= _dev); - Error *local_err =3D NULL; =20 object_property_add_link(OBJECT(ds), "dma", TYPE_XILINX_AXI_DMA, (Object **)&ds->dma, object_property_allow_set_link, OBJ_PROP_LINK_STRONG, - &local_err); + errp); object_property_add_link(OBJECT(cs), "dma", TYPE_XILINX_AXI_DMA, (Object **)&cs->dma, object_property_allow_set_link, OBJ_PROP_LINK_STRONG, - &local_err); - if (local_err) { - goto xilinx_axidma_realize_fail; + errp); + if (*errp) { + return; } - object_property_set_link(OBJECT(ds), OBJECT(s), "dma", &local_err); - object_property_set_link(OBJECT(cs), OBJECT(s), "dma", &local_err); - if (local_err) { - goto xilinx_axidma_realize_fail; + object_property_set_link(OBJECT(ds), OBJECT(s), "dma", errp); + object_property_set_link(OBJECT(cs), OBJECT(s), "dma", errp); + if (*errp) { + return; } =20 int i; @@ -555,10 +555,6 @@ static void xilinx_axidma_realize(DeviceState *dev, Er= ror **errp) st->ptimer =3D ptimer_init(st->bh, PTIMER_POLICY_DEFAULT); ptimer_set_freq(st->ptimer, s->freqhz); } - return; - -xilinx_axidma_realize_fail: - error_propagate(errp, local_err); } =20 static void xilinx_axidma_init(Object *obj) diff --git a/hw/gpio/aspeed_gpio.c b/hw/gpio/aspeed_gpio.c index 25fbfec3b8..7683b16ea9 100644 --- a/hw/gpio/aspeed_gpio.c +++ b/hw/gpio/aspeed_gpio.c @@ -679,16 +679,15 @@ static void aspeed_gpio_get_pin(Object *obj, Visitor = *v, const char *name, static void aspeed_gpio_set_pin(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); bool level; int pin =3D 0xfff; char group[3]; AspeedGPIOState *s =3D ASPEED_GPIO(obj); int set_idx, group_idx =3D 0; =20 - visit_type_bool(v, name, &level, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_bool(v, name, &level, errp); + if (*errp) { return; } if (sscanf(name, "gpio%2[A-Z]%1d", group, &pin) !=3D 2) { diff --git a/hw/gpio/bcm2835_gpio.c b/hw/gpio/bcm2835_gpio.c index 91ce3d10cc..0d94f45635 100644 --- a/hw/gpio/bcm2835_gpio.c +++ b/hw/gpio/bcm2835_gpio.c @@ -310,22 +310,22 @@ static void bcm2835_gpio_init(Object *obj) =20 static void bcm2835_gpio_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); BCM2835GpioState *s =3D BCM2835_GPIO(dev); Object *obj; - Error *err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "sdbus-sdhci", &err); + obj =3D object_property_get_link(OBJECT(dev), "sdbus-sdhci", errp); if (obj =3D=3D NULL) { error_setg(errp, "%s: required sdhci link not found: %s", - __func__, error_get_pretty(err)); + __func__, error_get_pretty(*errp)); return; } s->sdbus_sdhci =3D SD_BUS(obj); =20 - obj =3D object_property_get_link(OBJECT(dev), "sdbus-sdhost", &err); + obj =3D object_property_get_link(OBJECT(dev), "sdbus-sdhost", errp); if (obj =3D=3D NULL) { error_setg(errp, "%s: required sdhost link not found: %s", - __func__, error_get_pretty(err)); + __func__, error_get_pretty(*errp)); return; } s->sdbus_sdhost =3D SD_BUS(obj); diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c index 1d7da7baa2..5d100b03c7 100644 --- a/hw/intc/arm_gic.c +++ b/hw/intc/arm_gic.c @@ -2036,16 +2036,15 @@ static const MemoryRegionOps gic_viface_ops =3D { =20 static void arm_gic_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); /* Device instance realize function for the GIC sysbus device */ int i; GICState *s =3D ARM_GIC(dev); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); ARMGICClass *agc =3D ARM_GIC_GET_CLASS(s); - Error *local_err =3D NULL; =20 - agc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + agc->parent_realize(dev, errp); + if (*errp) { return; } =20 diff --git a/hw/intc/arm_gic_kvm.c b/hw/intc/arm_gic_kvm.c index b56fda144f..25d87e489e 100644 --- a/hw/intc/arm_gic_kvm.c +++ b/hw/intc/arm_gic_kvm.c @@ -493,15 +493,14 @@ static void kvm_arm_gic_reset(DeviceState *dev) =20 static void kvm_arm_gic_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i; GICState *s =3D KVM_ARM_GIC(dev); KVMARMGICClass *kgc =3D KVM_ARM_GIC_GET_CLASS(s); - Error *local_err =3D NULL; int ret; =20 - kgc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + kgc->parent_realize(dev, errp); + if (*errp) { return; } =20 @@ -520,9 +519,8 @@ static void kvm_arm_gic_realize(DeviceState *dev, Error= **errp) if (!kvm_arm_gic_can_save_restore(s)) { error_setg(&s->migration_blocker, "This operating system kernel do= es " "not support vGICv2 migration"); - migrate_add_blocker(s->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + migrate_add_blocker(s->migration_blocker, errp); + if (*errp) { error_free(s->migration_blocker); return; } diff --git a/hw/intc/arm_gicv3.c b/hw/intc/arm_gicv3.c index 66eaa97198..ad8e7d92c0 100644 --- a/hw/intc/arm_gicv3.c +++ b/hw/intc/arm_gicv3.c @@ -363,14 +363,13 @@ static const MemoryRegionOps gic_ops[] =3D { =20 static void arm_gic_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); /* Device instance realize function for the GIC sysbus device */ GICv3State *s =3D ARM_GICV3(dev); ARMGICv3Class *agc =3D ARM_GICV3_GET_CLASS(s); - Error *local_err =3D NULL; =20 - agc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + agc->parent_realize(dev, errp); + if (*errp) { return; } =20 @@ -380,9 +379,8 @@ static void arm_gic_realize(DeviceState *dev, Error **e= rrp) return; } =20 - gicv3_init_irqs_and_mmio(s, gicv3_set_irq, gic_ops, &local_err); - if (local_err) { - error_propagate(errp, local_err); + gicv3_init_irqs_and_mmio(s, gicv3_set_irq, gic_ops, errp); + if (*errp) { return; } =20 diff --git a/hw/intc/arm_gicv3_its_kvm.c b/hw/intc/arm_gicv3_its_kvm.c index d66f2431ee..e619bad96e 100644 --- a/hw/intc/arm_gicv3_its_kvm.c +++ b/hw/intc/arm_gicv3_its_kvm.c @@ -90,8 +90,8 @@ static void vm_change_state_handler(void *opaque, int run= ning, =20 static void kvm_arm_its_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); GICv3ITSState *s =3D ARM_GICV3_ITS_COMMON(dev); - Error *local_err =3D NULL; =20 s->dev_fd =3D kvm_create_device(kvm_state, KVM_DEV_TYPE_ARM_VGIC_ITS, = false); if (s->dev_fd < 0) { @@ -113,9 +113,8 @@ static void kvm_arm_its_realize(DeviceState *dev, Error= **errp) GITS_CTLR)) { error_setg(&s->migration_blocker, "This operating system kernel " "does not support vITS migration"); - migrate_add_blocker(s->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + migrate_add_blocker(s->migration_blocker, errp); + if (*errp) { error_free(s->migration_blocker); return; } diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c index 9c7f4ab871..9b9a0931f0 100644 --- a/hw/intc/arm_gicv3_kvm.c +++ b/hw/intc/arm_gicv3_kvm.c @@ -766,17 +766,16 @@ static void vm_change_state_handler(void *opaque, int= running, =20 static void kvm_arm_gicv3_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); GICv3State *s =3D KVM_ARM_GICV3(dev); KVMARMGICv3Class *kgc =3D KVM_ARM_GICV3_GET_CLASS(s); bool multiple_redist_region_allowed; - Error *local_err =3D NULL; int i; =20 DPRINTF("kvm_arm_gicv3_realize\n"); =20 - kgc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + kgc->parent_realize(dev, errp); + if (*errp) { return; } =20 @@ -786,9 +785,8 @@ static void kvm_arm_gicv3_realize(DeviceState *dev, Err= or **errp) return; } =20 - gicv3_init_irqs_and_mmio(s, kvm_arm_gicv3_set_irq, NULL, &local_err); - if (local_err) { - error_propagate(errp, local_err); + gicv3_init_irqs_and_mmio(s, kvm_arm_gicv3_set_irq, NULL, errp); + if (*errp) { return; } =20 @@ -863,9 +861,8 @@ static void kvm_arm_gicv3_realize(DeviceState *dev, Err= or **errp) GICD_CTLR)) { error_setg(&s->migration_blocker, "This operating system kernel do= es " "not support vGICv3 migration"); - migrate_add_blocker(s->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + migrate_add_blocker(s->migration_blocker, errp); + if (*errp) { error_free(s->migration_blocker); return; } diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c index 8e93e51e81..7e111e34a7 100644 --- a/hw/intc/armv7m_nvic.c +++ b/hw/intc/armv7m_nvic.c @@ -2608,8 +2608,8 @@ static void nvic_systick_trigger(void *opaque, int n,= int level) =20 static void armv7m_nvic_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); NVICState *s =3D NVIC(dev); - Error *err =3D NULL; int regionlen; =20 /* The armv7m container object will have set our CPU pointer */ @@ -2631,9 +2631,8 @@ static void armv7m_nvic_realize(DeviceState *dev, Err= or **errp) s->num_prio_bits =3D arm_feature(&s->cpu->env, ARM_FEATURE_V7) ? 8 : 2; =20 object_property_set_bool(OBJECT(&s->systick[M_REG_NS]), true, - "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "realized", errp); + if (*errp) { return; } sysbus_connect_irq(SYS_BUS_DEVICE(&s->systick[M_REG_NS]), 0, @@ -2650,9 +2649,8 @@ static void armv7m_nvic_realize(DeviceState *dev, Err= or **errp) sizeof(s->systick[M_REG_S]), TYPE_SYSTICK); =20 object_property_set_bool(OBJECT(&s->systick[M_REG_S]), true, - "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "realized", errp); + if (*errp) { return; } sysbus_connect_irq(SYS_BUS_DEVICE(&s->systick[M_REG_S]), 0, diff --git a/hw/intc/realview_gic.c b/hw/intc/realview_gic.c index 73fe8cd815..1335a41f80 100644 --- a/hw/intc/realview_gic.c +++ b/hw/intc/realview_gic.c @@ -23,10 +23,10 @@ static void realview_gic_set_irq(void *opaque, int irq,= int level) =20 static void realview_gic_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); RealViewGICState *s =3D REALVIEW_GIC(dev); SysBusDevice *busdev; - Error *err =3D NULL; /* The GICs on the RealView boards have a fixed nonconfigurable * number of interrupt lines, so we don't need to expose this as * a qdev property. @@ -34,9 +34,8 @@ static void realview_gic_realize(DeviceState *dev, Error = **errp) int numirq =3D 96; =20 qdev_prop_set_uint32(DEVICE(&s->gic), "num-irq", numirq); - object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gic), true, "realized", errp); + if (*errp) { return; } busdev =3D SYS_BUS_DEVICE(&s->gic); diff --git a/hw/microblaze/xlnx-zynqmp-pmu.c b/hw/microblaze/xlnx-zynqmp-pm= u.c index 028f31894d..5cc03eba45 100644 --- a/hw/microblaze/xlnx-zynqmp-pmu.c +++ b/hw/microblaze/xlnx-zynqmp-pmu.c @@ -78,8 +78,8 @@ static void xlnx_zynqmp_pmu_soc_init(Object *obj) =20 static void xlnx_zynqmp_pmu_soc_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XlnxZynqMPPMUSoCState *s =3D XLNX_ZYNQMP_PMU_SOC(dev); - Error *err =3D NULL; =20 object_property_set_uint(OBJECT(&s->cpu), XLNX_ZYNQMP_PMU_ROM_ADDR, "base-vectors", &error_abort); @@ -99,9 +99,8 @@ static void xlnx_zynqmp_pmu_soc_realize(DeviceState *dev,= Error **errp) object_property_set_str(OBJECT(&s->cpu), "8.40.b", "version", &error_abort); object_property_set_uint(OBJECT(&s->cpu), 0, "pvr", &error_abort); - object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cpu), true, "realized", errp); + if (*errp) { return; } =20 @@ -111,9 +110,8 @@ static void xlnx_zynqmp_pmu_soc_realize(DeviceState *de= v, Error **errp) &error_abort); object_property_set_uint(OBJECT(&s->intc), 0xffff, "intc-positive", &error_abort); - object_property_set_bool(OBJECT(&s->intc), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->intc), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->intc), 0, XLNX_ZYNQMP_PMU_INTC_ADDR= ); diff --git a/hw/misc/bcm2835_mbox.c b/hw/misc/bcm2835_mbox.c index 79bad11631..d20343b846 100644 --- a/hw/misc/bcm2835_mbox.c +++ b/hw/misc/bcm2835_mbox.c @@ -298,14 +298,14 @@ static void bcm2835_mbox_reset(DeviceState *dev) =20 static void bcm2835_mbox_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); BCM2835MboxState *s =3D BCM2835_MBOX(dev); Object *obj; - Error *err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "mbox-mr", &err); + obj =3D object_property_get_link(OBJECT(dev), "mbox-mr", errp); if (obj =3D=3D NULL) { error_setg(errp, "%s: required mbox-mr link not found: %s", - __func__, error_get_pretty(err)); + __func__, error_get_pretty(*errp)); return; } =20 diff --git a/hw/misc/bcm2835_property.c b/hw/misc/bcm2835_property.c index d86d510572..647c630eb9 100644 --- a/hw/misc/bcm2835_property.c +++ b/hw/misc/bcm2835_property.c @@ -382,23 +382,23 @@ static void bcm2835_property_reset(DeviceState *dev) =20 static void bcm2835_property_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); BCM2835PropertyState *s =3D BCM2835_PROPERTY(dev); Object *obj; - Error *err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "fb", &err); + obj =3D object_property_get_link(OBJECT(dev), "fb", errp); if (obj =3D=3D NULL) { error_setg(errp, "%s: required fb link not found: %s", - __func__, error_get_pretty(err)); + __func__, error_get_pretty(*errp)); return; } =20 s->fbdev =3D BCM2835_FB(obj); =20 - obj =3D object_property_get_link(OBJECT(dev), "dma-mr", &err); + obj =3D object_property_get_link(OBJECT(dev), "dma-mr", errp); if (obj =3D=3D NULL) { error_setg(errp, "%s: required dma-mr link not found: %s", - __func__, error_get_pretty(err)); + __func__, error_get_pretty(*errp)); return; } =20 diff --git a/hw/misc/msf2-sysreg.c b/hw/misc/msf2-sysreg.c index ddc5a30c80..343351480d 100644 --- a/hw/misc/msf2-sysreg.c +++ b/hw/misc/msf2-sysreg.c @@ -127,6 +127,7 @@ static Property msf2_sysreg_properties[] =3D { =20 static void msf2_sysreg_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MSF2SysregState *s =3D MSF2_SYSREG(dev); =20 if ((s->apb0div > 32 || !is_power_of_2(s->apb0div)) diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c index 2c8c065401..7fd7fd06a8 100644 --- a/hw/net/xilinx_axienet.c +++ b/hw/net/xilinx_axienet.c @@ -947,29 +947,29 @@ static NetClientInfo net_xilinx_enet_info =3D { =20 static void xilinx_enet_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XilinxAXIEnet *s =3D XILINX_AXI_ENET(dev); XilinxAXIEnetStreamSlave *ds =3D XILINX_AXI_ENET_DATA_STREAM(&s->rx_da= ta_dev); XilinxAXIEnetStreamSlave *cs =3D XILINX_AXI_ENET_CONTROL_STREAM( &s->rx_control= _dev); - Error *local_err =3D NULL; =20 object_property_add_link(OBJECT(ds), "enet", "xlnx.axi-ethernet", (Object **) &ds->enet, object_property_allow_set_link, OBJ_PROP_LINK_STRONG, - &local_err); + errp); object_property_add_link(OBJECT(cs), "enet", "xlnx.axi-ethernet", (Object **) &cs->enet, object_property_allow_set_link, OBJ_PROP_LINK_STRONG, - &local_err); - if (local_err) { - goto xilinx_enet_realize_fail; + errp); + if (*errp) { + return; } - object_property_set_link(OBJECT(ds), OBJECT(s), "enet", &local_err); - object_property_set_link(OBJECT(cs), OBJECT(s), "enet", &local_err); - if (local_err) { - goto xilinx_enet_realize_fail; + object_property_set_link(OBJECT(ds), OBJECT(s), "enet", errp); + object_property_set_link(OBJECT(cs), OBJECT(s), "enet", errp); + if (*errp) { + return; } =20 qemu_macaddr_default_if_unset(&s->conf.macaddr); @@ -983,10 +983,6 @@ static void xilinx_enet_realize(DeviceState *dev, Erro= r **errp) s->TEMAC.parent =3D s; =20 s->rxmem =3D g_malloc(s->c_rxmem); - return; - -xilinx_enet_realize_fail: - error_propagate(errp, local_err); } =20 static void xilinx_enet_init(Object *obj) diff --git a/hw/nvram/nrf51_nvm.c b/hw/nvram/nrf51_nvm.c index 4d678f994e..be72841a5c 100644 --- a/hw/nvram/nrf51_nvm.c +++ b/hw/nvram/nrf51_nvm.c @@ -326,13 +326,12 @@ static void nrf51_nvm_init(Object *obj) =20 static void nrf51_nvm_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); NRF51NVMState *s =3D NRF51_NVM(dev); - Error *err =3D NULL; =20 memory_region_init_rom_device(&s->flash, OBJECT(dev), &flash_ops, s, - "nrf51_soc.flash", s->flash_size, &err); - if (err) { - error_propagate(errp, err); + "nrf51_soc.flash", s->flash_size, errp); + if (*errp) { return; } =20 diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c index 2bda826882..27bd62fb29 100644 --- a/hw/timer/aspeed_timer.c +++ b/hw/timer/aspeed_timer.c @@ -482,15 +482,15 @@ static void aspeed_init_one_timer(AspeedTimerCtrlStat= e *s, uint8_t id) =20 static void aspeed_timer_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i; SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); AspeedTimerCtrlState *s =3D ASPEED_TIMER(dev); Object *obj; - Error *err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "scu", &err); + obj =3D object_property_get_link(OBJECT(dev), "scu", errp); if (!obj) { - error_propagate_prepend(errp, err, "required link 'scu' not found:= "); + error_prepend(errp, "required link 'scu' not found: "); return; } s->scu =3D ASPEED_SCU(obj); diff --git a/hw/watchdog/wdt_aspeed.c b/hw/watchdog/wdt_aspeed.c index 9b93213417..80c797b0c5 100644 --- a/hw/watchdog/wdt_aspeed.c +++ b/hw/watchdog/wdt_aspeed.c @@ -243,14 +243,13 @@ static void aspeed_wdt_timer_expired(void *dev) =20 static void aspeed_wdt_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); AspeedWDTState *s =3D ASPEED_WDT(dev); - Error *err =3D NULL; Object *obj; =20 - obj =3D object_property_get_link(OBJECT(dev), "scu", &err); + obj =3D object_property_get_link(OBJECT(dev), "scu", errp); if (!obj) { - error_propagate(errp, err); error_prepend(errp, "required link 'scu' not found: "); return; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811194; cv=none; d=zoho.com; s=zohoarc; b=HwZmdvdwi4wkuKk5CLtGo+IsO4XwUyWOL5/UTZ3kWY2s7OyDDMcotg9hY9cXDNaYQQ+5uaL/lqmGRvk6hq/LDFwfTjSrDBPkWB0CfuckBp717FXm3PitOl3gkh1YsE+Wf/ZW1MGOanCLZeOUzyYZrimSf1SJMr+neKUP38Xtebg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811194; h=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=gtp5fRa/eLo6772agIGTgwHWwhgECVxAiZAFToYqcuE=; b=ASmEo1pCInQZxgiUjYlAAAy6Z1sxoXFP+EBWMmJ2Wfd/fqYN68mpDLDMQnaC/IzTsi715dVqm1PsqpqhrwXHBiw3ysRPLy84SSTvon5HVdiOjqCQn08pv6WT2Kb19p0e3GagBFqAExDp+38yowEfQUjlBb7o1QovCj/lvH0kg3Y= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081119473282.99885209290221; Fri, 11 Oct 2019 09:26:34 -0700 (PDT) Received: from localhost ([::1]:53790 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxkP-0004uJ-9o for importer@patchew.org; Fri, 11 Oct 2019 12:26:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36261) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQs-00069A-Gn for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQr-0004Ng-Cb for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:22 -0400 Received: from relay.sw.ru ([185.231.240.75]:47976) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQr-0004B3-4b for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:21 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQe-0003XG-Do; Fri, 11 Oct 2019 19:06:08 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 034/126] MIPS Machines: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:20 +0300 Message-Id: <20191011160552.22907-35-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Paul Burton , vsementsov@virtuozzo.com, Aleksandar Rikalo , armbru@redhat.com, Greg Kurz , Aleksandar Markovic , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/core/loader-fit.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/core/loader-fit.c b/hw/core/loader-fit.c index 3ee9fb2f2e..84f35a1fe2 100644 --- a/hw/core/loader-fit.c +++ b/hw/core/loader-fit.c @@ -120,6 +120,7 @@ static int fit_load_kernel(const struct fit_loader *ldr= , const void *itb, int cfg, void *opaque, hwaddr *pend, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *name; const void *data; const void *load_data; @@ -178,6 +179,7 @@ static int fit_load_fdt(const struct fit_loader *ldr, c= onst void *itb, int cfg, void *opaque, const void *match_data, hwaddr kernel_end, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *name; const void *data; const void *load_data; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813709; cv=none; d=zoho.com; s=zohoarc; b=El+cTpmxwIYASzlvZnF1aT3c3SE4IIwa5NXuotF/He6pXjKQegnjetbtweIWdMiXWKmrqPR3frYWExdg3rgIcEJiIUJttGoqU1XuC2g7MtAN0yH2+NdicXom1WPGqSRJG4UnFJ9Tm7tspvyz5DJTBkvIJAxjQCurwGcoYK9byE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813709; h=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=zGLulp7p0iQihCU1qAfI66oyvSPxhxDSziJpbnBm4vI=; b=F7qUGNe03OkMxzG8arIoApb3SzNE/32p99jl9ijtgmljFqOk1g7OkMqzJBUuS0R41pmvD9DMNd5SHXOsJpGhqKvJ9dlBEC8GY/jQru0KLizrIBczMFWrArA6qRLT/wh8dritNpUB1wf5Bueg0PykkmLJvjzP87OFSD4vlM/JqM0= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813709069295.8769747553042; Fri, 11 Oct 2019 10:08:29 -0700 (PDT) Received: from localhost ([::1]:54376 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyOx-0006I9-GJ for importer@patchew.org; Fri, 11 Oct 2019 13:08:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36962) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRC-0006hn-2T for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR1-0004di-40 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:41 -0400 Received: from relay.sw.ru ([185.231.240.75]:47958) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR0-0004Ah-Bu; Fri, 11 Oct 2019 12:06:31 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQe-0003XG-PO; Fri, 11 Oct 2019 19:06:08 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 035/126] PowerPC Machines: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:21 +0300 Message-Id: <20191011160552.22907-36-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Mark Cave-Ayland , armbru@redhat.com, Greg Kurz , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/intc/pnv_xive.c | 15 ++--- hw/intc/xics.c | 28 ++++----- hw/intc/xics_kvm.c | 30 +++++---- hw/intc/xics_pnv.c | 7 +-- hw/intc/xics_spapr.c | 7 +-- hw/isa/pc87312.c | 7 +-- hw/misc/macio/macio.c | 68 +++++++++----------- hw/ppc/e500.c | 7 +-- hw/ppc/mac_newworld.c | 1 + hw/ppc/pnv.c | 109 ++++++++++++++------------------ hw/ppc/pnv_core.c | 23 +++---- hw/ppc/pnv_homer.c | 5 +- hw/ppc/pnv_lpc.c | 26 ++++---- hw/ppc/pnv_occ.c | 5 +- hw/ppc/pnv_psi.c | 23 +++---- hw/ppc/spapr.c | 133 ++++++++++++++++++---------------------- hw/ppc/spapr_caps.c | 57 ++++++++--------- hw/ppc/spapr_cpu_core.c | 36 +++++------ hw/ppc/spapr_drc.c | 48 ++++++--------- hw/ppc/spapr_irq.c | 98 +++++++++++++---------------- hw/ppc/spapr_pci.c | 97 +++++++++++++---------------- hw/ppc/spapr_vio.c | 12 ++-- 22 files changed, 364 insertions(+), 478 deletions(-) diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c index ed6e9d71bb..05acec9b91 100644 --- a/hw/intc/pnv_xive.c +++ b/hw/intc/pnv_xive.c @@ -1659,15 +1659,14 @@ static void pnv_xive_init(Object *obj) =20 static void pnv_xive_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvXive *xive =3D PNV_XIVE(dev); XiveSource *xsrc =3D &xive->ipi_source; XiveENDSource *end_xsrc =3D &xive->end_source; - Error *local_err =3D NULL; Object *obj; =20 - obj =3D object_property_get_link(OBJECT(dev), "chip", &local_err); + obj =3D object_property_get_link(OBJECT(dev), "chip", errp); if (!obj) { - error_propagate(errp, local_err); error_prepend(errp, "required link 'chip' not found: "); return; } @@ -1685,9 +1684,8 @@ static void pnv_xive_realize(DeviceState *dev, Error = **errp) &error_fatal); object_property_add_const_link(OBJECT(xsrc), "xive", OBJECT(xive), &error_fatal); - object_property_set_bool(OBJECT(xsrc), true, "realized", &local_err); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(xsrc), true, "realized", errp); + if (*errp) { return; } =20 @@ -1695,9 +1693,8 @@ static void pnv_xive_realize(DeviceState *dev, Error = **errp) &error_fatal); object_property_add_const_link(OBJECT(end_xsrc), "xive", OBJECT(xive), &error_fatal); - object_property_set_bool(OBJECT(end_xsrc), true, "realized", &local_er= r); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(end_xsrc), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/intc/xics.c b/hw/intc/xics.c index dfe7dbd254..91a3e8840a 100644 --- a/hw/intc/xics.c +++ b/hw/intc/xics.c @@ -297,15 +297,15 @@ static void icp_reset_handler(void *dev) =20 static void icp_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); ICPState *icp =3D ICP(dev); PowerPCCPU *cpu; CPUPPCState *env; Object *obj; - Error *err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), ICP_PROP_XICS, &err); + obj =3D object_property_get_link(OBJECT(dev), ICP_PROP_XICS, errp); if (!obj) { - error_propagate_prepend(errp, err, + error_prepend(errp, "required link '" ICP_PROP_XICS "' not found: "); return; @@ -313,9 +313,9 @@ static void icp_realize(DeviceState *dev, Error **errp) =20 icp->xics =3D XICS_FABRIC(obj); =20 - obj =3D object_property_get_link(OBJECT(dev), ICP_PROP_CPU, &err); + obj =3D object_property_get_link(OBJECT(dev), ICP_PROP_CPU, errp); if (!obj) { - error_propagate_prepend(errp, err, + error_prepend(errp, "required link '" ICP_PROP_CPU "' not found: "); return; @@ -344,9 +344,8 @@ static void icp_realize(DeviceState *dev, Error **errp) =20 /* Connect the presenter to the VCPU (required for CPU hotplug) */ if (kvm_irqchip_in_kernel()) { - icp_kvm_realize(dev, &err); - if (err) { - error_propagate(errp, err); + icp_kvm_realize(dev, errp); + if (*errp) { return; } } @@ -381,7 +380,7 @@ static const TypeInfo icp_info =3D { =20 Object *icp_create(Object *cpu, const char *type, XICSFabric *xi, Error **= errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); Object *obj; =20 obj =3D object_new(type); @@ -390,10 +389,9 @@ Object *icp_create(Object *cpu, const char *type, XICS= Fabric *xi, Error **errp) object_property_add_const_link(obj, ICP_PROP_XICS, OBJECT(xi), &error_abort); object_property_add_const_link(obj, ICP_PROP_CPU, cpu, &error_abort); - object_property_set_bool(obj, true, "realized", &local_err); - if (local_err) { + object_property_set_bool(obj, true, "realized", errp); + if (*errp) { object_unparent(obj); - error_propagate(errp, local_err); obj =3D NULL; } =20 @@ -587,13 +585,13 @@ static void ics_reset_handler(void *dev) =20 static void ics_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); ICSState *ics =3D ICS(dev); - Error *local_err =3D NULL; Object *obj; =20 - obj =3D object_property_get_link(OBJECT(dev), ICS_PROP_XICS, &local_er= r); + obj =3D object_property_get_link(OBJECT(dev), ICS_PROP_XICS, errp); if (!obj) { - error_propagate_prepend(errp, local_err, + error_prepend(errp, "required link '" ICS_PROP_XICS "' not found: "); return; diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c index ba90d6dc96..66902228e3 100644 --- a/hw/intc/xics_kvm.c +++ b/hw/intc/xics_kvm.c @@ -294,6 +294,7 @@ int ics_set_kvm_state_one(ICSState *ics, int srcno, Err= or **errp) =20 int ics_set_kvm_state(ICSState *ics, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i; =20 /* The KVM XICS device is not in use */ @@ -302,16 +303,14 @@ int ics_set_kvm_state(ICSState *ics, Error **errp) } =20 for (i =3D 0; i < ics->nr_irqs; i++) { - Error *local_err =3D NULL; int ret; =20 if (ics_irq_free(ics, i)) { continue; } =20 - ret =3D ics_set_kvm_state_one(ics, i, &local_err); + ret =3D ics_set_kvm_state_one(ics, i, errp); if (ret < 0) { - error_propagate(errp, local_err); return ret; } } @@ -344,9 +343,9 @@ void ics_kvm_set_irq(ICSState *ics, int srcno, int val) =20 int xics_kvm_connect(SpaprMachineState *spapr, Error **errp) { + ERRP_AUTO_PROPAGATE(); int rc; CPUState *cs; - Error *local_err =3D NULL; =20 /* * The KVM XICS device already in use. This is the case when @@ -364,28 +363,28 @@ int xics_kvm_connect(SpaprMachineState *spapr, Error = **errp) =20 rc =3D kvmppc_define_rtas_kernel_token(RTAS_IBM_SET_XIVE, "ibm,set-xiv= e"); if (rc < 0) { - error_setg_errno(&local_err, -rc, + error_setg_errno(errp, -rc, "kvmppc_define_rtas_kernel_token: ibm,set-xive"); goto fail; } =20 rc =3D kvmppc_define_rtas_kernel_token(RTAS_IBM_GET_XIVE, "ibm,get-xiv= e"); if (rc < 0) { - error_setg_errno(&local_err, -rc, + error_setg_errno(errp, -rc, "kvmppc_define_rtas_kernel_token: ibm,get-xive"); goto fail; } =20 rc =3D kvmppc_define_rtas_kernel_token(RTAS_IBM_INT_ON, "ibm,int-on"); if (rc < 0) { - error_setg_errno(&local_err, -rc, + error_setg_errno(errp, -rc, "kvmppc_define_rtas_kernel_token: ibm,int-on"); goto fail; } =20 rc =3D kvmppc_define_rtas_kernel_token(RTAS_IBM_INT_OFF, "ibm,int-off"= ); if (rc < 0) { - error_setg_errno(&local_err, -rc, + error_setg_errno(errp, -rc, "kvmppc_define_rtas_kernel_token: ibm,int-off"); goto fail; } @@ -393,7 +392,7 @@ int xics_kvm_connect(SpaprMachineState *spapr, Error **= errp) /* Create the KVM XICS device */ rc =3D kvm_create_device(kvm_state, KVM_DEV_TYPE_XICS, false); if (rc < 0) { - error_setg_errno(&local_err, -rc, "Error on KVM_CREATE_DEVICE for = XICS"); + error_setg_errno(errp, -rc, "Error on KVM_CREATE_DEVICE for XICS"); goto fail; } =20 @@ -406,23 +405,23 @@ int xics_kvm_connect(SpaprMachineState *spapr, Error = **errp) CPU_FOREACH(cs) { PowerPCCPU *cpu =3D POWERPC_CPU(cs); =20 - icp_kvm_realize(DEVICE(spapr_cpu_state(cpu)->icp), &local_err); - if (local_err) { + icp_kvm_realize(DEVICE(spapr_cpu_state(cpu)->icp), errp); + if (*errp) { goto fail; } } =20 /* Update the KVM sources */ - ics_set_kvm_state(spapr->ics, &local_err); - if (local_err) { + ics_set_kvm_state(spapr->ics, errp); + if (*errp) { goto fail; } =20 /* Connect the presenters to the initial VCPUs of the machine */ CPU_FOREACH(cs) { PowerPCCPU *cpu =3D POWERPC_CPU(cs); - icp_set_kvm_state(spapr_cpu_state(cpu)->icp, &local_err); - if (local_err) { + icp_set_kvm_state(spapr_cpu_state(cpu)->icp, errp); + if (*errp) { goto fail; } } @@ -430,7 +429,6 @@ int xics_kvm_connect(SpaprMachineState *spapr, Error **= errp) return 0; =20 fail: - error_propagate(errp, local_err); xics_kvm_disconnect(spapr, NULL); return -1; } diff --git a/hw/intc/xics_pnv.c b/hw/intc/xics_pnv.c index 35f3811264..501aee21d7 100644 --- a/hw/intc/xics_pnv.c +++ b/hw/intc/xics_pnv.c @@ -161,14 +161,13 @@ static const MemoryRegionOps pnv_icp_ops =3D { =20 static void pnv_icp_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); ICPState *icp =3D ICP(dev); PnvICPState *pnv_icp =3D PNV_ICP(icp); ICPStateClass *icpc =3D ICP_GET_CLASS(icp); - Error *local_err =3D NULL; =20 - icpc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + icpc->parent_realize(dev, errp); + if (*errp) { return; } =20 diff --git a/hw/intc/xics_spapr.c b/hw/intc/xics_spapr.c index 6e5eb24b3c..2c21ad8ea9 100644 --- a/hw/intc/xics_spapr.c +++ b/hw/intc/xics_spapr.c @@ -285,13 +285,12 @@ static void rtas_int_on(PowerPCCPU *cpu, SpaprMachine= State *spapr, =20 static void ics_spapr_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); ICSState *ics =3D ICS_SPAPR(dev); ICSStateClass *icsc =3D ICS_GET_CLASS(ics); - Error *local_err =3D NULL; =20 - icsc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + icsc->parent_realize(dev, errp); + if (*errp) { return; } =20 diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c index b9bd57471e..ac30eaed33 100644 --- a/hw/isa/pc87312.c +++ b/hw/isa/pc87312.c @@ -291,18 +291,17 @@ static void pc87312_reset(DeviceState *d) =20 static void pc87312_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PC87312State *s; ISADevice *isa; - Error *local_err =3D NULL; =20 s =3D PC87312(dev); isa =3D ISA_DEVICE(dev); isa_register_ioport(isa, &s->io, s->iobase); pc87312_hard_reset(s); =20 - ISA_SUPERIO_GET_CLASS(dev)->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ISA_SUPERIO_GET_CLASS(dev)->parent_realize(dev, errp); + if (*errp) { return; } } diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c index 50f20d8206..612a8203d9 100644 --- a/hw/misc/macio/macio.c +++ b/hw/misc/macio/macio.c @@ -105,13 +105,12 @@ static void macio_init_child_obj(MacIOState *s, const= char *childname, =20 static void macio_common_realize(PCIDevice *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); MacIOState *s =3D MACIO(d); SysBusDevice *sysbus_dev; - Error *err =3D NULL; =20 - object_property_set_bool(OBJECT(&s->dbdma), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->dbdma), true, "realized", errp); + if (*errp) { return; } sysbus_dev =3D SYS_BUS_DEVICE(&s->dbdma); @@ -125,9 +124,8 @@ static void macio_common_realize(PCIDevice *d, Error **= errp) qdev_prop_set_chr(DEVICE(&s->escc), "chrB", serial_hd(1)); qdev_prop_set_uint32(DEVICE(&s->escc), "chnBtype", escc_serial); qdev_prop_set_uint32(DEVICE(&s->escc), "chnAtype", escc_serial); - object_property_set_bool(OBJECT(&s->escc), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->escc), true, "realized", errp); + if (*errp) { return; } =20 @@ -153,23 +151,21 @@ static void macio_realize_ide(MacIOState *s, MACIOIDE= State *ide, =20 static void macio_oldworld_realize(PCIDevice *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); MacIOState *s =3D MACIO(d); OldWorldMacIOState *os =3D OLDWORLD_MACIO(d); DeviceState *pic_dev =3D DEVICE(os->pic); - Error *err =3D NULL; SysBusDevice *sysbus_dev; =20 - macio_common_realize(d, &err); - if (err) { - error_propagate(errp, err); + macio_common_realize(d, errp); + if (*errp) { return; } =20 qdev_prop_set_uint64(DEVICE(&s->cuda), "timebase-frequency", s->frequency); - object_property_set_bool(OBJECT(&s->cuda), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cuda), true, "realized", errp); + if (*errp) { return; } sysbus_dev =3D SYS_BUS_DEVICE(&s->cuda); @@ -184,9 +180,8 @@ static void macio_oldworld_realize(PCIDevice *d, Error = **errp) sysbus_connect_irq(sysbus_dev, 1, qdev_get_gpio_in(pic_dev, OLDWORLD_ESCCA_IRQ)= ); =20 - object_property_set_bool(OBJECT(&os->nvram), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&os->nvram), true, "realized", errp); + if (*errp) { return; } sysbus_dev =3D SYS_BUS_DEVICE(&os->nvram); @@ -203,18 +198,16 @@ static void macio_oldworld_realize(PCIDevice *d, Erro= r **errp) macio_realize_ide(s, &os->ide[0], qdev_get_gpio_in(pic_dev, OLDWORLD_IDE0_IRQ), qdev_get_gpio_in(pic_dev, OLDWORLD_IDE0_DMA_IRQ), - 0x16, &err); - if (err) { - error_propagate(errp, err); + 0x16, errp); + if (*errp) { return; } =20 macio_realize_ide(s, &os->ide[1], qdev_get_gpio_in(pic_dev, OLDWORLD_IDE1_IRQ), qdev_get_gpio_in(pic_dev, OLDWORLD_IDE1_DMA_IRQ), - 0x1a, &err); - if (err) { - error_propagate(errp, err); + 0x1a, errp); + if (*errp) { return; } } @@ -291,16 +284,15 @@ static const MemoryRegionOps timer_ops =3D { =20 static void macio_newworld_realize(PCIDevice *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); MacIOState *s =3D MACIO(d); NewWorldMacIOState *ns =3D NEWWORLD_MACIO(d); DeviceState *pic_dev =3D DEVICE(ns->pic); - Error *err =3D NULL; SysBusDevice *sysbus_dev; MemoryRegion *timer_memory =3D NULL; =20 - macio_common_realize(d, &err); - if (err) { - error_propagate(errp, err); + macio_common_realize(d, errp); + if (*errp) { return; } =20 @@ -319,18 +311,16 @@ static void macio_newworld_realize(PCIDevice *d, Erro= r **errp) macio_realize_ide(s, &ns->ide[0], qdev_get_gpio_in(pic_dev, NEWWORLD_IDE0_IRQ), qdev_get_gpio_in(pic_dev, NEWWORLD_IDE0_DMA_IRQ), - 0x16, &err); - if (err) { - error_propagate(errp, err); + 0x16, errp); + if (*errp) { return; } =20 macio_realize_ide(s, &ns->ide[1], qdev_get_gpio_in(pic_dev, NEWWORLD_IDE1_IRQ), qdev_get_gpio_in(pic_dev, NEWWORLD_IDE1_DMA_IRQ), - 0x1a, &err); - if (err) { - error_propagate(errp, err); + 0x1a, errp); + if (*errp) { return; } =20 @@ -347,7 +337,7 @@ static void macio_newworld_realize(PCIDevice *d, Error = **errp) &error_abort); memory_region_add_subregion(&s->bar, 0x50, sysbus_mmio_get_region(sysbus_dev, 0)); - object_property_set_bool(OBJECT(&ns->gpio), true, "realized", &err= ); + object_property_set_bool(OBJECT(&ns->gpio), true, "realized", errp= ); =20 /* PMU */ object_initialize_child(OBJECT(s), "pmu", &s->pmu, sizeof(s->pmu), @@ -357,9 +347,8 @@ static void macio_newworld_realize(PCIDevice *d, Error = **errp) qdev_prop_set_bit(DEVICE(&s->pmu), "has-adb", ns->has_adb); qdev_set_parent_bus(DEVICE(&s->pmu), BUS(&s->macio_bus)); =20 - object_property_set_bool(OBJECT(&s->pmu), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->pmu), true, "realized", errp); + if (*errp) { return; } sysbus_dev =3D SYS_BUS_DEVICE(&s->pmu); @@ -375,9 +364,8 @@ static void macio_newworld_realize(PCIDevice *d, Error = **errp) qdev_prop_set_uint64(DEVICE(&s->cuda), "timebase-frequency", s->frequency); =20 - object_property_set_bool(OBJECT(&s->cuda), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->cuda), true, "realized", errp); + if (*errp) { return; } sysbus_dev =3D SYS_BUS_DEVICE(&s->cuda); diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 91cd4c26f9..468d667261 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -764,16 +764,15 @@ static DeviceState *ppce500_init_mpic_qemu(PPCE500Mac= hineState *pms, static DeviceState *ppce500_init_mpic_kvm(const PPCE500MachineClass *pmc, IrqLines *irqs, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); DeviceState *dev; CPUState *cs; =20 dev =3D qdev_create(NULL, TYPE_KVM_OPENPIC); qdev_prop_set_uint32(dev, "model", pmc->mpic_version); =20 - object_property_set_bool(OBJECT(dev), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(dev), true, "realized", errp); + if (*errp) { object_unparent(OBJECT(dev)); return NULL; } diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index c5bbcc7433..1a37412d31 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -609,6 +609,7 @@ static char *core99_get_via_config(Object *obj, Error *= *errp) =20 static void core99_set_via_config(Object *obj, const char *value, Error **= errp) { + ERRP_AUTO_PROPAGATE(); Core99MachineState *cms =3D CORE99_MACHINE(obj); =20 if (!strcmp(value, "cuda")) { diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 7cf64b6d25..7155259f13 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -764,14 +764,13 @@ static uint32_t pnv_chip_core_pir_p8(PnvChip *chip, u= int32_t core_id) static void pnv_chip_power8_intc_create(PnvChip *chip, PowerPCCPU *cpu, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); Object *obj; PnvCPUState *pnv_cpu =3D pnv_cpu_state(cpu); =20 obj =3D icp_create(OBJECT(cpu), TYPE_PNV_ICP, XICS_FABRIC(qdev_get_mac= hine()), - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } =20 @@ -796,8 +795,8 @@ static uint32_t pnv_chip_core_pir_p9(PnvChip *chip, uin= t32_t core_id) static void pnv_chip_power9_intc_create(PnvChip *chip, PowerPCCPU *cpu, Error **errp) { + ERRP_AUTO_PROPAGATE(); Pnv9Chip *chip9 =3D PNV9_CHIP(chip); - Error *local_err =3D NULL; Object *obj; PnvCPUState *pnv_cpu =3D pnv_cpu_state(cpu); =20 @@ -806,9 +805,8 @@ static void pnv_chip_power9_intc_create(PnvChip *chip, = PowerPCCPU *cpu, * controller object is initialized afterwards. Hopefully, it's * only used at runtime. */ - obj =3D xive_tctx_create(OBJECT(cpu), XIVE_ROUTER(&chip9->xive), &loca= l_err); - if (local_err) { - error_propagate(errp, local_err); + obj =3D xive_tctx_create(OBJECT(cpu), XIVE_ROUTER(&chip9->xive), errp); + if (*errp) { return; } =20 @@ -901,32 +899,29 @@ static void pnv_chip_icp_realize(Pnv8Chip *chip8, Err= or **errp) =20 static void pnv_chip_power8_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvChipClass *pcc =3D PNV_CHIP_GET_CLASS(dev); PnvChip *chip =3D PNV_CHIP(dev); Pnv8Chip *chip8 =3D PNV8_CHIP(dev); Pnv8Psi *psi8 =3D &chip8->psi; - Error *local_err =3D NULL; =20 /* XSCOM bridge is first */ - pnv_xscom_realize(chip, PNV_XSCOM_SIZE, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pnv_xscom_realize(chip, PNV_XSCOM_SIZE, errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(chip), 0, PNV_XSCOM_BASE(chip)); =20 - pcc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pcc->parent_realize(dev, errp); + if (*errp) { return; } =20 /* Processor Service Interface (PSI) Host Bridge */ object_property_set_int(OBJECT(&chip8->psi), PNV_PSIHB_BASE(chip), "bar", &error_fatal); - object_property_set_bool(OBJECT(&chip8->psi), true, "realized", &local= _err); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(&chip8->psi), true, "realized", errp); + if (*errp) { return; } pnv_xscom_add_subregion(chip, PNV_XSCOM_PSIHB_BASE, @@ -945,16 +940,14 @@ static void pnv_chip_power8_realize(DeviceState *dev,= Error **errp) * Interrupt Management Area. This is the memory region holding * all the Interrupt Control Presenter (ICP) registers */ - pnv_chip_icp_realize(chip8, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pnv_chip_icp_realize(chip8, errp); + if (*errp) { return; } =20 /* Create the simplified OCC model */ - object_property_set_bool(OBJECT(&chip8->occ), true, "realized", &local= _err); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(&chip8->occ), true, "realized", errp); + if (*errp) { return; } pnv_xscom_add_subregion(chip, PNV_XSCOM_OCC_BASE, &chip8->occ.xscom_re= gs); @@ -965,9 +958,8 @@ static void pnv_chip_power8_realize(DeviceState *dev, E= rror **errp) =20 /* HOMER */ object_property_set_bool(OBJECT(&chip8->homer), true, "realized", - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), PNV_HOMER_BASE(chip), @@ -1091,29 +1083,26 @@ static void pnv_chip_quad_realize(Pnv9Chip *chip9, = Error **errp) =20 static void pnv_chip_power9_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvChipClass *pcc =3D PNV_CHIP_GET_CLASS(dev); Pnv9Chip *chip9 =3D PNV9_CHIP(dev); PnvChip *chip =3D PNV_CHIP(dev); Pnv9Psi *psi9 =3D &chip9->psi; - Error *local_err =3D NULL; =20 /* XSCOM bridge is first */ - pnv_xscom_realize(chip, PNV9_XSCOM_SIZE, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pnv_xscom_realize(chip, PNV9_XSCOM_SIZE, errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(chip), 0, PNV9_XSCOM_BASE(chip)); =20 - pcc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pcc->parent_realize(dev, errp); + if (*errp) { return; } =20 - pnv_chip_quad_realize(chip9, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pnv_chip_quad_realize(chip9, errp); + if (*errp) { return; } =20 @@ -1127,9 +1116,8 @@ static void pnv_chip_power9_realize(DeviceState *dev,= Error **errp) object_property_set_int(OBJECT(&chip9->xive), PNV9_XIVE_TM_BASE(chip), "tm-bar", &error_fatal); object_property_set_bool(OBJECT(&chip9->xive), true, "realized", - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } pnv_xscom_add_subregion(chip, PNV9_XSCOM_XIVE_BASE, @@ -1138,18 +1126,16 @@ static void pnv_chip_power9_realize(DeviceState *de= v, Error **errp) /* Processor Service Interface (PSI) Host Bridge */ object_property_set_int(OBJECT(&chip9->psi), PNV9_PSIHB_BASE(chip), "bar", &error_fatal); - object_property_set_bool(OBJECT(&chip9->psi), true, "realized", &local= _err); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(&chip9->psi), true, "realized", errp); + if (*errp) { return; } pnv_xscom_add_subregion(chip, PNV9_XSCOM_PSIHB_BASE, &PNV_PSI(psi9)->xscom_regs); =20 /* LPC */ - object_property_set_bool(OBJECT(&chip9->lpc), true, "realized", &local= _err); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(&chip9->lpc), true, "realized", errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), PNV9_LPCM_BASE(chip), @@ -1159,9 +1145,8 @@ static void pnv_chip_power9_realize(DeviceState *dev,= Error **errp) (uint64_t) PNV9_LPCM_BASE(chip= )); =20 /* Create the simplified OCC model */ - object_property_set_bool(OBJECT(&chip9->occ), true, "realized", &local= _err); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(&chip9->occ), true, "realized", errp); + if (*errp) { return; } pnv_xscom_add_subregion(chip, PNV9_XSCOM_OCC_BASE, &chip9->occ.xscom_r= egs); @@ -1172,9 +1157,8 @@ static void pnv_chip_power9_realize(DeviceState *dev,= Error **errp) =20 /* HOMER */ object_property_set_bool(OBJECT(&chip9->homer), true, "realized", - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } memory_region_add_subregion(get_system_memory(), PNV9_HOMER_BASE(chip), @@ -1232,8 +1216,8 @@ static void pnv_chip_core_sanitize(PnvChip *chip, Err= or **errp) =20 static void pnv_chip_core_realize(PnvChip *chip, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(qdev_get_machine()); - Error *error =3D NULL; PnvChipClass *pcc =3D PNV_CHIP_GET_CLASS(chip); const char *typename =3D pnv_chip_core_typename(chip); size_t typesize =3D object_type_get_instance_size(typename); @@ -1245,9 +1229,8 @@ static void pnv_chip_core_realize(PnvChip *chip, Erro= r **errp) } =20 /* Cores */ - pnv_chip_core_sanitize(chip, &error); - if (error) { - error_propagate(errp, error); + pnv_chip_core_sanitize(chip, errp); + if (*errp) { return; } =20 @@ -1293,13 +1276,12 @@ static void pnv_chip_core_realize(PnvChip *chip, Er= ror **errp) =20 static void pnv_chip_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvChip *chip =3D PNV_CHIP(dev); - Error *error =3D NULL; =20 /* Cores */ - pnv_chip_core_realize(chip, &error); - if (error) { - error_propagate(errp, error); + pnv_chip_core_realize(chip, errp); + if (*errp) { return; } } @@ -1387,13 +1369,12 @@ static void pnv_get_num_chips(Object *obj, Visitor = *v, const char *name, static void pnv_set_num_chips(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvMachineState *pnv =3D PNV_MACHINE(obj); uint32_t num_chips; - Error *local_err =3D NULL; =20 - visit_type_uint32(v, name, &num_chips, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_uint32(v, name, &num_chips, errp); + if (*errp) { return; } =20 diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c index b1a7489e7a..c45b326f78 100644 --- a/hw/ppc/pnv_core.c +++ b/hw/ppc/pnv_core.c @@ -162,22 +162,20 @@ static const MemoryRegionOps pnv_core_power9_xscom_op= s =3D { =20 static void pnv_realize_vcpu(PowerPCCPU *cpu, PnvChip *chip, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUPPCState *env =3D &cpu->env; int core_pir; int thread_index =3D 0; /* TODO: TCG supports only one thread */ ppc_spr_t *pir =3D &env->spr_cb[SPR_PIR]; - Error *local_err =3D NULL; PnvChipClass *pcc =3D PNV_CHIP_GET_CLASS(chip); =20 - object_property_set_bool(OBJECT(cpu), true, "realized", &local_err); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(cpu), true, "realized", errp); + if (*errp) { return; } =20 - pcc->intc_create(chip, cpu, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pcc->intc_create(chip, cpu, errp); + if (*errp) { return; } =20 @@ -198,19 +196,19 @@ static void pnv_realize_vcpu(PowerPCCPU *cpu, PnvChip= *chip, Error **errp) =20 static void pnv_core_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvCore *pc =3D PNV_CORE(OBJECT(dev)); PnvCoreClass *pcc =3D PNV_CORE_GET_CLASS(pc); CPUCore *cc =3D CPU_CORE(OBJECT(dev)); const char *typename =3D pnv_core_cpu_typename(pc); - Error *local_err =3D NULL; void *obj; int i, j; char name[32]; Object *chip; =20 - chip =3D object_property_get_link(OBJECT(dev), "chip", &local_err); + chip =3D object_property_get_link(OBJECT(dev), "chip", errp); if (!chip) { - error_propagate_prepend(errp, local_err, + error_prepend(errp, "required link 'chip' not found: "); return; } @@ -235,8 +233,8 @@ static void pnv_core_realize(DeviceState *dev, Error **= errp) } =20 for (j =3D 0; j < cc->nr_threads; j++) { - pnv_realize_vcpu(pc->threads[j], PNV_CHIP(chip), &local_err); - if (local_err) { + pnv_realize_vcpu(pc->threads[j], PNV_CHIP(chip), errp); + if (*errp) { goto err; } } @@ -252,7 +250,6 @@ err: object_unparent(obj); } g_free(pc->threads); - error_propagate(errp, local_err); } =20 static void pnv_unrealize_vcpu(PowerPCCPU *cpu) diff --git a/hw/ppc/pnv_homer.c b/hw/ppc/pnv_homer.c index cc881a3b32..80e3acf94a 100644 --- a/hw/ppc/pnv_homer.c +++ b/hw/ppc/pnv_homer.c @@ -227,14 +227,13 @@ static const TypeInfo pnv_homer_power9_type_info =3D { =20 static void pnv_homer_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvHomer *homer =3D PNV_HOMER(dev); PnvHomerClass *hmrc =3D PNV_HOMER_GET_CLASS(homer); Object *obj; - Error *local_err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "chip", &local_err); + obj =3D object_property_get_link(OBJECT(dev), "chip", errp); if (!obj) { - error_propagate(errp, local_err); error_prepend(errp, "required link 'chip' not found: "); return; } diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index 9466d4a1be..7f6041cc28 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -599,13 +599,12 @@ static const MemoryRegionOps opb_master_ops =3D { =20 static void pnv_lpc_power8_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvLpcController *lpc =3D PNV_LPC(dev); PnvLpcClass *plc =3D PNV_LPC_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - plc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + plc->parent_realize(dev, errp); + if (*errp) { return; } =20 @@ -644,13 +643,12 @@ static const TypeInfo pnv_lpc_power8_info =3D { =20 static void pnv_lpc_power9_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvLpcController *lpc =3D PNV_LPC(dev); PnvLpcClass *plc =3D PNV_LPC_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - plc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + plc->parent_realize(dev, errp); + if (*errp) { return; } =20 @@ -681,13 +679,12 @@ static const TypeInfo pnv_lpc_power9_info =3D { =20 static void pnv_lpc_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvLpcController *lpc =3D PNV_LPC(dev); Object *obj; - Error *local_err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "psi", &local_err); + obj =3D object_property_get_link(OBJECT(dev), "psi", errp); if (!obj) { - error_propagate(errp, local_err); error_prepend(errp, "required link 'psi' not found: "); return; } @@ -797,7 +794,7 @@ static void pnv_lpc_isa_irq_handler(void *opaque, int n= , int level) =20 ISABus *pnv_lpc_isa_create(PnvLpcController *lpc, bool use_cpld, Error **e= rrp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); ISABus *isa_bus; qemu_irq *irqs; qemu_irq_handler handler; @@ -806,9 +803,8 @@ ISABus *pnv_lpc_isa_create(PnvLpcController *lpc, bool = use_cpld, Error **errp) * devices speficied on the command line won't find the bus and * will fail to create. */ - isa_bus =3D isa_bus_new(NULL, &lpc->isa_mem, &lpc->isa_io, &local_err); - if (local_err) { - error_propagate(errp, local_err); + isa_bus =3D isa_bus_new(NULL, &lpc->isa_mem, &lpc->isa_io, errp); + if (*errp) { return NULL; } =20 diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index 785653bb67..3306109a9b 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -255,16 +255,15 @@ static const TypeInfo pnv_occ_power9_type_info =3D { =20 static void pnv_occ_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvOCC *occ =3D PNV_OCC(dev); PnvOCCClass *poc =3D PNV_OCC_GET_CLASS(occ); Object *obj; - Error *local_err =3D NULL; =20 occ->occmisc =3D 0; =20 - obj =3D object_property_get_link(OBJECT(dev), "psi", &local_err); + obj =3D object_property_get_link(OBJECT(dev), "psi", errp); if (!obj) { - error_propagate(errp, local_err); error_prepend(errp, "required link 'psi' not found: "); return; } diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c index a997f16bb4..e96db52b82 100644 --- a/hw/ppc/pnv_psi.c +++ b/hw/ppc/pnv_psi.c @@ -483,30 +483,28 @@ static const uint8_t irq_to_xivr[] =3D { =20 static void pnv_psi_power8_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvPsi *psi =3D PNV_PSI(dev); ICSState *ics =3D &PNV8_PSI(psi)->ics; Object *obj; - Error *err =3D NULL; unsigned int i; =20 - obj =3D object_property_get_link(OBJECT(dev), "xics", &err); + obj =3D object_property_get_link(OBJECT(dev), "xics", errp); if (!obj) { error_setg(errp, "%s: required link 'xics' not found: %s", - __func__, error_get_pretty(err)); + __func__, error_get_pretty(*errp)); return; } =20 /* Create PSI interrupt control source */ object_property_add_const_link(OBJECT(ics), ICS_PROP_XICS, obj, &error_abort); - object_property_set_int(OBJECT(ics), PSI_NUM_INTERRUPTS, "nr-irqs", &e= rr); - if (err) { - error_propagate(errp, err); + object_property_set_int(OBJECT(ics), PSI_NUM_INTERRUPTS, "nr-irqs", er= rp); + if (*errp) { return; } - object_property_set_bool(OBJECT(ics), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(ics), true, "realized", errp); + if (*errp) { return; } =20 @@ -832,9 +830,9 @@ static void pnv_psi_power9_instance_init(Object *obj) =20 static void pnv_psi_power9_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvPsi *psi =3D PNV_PSI(dev); XiveSource *xsrc =3D &PNV9_PSI(psi)->source; - Error *local_err =3D NULL; int i; =20 /* This is the only device with 4k ESB pages */ @@ -844,9 +842,8 @@ static void pnv_psi_power9_realize(DeviceState *dev, Er= ror **errp) &error_fatal); object_property_add_const_link(OBJECT(xsrc), "xive", OBJECT(psi), &error_fatal); - object_property_set_bool(OBJECT(xsrc), true, "realized", &local_err); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(xsrc), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 6729269aa9..7d59e53020 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2503,31 +2503,31 @@ static CPUArchId *spapr_find_cpu_slot(MachineState = *ms, uint32_t id, int *idx) =20 static void spapr_set_vsmt_mode(SpaprMachineState *spapr, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(spapr); - Error *local_err =3D NULL; bool vsmt_user =3D !!spapr->vsmt; int kvm_smt =3D kvmppc_smt_threads(); int ret; unsigned int smp_threads =3D ms->smp.threads; =20 if (!kvm_enabled() && (smp_threads > 1)) { - error_setg(&local_err, "TCG cannot support more than 1 thread/core= " + error_setg(errp, "TCG cannot support more than 1 thread/core " "on a pseries machine"); - goto out; + return; } if (!is_power_of_2(smp_threads)) { - error_setg(&local_err, "Cannot support %d threads/core on a pserie= s " + error_setg(errp, "Cannot support %d threads/core on a pseries " "machine because it must be a power of 2", smp_thread= s); - goto out; + return; } =20 /* Detemine the VSMT mode to use: */ if (vsmt_user) { if (spapr->vsmt < smp_threads) { - error_setg(&local_err, "Cannot support VSMT mode %d" + error_setg(errp, "Cannot support VSMT mode %d" " because it must be >=3D threads/core (%d)", spapr->vsmt, smp_threads); - goto out; + return; } /* In this case, spapr->vsmt has been set by the command line */ } else { @@ -2546,7 +2546,7 @@ static void spapr_set_vsmt_mode(SpaprMachineState *sp= apr, Error **errp) ret =3D kvmppc_set_smt_threads(spapr->vsmt); if (ret) { /* Looks like KVM isn't able to change VSMT mode */ - error_setg(&local_err, + error_setg(errp, "Failed to set KVM's VSMT mode to %d (errno %d)", spapr->vsmt, ret); /* We can live with that if the default one is big enough @@ -2554,25 +2554,22 @@ static void spapr_set_vsmt_mode(SpaprMachineState *= spapr, Error **errp) * we want. In this case we'll waste some vcpu ids, but * behaviour will be correct */ if ((kvm_smt >=3D smp_threads) && ((spapr->vsmt % kvm_smt) =3D= =3D 0)) { - warn_report_err(local_err); - local_err =3D NULL; - goto out; + warn_report_errp(errp); + *errp =3D NULL; + return; } else { if (!vsmt_user) { - error_append_hint(&local_err, + error_append_hint(errp, "On PPC, a VM with %d threads/core" " on a host with %d threads/core" " requires the use of VSMT mode %d.\= n", smp_threads, kvm_smt, spapr->vsmt); } - error_append_kvmppc_smt_possible_hint(&local_err); - goto out; + error_append_kvmppc_smt_possible_hint(errp); + return; } } } - /* else TCG: nothing to do currently */ -out: - error_propagate(errp, local_err); } =20 static void spapr_init_cpus(SpaprMachineState *spapr) @@ -3404,27 +3401,26 @@ int spapr_lmb_dt_populate(SpaprDrc *drc, SpaprMachi= neState *spapr, static void spapr_add_lmbs(DeviceState *dev, uint64_t addr_start, uint64_t= size, bool dedicated_hp_event_source, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprDrc *drc; uint32_t nr_lmbs =3D size/SPAPR_MEMORY_BLOCK_SIZE; int i; uint64_t addr =3D addr_start; bool hotplugged =3D spapr_drc_hotplugged(dev); - Error *local_err =3D NULL; =20 for (i =3D 0; i < nr_lmbs; i++) { drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_LMB, addr / SPAPR_MEMORY_BLOCK_SIZE); g_assert(drc); =20 - spapr_drc_attach(drc, dev, &local_err); - if (local_err) { + spapr_drc_attach(drc, dev, errp); + if (*errp) { while (addr > addr_start) { addr -=3D SPAPR_MEMORY_BLOCK_SIZE; drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_LMB, addr / SPAPR_MEMORY_BLOCK_SIZE); spapr_drc_detach(drc); } - error_propagate(errp, local_err); return; } if (!hotplugged) { @@ -3452,27 +3448,27 @@ static void spapr_add_lmbs(DeviceState *dev, uint64= _t addr_start, uint64_t size, static void spapr_memory_plug(HotplugHandler *hotplug_dev, DeviceState *de= v, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); SpaprMachineState *ms =3D SPAPR_MACHINE(hotplug_dev); PCDIMMDevice *dimm =3D PC_DIMM(dev); uint64_t size, addr; =20 size =3D memory_device_get_region_size(MEMORY_DEVICE(dev), &error_abor= t); =20 - pc_dimm_plug(dimm, MACHINE(ms), &local_err); - if (local_err) { - goto out; + pc_dimm_plug(dimm, MACHINE(ms), errp); + if (*errp) { + return; } =20 addr =3D object_property_get_uint(OBJECT(dimm), - PC_DIMM_ADDR_PROP, &local_err); - if (local_err) { + PC_DIMM_ADDR_PROP, errp); + if (*errp) { goto out_unplug; } =20 spapr_add_lmbs(dev, addr, size, spapr_ovec_test(ms->ov5_cas, OV5_HP_EV= T), - &local_err); - if (local_err) { + errp); + if (*errp) { goto out_unplug; } =20 @@ -3480,17 +3476,15 @@ static void spapr_memory_plug(HotplugHandler *hotpl= ug_dev, DeviceState *dev, =20 out_unplug: pc_dimm_unplug(dimm, MACHINE(ms)); -out: - error_propagate(errp, local_err); } =20 static void spapr_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState= *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); const SpaprMachineClass *smc =3D SPAPR_MACHINE_GET_CLASS(hotplug_dev); SpaprMachineState *spapr =3D SPAPR_MACHINE(hotplug_dev); PCDIMMDevice *dimm =3D PC_DIMM(dev); - Error *local_err =3D NULL; uint64_t size; Object *memdev; hwaddr pagesize; @@ -3500,9 +3494,8 @@ static void spapr_memory_pre_plug(HotplugHandler *hot= plug_dev, DeviceState *dev, return; } =20 - size =3D memory_device_get_region_size(MEMORY_DEVICE(dimm), &local_err= ); - if (local_err) { - error_propagate(errp, local_err); + size =3D memory_device_get_region_size(MEMORY_DEVICE(dimm), errp); + if (*errp) { return; } =20 @@ -3515,9 +3508,8 @@ static void spapr_memory_pre_plug(HotplugHandler *hot= plug_dev, DeviceState *dev, memdev =3D object_property_get_link(OBJECT(dimm), PC_DIMM_MEMDEV_PROP, &error_abort); pagesize =3D host_memory_backend_pagesize(MEMORY_BACKEND(memdev)); - spapr_check_pagesize(spapr, pagesize, &local_err); - if (local_err) { - error_propagate(errp, local_err); + spapr_check_pagesize(spapr, pagesize, errp); + if (*errp) { return; } =20 @@ -3641,8 +3633,8 @@ static void spapr_memory_unplug(HotplugHandler *hotpl= ug_dev, DeviceState *dev) static void spapr_memory_unplug_request(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprMachineState *spapr =3D SPAPR_MACHINE(hotplug_dev); - Error *local_err =3D NULL; PCDIMMDevice *dimm =3D PC_DIMM(dev); uint32_t nr_lmbs; uint64_t size, addr_start, addr; @@ -3653,9 +3645,9 @@ static void spapr_memory_unplug_request(HotplugHandle= r *hotplug_dev, nr_lmbs =3D size / SPAPR_MEMORY_BLOCK_SIZE; =20 addr_start =3D object_property_get_uint(OBJECT(dimm), PC_DIMM_ADDR_PRO= P, - &local_err); - if (local_err) { - goto out; + errp); + if (*errp) { + return; } =20 /* @@ -3665,10 +3657,10 @@ static void spapr_memory_unplug_request(HotplugHand= ler *hotplug_dev, * bail out to avoid detaching DRCs that were already released. */ if (spapr_pending_dimm_unplugs_find(spapr, dimm)) { - error_setg(&local_err, + error_setg(errp, "Memory unplug already in progress for device %s", dev->id); - goto out; + return; } =20 spapr_pending_dimm_unplugs_add(spapr, nr_lmbs, dimm); @@ -3687,8 +3679,6 @@ static void spapr_memory_unplug_request(HotplugHandle= r *hotplug_dev, addr_start / SPAPR_MEMORY_BLOCK_SIZE); spapr_hotplug_req_remove_by_count_indexed(SPAPR_DR_CONNECTOR_TYPE_LMB, nr_lmbs, spapr_drc_index(drc= )); -out: - error_propagate(errp, local_err); } =20 /* Callback to be called during DRC release. */ @@ -3776,6 +3766,7 @@ int spapr_core_dt_populate(SpaprDrc *drc, SpaprMachin= eState *spapr, static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprMachineState *spapr =3D SPAPR_MACHINE(OBJECT(hotplug_dev)); MachineClass *mc =3D MACHINE_GET_CLASS(spapr); SpaprMachineClass *smc =3D SPAPR_MACHINE_CLASS(mc); @@ -3783,7 +3774,6 @@ static void spapr_core_plug(HotplugHandler *hotplug_d= ev, DeviceState *dev, CPUCore *cc =3D CPU_CORE(dev); CPUState *cs; SpaprDrc *drc; - Error *local_err =3D NULL; CPUArchId *core_slot; int index; bool hotplugged =3D spapr_drc_hotplugged(dev); @@ -3801,9 +3791,8 @@ static void spapr_core_plug(HotplugHandler *hotplug_d= ev, DeviceState *dev, g_assert(drc || !mc->has_hotpluggable_cpus); =20 if (drc) { - spapr_drc_attach(drc, dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + spapr_drc_attach(drc, dev, errp); + if (*errp) { return; } =20 @@ -3834,9 +3823,8 @@ static void spapr_core_plug(HotplugHandler *hotplug_d= ev, DeviceState *dev, if (hotplugged) { for (i =3D 0; i < cc->nr_threads; i++) { ppc_set_compat(core->threads[i], POWERPC_CPU(first_cpu)->compa= t_pvr, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } } @@ -3846,9 +3834,9 @@ static void spapr_core_plug(HotplugHandler *hotplug_d= ev, DeviceState *dev, static void spapr_core_pre_plug(HotplugHandler *hotplug_dev, DeviceState *= dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *machine =3D MACHINE(OBJECT(hotplug_dev)); MachineClass *mc =3D MACHINE_GET_CLASS(hotplug_dev); - Error *local_err =3D NULL; CPUCore *cc =3D CPU_CORE(dev); const char *base_core_type =3D spapr_get_cpu_core_type(machine->cpu_ty= pe); const char *type =3D object_get_typename(OBJECT(dev)); @@ -3857,18 +3845,18 @@ static void spapr_core_pre_plug(HotplugHandler *hot= plug_dev, DeviceState *dev, unsigned int smp_threads =3D machine->smp.threads; =20 if (dev->hotplugged && !mc->has_hotpluggable_cpus) { - error_setg(&local_err, "CPU hotplug not supported for this machine= "); - goto out; + error_setg(errp, "CPU hotplug not supported for this machine"); + return; } =20 if (strcmp(base_core_type, type)) { - error_setg(&local_err, "CPU core type should be %s", base_core_typ= e); - goto out; + error_setg(errp, "CPU core type should be %s", base_core_type); + return; } =20 if (cc->core_id % smp_threads) { - error_setg(&local_err, "invalid core id %d", cc->core_id); - goto out; + error_setg(errp, "invalid core id %d", cc->core_id); + return; } =20 /* @@ -3878,26 +3866,23 @@ static void spapr_core_pre_plug(HotplugHandler *hot= plug_dev, DeviceState *dev, * total vcpus not a multiple of threads-per-core. */ if (mc->has_hotpluggable_cpus && (cc->nr_threads !=3D smp_threads)) { - error_setg(&local_err, "invalid nr-threads %d, must be %d", + error_setg(errp, "invalid nr-threads %d, must be %d", cc->nr_threads, smp_threads); - goto out; + return; } =20 core_slot =3D spapr_find_cpu_slot(MACHINE(hotplug_dev), cc->core_id, &= index); if (!core_slot) { - error_setg(&local_err, "core id %d out of range", cc->core_id); - goto out; + error_setg(errp, "core id %d out of range", cc->core_id); + return; } =20 if (core_slot->cpu) { - error_setg(&local_err, "core %d already populated", cc->core_id); - goto out; + error_setg(errp, "core %d already populated", cc->core_id); + return; } =20 - numa_cpu_pre_plug(core_slot, dev, &local_err); - -out: - error_propagate(errp, local_err); + numa_cpu_pre_plug(core_slot, dev, errp); } =20 int spapr_phb_dt_populate(SpaprDrc *drc, SpaprMachineState *spapr, @@ -3956,12 +3941,12 @@ static void spapr_phb_pre_plug(HotplugHandler *hotp= lug_dev, DeviceState *dev, static void spapr_phb_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprMachineState *spapr =3D SPAPR_MACHINE(OBJECT(hotplug_dev)); SpaprMachineClass *smc =3D SPAPR_MACHINE_GET_CLASS(spapr); SpaprPhbState *sphb =3D SPAPR_PCI_HOST_BRIDGE(dev); SpaprDrc *drc; bool hotplugged =3D spapr_drc_hotplugged(dev); - Error *local_err =3D NULL; =20 if (!smc->dr_phb_enabled) { return; @@ -3971,9 +3956,8 @@ static void spapr_phb_plug(HotplugHandler *hotplug_de= v, DeviceState *dev, /* hotplug hooks should check it's enabled before getting this far */ assert(drc); =20 - spapr_drc_attach(drc, DEVICE(dev), &local_err); - if (local_err) { - error_propagate(errp, local_err); + spapr_drc_attach(drc, DEVICE(dev), errp); + if (*errp) { return; } =20 @@ -4283,6 +4267,7 @@ int spapr_get_vcpu_id(PowerPCCPU *cpu) =20 void spapr_set_vcpu_id(PowerPCCPU *cpu, int cpu_index, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); MachineState *ms =3D MACHINE(spapr); int vcpu_id; diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c index 481dfd2a27..324f5080cd 100644 --- a/hw/ppc/spapr_caps.c +++ b/hw/ppc/spapr_caps.c @@ -83,14 +83,13 @@ static void spapr_cap_get_bool(Object *obj, Visitor *v,= const char *name, static void spapr_cap_set_bool(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprCapabilityInfo *cap =3D opaque; SpaprMachineState *spapr =3D SPAPR_MACHINE(obj); bool value; - Error *local_err =3D NULL; =20 - visit_type_bool(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_bool(v, name, &value, errp); + if (*errp) { return; } =20 @@ -121,15 +120,14 @@ static void spapr_cap_get_string(Object *obj, Visito= r *v, const char *name, static void spapr_cap_set_string(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprCapabilityInfo *cap =3D opaque; SpaprMachineState *spapr =3D SPAPR_MACHINE(obj); - Error *local_err =3D NULL; uint8_t i; char *val; =20 - visit_type_str(v, name, &val, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &val, errp); + if (*errp) { return; } =20 @@ -165,15 +163,14 @@ static void spapr_cap_get_pagesize(Object *obj, Visit= or *v, const char *name, static void spapr_cap_set_pagesize(Object *obj, Visitor *v, const char *na= me, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprCapabilityInfo *cap =3D opaque; SpaprMachineState *spapr =3D SPAPR_MACHINE(obj); uint64_t pagesize; uint8_t val; - Error *local_err =3D NULL; =20 - visit_type_size(v, name, &pagesize, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_size(v, name, &pagesize, errp); + if (*errp) { return; } =20 @@ -248,12 +245,12 @@ SpaprCapPossible cap_cfpc_possible =3D { static void cap_safe_cache_apply(SpaprMachineState *spapr, uint8_t val, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); uint8_t kvm_val =3D kvmppc_get_cap_safe_cache(); =20 if (tcg_enabled() && val) { /* TCG only supports broken, allow other values and print a warnin= g */ - error_setg(&local_err, + error_setg(errp, "TCG doesn't support requested feature, cap-cfpc=3D%s", cap_cfpc_possible.vals[val]); } else if (kvm_enabled() && (val > kvm_val)) { @@ -263,8 +260,8 @@ static void cap_safe_cache_apply(SpaprMachineState *spa= pr, uint8_t val, cap_cfpc_possible.vals[kvm_val]); } =20 - if (local_err !=3D NULL) - warn_report_err(local_err); + if (*errp) + warn_report_errp(errp); } =20 SpaprCapPossible cap_sbbc_possible =3D { @@ -277,12 +274,12 @@ SpaprCapPossible cap_sbbc_possible =3D { static void cap_safe_bounds_check_apply(SpaprMachineState *spapr, uint8_t = val, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); uint8_t kvm_val =3D kvmppc_get_cap_safe_bounds_check(); =20 if (tcg_enabled() && val) { /* TCG only supports broken, allow other values and print a warnin= g */ - error_setg(&local_err, + error_setg(errp, "TCG doesn't support requested feature, cap-sbbc=3D%s", cap_sbbc_possible.vals[val]); } else if (kvm_enabled() && (val > kvm_val)) { @@ -292,8 +289,8 @@ static void cap_safe_bounds_check_apply(SpaprMachineSta= te *spapr, uint8_t val, cap_sbbc_possible.vals[kvm_val]); } =20 - if (local_err !=3D NULL) - warn_report_err(local_err); + if (*errp) + warn_report_errp(errp); } =20 SpaprCapPossible cap_ibs_possible =3D { @@ -309,12 +306,12 @@ SpaprCapPossible cap_ibs_possible =3D { static void cap_safe_indirect_branch_apply(SpaprMachineState *spapr, uint8_t val, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); uint8_t kvm_val =3D kvmppc_get_cap_safe_indirect_branch(); =20 if (tcg_enabled() && val) { /* TCG only supports broken, allow other values and print a warnin= g */ - error_setg(&local_err, + error_setg(errp, "TCG doesn't support requested feature, cap-ibs=3D%s", cap_ibs_possible.vals[val]); } else if (kvm_enabled() && (val > kvm_val)) { @@ -324,8 +321,8 @@ static void cap_safe_indirect_branch_apply(SpaprMachine= State *spapr, cap_ibs_possible.vals[kvm_val]); } =20 - if (local_err !=3D NULL) { - warn_report_err(local_err); + if (*errp) { + warn_report_errp(errp); } } =20 @@ -787,7 +784,7 @@ void spapr_caps_cpu_apply(SpaprMachineState *spapr, Pow= erPCCPU *cpu) =20 void spapr_caps_add_properties(SpaprMachineClass *smc, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); ObjectClass *klass =3D OBJECT_CLASS(smc); int i; =20 @@ -798,19 +795,17 @@ void spapr_caps_add_properties(SpaprMachineClass *smc= , Error **errp) =20 object_class_property_add(klass, name, cap->type, cap->get, cap->set, - NULL, cap, &local_err); - if (local_err) { - error_propagate(errp, local_err); + NULL, cap, errp); + if (*errp) { g_free(name); return; } =20 desc =3D g_strdup_printf("%s", cap->description); - object_class_property_set_description(klass, name, desc, &local_er= r); + object_class_property_set_description(klass, name, desc, errp); g_free(name); g_free(desc); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } } diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index 1d93de8161..471eaee317 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -219,13 +219,13 @@ static void spapr_cpu_core_unrealize(DeviceState *dev= , Error **errp) static void spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr, SpaprCpuCore *sc, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUPPCState *env =3D &cpu->env; CPUState *cs =3D CPU(cpu); - Error *local_err =3D NULL; =20 - object_property_set_bool(OBJECT(cpu), true, "realized", &local_err); - if (local_err) { - goto error; + object_property_set_bool(OBJECT(cpu), true, "realized", errp); + if (*errp) { + return; } =20 /* Set time-base frequency to 512 MHz */ @@ -237,8 +237,8 @@ static void spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMa= chineState *spapr, qemu_register_reset(spapr_cpu_reset, cpu); spapr_cpu_reset(cpu); =20 - spapr->irq->cpu_intc_create(spapr, cpu, &local_err); - if (local_err) { + spapr->irq->cpu_intc_create(spapr, cpu, errp); + if (*errp) { goto error_unregister; } =20 @@ -252,36 +252,34 @@ static void spapr_realize_vcpu(PowerPCCPU *cpu, Spapr= MachineState *spapr, error_unregister: qemu_unregister_reset(spapr_cpu_reset, cpu); cpu_remove_sync(CPU(cpu)); -error: - error_propagate(errp, local_err); } =20 static PowerPCCPU *spapr_create_vcpu(SpaprCpuCore *sc, int i, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprCpuCoreClass *scc =3D SPAPR_CPU_CORE_GET_CLASS(sc); CPUCore *cc =3D CPU_CORE(sc); Object *obj; char *id; CPUState *cs; PowerPCCPU *cpu; - Error *local_err =3D NULL; =20 obj =3D object_new(scc->cpu_type); =20 cs =3D CPU(obj); cpu =3D POWERPC_CPU(obj); cs->cpu_index =3D cc->core_id + i; - spapr_set_vcpu_id(cpu, cs->cpu_index, &local_err); - if (local_err) { + spapr_set_vcpu_id(cpu, cs->cpu_index, errp); + if (*errp) { goto err; } =20 cpu->node_id =3D sc->node_id; =20 id =3D g_strdup_printf("thread[%d]", i); - object_property_add_child(OBJECT(sc), id, obj, &local_err); + object_property_add_child(OBJECT(sc), id, obj, errp); g_free(id); - if (local_err) { + if (*errp) { goto err; } =20 @@ -292,7 +290,6 @@ static PowerPCCPU *spapr_create_vcpu(SpaprCpuCore *sc, = int i, Error **errp) =20 err: object_unref(obj); - error_propagate(errp, local_err); return NULL; } =20 @@ -307,6 +304,7 @@ static void spapr_delete_vcpu(PowerPCCPU *cpu, SpaprCpu= Core *sc) =20 static void spapr_cpu_core_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); /* We don't use SPAPR_MACHINE() in order to exit gracefully if the user * tries to add a sPAPR CPU core to a non-pseries machine. */ @@ -315,7 +313,6 @@ static void spapr_cpu_core_realize(DeviceState *dev, Er= ror **errp) TYPE_SPAPR_MACHINE); SpaprCpuCore *sc =3D SPAPR_CPU_CORE(OBJECT(dev)); CPUCore *cc =3D CPU_CORE(OBJECT(dev)); - Error *local_err =3D NULL; int i, j; =20 if (!spapr) { @@ -325,15 +322,15 @@ static void spapr_cpu_core_realize(DeviceState *dev, = Error **errp) =20 sc->threads =3D g_new(PowerPCCPU *, cc->nr_threads); for (i =3D 0; i < cc->nr_threads; i++) { - sc->threads[i] =3D spapr_create_vcpu(sc, i, &local_err); - if (local_err) { + sc->threads[i] =3D spapr_create_vcpu(sc, i, errp); + if (*errp) { goto err; } } =20 for (j =3D 0; j < cc->nr_threads; j++) { - spapr_realize_vcpu(sc->threads[j], spapr, sc, &local_err); - if (local_err) { + spapr_realize_vcpu(sc->threads[j], spapr, sc, errp); + if (*errp) { goto err_unrealize; } } @@ -348,7 +345,6 @@ err: spapr_delete_vcpu(sc->threads[i], sc); } g_free(sc->threads); - error_propagate(errp, local_err); } =20 static Property spapr_cpu_core_properties[] =3D { diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index 62f1a42592..22226939e1 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -299,9 +299,9 @@ static void prop_get_index(Object *obj, Visitor *v, con= st char *name, static void prop_get_fdt(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprDrc *drc =3D SPAPR_DR_CONNECTOR(obj); QNull *null =3D NULL; - Error *err =3D NULL; int fdt_offset_next, fdt_offset, fdt_depth; void *fdt; =20 @@ -326,19 +326,17 @@ static void prop_get_fdt(Object *obj, Visitor *v, con= st char *name, case FDT_BEGIN_NODE: fdt_depth++; name =3D fdt_get_name(fdt, fdt_offset, &name_len); - visit_start_struct(v, name, NULL, 0, &err); - if (err) { - error_propagate(errp, err); + visit_start_struct(v, name, NULL, 0, errp); + if (*errp) { return; } break; case FDT_END_NODE: /* shouldn't ever see an FDT_END_NODE before FDT_BEGIN_NODE */ g_assert(fdt_depth > 0); - visit_check_struct(v, &err); + visit_check_struct(v, errp); visit_end_struct(v, NULL); - if (err) { - error_propagate(errp, err); + if (*errp) { return; } fdt_depth--; @@ -347,22 +345,19 @@ static void prop_get_fdt(Object *obj, Visitor *v, con= st char *name, int i; prop =3D fdt_get_property_by_offset(fdt, fdt_offset, &prop_len= ); name =3D fdt_string(fdt, fdt32_to_cpu(prop->nameoff)); - visit_start_list(v, name, NULL, 0, &err); - if (err) { - error_propagate(errp, err); + visit_start_list(v, name, NULL, 0, errp); + if (*errp) { return; } for (i =3D 0; i < prop_len; i++) { - visit_type_uint8(v, NULL, (uint8_t *)&prop->data[i], &err); - if (err) { - error_propagate(errp, err); + visit_type_uint8(v, NULL, (uint8_t *)&prop->data[i], errp); + if (*errp) { return; } } - visit_check_list(v, &err); + visit_check_list(v, errp); visit_end_list(v, NULL); - if (err) { - error_propagate(errp, err); + if (*errp) { return; } break; @@ -485,11 +480,11 @@ static const VMStateDescription vmstate_spapr_drc =3D= { =20 static void realize(DeviceState *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprDrc *drc =3D SPAPR_DR_CONNECTOR(d); Object *root_container; gchar *link_name; gchar *child_name; - Error *err =3D NULL; =20 trace_spapr_drc_realize(spapr_drc_index(drc)); /* NOTE: we do this as part of realize/unrealize due to the fact @@ -504,11 +499,10 @@ static void realize(DeviceState *d, Error **errp) child_name =3D object_get_canonical_path_component(OBJECT(drc)); trace_spapr_drc_realize_child(spapr_drc_index(drc), child_name); object_property_add_alias(root_container, link_name, - drc->owner, child_name, &err); + drc->owner, child_name, errp); g_free(child_name); g_free(link_name); - if (err) { - error_propagate(errp, err); + if (*errp) { return; } vmstate_register(DEVICE(drc), spapr_drc_index(drc), &vmstate_spapr_drc, @@ -610,12 +604,11 @@ static void drc_physical_reset(void *opaque) =20 static void realize_physical(DeviceState *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprDrcPhysical *drcp =3D SPAPR_DRC_PHYSICAL(d); - Error *local_err =3D NULL; =20 - realize(d, &local_err); - if (local_err) { - error_propagate(errp, local_err); + realize(d, errp); + if (*errp) { return; } =20 @@ -626,12 +619,11 @@ static void realize_physical(DeviceState *d, Error **= errp) =20 static void unrealize_physical(DeviceState *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprDrcPhysical *drcp =3D SPAPR_DRC_PHYSICAL(d); - Error *local_err =3D NULL; =20 - unrealize(d, &local_err); - if (local_err) { - error_propagate(errp, local_err); + unrealize(d, errp); + if (*errp) { return; } =20 diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index 457eabe24c..9bccc9beeb 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -62,19 +62,18 @@ void spapr_irq_msi_free(SpaprMachineState *spapr, int i= rq, uint32_t num) static void spapr_irq_init_kvm(SpaprMachineState *spapr, SpaprIrq *irq, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *machine =3D MACHINE(spapr); - Error *local_err =3D NULL; =20 if (kvm_enabled() && machine_kernel_irqchip_allowed(machine)) { - irq->init_kvm(spapr, &local_err); - if (local_err && machine_kernel_irqchip_required(machine)) { - error_prepend(&local_err, + irq->init_kvm(spapr, errp); + if (*errp && machine_kernel_irqchip_required(machine)) { + error_prepend(errp, "kernel_irqchip requested but unavailable: "); - error_propagate(errp, local_err); return; } =20 - if (!local_err) { + if (!*errp) { return; } =20 @@ -82,9 +81,9 @@ static void spapr_irq_init_kvm(SpaprMachineState *spapr, * We failed to initialize the KVM device, fallback to * emulated mode */ - error_prepend(&local_err, "kernel_irqchip allowed but unavailable:= "); - error_append_hint(&local_err, "Falling back to kernel-irqchip=3Dof= f\n"); - warn_report_err(local_err); + error_prepend(errp, "kernel_irqchip allowed but unavailable: "); + error_append_hint(errp, "Falling back to kernel-irqchip=3Doff\n"); + warn_report_errp(errp); } } =20 @@ -135,14 +134,13 @@ static void spapr_irq_print_info_xics(SpaprMachineSta= te *spapr, Monitor *mon) static void spapr_irq_cpu_intc_create_xics(SpaprMachineState *spapr, PowerPCCPU *cpu, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); Object *obj; SpaprCpuState *spapr_cpu =3D spapr_cpu_state(cpu); =20 obj =3D icp_create(OBJECT(cpu), TYPE_ICP, XICS_FABRIC(spapr), - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } =20 @@ -171,11 +169,10 @@ static void spapr_irq_set_irq_xics(void *opaque, int = irq, int val) =20 static void spapr_irq_reset_xics(SpaprMachineState *spapr, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 - spapr_irq_init_kvm(spapr, &spapr_irq_xics, &local_err); - if (local_err) { - error_propagate(errp, local_err); + spapr_irq_init_kvm(spapr, &spapr_irq_xics, errp); + if (*errp) { return; } } @@ -236,13 +233,12 @@ static void spapr_irq_print_info_xive(SpaprMachineSta= te *spapr, static void spapr_irq_cpu_intc_create_xive(SpaprMachineState *spapr, PowerPCCPU *cpu, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); Object *obj; SpaprCpuState *spapr_cpu =3D spapr_cpu_state(cpu); =20 - obj =3D xive_tctx_create(OBJECT(cpu), XIVE_ROUTER(spapr->xive), &local= _err); - if (local_err) { - error_propagate(errp, local_err); + obj =3D xive_tctx_create(OBJECT(cpu), XIVE_ROUTER(spapr->xive), errp); + if (*errp) { return; } =20 @@ -262,8 +258,8 @@ static int spapr_irq_post_load_xive(SpaprMachineState *= spapr, int version_id) =20 static void spapr_irq_reset_xive(SpaprMachineState *spapr, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs; - Error *local_err =3D NULL; =20 CPU_FOREACH(cs) { PowerPCCPU *cpu =3D POWERPC_CPU(cs); @@ -272,9 +268,8 @@ static void spapr_irq_reset_xive(SpaprMachineState *spa= pr, Error **errp) spapr_xive_set_tctx_os_cam(spapr_cpu_state(cpu)->tctx); } =20 - spapr_irq_init_kvm(spapr, &spapr_irq_xive, &local_err); - if (local_err) { - error_propagate(errp, local_err); + spapr_irq_init_kvm(spapr, &spapr_irq_xive, errp); + if (*errp) { return; } =20 @@ -339,18 +334,16 @@ static SpaprIrq *spapr_irq_current(SpaprMachineState = *spapr) static int spapr_irq_claim_dual(SpaprMachineState *spapr, int irq, bool ls= i, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int ret; =20 - ret =3D spapr_irq_xics.claim(spapr, irq, lsi, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ret =3D spapr_irq_xics.claim(spapr, irq, lsi, errp); + if (*errp) { return ret; } =20 - ret =3D spapr_irq_xive.claim(spapr, irq, lsi, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ret =3D spapr_irq_xive.claim(spapr, irq, lsi, errp); + if (*errp) { return ret; } =20 @@ -378,11 +371,10 @@ static void spapr_irq_dt_populate_dual(SpaprMachineSt= ate *spapr, static void spapr_irq_cpu_intc_create_dual(SpaprMachineState *spapr, PowerPCCPU *cpu, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 - spapr_irq_xive.cpu_intc_create(spapr, cpu, &local_err); - if (local_err) { - error_propagate(errp, local_err); + spapr_irq_xive.cpu_intc_create(spapr, cpu, errp); + if (*errp) { return; } =20 @@ -407,7 +399,7 @@ static int spapr_irq_post_load_dual(SpaprMachineState *= spapr, int version_id) =20 static void spapr_irq_reset_dual(SpaprMachineState *spapr, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 /* * Deactivate the XIVE MMIOs. The XIVE backend will reenable them @@ -417,15 +409,13 @@ static void spapr_irq_reset_dual(SpaprMachineState *s= papr, Error **errp) =20 /* Destroy all KVM devices */ if (kvm_irqchip_in_kernel()) { - xics_kvm_disconnect(spapr, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xics_kvm_disconnect(spapr, errp); + if (*errp) { error_prepend(errp, "KVM XICS disconnect failed: "); return; } - kvmppc_xive_disconnect(spapr->xive, &local_err); - if (local_err) { - error_propagate(errp, local_err); + kvmppc_xive_disconnect(spapr->xive, errp); + if (*errp) { error_prepend(errp, "KVM XIVE disconnect failed: "); return; } @@ -523,6 +513,7 @@ static int spapr_irq_check(SpaprMachineState *spapr, Er= ror **errp) */ void spapr_irq_init(SpaprMachineState *spapr, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *machine =3D MACHINE(spapr); =20 if (machine_kernel_irqchip_split(machine)) { @@ -546,33 +537,28 @@ void spapr_irq_init(SpaprMachineState *spapr, Error *= *errp) } =20 if (spapr->irq->xics) { - Error *local_err =3D NULL; Object *obj; =20 obj =3D object_new(TYPE_ICS_SPAPR); - object_property_add_child(OBJECT(spapr), "ics", obj, &local_err); - if (local_err) { - error_propagate(errp, local_err); + object_property_add_child(OBJECT(spapr), "ics", obj, errp); + if (*errp) { return; } =20 object_property_add_const_link(obj, ICS_PROP_XICS, OBJECT(spapr), - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } =20 object_property_set_int(obj, spapr->irq->nr_xirqs, "nr-irqs", - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } =20 - object_property_set_bool(obj, true, "realized", &local_err); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(obj, true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 01ff41d4c4..2022af1ce6 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1229,18 +1229,17 @@ static SpaprDrc *drc_from_dev(SpaprPhbState *phb, P= CIDevice *dev) =20 static void add_drcs(SpaprPhbState *phb, PCIBus *bus, Error **errp) { + ERRP_AUTO_PROPAGATE(); Object *owner; int i; uint8_t chassis; - Error *local_err =3D NULL; =20 if (!phb->dr_enabled) { return; } =20 - chassis =3D chassis_from_bus(bus, &local_err); - if (local_err) { - error_propagate(errp, local_err); + chassis =3D chassis_from_bus(bus, errp); + if (*errp) { return; } =20 @@ -1258,17 +1257,16 @@ static void add_drcs(SpaprPhbState *phb, PCIBus *bu= s, Error **errp) =20 static void remove_drcs(SpaprPhbState *phb, PCIBus *bus, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i; uint8_t chassis; - Error *local_err =3D NULL; =20 if (!phb->dr_enabled) { return; } =20 - chassis =3D chassis_from_bus(bus, &local_err); - if (local_err) { - error_propagate(errp, local_err); + chassis =3D chassis_from_bus(bus, errp); + if (*errp) { return; } =20 @@ -1491,12 +1489,11 @@ static void spapr_pci_bridge_plug(SpaprPhbState *ph= b, PCIBridge *bridge, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); PCIBus *bus =3D pci_bridge_get_sec_bus(bridge); =20 - add_drcs(phb, bus, &local_err); - if (local_err) { - error_propagate(errp, local_err); + add_drcs(phb, bus, errp); + if (*errp) { return; } } @@ -1504,11 +1501,11 @@ static void spapr_pci_bridge_plug(SpaprPhbState *ph= b, static void spapr_pci_plug(HotplugHandler *plug_handler, DeviceState *plugged_dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprPhbState *phb =3D SPAPR_PCI_HOST_BRIDGE(DEVICE(plug_handler)); PCIDevice *pdev =3D PCI_DEVICE(plugged_dev); PCIDeviceClass *pc =3D PCI_DEVICE_GET_CLASS(plugged_dev); SpaprDrc *drc =3D drc_from_dev(phb, pdev); - Error *local_err =3D NULL; PCIBus *bus =3D PCI_BUS(qdev_get_parent_bus(DEVICE(pdev))); uint32_t slotnr =3D PCI_SLOT(pdev->devfn); =20 @@ -1520,18 +1517,17 @@ static void spapr_pci_plug(HotplugHandler *plug_han= dler, * we need to let them know it's not enabled */ if (plugged_dev->hotplugged) { - error_setg(&local_err, QERR_BUS_NO_HOTPLUG, + error_setg(errp, QERR_BUS_NO_HOTPLUG, object_get_typename(OBJECT(phb))); } - goto out; + return; } =20 g_assert(drc); =20 if (pc->is_bridge) { - spapr_pci_bridge_plug(phb, PCI_BRIDGE(plugged_dev), &local_err); - if (local_err) { - error_propagate(errp, local_err); + spapr_pci_bridge_plug(phb, PCI_BRIDGE(plugged_dev), errp); + if (*errp) { return; } } @@ -1542,15 +1538,15 @@ static void spapr_pci_plug(HotplugHandler *plug_han= dler, */ if (plugged_dev->hotplugged && bus->devices[PCI_DEVFN(slotnr, 0)] && PCI_FUNC(pdev->devfn) !=3D 0) { - error_setg(&local_err, "PCI: slot %d function 0 already ocuppied b= y %s," + error_setg(errp, "PCI: slot %d function 0 already ocuppied by %s," " additional functions can no longer be exposed to gues= t.", slotnr, bus->devices[PCI_DEVFN(slotnr, 0)]->name); - goto out; + return; } =20 - spapr_drc_attach(drc, DEVICE(pdev), &local_err); - if (local_err) { - goto out; + spapr_drc_attach(drc, DEVICE(pdev), errp); + if (*errp) { + return; } =20 /* If this is function 0, signal hotplug for all the device functions. @@ -1560,10 +1556,9 @@ static void spapr_pci_plug(HotplugHandler *plug_hand= ler, spapr_drc_reset(drc); } else if (PCI_FUNC(pdev->devfn) =3D=3D 0) { int i; - uint8_t chassis =3D chassis_from_bus(pci_get_bus(pdev), &local_err= ); + uint8_t chassis =3D chassis_from_bus(pci_get_bus(pdev), errp); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } =20 @@ -1581,21 +1576,17 @@ static void spapr_pci_plug(HotplugHandler *plug_han= dler, } } } - -out: - error_propagate(errp, local_err); } =20 static void spapr_pci_bridge_unplug(SpaprPhbState *phb, PCIBridge *bridge, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); PCIBus *bus =3D pci_bridge_get_sec_bus(bridge); =20 - remove_drcs(phb, bus, &local_err); - if (local_err) { - error_propagate(errp, local_err); + remove_drcs(phb, bus, errp); + if (*errp) { return; } } @@ -1603,6 +1594,7 @@ static void spapr_pci_bridge_unplug(SpaprPhbState *ph= b, static void spapr_pci_unplug(HotplugHandler *plug_handler, DeviceState *plugged_dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIDeviceClass *pc =3D PCI_DEVICE_GET_CLASS(plugged_dev); SpaprPhbState *phb =3D SPAPR_PCI_HOST_BRIDGE(DEVICE(plug_handler)); =20 @@ -1619,10 +1611,8 @@ static void spapr_pci_unplug(HotplugHandler *plug_ha= ndler, pci_device_reset(PCI_DEVICE(plugged_dev)); =20 if (pc->is_bridge) { - Error *local_err =3D NULL; - spapr_pci_bridge_unplug(phb, PCI_BRIDGE(plugged_dev), &local_err); - if (local_err) { - error_propagate(errp, local_err); + spapr_pci_bridge_unplug(phb, PCI_BRIDGE(plugged_dev), errp); + if (*errp) { } return; } @@ -1633,6 +1623,7 @@ static void spapr_pci_unplug(HotplugHandler *plug_han= dler, static void spapr_pci_unplug_request(HotplugHandler *plug_handler, DeviceState *plugged_dev, Error **err= p) { + ERRP_AUTO_PROPAGATE(); SpaprPhbState *phb =3D SPAPR_PCI_HOST_BRIDGE(DEVICE(plug_handler)); PCIDevice *pdev =3D PCI_DEVICE(plugged_dev); SpaprDrc *drc =3D drc_from_dev(phb, pdev); @@ -1653,11 +1644,9 @@ static void spapr_pci_unplug_request(HotplugHandler = *plug_handler, SpaprDrcClass *func_drck; SpaprDREntitySense state; int i; - Error *local_err =3D NULL; - uint8_t chassis =3D chassis_from_bus(pci_get_bus(pdev), &local_err= ); + uint8_t chassis =3D chassis_from_bus(pci_get_bus(pdev), errp); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } =20 @@ -1712,6 +1701,7 @@ static void spapr_phb_finalizefn(Object *obj) =20 static void spapr_phb_unrealize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); PCIHostState *phb =3D PCI_HOST_BRIDGE(s); @@ -1719,7 +1709,6 @@ static void spapr_phb_unrealize(DeviceState *dev, Err= or **errp) SpaprTceTable *tcet; int i; const unsigned windows_supported =3D spapr_phb_windows_supported(sphb); - Error *local_err =3D NULL; =20 spapr_phb_nvgpu_free(sphb); =20 @@ -1740,9 +1729,8 @@ static void spapr_phb_unrealize(DeviceState *dev, Err= or **errp) } } =20 - remove_drcs(sphb, phb->bus, &local_err); - if (local_err) { - error_propagate(errp, local_err); + remove_drcs(sphb, phb->bus, errp); + if (*errp) { return; } =20 @@ -1790,6 +1778,7 @@ static void spapr_phb_destroy_msi(gpointer opaque) =20 static void spapr_phb_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); /* We don't use SPAPR_MACHINE() in order to exit gracefully if the user * tries to add a sPAPR PHB to a non-pseries machine. */ @@ -1807,7 +1796,6 @@ static void spapr_phb_realize(DeviceState *dev, Error= **errp) uint64_t msi_window_size =3D 4096; SpaprTceTable *tcet; const unsigned windows_supported =3D spapr_phb_windows_supported(sphb); - Error *local_err =3D NULL; =20 if (!spapr) { error_setg(errp, TYPE_SPAPR_PCI_HOST_BRIDGE " needs a pseries mach= ine"); @@ -1961,9 +1949,9 @@ static void spapr_phb_realize(DeviceState *dev, Error= **errp) uint32_t irq =3D SPAPR_IRQ_PCI_LSI + sphb->index * PCI_NUM_PINS + = i; =20 if (smc->legacy_irq_allocation) { - irq =3D spapr_irq_findone(spapr, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + irq =3D spapr_irq_findone(spapr, errp); + if (*errp) { + error_prepend(errp, "can't allocate LSIs: "); /* * Older machines will never support PHB hotplug, ie, this= is an @@ -1973,9 +1961,9 @@ static void spapr_phb_realize(DeviceState *dev, Error= **errp) } } =20 - spapr_irq_claim(spapr, irq, true, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, "can't allocate LSIs:= "); + spapr_irq_claim(spapr, irq, true, errp); + if (*errp) { + error_prepend(errp, "can't allocate LSIs: "); goto unrealize; } =20 @@ -1983,9 +1971,8 @@ static void spapr_phb_realize(DeviceState *dev, Error= **errp) } =20 /* allocate connectors for child PCI devices */ - add_drcs(sphb, phb->bus, &local_err); - if (local_err) { - error_propagate(errp, local_err); + add_drcs(sphb, phb->bus, errp); + if (*errp) { goto unrealize; } =20 diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c index 554de9930d..cae3e99412 100644 --- a/hw/ppc/spapr_vio.c +++ b/hw/ppc/spapr_vio.c @@ -463,11 +463,11 @@ static inline uint32_t spapr_vio_reg_to_irq(uint32_t = reg) =20 static void spapr_vio_busdev_realize(DeviceState *qdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); SpaprVioDevice *dev =3D (SpaprVioDevice *)qdev; SpaprVioDeviceClass *pc =3D VIO_SPAPR_DEVICE_GET_CLASS(dev); char *id; - Error *local_err =3D NULL; =20 if (dev->reg !=3D -1) { /* @@ -503,16 +503,14 @@ static void spapr_vio_busdev_realize(DeviceState *qde= v, Error **errp) dev->irq =3D spapr_vio_reg_to_irq(dev->reg); =20 if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) { - dev->irq =3D spapr_irq_findone(spapr, &local_err); - if (local_err) { - error_propagate(errp, local_err); + dev->irq =3D spapr_irq_findone(spapr, errp); + if (*errp) { return; } } =20 - spapr_irq_claim(spapr, dev->irq, false, &local_err); - if (local_err) { - error_propagate(errp, local_err); + spapr_irq_claim(spapr, dev->irq, false, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811946; cv=none; d=zoho.com; s=zohoarc; b=eVrbYhTGy8JTR3ZbTTUUeQFZ4J6rcrFEbrni/i9cwNVLrzqSGSWV8dAHTuKvknyr06cGWBs+WLMM0f6Nm3Q+GeIxmWQ/YUDP9aaGk1Nh35qM8mFcw5aV7RaM68fpUW7h/sWjE8mg1sCGVtSs8rHS90fbA8MMYRGzUd6+rt0AJeE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811946; h=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=LFSIM0GrKI72QB3PVVyI0et+fH00JGXtCOAuhcQqHhw=; b=k02/QJxhzQbmpFF+LrClZrcjqg22F7Pph4g+NuuaoteRBhh6dk8QnHuUnVJkS6yhRs8WKRm98uaOFwIo0lGSp2mtLpPhfYLQ0BRUxXdDd2pEjMWhJwgZ2s4F6Gdpoje1Fn7wmMKmVL9bHUp3sRqaaNzWDetr111S2rS8LOkawpU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811946341278.83304701490545; Fri, 11 Oct 2019 09:39:06 -0700 (PDT) Received: from localhost ([::1]:54030 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxwQ-00026I-Cj for importer@patchew.org; Fri, 11 Oct 2019 12:38:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36246) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQr-00068B-Sq for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQq-0004NB-Jt for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:21 -0400 Received: from relay.sw.ru ([185.231.240.75]:47956) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQq-0004Ai-Ch for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:20 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQf-0003XG-1k; Fri, 11 Oct 2019 19:06:09 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 036/126] SPARC Machines: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:22 +0300 Message-Id: <20191011160552.22907-37-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Mark Cave-Ayland , armbru@redhat.com, Greg Kurz , Artyom Tarasenko Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/sparc/sun4m.c | 21 +++++++++------------ hw/sparc64/sun4u.c | 7 +++---- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 6c5a17a020..3490992cdf 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -601,14 +601,13 @@ typedef struct IDRegState { =20 static void idreg_realize(DeviceState *ds, Error **errp) { + ERRP_AUTO_PROPAGATE(); IDRegState *s =3D MACIO_ID_REGISTER(ds); SysBusDevice *dev =3D SYS_BUS_DEVICE(ds); - Error *local_err =3D NULL; =20 memory_region_init_ram_nomigrate(&s->mem, OBJECT(ds), "sun4m.idreg", - sizeof(idreg_data), &local_err); - if (local_err) { - error_propagate(errp, local_err); + sizeof(idreg_data), errp); + if (*errp) { return; } =20 @@ -655,14 +654,13 @@ static void afx_init(hwaddr addr) =20 static void afx_realize(DeviceState *ds, Error **errp) { + ERRP_AUTO_PROPAGATE(); AFXState *s =3D TCX_AFX(ds); SysBusDevice *dev =3D SYS_BUS_DEVICE(ds); - Error *local_err =3D NULL; =20 memory_region_init_ram_nomigrate(&s->mem, OBJECT(ds), "sun4m.afx", 4, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } =20 @@ -737,14 +735,13 @@ static void prom_init(hwaddr addr, const char *bios_n= ame) =20 static void prom_realize(DeviceState *ds, Error **errp) { + ERRP_AUTO_PROPAGATE(); PROMState *s =3D OPENPROM(ds); SysBusDevice *dev =3D SYS_BUS_DEVICE(ds); - Error *local_err =3D NULL; =20 memory_region_init_ram_nomigrate(&s->prom, OBJECT(ds), "sun4m.prom", - PROM_SIZE_MAX, &local_err); - if (local_err) { - error_propagate(errp, local_err); + PROM_SIZE_MAX, errp); + if (*errp) { return; } =20 diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 1ded2a4c9a..dbd6ee6111 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -455,14 +455,13 @@ static void prom_init(hwaddr addr, const char *bios_n= ame) =20 static void prom_realize(DeviceState *ds, Error **errp) { + ERRP_AUTO_PROPAGATE(); PROMState *s =3D OPENPROM(ds); SysBusDevice *dev =3D SYS_BUS_DEVICE(ds); - Error *local_err =3D NULL; =20 memory_region_init_ram_nomigrate(&s->prom, OBJECT(ds), "sun4u.prom", - PROM_SIZE_MAX, &local_err); - if (local_err) { - error_propagate(errp, local_err); + PROM_SIZE_MAX, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811840; cv=none; d=zoho.com; s=zohoarc; b=f8DpaOHyy3yDa34RyC+7fnqbrI0MjBUm2OehN/qYSmavlqen4CN1Ee7ePgsd+/0GfVBfhhRpHCKF1ZfH8wKLMjNFKrlU9/jjr5+o5MsJWDRNJ7RxMq2jE0hClIFvo8gPsybqB4D0XcIV0guHqxg5B3AKFh3r/8aFClVFKfgASVw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811840; h=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=GyPI6HwU0Vdh5+oFN/bJpFCgmyi1j9p1984WPpPaEBM=; b=kjB6dJpnyD18YZl4kkEMDKVz1bIKCwY3hePgEpp9x40C30seP+k7AFTL9pg9UkYHsHSS8vBk26C9HUbrz8jb13TdCmFYNEuE19/PToefBPLmKel7pX4hOKN2HjnsVJg2rJsRqpg+tbMkANktcPwsHJlhwPcbmcdLHsTldbeUr+k= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081184030871.4468323388528; Fri, 11 Oct 2019 09:37:20 -0700 (PDT) Received: from localhost ([::1]:53990 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxun-0007n5-Ax for importer@patchew.org; Fri, 11 Oct 2019 12:37:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36635) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR2-0006RG-Na for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR0-0004dZ-TX for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:32 -0400 Received: from relay.sw.ru ([185.231.240.75]:47964) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR0-0004Ar-JU; Fri, 11 Oct 2019 12:06:30 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQf-0003XG-79; Fri, 11 Oct 2019 19:06:09 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 037/126] S390 Machines: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:23 +0300 Message-Id: <20191011160552.22907-38-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Thomas Huth , vsementsov@virtuozzo.com, Matthew Rosato , David Hildenbrand , Cornelia Huck , armbru@redhat.com, Greg Kurz , Halil Pasic , Christian Borntraeger , qemu-s390x@nongnu.org, Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Cornelia Huck --- hw/s390x/ipl.c | 24 +++++++++++------------- hw/s390x/s390-pci-bus.c | 37 ++++++++++++++++--------------------- 2 files changed, 27 insertions(+), 34 deletions(-) diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index ca544d64c5..46b0a413cf 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -110,12 +110,12 @@ static uint64_t bios_translate_addr(void *opaque, uin= t64_t srcaddr) =20 static void s390_ipl_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); S390IPLState *ipl =3D S390_IPL(dev); uint32_t *ipl_psw; uint64_t pentry; char *magic; int kernel_size; - Error *err =3D NULL; =20 int bios_size; char *bios_filename; @@ -133,8 +133,8 @@ static void s390_ipl_realize(DeviceState *dev, Error **= errp) =20 bios_filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); if (bios_filename =3D=3D NULL) { - error_setg(&err, "could not find stage1 bootloader"); - goto error; + error_setg(errp, "could not find stage1 bootloader"); + return; } =20 bios_size =3D load_elf(bios_filename, NULL, @@ -153,8 +153,8 @@ static void s390_ipl_realize(DeviceState *dev, Error **= errp) g_free(bios_filename); =20 if (bios_size =3D=3D -1) { - error_setg(&err, "could not load bootloader '%s'", bios_name); - goto error; + error_setg(errp, "could not load bootloader '%s'", bios_name); + return; } =20 /* default boot target is the bios */ @@ -168,8 +168,8 @@ static void s390_ipl_realize(DeviceState *dev, Error **= errp) if (kernel_size < 0) { kernel_size =3D load_image_targphys(ipl->kernel, 0, ram_size); if (kernel_size < 0) { - error_setg(&err, "could not load kernel '%s'", ipl->kernel= ); - goto error; + error_setg(errp, "could not load kernel '%s'", ipl->kernel= ); + return; } /* if this is Linux use KERN_IMAGE_START */ magic =3D rom_ptr(LINUX_MAGIC_ADDR, 6); @@ -181,8 +181,8 @@ static void s390_ipl_realize(DeviceState *dev, Error **= errp) if (ipl_psw) { pentry =3D be32_to_cpu(*ipl_psw) & 0x7fffffffUL; } else { - error_setg(&err, "Could not get IPL PSW"); - goto error; + error_setg(errp, "Could not get IPL PSW"); + return; } } } @@ -215,8 +215,8 @@ static void s390_ipl_realize(DeviceState *dev, Error **= errp) initrd_size =3D load_image_targphys(ipl->initrd, initrd_offset, ram_size - initrd_offset); if (initrd_size =3D=3D -1) { - error_setg(&err, "could not load initrd '%s'", ipl->initrd= ); - goto error; + error_setg(errp, "could not load initrd '%s'", ipl->initrd= ); + return; } =20 /* @@ -238,8 +238,6 @@ static void s390_ipl_realize(DeviceState *dev, Error **= errp) ipl->compat_start_addr =3D ipl->start_addr; ipl->compat_bios_start_addr =3D ipl->bios_start_addr; qemu_register_reset(qdev_reset_all_fn, dev); -error: - error_propagate(errp, err); } =20 static Property s390_ipl_properties[] =3D { diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 2d2f4a7c41..273e32d4ae 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -737,11 +737,11 @@ static void s390_pci_iommu_free(S390pciState *s, PCIB= us *bus, int32_t devfn) =20 static void s390_pcihost_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIBus *b; BusState *bus; PCIHostState *phb =3D PCI_HOST_BRIDGE(dev); S390pciState *s =3D S390_PCI_HOST_BRIDGE(dev); - Error *local_err =3D NULL; =20 DPRINTF("host_init\n"); =20 @@ -751,17 +751,15 @@ static void s390_pcihost_realize(DeviceState *dev, Er= ror **errp) pci_setup_iommu(b, s390_pci_dma_iommu, s); =20 bus =3D BUS(b); - qbus_set_hotplug_handler(bus, OBJECT(dev), &local_err); - if (local_err) { - error_propagate(errp, local_err); + qbus_set_hotplug_handler(bus, OBJECT(dev), errp); + if (*errp) { return; } phb->bus =3D b; =20 s->bus =3D S390_PCI_BUS(qbus_create(TYPE_S390_PCI_BUS, dev, NULL)); - qbus_set_hotplug_handler(BUS(s->bus), OBJECT(dev), &local_err); - if (local_err) { - error_propagate(errp, local_err); + qbus_set_hotplug_handler(BUS(s->bus), OBJECT(dev), errp); + if (*errp) { return; } =20 @@ -773,8 +771,7 @@ static void s390_pcihost_realize(DeviceState *dev, Erro= r **errp) QTAILQ_INIT(&s->zpci_devs); =20 css_register_io_adapters(CSS_IO_ADAPTER_PCI, true, false, - S390_ADAPTER_SUPPRESSIBLE, &local_err); - error_propagate(errp, local_err); + S390_ADAPTER_SUPPRESSIBLE, errp); } =20 static int s390_pci_msix_init(S390PCIBusDevice *pbdev) @@ -821,7 +818,7 @@ static void s390_pci_msix_free(S390PCIBusDevice *pbdev) static S390PCIBusDevice *s390_pci_device_new(S390pciState *s, const char *target, Error **e= rrp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); DeviceState *dev; =20 dev =3D qdev_try_create(BUS(s->bus), TYPE_S390_PCI_DEVICE); @@ -830,17 +827,17 @@ static S390PCIBusDevice *s390_pci_device_new(S390pciS= tate *s, return NULL; } =20 - object_property_set_str(OBJECT(dev), target, "target", &local_err); - if (local_err) { + object_property_set_str(OBJECT(dev), target, "target", errp); + if (*errp) { object_unparent(OBJECT(dev)); - error_propagate_prepend(errp, local_err, + error_prepend(errp, "zPCI device could not be created: "); return NULL; } - object_property_set_bool(OBJECT(dev), true, "realized", &local_err); - if (local_err) { + object_property_set_bool(OBJECT(dev), true, "realized", errp); + if (*errp) { object_unparent(OBJECT(dev)); - error_propagate_prepend(errp, local_err, + error_prepend(errp, "zPCI device could not be created: "); return NULL; } @@ -1187,6 +1184,7 @@ static uint32_t s390_pci_generate_fid(S390pciState *s= , Error **errp) =20 static void s390_pci_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); S390PCIBusDevice *zpci =3D S390_PCI_DEVICE(dev); S390pciState *s =3D s390_get_phb(); =20 @@ -1213,11 +1211,8 @@ static void s390_pci_device_realize(DeviceState *dev= , Error **errp) } =20 if (!zpci->fid_defined) { - Error *local_error =3D NULL; - - zpci->fid =3D s390_pci_generate_fid(s, &local_error); - if (local_error) { - error_propagate(errp, local_error); + zpci->fid =3D s390_pci_generate_fid(s, errp); + if (*errp) { return; } } else if (s390_pci_find_dev_by_fid(s, zpci->fid)) { --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814257; cv=none; d=zoho.com; s=zohoarc; b=luH8zdxZWx2CdPEOLRdoP/4z6pHrgTuO7AQweWp2Clipw0GUYpRKqbGMfVxbFxyQ3GS5w4lf7Y+sBgFlOkAn5s3Dhu8Uaa++Tp+WcgnRPIjcmOyPdEBvDfEYzg/1mzjS9hw1ggfeHh5QRPymKJ21XQyXqzmqdlhkhg8MoMHzUJs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814257; h=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=fRxO9Xw1uJHY+PmO1c1962WRfs76Zh3M8+S9xEdTfig=; b=TWerazwlj/NyeC9aWctY1i1D1EFwWaCCJgMjIXVt8u4PtSZJxnSoD1viCDQgWs+K3cIp6VUxQJ0NbMmxYCSjZFObnbq0g5ING4cklTNl2qceExya62i2htc2d3XnJV0V+ioQTxfKcethvCmHXwTKqVY/+BRCmKUPffI5uMWG7yE= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814257943236.5892568462466; Fri, 11 Oct 2019 10:17:37 -0700 (PDT) Received: from localhost ([::1]:54512 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyXo-0008U3-8L for importer@patchew.org; Fri, 11 Oct 2019 13:17:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36284) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQt-0006Ao-DX for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQr-0004NW-9M for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:23 -0400 Received: from relay.sw.ru ([185.231.240.75]:47972) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQq-0004Av-Tg for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:21 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQf-0003XG-Gj; Fri, 11 Oct 2019 19:06:09 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 038/126] X86 Machines: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:24 +0300 Message-Id: <20191011160552.22907-39-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Eduardo Habkost , "Michael S. Tsirkin" , armbru@redhat.com, Greg Kurz , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini , Igor Mammedov Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/acpi/ich9.c | 30 +++++++++------------- hw/char/debugcon.c | 7 +++--- hw/char/serial-pci-multi.c | 7 +++--- hw/char/serial-pci.c | 7 +++--- hw/core/machine.c | 21 +++++++--------- hw/core/numa.c | 51 +++++++++++++++++--------------------- hw/intc/apic_common.c | 7 +++--- hw/pci-host/piix.c | 7 +++--- 8 files changed, 59 insertions(+), 78 deletions(-) diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c index 2034dd749e..686b7cdf3a 100644 --- a/hw/acpi/ich9.c +++ b/hw/acpi/ich9.c @@ -369,17 +369,15 @@ static void ich9_pm_get_disable_s3(Object *obj, Visit= or *v, const char *name, static void ich9_pm_set_disable_s3(Object *obj, Visitor *v, const char *na= me, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); ICH9LPCPMRegs *pm =3D opaque; - Error *local_err =3D NULL; uint8_t value; =20 - visit_type_uint8(v, name, &value, &local_err); - if (local_err) { - goto out; + visit_type_uint8(v, name, &value, errp); + if (*errp) { + return; } pm->disable_s3 =3D value; -out: - error_propagate(errp, local_err); } =20 static void ich9_pm_get_disable_s4(Object *obj, Visitor *v, const char *na= me, @@ -394,17 +392,15 @@ static void ich9_pm_get_disable_s4(Object *obj, Visit= or *v, const char *name, static void ich9_pm_set_disable_s4(Object *obj, Visitor *v, const char *na= me, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); ICH9LPCPMRegs *pm =3D opaque; - Error *local_err =3D NULL; uint8_t value; =20 - visit_type_uint8(v, name, &value, &local_err); - if (local_err) { - goto out; + visit_type_uint8(v, name, &value, errp); + if (*errp) { + return; } pm->disable_s4 =3D value; -out: - error_propagate(errp, local_err); } =20 static void ich9_pm_get_s4_val(Object *obj, Visitor *v, const char *name, @@ -419,17 +415,15 @@ static void ich9_pm_get_s4_val(Object *obj, Visitor *= v, const char *name, static void ich9_pm_set_s4_val(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); ICH9LPCPMRegs *pm =3D opaque; - Error *local_err =3D NULL; uint8_t value; =20 - visit_type_uint8(v, name, &value, &local_err); - if (local_err) { - goto out; + visit_type_uint8(v, name, &value, errp); + if (*errp) { + return; } pm->s4_val =3D value; -out: - error_propagate(errp, local_err); } =20 static bool ich9_pm_get_enable_tco(Object *obj, Error **errp) diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c index 5c592e091b..0a6d0870bb 100644 --- a/hw/char/debugcon.c +++ b/hw/char/debugcon.c @@ -97,14 +97,13 @@ static void debugcon_realize_core(DebugconState *s, Err= or **errp) =20 static void debugcon_isa_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); ISADevice *d =3D ISA_DEVICE(dev); ISADebugconState *isa =3D ISA_DEBUGCON_DEVICE(dev); DebugconState *s =3D &isa->state; - Error *err =3D NULL; =20 - debugcon_realize_core(s, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + debugcon_realize_core(s, errp); + if (*errp) { return; } memory_region_init_io(&s->io, OBJECT(dev), &debugcon_ops, s, diff --git a/hw/char/serial-pci-multi.c b/hw/char/serial-pci-multi.c index 5f13b5663b..fa7e348870 100644 --- a/hw/char/serial-pci-multi.c +++ b/hw/char/serial-pci-multi.c @@ -79,10 +79,10 @@ static void multi_serial_irq_mux(void *opaque, int n, i= nt level) =20 static void multi_serial_pci_realize(PCIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIDeviceClass *pc =3D PCI_DEVICE_GET_CLASS(dev); PCIMultiSerialState *pci =3D DO_UPCAST(PCIMultiSerialState, dev, dev); SerialState *s; - Error *err =3D NULL; int i, nr_ports =3D 0; =20 switch (pc->device_id) { @@ -106,9 +106,8 @@ static void multi_serial_pci_realize(PCIDevice *dev, Er= ror **errp) for (i =3D 0; i < nr_ports; i++) { s =3D pci->state + i; s->baudbase =3D 115200; - serial_realize_core(s, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + serial_realize_core(s, errp); + if (*errp) { multi_serial_pci_exit(dev); return; } diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c index cb9b76e22b..7d31f7066c 100644 --- a/hw/char/serial-pci.c +++ b/hw/char/serial-pci.c @@ -43,14 +43,13 @@ typedef struct PCISerialState { =20 static void serial_pci_realize(PCIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCISerialState *pci =3D DO_UPCAST(PCISerialState, dev, dev); SerialState *s =3D &pci->state; - Error *err =3D NULL; =20 s->baudbase =3D 115200; - serial_realize_core(s, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + serial_realize_core(s, errp); + if (*errp) { return; } =20 diff --git a/hw/core/machine.c b/hw/core/machine.c index 1689ad3bf8..89ba1845dc 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -192,13 +192,12 @@ static void machine_set_kernel_irqchip(Object *obj, V= isitor *v, const char *name, void *opaque, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(obj); OnOffSplit mode; =20 - visit_type_OnOffSplit(v, name, &mode, &err); - if (err) { - error_propagate(errp, err); + visit_type_OnOffSplit(v, name, &mode, errp); + if (*errp) { return; } else { switch (mode) { @@ -240,13 +239,12 @@ static void machine_set_kvm_shadow_mem(Object *obj, V= isitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(obj); - Error *error =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &error); - if (error) { - error_propagate(errp, error); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } =20 @@ -342,13 +340,12 @@ static void machine_set_phandle_start(Object *obj, Vi= sitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(obj); - Error *error =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &error); - if (error) { - error_propagate(errp, error); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } =20 diff --git a/hw/core/numa.c b/hw/core/numa.c index 4dfec5c95b..fa3b392e5c 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -59,7 +59,7 @@ static int max_numa_nodeid; /* Highest specified NUMA nod= e ID, plus one. static void parse_numa_node(MachineState *ms, NumaNodeOptions *node, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); uint16_t nodenr; uint16List *cpus =3D NULL; MachineClass *mc =3D MACHINE_GET_CLASS(ms); @@ -99,9 +99,8 @@ static void parse_numa_node(MachineState *ms, NumaNodeOpt= ions *node, props =3D mc->cpu_index_to_instance_props(ms, cpus->value); props.node_id =3D nodenr; props.has_node_id =3D true; - machine_set_cpu_numa_node(ms, &props, &err); - if (err) { - error_propagate(errp, err); + machine_set_cpu_numa_node(ms, &props, errp); + if (*errp) { return; } } @@ -177,60 +176,57 @@ void parse_numa_distance(MachineState *ms, NumaDistOp= tions *dist, Error **errp) =20 void set_numa_options(MachineState *ms, NumaOptions *object, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); MachineClass *mc =3D MACHINE_GET_CLASS(ms); =20 if (!mc->numa_mem_supported) { error_setg(errp, "NUMA is not supported by this machine-type"); - goto end; + return; } =20 switch (object->type) { case NUMA_OPTIONS_TYPE_NODE: - parse_numa_node(ms, &object->u.node, &err); - if (err) { - goto end; + parse_numa_node(ms, &object->u.node, errp); + if (*errp) { + return; } break; case NUMA_OPTIONS_TYPE_DIST: - parse_numa_distance(ms, &object->u.dist, &err); - if (err) { - goto end; + parse_numa_distance(ms, &object->u.dist, errp); + if (*errp) { + return; } break; case NUMA_OPTIONS_TYPE_CPU: if (!object->u.cpu.has_node_id) { - error_setg(&err, "Missing mandatory node-id property"); - goto end; + error_setg(errp, "Missing mandatory node-id property"); + return; } if (!ms->numa_state->nodes[object->u.cpu.node_id].present) { - error_setg(&err, "Invalid node-id=3D%" PRId64 ", NUMA node mus= t be " - "defined with -numa node,nodeid=3DID before it's used with= " - "-numa cpu,node-id=3DID", object->u.cpu.node_id); - goto end; + error_setg(errp, "Invalid node-id=3D%" PRId64 ", NUMA node mus= t be " + "defined with -numa node,nodeid=3DID before it's us= ed with " + "-numa cpu,node-id=3DID", object->u.cpu.node_id); + return; } =20 machine_set_cpu_numa_node(ms, qapi_NumaCpuOptions_base(&object->u.= cpu), - &err); + errp); break; default: abort(); } - -end: - error_propagate(errp, err); } =20 static int parse_numa(void *opaque, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); NumaOptions *object =3D NULL; MachineState *ms =3D MACHINE(opaque); - Error *err =3D NULL; Visitor *v =3D opts_visitor_new(opts); =20 - visit_type_NumaOptions(v, NULL, &object, &err); + visit_type_NumaOptions(v, NULL, &object, errp); visit_free(v); - if (err) { + if (*errp) { goto end; } =20 @@ -240,12 +236,11 @@ static int parse_numa(void *opaque, QemuOpts *opts, E= rror **errp) qemu_strtosz_MiB(mem_str, NULL, &object->u.node.mem); } =20 - set_numa_options(ms, object, &err); + set_numa_options(ms, object, errp); =20 end: qapi_free_NumaOptions(object); - if (err) { - error_propagate(errp, err); + if (*errp) { return -1; } =20 diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c index aafd8e0e33..81ed4b4ea8 100644 --- a/hw/intc/apic_common.c +++ b/hw/intc/apic_common.c @@ -464,9 +464,9 @@ static void apic_common_get_id(Object *obj, Visitor *v,= const char *name, static void apic_common_set_id(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); APICCommonState *s =3D APIC_COMMON(obj); DeviceState *dev =3D DEVICE(obj); - Error *local_err =3D NULL; uint32_t value; =20 if (dev->realized) { @@ -474,9 +474,8 @@ static void apic_common_set_id(Object *obj, Visitor *v,= const char *name, return; } =20 - visit_type_uint32(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_uint32(v, name, &value, errp); + if (*errp) { return; } =20 diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c index 135c645535..24b32aa33b 100644 --- a/hw/pci-host/piix.c +++ b/hw/pci-host/piix.c @@ -855,18 +855,17 @@ out: =20 static void igd_pt_i440fx_realize(PCIDevice *pci_dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); uint32_t val =3D 0; int i, num; int pos, len; - Error *local_err =3D NULL; =20 num =3D ARRAY_SIZE(igd_host_bridge_infos); for (i =3D 0; i < num; i++) { pos =3D igd_host_bridge_infos[i].offset; len =3D igd_host_bridge_infos[i].len; - host_pci_config_read(pos, len, &val, &local_err); - if (local_err) { - error_propagate(errp, local_err); + host_pci_config_read(pos, len, &val, errp); + if (*errp) { return; } pci_default_write_config(pci_dev, pos, val, len); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811847; cv=none; d=zoho.com; s=zohoarc; b=FU66QJrZ1tA2D/kdpZCqOMnTDDb2ZxxuZcO9TX+eDyQ1ZF/z7YWVZYKieGkMrI3GjqZKHiUnYcT1LAadDVAGAaziRlwi2pHoQ+LLeLecpFBGohOslMw5/qK8xcCr+M+/c4jS9s3QPEQ8jQrmmItrQr/j/qyBrWSe5HME1RnpSiQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811847; h=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=pPN2XLySI87oK7v3BHfcnvNOWTswfnF6aHvhmwdD5k4=; b=GSNxAE/aEnY18B6wx8co2AlSlMZyGH5hvsUHZIONoi/i9XduHhjbf36aTu8d2bsYDfGKNcJyqdsg2K7uilWpJzAHPoqbcOSNuzC6jy2cQz4Cp4/xdDLyLOdkDC5RZHIqJ2pNbtgSTTmcwOH4WneHC8k4oKWk0xyxq/KikM+MPGY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811847523446.95029389271997; Fri, 11 Oct 2019 09:37:27 -0700 (PDT) Received: from localhost ([::1]:53992 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxuv-0007wv-RD for importer@patchew.org; Fri, 11 Oct 2019 12:37:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36628) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR2-0006Qy-JX for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR1-0004e2-D3 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:32 -0400 Received: from relay.sw.ru ([185.231.240.75]:47980) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR1-0004B5-5J; Fri, 11 Oct 2019 12:06:31 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQf-0003XG-RV; Fri, 11 Oct 2019 19:06:09 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 039/126] IDE: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:25 +0300 Message-Id: <20191011160552.22907-40-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Greg Kurz , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/ide/qdev.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c index 6fba6b62b8..9e5ed9914f 100644 --- a/hw/ide/qdev.c +++ b/hw/ide/qdev.c @@ -233,18 +233,18 @@ static void ide_dev_get_bootindex(Object *obj, Visito= r *v, const char *name, static void ide_dev_set_bootindex(Object *obj, Visitor *v, const char *nam= e, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); IDEDevice *d =3D IDE_DEVICE(obj); int32_t boot_index; - Error *local_err =3D NULL; =20 - visit_type_int32(v, name, &boot_index, &local_err); - if (local_err) { - goto out; + visit_type_int32(v, name, &boot_index, errp); + if (*errp) { + return; } /* check whether bootindex is present in fw_boot_order list */ - check_boot_index(boot_index, &local_err); - if (local_err) { - goto out; + check_boot_index(boot_index, errp); + if (*errp) { + return; } /* change bootindex to a new one */ d->conf.bootindex =3D boot_index; @@ -253,8 +253,6 @@ static void ide_dev_set_bootindex(Object *obj, Visitor = *v, const char *name, add_boot_device_path(d->conf.bootindex, &d->qdev, d->unit ? "/disk@1" : "/disk@0"); } -out: - error_propagate(errp, local_err); } =20 static void ide_dev_instance_init(Object *obj) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811622; cv=none; d=zoho.com; s=zohoarc; b=I6q0hS6ddaK2gXI41nd8t6ENAd9IITTwkx/lQyEpR9FolZi5COJngb3JTna04JlTjwozMxFW+l7yGfTcVhBpKD0wAkVr8k3eZ0hu48Q+XTpdprTG73mEm1KqdTLfEHX70sNo6O/G3Lob0aY/mHAIcGTzH28dyuwrgUe5Y3qopZw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811622; h=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=zKNksF2z+eHvRosDYcjbdA3NAS2kJw6Tc0DkrnDsaec=; b=hXofaDXszTJjoQmvx5svOH00/sOhiRsdKh2gHq2rSyooDSsNnIyTeHzdG3eK2I0gnKeQmeS3PAvrTj+40x8YvQn9y4eEDlNq4Jk1O6oMLMOmm+Q2LM7ns6B48y9tA7tomgDSOshyswsTK83PP883c0AfZdkcyDWvkLrtOpEFMFA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811622895190.44836873443796; Fri, 11 Oct 2019 09:33:42 -0700 (PDT) Received: from localhost ([::1]:53926 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxrJ-0003ze-KW for importer@patchew.org; Fri, 11 Oct 2019 12:33:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36648) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR3-0006Rv-3p for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR1-0004eO-Ms for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:32 -0400 Received: from relay.sw.ru ([185.231.240.75]:47990) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR1-0004B7-Dm; Fri, 11 Oct 2019 12:06:31 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQg-0003XG-37; Fri, 11 Oct 2019 19:06:10 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 040/126] Floppy: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:26 +0300 Message-Id: <20191011160552.22907-41-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/block/fdc.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/hw/block/fdc.c b/hw/block/fdc.c index ac5d31e8c1..7590b63c19 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -2522,11 +2522,11 @@ static void fdctrl_result_timer(void *opaque) static void fdctrl_connect_drives(FDCtrl *fdctrl, DeviceState *fdc_dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); unsigned int i; FDrive *drive; DeviceState *dev; BlockBackend *blk; - Error *local_err =3D NULL; =20 for (i =3D 0; i < MAX_FD; i++) { drive =3D &fdctrl->drives[i]; @@ -2548,17 +2548,15 @@ static void fdctrl_connect_drives(FDCtrl *fdctrl, D= eviceState *fdc_dev, blk_ref(blk); blk_detach_dev(blk, fdc_dev); fdctrl->qdev_for_drives[i].blk =3D NULL; - qdev_prop_set_drive(dev, "drive", blk, &local_err); + qdev_prop_set_drive(dev, "drive", blk, errp); blk_unref(blk); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } =20 - object_property_set_bool(OBJECT(dev), true, "realized", &local_err= ); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(dev), true, "realized", errp); + if (*errp) { return; } } @@ -2685,10 +2683,10 @@ static const MemoryRegionPortio fdc_portio_list[] = =3D { =20 static void isabus_fdc_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); ISADevice *isadev =3D ISA_DEVICE(dev); FDCtrlISABus *isa =3D ISA_FDC(dev); FDCtrl *fdctrl =3D &isa->state; - Error *err =3D NULL; =20 isa_register_portio_list(isadev, &fdctrl->portio_list, isa->iobase, fdc_portio_list, fdctrl, @@ -2705,9 +2703,8 @@ static void isabus_fdc_realize(DeviceState *dev, Erro= r **errp) } =20 qdev_set_legacy_instance_id(dev, isa->iobase, 2); - fdctrl_realize_common(dev, fdctrl, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + fdctrl_realize_common(dev, fdctrl, errp); + if (*errp) { return; } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814081; cv=none; d=zoho.com; s=zohoarc; b=UysR0IxOBfamgUuttqPwp7HBhBxmXznfK0DGG/m7NW1Cm+Av+OmBQnhpOlSJgiKSWTGQV8B6w8XNRdOyTSWA86RbzRW6H+VrlKQTwDAkiKUJxmNMOWJAkGSxrx05NaC3qGYHxpyCwMwON8I8EVwf229fGkls4LUFV4qHsdrW58w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814081; h=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=L+xJwBsZfMoRMbIHYBwqYP0a7Lsb/n/+rCtH/ui8AuI=; b=ffq5qeezw0KyqL9OgTqM1z7RG8splQTvlrLvlnRVSz8Z3cuKKpD9a8THCKQq+oV3JNbM1NN/a21Df67JxaXgAfKhHYafFzdueJ7YiwWStqbiTcM3qCiX8S845W+94jQG5GaZXlWupuVqGiyntSspUDHZQSTMGLXmDZlM18R44rw= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814081975985.6851224496427; Fri, 11 Oct 2019 10:14:41 -0700 (PDT) Received: from localhost ([::1]:54458 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyUy-0005B1-Fz for importer@patchew.org; Fri, 11 Oct 2019 13:14:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36308) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQu-0006CO-Ge for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQt-0004PA-1L for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:24 -0400 Received: from relay.sw.ru ([185.231.240.75]:48024) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQs-0004Bj-QL for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:22 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQg-0003XG-Au; Fri, 11 Oct 2019 19:06:10 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 041/126] IPack: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:27 +0300 Message-Id: <20191011160552.22907-42-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Alberto Garcia , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/ipack/ipack.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/ipack/ipack.c b/hw/ipack/ipack.c index 30e16696c0..a9bc7bd269 100644 --- a/hw/ipack/ipack.c +++ b/hw/ipack/ipack.c @@ -62,13 +62,12 @@ static void ipack_device_realize(DeviceState *dev, Erro= r **errp) =20 static void ipack_device_unrealize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); IPackDevice *idev =3D IPACK_DEVICE(dev); IPackDeviceClass *k =3D IPACK_DEVICE_GET_CLASS(dev); - Error *err =3D NULL; =20 if (k->unrealize) { - k->unrealize(dev, &err); - error_propagate(errp, err); + k->unrealize(dev, errp); return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813897; cv=none; d=zoho.com; s=zohoarc; b=g9e+jclsjnept+thN+6V7Pq9eXf8OiakSyEGDfN3YYI0tdCDrsm0u2n/Jw4EncL9onfOv7JjGIKdDuKWz/fGppcANj4yXkOq2bJM4K+uh+iVdoRz/Y3ltPNbkoj5S/o+7Sq7LS+aHIctRI11XG6ajTptNfQxI39oOSB0MuvZe7M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813897; h=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=UQN2O5X+rqv/uTGF6Li/w+m0RS8zPkRDg042FSoxz9I=; b=V9Vfag7Zsq4cSOEm8t+s4viI0wkZnS5HOdqx56LvDt7+v0OaVGczHe8/2mhULphCsdc7LOAhtRBlJQdUlkm7TC9niatS2NxkPdxhAc7Wo9KXGE8eRdS3DfsX1LllENgWmF/JotdbnDduF2t4w0zFWKtWzwN3vKVdp8E69XLrXOA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081389709457.61546001855743; Fri, 11 Oct 2019 10:11:37 -0700 (PDT) Received: from localhost ([::1]:54404 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyRu-0001T3-VZ for importer@patchew.org; Fri, 11 Oct 2019 13:11:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36298) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQt-0006Bi-U3 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQs-0004OE-0k for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:23 -0400 Received: from relay.sw.ru ([185.231.240.75]:47998) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQr-0004BU-PR for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:21 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQg-0003XG-IZ; Fri, 11 Oct 2019 19:06:10 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 042/126] PCI: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:28 +0300 Message-Id: <20191011160552.22907-43-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, "Michael S. Tsirkin" , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/pci-bridge/gen_pcie_root_port.c | 7 +++---- hw/pci-bridge/pci_bridge_dev.c | 13 ++++++------- hw/pci-bridge/pci_expander_bridge.c | 7 +++---- hw/pci-bridge/pcie_pci_bridge.c | 8 +++----- hw/pci-bridge/pcie_root_port.c | 1 + hw/pci/pci.c | 19 ++++++++----------- hw/pci/pcie.c | 7 +++---- hw/pci/shpc.c | 14 ++++++-------- 8 files changed, 33 insertions(+), 43 deletions(-) diff --git a/hw/pci-bridge/gen_pcie_root_port.c b/hw/pci-bridge/gen_pcie_ro= ot_port.c index 9eaefebca8..578f9de11a 100644 --- a/hw/pci-bridge/gen_pcie_root_port.c +++ b/hw/pci-bridge/gen_pcie_root_port.c @@ -73,14 +73,13 @@ static bool gen_rp_test_migrate_msix(void *opaque, int = version_id) =20 static void gen_rp_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIDevice *d =3D PCI_DEVICE(dev); GenPCIERootPort *grp =3D GEN_PCIE_ROOT_PORT(d); PCIERootPortClass *rpc =3D PCIE_ROOT_PORT_GET_CLASS(d); - Error *local_err =3D NULL; =20 - rpc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + rpc->parent_realize(dev, errp); + if (*errp) { return; } =20 diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c index cc80cb4898..e75bd1c656 100644 --- a/hw/pci-bridge/pci_bridge_dev.c +++ b/hw/pci-bridge/pci_bridge_dev.c @@ -56,10 +56,10 @@ typedef struct PCIBridgeDev PCIBridgeDev; =20 static void pci_bridge_dev_realize(PCIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIBridge *br =3D PCI_BRIDGE(dev); PCIBridgeDev *bridge_dev =3D PCI_BRIDGE_DEV(dev); int err; - Error *local_err =3D NULL; =20 pci_bridge_initfn(dev, TYPE_PCI_BUS); =20 @@ -84,20 +84,19 @@ static void pci_bridge_dev_realize(PCIDevice *dev, Erro= r **errp) if (bridge_dev->msi !=3D ON_OFF_AUTO_OFF) { /* it means SHPC exists, because MSI is needed by SHPC */ =20 - err =3D msi_init(dev, 0, 1, true, true, &local_err); + err =3D msi_init(dev, 0, 1, true, true, errp); /* Any error other than -ENOTSUP(board's MSI support is broken) * is a programming error */ assert(!err || err =3D=3D -ENOTSUP); if (err && bridge_dev->msi =3D=3D ON_OFF_AUTO_ON) { /* Can't satisfy user's explicit msi=3Don request, fail */ - error_append_hint(&local_err, "You have to use msi=3Dauto (def= ault) " - "or msi=3Doff with this machine type.\n"); - error_propagate(errp, local_err); + error_append_hint(errp, "You have to use msi=3Dauto (default) " + "or msi=3Doff with this machine type.\n"); goto msi_error; } - assert(!local_err || bridge_dev->msi =3D=3D ON_OFF_AUTO_AUTO); + assert(!*errp || bridge_dev->msi =3D=3D ON_OFF_AUTO_AUTO); /* With msi=3Dauto, we fall back to MSI off silently */ - error_free(local_err); + error_free_errp(errp); } =20 err =3D pci_bridge_qemu_reserve_cap_init(dev, 0, diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expand= er_bridge.c index 0592818447..f0a758342f 100644 --- a/hw/pci-bridge/pci_expander_bridge.c +++ b/hw/pci-bridge/pci_expander_bridge.c @@ -209,11 +209,11 @@ static gint pxb_compare(gconstpointer a, gconstpointe= r b) =20 static void pxb_dev_realize_common(PCIDevice *dev, bool pcie, Error **errp) { + ERRP_AUTO_PROPAGATE(); PXBDev *pxb =3D convert_to_pxb(dev); DeviceState *ds, *bds =3D NULL; PCIBus *bus; const char *dev_name =3D NULL; - Error *local_err =3D NULL; MachineState *ms =3D MACHINE(qdev_get_machine()); =20 if (ms->numa_state =3D=3D NULL) { @@ -249,9 +249,8 @@ static void pxb_dev_realize_common(PCIDevice *dev, bool= pcie, Error **errp) =20 PCI_HOST_BRIDGE(ds)->bus =3D bus; =20 - pxb_register_bus(dev, bus, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pxb_register_bus(dev, bus, errp); + if (*errp) { goto err_register_bus; } =20 diff --git a/hw/pci-bridge/pcie_pci_bridge.c b/hw/pci-bridge/pcie_pci_bridg= e.c index 7679bef6c1..4444791835 100644 --- a/hw/pci-bridge/pcie_pci_bridge.c +++ b/hw/pci-bridge/pcie_pci_bridge.c @@ -33,6 +33,7 @@ typedef struct PCIEPCIBridge { =20 static void pcie_pci_bridge_realize(PCIDevice *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIBridge *br =3D PCI_BRIDGE(d); PCIEPCIBridge *pcie_br =3D PCIE_PCI_BRIDGE_DEV(d); int rc, pos; @@ -66,17 +67,14 @@ static void pcie_pci_bridge_realize(PCIDevice *d, Error= **errp) if (rc < 0) { goto aer_error; } - - Error *local_err =3D NULL; if (pcie_br->msi !=3D ON_OFF_AUTO_OFF) { - rc =3D msi_init(d, 0, 1, true, true, &local_err); + rc =3D msi_init(d, 0, 1, true, true, errp); if (rc < 0) { assert(rc =3D=3D -ENOTSUP); if (pcie_br->msi !=3D ON_OFF_AUTO_ON) { - error_free(local_err); + error_free_errp(errp); } else { /* failed to satisfy user's explicit request for MSI */ - error_propagate(errp, local_err); goto msi_error; } } diff --git a/hw/pci-bridge/pcie_root_port.c b/hw/pci-bridge/pcie_root_port.c index 012c2cb12c..a1b4989534 100644 --- a/hw/pci-bridge/pcie_root_port.c +++ b/hw/pci-bridge/pcie_root_port.c @@ -60,6 +60,7 @@ static void rp_reset(DeviceState *qdev) =20 static void rp_realize(PCIDevice *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIEPort *p =3D PCIE_PORT(d); PCIESlot *s =3D PCIE_SLOT(d); PCIDeviceClass *dc =3D PCI_DEVICE_GET_CLASS(d); diff --git a/hw/pci/pci.c b/hw/pci/pci.c index aa05c2b9b2..875ffe86ab 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -995,10 +995,10 @@ static PCIDevice *do_pci_register_device(PCIDevice *p= ci_dev, const char *name, int devfn, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIDeviceClass *pc =3D PCI_DEVICE_GET_CLASS(pci_dev); PCIConfigReadFunc *config_read =3D pc->config_read; PCIConfigWriteFunc *config_write =3D pc->config_write; - Error *local_err =3D NULL; DeviceState *dev =3D DEVICE(pci_dev); PCIBus *bus =3D pci_get_bus(pci_dev); =20 @@ -1084,9 +1084,8 @@ static PCIDevice *do_pci_register_device(PCIDevice *p= ci_dev, if (pc->is_bridge) { pci_init_mask_bridge(pci_dev); } - pci_init_multifunction(bus, pci_dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pci_init_multifunction(bus, pci_dev, errp); + if (*errp) { do_pci_unregister_device(pci_dev); return NULL; } @@ -2072,10 +2071,10 @@ PCIDevice *pci_find_device(PCIBus *bus, int bus_num= , uint8_t devfn) =20 static void pci_qdev_realize(DeviceState *qdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIDevice *pci_dev =3D (PCIDevice *)qdev; PCIDeviceClass *pc =3D PCI_DEVICE_GET_CLASS(pci_dev); ObjectClass *klass =3D OBJECT_CLASS(pc); - Error *local_err =3D NULL; bool is_default_rom; =20 /* initialize cap_present for pci_is_express() and pci_config_size(), @@ -2093,9 +2092,8 @@ static void pci_qdev_realize(DeviceState *qdev, Error= **errp) return; =20 if (pc->realize) { - pc->realize(pci_dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pc->realize(pci_dev, errp); + if (*errp) { do_pci_unregister_device(pci_dev); return; } @@ -2108,9 +2106,8 @@ static void pci_qdev_realize(DeviceState *qdev, Error= **errp) is_default_rom =3D true; } =20 - pci_add_option_rom(pci_dev, is_default_rom, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pci_add_option_rom(pci_dev, is_default_rom, errp); + if (*errp) { pci_qdev_unrealize(DEVICE(pci_dev), NULL); return; } diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index a6beb567bd..513fbefc32 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -463,13 +463,12 @@ static void pcie_unplug_device(PCIBus *bus, PCIDevice= *dev, void *opaque) void pcie_cap_slot_unplug_request_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); PCIDevice *pci_dev =3D PCI_DEVICE(dev); PCIBus *bus =3D pci_get_bus(pci_dev); =20 - pcie_cap_slot_plug_common(PCI_DEVICE(hotplug_dev), dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pcie_cap_slot_plug_common(PCI_DEVICE(hotplug_dev), dev, errp); + if (*errp) { return; } =20 diff --git a/hw/pci/shpc.c b/hw/pci/shpc.c index 7f0aa28e44..44dbe914aa 100644 --- a/hw/pci/shpc.c +++ b/hw/pci/shpc.c @@ -504,14 +504,13 @@ static void shpc_device_plug_common(PCIDevice *affect= ed_dev, int *slot, void shpc_device_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); PCIDevice *pci_hotplug_dev =3D PCI_DEVICE(hotplug_dev); SHPCDevice *shpc =3D pci_hotplug_dev->shpc; int slot; =20 - shpc_device_plug_common(PCI_DEVICE(dev), &slot, shpc, &local_err); - if (local_err) { - error_propagate(errp, local_err); + shpc_device_plug_common(PCI_DEVICE(dev), &slot, shpc, errp); + if (*errp) { return; } =20 @@ -553,16 +552,15 @@ void shpc_device_unplug_cb(HotplugHandler *hotplug_de= v, DeviceState *dev, void shpc_device_unplug_request_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); PCIDevice *pci_hotplug_dev =3D PCI_DEVICE(hotplug_dev); SHPCDevice *shpc =3D pci_hotplug_dev->shpc; uint8_t state; uint8_t led; int slot; =20 - shpc_device_plug_common(PCI_DEVICE(dev), &slot, shpc, &local_err); - if (local_err) { - error_propagate(errp, local_err); + shpc_device_plug_common(PCI_DEVICE(dev), &slot, shpc, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811392; cv=none; d=zoho.com; s=zohoarc; b=GWKfoionXQtPh+a9+vr0VvDLo24OUm3xj3qvKFal0+z5gvBiTlNZotMOtTUVnNVnF7KGGQ8oU05Va5EvFRfdfXMwJRGyCH8dLnXA+2yAfPXPI4weV6q5x2sUb8eXGDE5fpIlex3FDn/kPGSpfS6rpZ1tO0Eo+BRgk1aySX9c3Po= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811392; h=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=4yCNekssAIwM8oy27JiUEUw0fCNkZbproTnTQgA0eYo=; b=QKCFnR+xUP0UZcq8jtbkLVlLT01t5jllp7Nc8SQX+mAT3lrMgYovXe5A2uLuFmync/FdQbyVmOr4nQaOZdk48305mlABSGgppCGhE0dM32vXUao2p/RPFU8ojCDA1fKeOFjgvR11ZiUpXsWz0Su6I+hEqx5RLpUUY0wHFppkilQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811392705992.5841706772982; Fri, 11 Oct 2019 09:29:52 -0700 (PDT) Received: from localhost ([::1]:53874 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxna-0008VY-Tz for importer@patchew.org; Fri, 11 Oct 2019 12:29:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36311) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQu-0006Cg-CG for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQs-0004OR-CX for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:24 -0400 Received: from relay.sw.ru ([185.231.240.75]:48004) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQs-0004BW-0B for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:22 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQg-0003XG-OQ; Fri, 11 Oct 2019 19:06:10 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 043/126] ACPI/SMBIOS: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:29 +0300 Message-Id: <20191011160552.22907-44-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, "Michael S. Tsirkin" , armbru@redhat.com, Greg Kurz , Igor Mammedov Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/acpi/core.c | 18 ++++++++--------- hw/acpi/cpu_hotplug.c | 2 +- hw/acpi/memory_hotplug.c | 7 +++---- hw/mem/memory-device.c | 20 +++++++++---------- hw/mem/pc-dimm.c | 23 ++++++++++------------ hw/smbios/smbios.c | 42 ++++++++++++++++------------------------ 6 files changed, 48 insertions(+), 64 deletions(-) diff --git a/hw/acpi/core.c b/hw/acpi/core.c index 45cbed49ab..2ade3d45e4 100644 --- a/hw/acpi/core.c +++ b/hw/acpi/core.c @@ -238,8 +238,8 @@ static void acpi_table_install(const char unsigned *blo= b, size_t bloblen, =20 void acpi_table_add(const QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); AcpiTableOptions *hdrs =3D NULL; - Error *err =3D NULL; char **pathnames =3D NULL; char **cur; size_t bloblen =3D 0; @@ -249,21 +249,21 @@ void acpi_table_add(const QemuOpts *opts, Error **err= p) Visitor *v; =20 v =3D opts_visitor_new(opts); - visit_type_AcpiTableOptions(v, NULL, &hdrs, &err); + visit_type_AcpiTableOptions(v, NULL, &hdrs, errp); visit_free(v); } =20 - if (err) { + if (*errp) { goto out; } if (hdrs->has_file =3D=3D hdrs->has_data) { - error_setg(&err, "'-acpitable' requires one of 'data' or 'file'"); + error_setg(errp, "'-acpitable' requires one of 'data' or 'file'"); goto out; } =20 pathnames =3D g_strsplit(hdrs->has_file ? hdrs->file : hdrs->data, ":"= , 0); if (pathnames =3D=3D NULL || pathnames[0] =3D=3D NULL) { - error_setg(&err, "'-acpitable' requires at least one pathname"); + error_setg(errp, "'-acpitable' requires at least one pathname"); goto out; } =20 @@ -272,7 +272,7 @@ void acpi_table_add(const QemuOpts *opts, Error **errp) int fd =3D open(*cur, O_RDONLY | O_BINARY); =20 if (fd < 0) { - error_setg(&err, "can't open file %s: %s", *cur, strerror(errn= o)); + error_setg(errp, "can't open file %s: %s", *cur, strerror(errn= o)); goto out; } =20 @@ -288,7 +288,7 @@ void acpi_table_add(const QemuOpts *opts, Error **errp) memcpy(blob + bloblen, data, r); bloblen +=3D r; } else if (errno !=3D EINTR) { - error_setg(&err, "can't read file %s: %s", + error_setg(errp, "can't read file %s: %s", *cur, strerror(errno)); close(fd); goto out; @@ -298,14 +298,12 @@ void acpi_table_add(const QemuOpts *opts, Error **err= p) close(fd); } =20 - acpi_table_install(blob, bloblen, hdrs->has_file, hdrs, &err); + acpi_table_install(blob, bloblen, hdrs->has_file, hdrs, errp); =20 out: g_free(blob); g_strfreev(pathnames); qapi_free_AcpiTableOptions(hdrs); - - error_propagate(errp, err); } =20 unsigned acpi_table_len(void *current) diff --git a/hw/acpi/cpu_hotplug.c b/hw/acpi/cpu_hotplug.c index 6e8293aac9..cef72139fa 100644 --- a/hw/acpi/cpu_hotplug.c +++ b/hw/acpi/cpu_hotplug.c @@ -75,7 +75,7 @@ void legacy_acpi_cpu_plug_cb(HotplugHandler *hotplug_dev, AcpiCpuHotplug *g, DeviceState *dev, Error **= errp) { acpi_set_cpu_present_bit(g, CPU(dev), errp); - if (*errp !=3D NULL) { + if (*errp) { return; } acpi_send_event(DEVICE(hotplug_dev), ACPI_CPU_HOTPLUG_STATUS); diff --git a/hw/acpi/memory_hotplug.c b/hw/acpi/memory_hotplug.c index 9483d66e86..b127040613 100644 --- a/hw/acpi/memory_hotplug.c +++ b/hw/acpi/memory_hotplug.c @@ -241,12 +241,11 @@ static MemStatus * acpi_memory_slot_status(MemHotplugState *mem_st, DeviceState *dev, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int slot =3D object_property_get_int(OBJECT(dev), PC_DIMM_SLOT_PROP, - &local_err); + errp); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return NULL; } =20 diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c index 53953fdc3a..f2b8de52aa 100644 --- a/hw/mem/memory-device.c +++ b/hw/mem/memory-device.c @@ -253,30 +253,28 @@ uint64_t get_plugged_memory_size(void) void memory_device_pre_plug(MemoryDeviceState *md, MachineState *ms, const uint64_t *legacy_align, Error **errp) { + ERRP_AUTO_PROPAGATE(); const MemoryDeviceClass *mdc =3D MEMORY_DEVICE_GET_CLASS(md); - Error *local_err =3D NULL; uint64_t addr, align; MemoryRegion *mr; =20 - mr =3D mdc->get_memory_region(md, &local_err); - if (local_err) { - goto out; + mr =3D mdc->get_memory_region(md, errp); + if (*errp) { + return; } =20 align =3D legacy_align ? *legacy_align : memory_region_get_alignment(m= r); addr =3D mdc->get_addr(md); addr =3D memory_device_get_free_addr(ms, !addr ? NULL : &addr, align, - memory_region_size(mr), &local_err); - if (local_err) { - goto out; + memory_region_size(mr), errp); + if (*errp) { + return; } - mdc->set_addr(md, addr, &local_err); - if (!local_err) { + mdc->set_addr(md, addr, errp); + if (!*errp) { trace_memory_device_pre_plug(DEVICE(md)->id ? DEVICE(md)->id : "", addr); } -out: - error_propagate(errp, local_err); } =20 void memory_device_plug(MemoryDeviceState *md, MachineState *ms) diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index 99e2faf01b..f1ffb7b225 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -37,31 +37,29 @@ static int pc_dimm_get_free_slot(const int *hint, int m= ax_slots, Error **errp); void pc_dimm_pre_plug(PCDIMMDevice *dimm, MachineState *machine, const uint64_t *legacy_align, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int slot; =20 slot =3D object_property_get_int(OBJECT(dimm), PC_DIMM_SLOT_PROP, &error_abort); if ((slot < 0 || slot >=3D machine->ram_slots) && slot !=3D PC_DIMM_UNASSIGNED_SLOT) { - error_setg(&local_err, "invalid slot number, valid range is [0-%" + error_setg(errp, "invalid slot number, valid range is [0-%" PRIu64 "]", machine->ram_slots - 1); - goto out; + return; } =20 slot =3D pc_dimm_get_free_slot(slot =3D=3D PC_DIMM_UNASSIGNED_SLOT ? N= ULL : &slot, - machine->ram_slots, &local_err); - if (local_err) { - goto out; + machine->ram_slots, errp); + if (*errp) { + return; } object_property_set_int(OBJECT(dimm), slot, PC_DIMM_SLOT_PROP, &error_abort); trace_mhp_pc_dimm_assigned_slot(slot); =20 memory_device_pre_plug(MEMORY_DEVICE(dimm), machine, legacy_align, - &local_err); -out: - error_propagate(errp, local_err); + errp); } =20 void pc_dimm_plug(PCDIMMDevice *dimm, MachineState *machine, Error **errp) @@ -150,12 +148,11 @@ static Property pc_dimm_properties[] =3D { static void pc_dimm_get_size(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); uint64_t value; =20 - value =3D memory_device_get_region_size(MEMORY_DEVICE(obj), &local_err= ); - if (local_err) { - error_propagate(errp, local_err); + value =3D memory_device_get_region_size(MEMORY_DEVICE(obj), errp); + if (*errp) { return; } =20 diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index 11d476c4a2..8dac885173 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -954,7 +954,7 @@ static void save_opt_list(size_t *ndest, const char ***= dest, =20 void smbios_entry_add(QemuOpts *opts, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); const char *val; =20 assert(!smbios_immutable); @@ -965,9 +965,8 @@ void smbios_entry_add(QemuOpts *opts, Error **errp) int size; struct smbios_table *table; /* legacy mode only */ =20 - qemu_opts_validate(opts, qemu_smbios_file_opts, &err); - if (err) { - error_propagate(errp, err); + qemu_opts_validate(opts, qemu_smbios_file_opts, errp); + if (*errp) { return; } =20 @@ -1052,9 +1051,8 @@ void smbios_entry_add(QemuOpts *opts, Error **errp) =20 switch (type) { case 0: - qemu_opts_validate(opts, qemu_smbios_type0_opts, &err); - if (err) { - error_propagate(errp, err); + qemu_opts_validate(opts, qemu_smbios_type0_opts, errp); + if (*errp) { return; } save_opt(&type0.vendor, opts, "vendor"); @@ -1072,9 +1070,8 @@ void smbios_entry_add(QemuOpts *opts, Error **errp) } return; case 1: - qemu_opts_validate(opts, qemu_smbios_type1_opts, &err); - if (err) { - error_propagate(errp, err); + qemu_opts_validate(opts, qemu_smbios_type1_opts, errp); + if (*errp) { return; } save_opt(&type1.manufacturer, opts, "manufacturer"); @@ -1094,9 +1091,8 @@ void smbios_entry_add(QemuOpts *opts, Error **errp) } return; case 2: - qemu_opts_validate(opts, qemu_smbios_type2_opts, &err); - if (err) { - error_propagate(errp, err); + qemu_opts_validate(opts, qemu_smbios_type2_opts, errp); + if (*errp) { return; } save_opt(&type2.manufacturer, opts, "manufacturer"); @@ -1107,9 +1103,8 @@ void smbios_entry_add(QemuOpts *opts, Error **errp) save_opt(&type2.location, opts, "location"); return; case 3: - qemu_opts_validate(opts, qemu_smbios_type3_opts, &err); - if (err) { - error_propagate(errp, err); + qemu_opts_validate(opts, qemu_smbios_type3_opts, errp); + if (*errp) { return; } save_opt(&type3.manufacturer, opts, "manufacturer"); @@ -1119,9 +1114,8 @@ void smbios_entry_add(QemuOpts *opts, Error **errp) save_opt(&type3.sku, opts, "sku"); return; case 4: - qemu_opts_validate(opts, qemu_smbios_type4_opts, &err); - if (err) { - error_propagate(errp, err); + qemu_opts_validate(opts, qemu_smbios_type4_opts, errp); + if (*errp) { return; } save_opt(&type4.sock_pfx, opts, "sock_pfx"); @@ -1132,17 +1126,15 @@ void smbios_entry_add(QemuOpts *opts, Error **errp) save_opt(&type4.part, opts, "part"); return; case 11: - qemu_opts_validate(opts, qemu_smbios_type11_opts, &err); - if (err) { - error_propagate(errp, err); + qemu_opts_validate(opts, qemu_smbios_type11_opts, errp); + if (*errp) { return; } save_opt_list(&type11.nvalues, &type11.values, opts, "value"); return; case 17: - qemu_opts_validate(opts, qemu_smbios_type17_opts, &err); - if (err) { - error_propagate(errp, err); + qemu_opts_validate(opts, qemu_smbios_type17_opts, errp); + if (*errp) { return; } save_opt(&type17.loc_pfx, opts, "loc_pfx"); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812139; cv=none; d=zoho.com; s=zohoarc; b=LaUORK46pWLot3NLwZJg9D9aWPK6RI9p3L3uZ8lAdc7oonV52C14HU3RFqVL17jmOXtXxJ/933q4X1iUjRM4soqEybtou3IcgXWNK/8oI5CJomJQCArE4PhN1G6BTREIZpZZ0WpvafP/cg+LEIor2bpzOj/yIXzNsBhrInVtcrI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812139; h=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=lnyjxrXjpBQNJdJHjAiWo9VP6GsI+n0L519Pw7FjogU=; b=A3FVbnFManpvKygqGERfa1vaV43h7HAs70VKD3qGA9PaTAL7bxHuI9PmGKFIRrX4B4V4Kje68fJ9B29AuTRMpMMlJI4wAM6JpGq5JzEdF1SUXLYhFdVkTeUkMJxSaGUXoZ68s1IQfN7Qu9wNp7h2rnUHqVy1brI8Q8QyLLvraYw= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812139529519.2504632454306; Fri, 11 Oct 2019 09:42:19 -0700 (PDT) Received: from localhost ([::1]:54068 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxzd-0005sp-K1 for importer@patchew.org; Fri, 11 Oct 2019 12:42:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36297) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQt-0006Be-Se for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQs-0004Og-HW for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:23 -0400 Received: from relay.sw.ru ([185.231.240.75]:48010) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQs-0004Ba-9z for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:22 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQg-0003XG-TA; Fri, 11 Oct 2019 19:06:11 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 044/126] Network devices: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:30 +0300 Message-Id: <20191011160552.22907-45-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Jason Wang , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/net/dp8393x.c | 7 +++---- hw/net/ne2000-isa.c | 17 +++++++---------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c index a5678e11fa..4def282da5 100644 --- a/hw/net/dp8393x.c +++ b/hw/net/dp8393x.c @@ -874,10 +874,10 @@ static void dp8393x_instance_init(Object *obj) =20 static void dp8393x_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); dp8393xState *s =3D DP8393X(dev); int i, checksum; uint8_t *prom; - Error *local_err =3D NULL; =20 address_space_init(&s->as, s->dma_mr, "dp8393x"); memory_region_init_io(&s->mmio, OBJECT(dev), &dp8393x_ops, s, @@ -891,9 +891,8 @@ static void dp8393x_realize(DeviceState *dev, Error **e= rrp) s->regs[SONIC_SR] =3D 0x0004; /* only revision recognized by Linux */ =20 memory_region_init_ram(&s->prom, OBJECT(dev), - "dp8393x-prom", SONIC_PROM_SIZE, &local_err); - if (local_err) { - error_propagate(errp, local_err); + "dp8393x-prom", SONIC_PROM_SIZE, errp); + if (*errp) { return; } memory_region_set_readonly(&s->prom, true); diff --git a/hw/net/ne2000-isa.c b/hw/net/ne2000-isa.c index 6fcf3d5cd9..73c88a907e 100644 --- a/hw/net/ne2000-isa.c +++ b/hw/net/ne2000-isa.c @@ -108,25 +108,22 @@ static void isa_ne2000_set_bootindex(Object *obj, Vis= itor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); ISANE2000State *isa =3D ISA_NE2000(obj); NE2000State *s =3D &isa->ne2000; int32_t boot_index; - Error *local_err =3D NULL; =20 - visit_type_int32(v, name, &boot_index, &local_err); - if (local_err) { - goto out; + visit_type_int32(v, name, &boot_index, errp); + if (*errp) { + return; } /* check whether bootindex is present in fw_boot_order list */ - check_boot_index(boot_index, &local_err); - if (local_err) { - goto out; + check_boot_index(boot_index, errp); + if (*errp) { + return; } /* change bootindex to a new one */ s->c.bootindex =3D boot_index; - -out: - error_propagate(errp, local_err); } =20 static void isa_ne2000_instance_init(Object *obj) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813931; cv=none; d=zoho.com; s=zohoarc; b=JodBXpiM77b7S9c0SS1hielBYKhYF3Uu12jSzoFip5U+tufoI4lOhrkmlMj8Sh5My8+bKvS62jek6U4dZoDedtX3mAIOgwyDQj1YZ/FVCfpXl0D/5c6TgmgsC1jaOBC20F7pcw+0YO+OfUASbrQ7qnIY4VKEwkfN8H6rExg56RQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813931; h=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=ViUzf3xfsPBpyF+jhsVEtqHWSOpFYZs2Q4Yd2W5lyeM=; b=JHG93KC9q73SilSb8DWfpyKzK+Bw6Oc7uPY+xDI3S81KiVnBg++F0LQ/YBsN92yweonvpE/yNHSly8W68Aqkf74iFXYbAC8qw1Wv+VYc9cGLGr0TCevV9GIv+L9Ezmf3QFXpubPDWiFv7uN8u2+ERnSLB4iZElA05hZNrs4mbSo= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813931971482.6033598095836; Fri, 11 Oct 2019 10:12:11 -0700 (PDT) Received: from localhost ([::1]:54418 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIySY-0002PP-SC for importer@patchew.org; Fri, 11 Oct 2019 13:12:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36711) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR5-0006VA-29 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR3-0004gS-3d for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:34 -0400 Received: from relay.sw.ru ([185.231.240.75]:48018) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR2-0004Bf-P3; Fri, 11 Oct 2019 12:06:33 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQh-0003XG-59; Fri, 11 Oct 2019 19:06:11 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 045/126] pflash: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:31 +0300 Message-Id: <20191011160552.22907-46-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/block/pflash_cfi01.c | 7 +++---- hw/block/pflash_cfi02.c | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c index 566c0acb77..37571b6efb 100644 --- a/hw/block/pflash_cfi01.c +++ b/hw/block/pflash_cfi01.c @@ -700,12 +700,12 @@ static const MemoryRegionOps pflash_cfi01_ops =3D { =20 static void pflash_cfi01_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PFlashCFI01 *pfl =3D PFLASH_CFI01(dev); uint64_t total_len; int ret; uint64_t blocks_per_device, sector_len_per_device, device_len; int num_devices; - Error *local_err =3D NULL; =20 if (pfl->sector_len =3D=3D 0) { error_setg(errp, "attribute \"sector-length\" not specified or zer= o."); @@ -739,9 +739,8 @@ static void pflash_cfi01_realize(DeviceState *dev, Erro= r **errp) &pfl->mem, OBJECT(dev), &pflash_cfi01_ops, pfl, - pfl->name, total_len, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pfl->name, total_len, errp); + if (*errp) { return; } =20 diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index 4baca701b7..9dcdc13289 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -719,9 +719,9 @@ static const MemoryRegionOps pflash_cfi02_ops =3D { =20 static void pflash_cfi02_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PFlashCFI02 *pfl =3D PFLASH_CFI02(dev); int ret; - Error *local_err =3D NULL; =20 if (pfl->uniform_sector_len =3D=3D 0 && pfl->sector_len[0] =3D=3D 0) { error_setg(errp, "attribute \"sector-length\" not specified or zer= o."); @@ -787,9 +787,8 @@ static void pflash_cfi02_realize(DeviceState *dev, Erro= r **errp) =20 memory_region_init_rom_device(&pfl->orig_mem, OBJECT(pfl), &pflash_cfi02_ops, pfl, pfl->name, - pfl->chip_len, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pfl->chip_len, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812715; cv=none; d=zoho.com; s=zohoarc; b=YeUvVwzgxBlDGkgrxrsjN6a5Pj3OLvkYN4mZ+AACphhrnPUNgCMYqHflKIMm2bR+VaOGdPpUx9oYrGNTQohwB9txCzTA1Yx8FxTH0WMbKlyDtxh8y1Chg1CppRAng5KzYVYkFlvgob/WwKTO12cmXnwpITlF8+/q76pIX4gcUeQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812715; h=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=LCEYrP2bxS5BEYoviqSCTtxbUHtewW3utt22e+uFkG0=; b=FsJX5JNdG0H0U5UlOlibMfw/7i6arWBAFZZxkbl1HMgjrWqEPcV5aH173vzNefkW3eO67JY4i/0jBrGDyb3Mh2LKgRUACJMCZ7nx8GxYKCnQNWNbq0byYWZNdsoXwMI6EuCdkebdlCNOnyi1Je7WrGXnk9TYPv+HH4SEFfVKDy0= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812715300296.99991755309134; Fri, 11 Oct 2019 09:51:55 -0700 (PDT) Received: from localhost ([::1]:54180 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy8w-00008L-7G for importer@patchew.org; Fri, 11 Oct 2019 12:51:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36394) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQw-0006Gg-N9 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQu-0004SR-Of for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:26 -0400 Received: from relay.sw.ru ([185.231.240.75]:48058) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQu-0004Fb-Fi for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:24 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQh-0003XG-MQ; Fri, 11 Oct 2019 19:06:11 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 046/126] SCSI: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:32 +0300 Message-Id: <20191011160552.22907-47-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Fam Zheng , vsementsov@virtuozzo.com, "Michael S. Tsirkin" , armbru@redhat.com, Greg Kurz , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/scsi/esp-pci.c | 7 +++---- hw/scsi/mptsas.c | 13 ++++++------- hw/scsi/scsi-bus.c | 24 ++++++++++-------------- hw/scsi/scsi-disk.c | 8 ++++---- hw/scsi/scsi-generic.c | 1 + hw/scsi/virtio-scsi.c | 7 +++---- 6 files changed, 27 insertions(+), 33 deletions(-) diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c index d5a1f9e017..eab48e3b38 100644 --- a/hw/scsi/esp-pci.c +++ b/hw/scsi/esp-pci.c @@ -468,16 +468,15 @@ static void dc390_write_config(PCIDevice *dev, =20 static void dc390_scsi_realize(PCIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); DC390State *pci =3D DC390(dev); - Error *err =3D NULL; uint8_t *contents; uint16_t chksum =3D 0; int i; =20 /* init base class */ - esp_pci_scsi_realize(dev, &err); - if (err) { - error_propagate(errp, err); + esp_pci_scsi_realize(dev, errp); + if (*errp) { return; } =20 diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c index b8a4b37cf3..a14cfb3b74 100644 --- a/hw/scsi/mptsas.c +++ b/hw/scsi/mptsas.c @@ -1272,28 +1272,27 @@ static const struct SCSIBusInfo mptsas_scsi_info = =3D { =20 static void mptsas_scsi_realize(PCIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MPTSASState *s =3D MPT_SAS(dev); - Error *err =3D NULL; int ret; =20 dev->config[PCI_LATENCY_TIMER] =3D 0; dev->config[PCI_INTERRUPT_PIN] =3D 0x01; =20 if (s->msi !=3D ON_OFF_AUTO_OFF) { - ret =3D msi_init(dev, 0, 1, true, false, &err); + ret =3D msi_init(dev, 0, 1, true, false, errp); /* Any error other than -ENOTSUP(board's MSI support is broken) * is a programming error */ assert(!ret || ret =3D=3D -ENOTSUP); if (ret && s->msi =3D=3D ON_OFF_AUTO_ON) { /* Can't satisfy user's explicit msi=3Don request, fail */ - error_append_hint(&err, "You have to use msi=3Dauto (default) = or " - "msi=3Doff with this machine type.\n"); - error_propagate(errp, err); + error_append_hint(errp, "You have to use msi=3Dauto (default) = or " + "msi=3Doff with this machine type.\n"); return; } - assert(!err || s->msi =3D=3D ON_OFF_AUTO_AUTO); + assert(!*errp || s->msi =3D=3D ON_OFF_AUTO_AUTO); /* With msi=3Dauto, we fall back to MSI off silently */ - error_free(err); + error_free_errp(errp); =20 /* Only used for migration. */ s->msi_in_use =3D (ret =3D=3D 0); diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index bccb7cc4c6..b8ec65fd25 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -154,10 +154,10 @@ static void scsi_dma_restart_cb(void *opaque, int run= ning, RunState state) =20 static void scsi_qdev_realize(DeviceState *qdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SCSIDevice *dev =3D SCSI_DEVICE(qdev); SCSIBus *bus =3D DO_UPCAST(SCSIBus, qbus, dev->qdev.parent_bus); SCSIDevice *d; - Error *local_err =3D NULL; =20 if (dev->channel > bus->info->max_channel) { error_setg(errp, "bad scsi channel id: %d", dev->channel); @@ -205,9 +205,8 @@ static void scsi_qdev_realize(DeviceState *qdev, Error = **errp) } =20 QTAILQ_INIT(&dev->requests); - scsi_device_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + scsi_device_realize(dev, errp); + if (*errp) { return; } dev->vmsentry =3D qdev_add_vm_change_state_handler(DEVICE(dev), @@ -234,10 +233,10 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, B= lockBackend *blk, BlockdevOnError werror, const char *serial, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *driver; char *name; DeviceState *dev; - Error *err =3D NULL; =20 driver =3D blk_is_sg(blk) ? "scsi-generic" : "scsi-disk"; dev =3D qdev_create(&bus->qbus, driver); @@ -256,15 +255,13 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, B= lockBackend *blk, if (serial && object_property_find(OBJECT(dev), "serial", NULL)) { qdev_prop_set_string(dev, "serial", serial); } - qdev_prop_set_drive(dev, "drive", blk, &err); - if (err) { - error_propagate(errp, err); + qdev_prop_set_drive(dev, "drive", blk, errp); + if (*errp) { object_unparent(OBJECT(dev)); return NULL; } - object_property_set_bool(OBJECT(dev), share_rw, "share-rw", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(dev), share_rw, "share-rw", errp); + if (*errp) { object_unparent(OBJECT(dev)); return NULL; } @@ -272,9 +269,8 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, Blo= ckBackend *blk, qdev_prop_set_enum(dev, "rerror", rerror); qdev_prop_set_enum(dev, "werror", werror); =20 - object_property_set_bool(OBJECT(dev), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(dev), true, "realized", errp); + if (*errp) { object_unparent(OBJECT(dev)); return NULL; } diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index 915641a0f1..2f3064d8da 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -2455,13 +2455,12 @@ static void scsi_cd_realize(SCSIDevice *dev, Error = **errp) =20 static void scsi_disk_realize(SCSIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); DriveInfo *dinfo; - Error *local_err =3D NULL; =20 if (!dev->conf.blk) { - scsi_realize(dev, &local_err); - assert(local_err); - error_propagate(errp, local_err); + scsi_realize(dev, errp); + assert(*errp); return; } =20 @@ -2597,6 +2596,7 @@ static int get_device_type(SCSIDiskState *s) =20 static void scsi_block_realize(SCSIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SCSIDiskState *s =3D DO_UPCAST(SCSIDiskState, qdev, dev); AioContext *ctx; int sg_version; diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c index e7798ebcd0..4c7543801f 100644 --- a/hw/scsi/scsi-generic.c +++ b/hw/scsi/scsi-generic.c @@ -653,6 +653,7 @@ static void scsi_generic_reset(DeviceState *dev) =20 static void scsi_generic_realize(SCSIDevice *s, Error **errp) { + ERRP_AUTO_PROPAGATE(); int rc; int sg_version; struct sg_scsi_id scsiid; diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c index ee52aa7d17..86c71f93fd 100644 --- a/hw/scsi/virtio-scsi.c +++ b/hw/scsi/virtio-scsi.c @@ -905,17 +905,16 @@ void virtio_scsi_common_realize(DeviceState *dev, =20 static void virtio_scsi_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VirtIOSCSI *s =3D VIRTIO_SCSI(dev); - Error *err =3D NULL; =20 virtio_scsi_common_realize(dev, virtio_scsi_handle_ctrl, virtio_scsi_handle_event, virtio_scsi_handle_cmd, - &err); - if (err !=3D NULL) { - error_propagate(errp, err); + errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814443; cv=none; d=zoho.com; s=zohoarc; b=FkiBzP6MHzoBJc/UHBtLduPgUJ6OfP/zASwMnKOZdTUZ803m5liiRMU60i9OC9Av0ecvYMkGOYGVAs0PEdC0I3pUS3U7Mz5P9+WtHtCEIjLfM3W0NsKRJ98LyQgdf7Hco9V9ar71npo+caNfQwS9hpJis8OKMFhNRGeLT6KM4wc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814443; h=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=rKJLcNFZdADotQjtjoyuGaw15qX3gyRxDGqEmTzugHM=; b=fzyfH+NsJP90VsGC7bBIVxUR4t/2bMBgqFvbZzSBmJLEp6K905FyRpK9d3gjMUr1dUF/A317Xze67SA8ZxonezUUPLF78chIAne5zkeCWZcna/X4sCAqDFQMSGi3c3H3zxxv87twFu35VUcW6cFczzpa/NP5GvBxyXNrlJXyiTY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814443227190.71492969687938; Fri, 11 Oct 2019 10:20:43 -0700 (PDT) Received: from localhost ([::1]:54559 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyak-0003qw-DD for importer@patchew.org; Fri, 11 Oct 2019 13:20:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36328) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQu-0006DI-S3 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQt-0004QA-BN for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:24 -0400 Received: from relay.sw.ru ([185.231.240.75]:48030) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQt-0004C6-3w for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:23 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQh-0003XG-QU; Fri, 11 Oct 2019 19:06:11 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 047/126] SD (Secure Card): introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:33 +0300 Message-Id: <20191011160552.22907-48-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdhci-pci.c | 7 +++---- hw/sd/sdhci.c | 21 +++++++++------------ 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/hw/sd/sdhci-pci.c b/hw/sd/sdhci-pci.c index 2c8d8f59b5..b1448cf22e 100644 --- a/hw/sd/sdhci-pci.c +++ b/hw/sd/sdhci-pci.c @@ -29,13 +29,12 @@ static Property sdhci_pci_properties[] =3D { =20 static void sdhci_pci_realize(PCIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SDHCIState *s =3D PCI_SDHCI(dev); - Error *local_err =3D NULL; =20 sdhci_initfn(s); - sdhci_common_realize(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + sdhci_common_realize(s, errp); + if (*errp) { return; } =20 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index e56031b5e4..db9e9add82 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1293,7 +1293,7 @@ static const MemoryRegionOps sdhci_mmio_ops =3D { =20 static void sdhci_init_readonly_registers(SDHCIState *s, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 switch (s->sd_spec_version) { case 2 ... 3: @@ -1304,9 +1304,8 @@ static void sdhci_init_readonly_registers(SDHCIState = *s, Error **errp) } s->version =3D (SDHC_HCVER_VENDOR << 8) | (s->sd_spec_version - 1); =20 - sdhci_check_capareg(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + sdhci_check_capareg(s, errp); + if (*errp) { return; } } @@ -1337,11 +1336,10 @@ void sdhci_uninitfn(SDHCIState *s) =20 void sdhci_common_realize(SDHCIState *s, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 - sdhci_init_readonly_registers(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + sdhci_init_readonly_registers(s, errp); + if (*errp) { return; } s->buf_maxsz =3D sdhci_get_fifolen(s); @@ -1461,13 +1459,12 @@ static void sdhci_sysbus_finalize(Object *obj) =20 static void sdhci_sysbus_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SDHCIState *s =3D SYSBUS_SDHCI(dev); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); - Error *local_err =3D NULL; =20 - sdhci_common_realize(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + sdhci_common_realize(s, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812884; cv=none; d=zoho.com; s=zohoarc; b=V0zLQ5d5mbRZPkop0HguTlJUuRabWt+7j4aO2vtHfFtC1DoqU8USyjRJH/H+EwhLeK08jbE/p3zkQ09jTgVJUlV5zeh2Ev72DetTkHBlxEO/sPp09bR8Fe/sCnf3XQiGwIonz2kWwiGR3ow6wwhAj+hazsqo9Ninq2O257ayHWQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812884; h=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=ShKFbx5GvTDOUdX6jlq5X0Ss6dIm5eMyDlYXNd7NlX0=; b=AX5ctxtLe1gVKoA9Dvu5a037IuSbQYVfz2CbZ82PjuTL7o7e02alf/rXUZOSogpzugLGPN+o3GfYWOEtFwHWz9/ONfhpIQPiPF3AtU1C+gC18jHZozyF2kOtBi5fruTKYrEIT/l/jQWHS7siZDDu4A+83m1mNYX3BFWeru2kkEI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812884080968.4764553157347; Fri, 11 Oct 2019 09:54:44 -0700 (PDT) Received: from localhost ([::1]:54211 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyBe-0003lW-CH for importer@patchew.org; Fri, 11 Oct 2019 12:54:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36387) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQw-0006GE-Gt for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQt-0004R2-SI for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:26 -0400 Received: from relay.sw.ru ([185.231.240.75]:48034) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQt-0004Ci-G3 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:23 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQi-0003XG-0y; Fri, 11 Oct 2019 19:06:12 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 048/126] USB: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:34 +0300 Message-Id: <20191011160552.22907-49-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Gerd Hoffmann , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/usb/bus.c | 37 +++++++++++++++-------------------- hw/usb/ccid-card-emulated.c | 1 + hw/usb/dev-smartcard-reader.c | 14 ++++++------- hw/usb/dev-storage.c | 17 +++++++--------- hw/usb/hcd-ohci-pci.c | 7 +++---- hw/usb/hcd-ohci.c | 14 ++++++------- hw/usb/hcd-uhci.c | 7 +++---- hw/usb/hcd-xhci.c | 13 ++++++------ 8 files changed, 48 insertions(+), 62 deletions(-) diff --git a/hw/usb/bus.c b/hw/usb/bus.c index a6522f5429..b2ef85afe4 100644 --- a/hw/usb/bus.c +++ b/hw/usb/bus.c @@ -240,8 +240,8 @@ void usb_device_free_streams(USBDevice *dev, USBEndpoin= t **eps, int nr_eps) =20 static void usb_qdev_realize(DeviceState *qdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); USBDevice *dev =3D USB_DEVICE(qdev); - Error *local_err =3D NULL; =20 pstrcpy(dev->product_desc, sizeof(dev->product_desc), usb_device_get_product_desc(dev)); @@ -249,24 +249,21 @@ static void usb_qdev_realize(DeviceState *qdev, Error= **errp) QLIST_INIT(&dev->strings); usb_ep_init(dev); =20 - usb_claim_port(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + usb_claim_port(dev, errp); + if (*errp) { return; } =20 - usb_device_realize(dev, &local_err); - if (local_err) { + usb_device_realize(dev, errp); + if (*errp) { usb_release_port(dev); - error_propagate(errp, local_err); return; } =20 if (dev->auto_attach) { - usb_device_attach(dev, &local_err); - if (local_err) { + usb_device_attach(dev, errp); + if (*errp) { usb_qdev_unrealize(qdev, NULL); - error_propagate(errp, local_err); return; } } @@ -325,7 +322,7 @@ USBDevice *usb_create(USBBus *bus, const char *name) static USBDevice *usb_try_create_simple(USBBus *bus, const char *name, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); USBDevice *dev; =20 dev =3D USB_DEVICE(qdev_try_create(&bus->qbus, name)); @@ -333,9 +330,9 @@ static USBDevice *usb_try_create_simple(USBBus *bus, co= nst char *name, error_setg(errp, "Failed to create USB device '%s'", name); return NULL; } - object_property_set_bool(OBJECT(dev), true, "realized", &err); - if (err) { - error_propagate_prepend(errp, err, + object_property_set_bool(OBJECT(dev), true, "realized", errp); + if (*errp) { + error_prepend(errp, "Failed to initialize USB device '%s': ", name); return NULL; @@ -532,12 +529,11 @@ void usb_check_attach(USBDevice *dev, Error **errp) =20 void usb_device_attach(USBDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); USBPort *port =3D dev->port; - Error *local_err =3D NULL; =20 - usb_check_attach(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + usb_check_attach(dev, errp); + if (*errp) { return; } =20 @@ -731,16 +727,15 @@ static bool usb_get_attached(Object *obj, Error **err= p) =20 static void usb_set_attached(Object *obj, bool value, Error **errp) { + ERRP_AUTO_PROPAGATE(); USBDevice *dev =3D USB_DEVICE(obj); - Error *err =3D NULL; =20 if (dev->attached =3D=3D value) { return; } =20 if (value) { - usb_device_attach(dev, &err); - error_propagate(errp, err); + usb_device_attach(dev, errp); } else { usb_device_detach(dev); } diff --git a/hw/usb/ccid-card-emulated.c b/hw/usb/ccid-card-emulated.c index 291e41db8a..958791e817 100644 --- a/hw/usb/ccid-card-emulated.c +++ b/hw/usb/ccid-card-emulated.c @@ -488,6 +488,7 @@ static uint32_t parse_enumeration(char *str, =20 static void emulated_realize(CCIDCardState *base, Error **errp) { + ERRP_AUTO_PROPAGATE(); EmulatedState *card =3D EMULATED_CCID_CARD(base); VCardEmulError ret; const EnumTable *ptable; diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c index 4568db2568..116bbc5c13 100644 --- a/hw/usb/dev-smartcard-reader.c +++ b/hw/usb/dev-smartcard-reader.c @@ -1271,19 +1271,18 @@ void ccid_card_card_inserted(CCIDCardState *card) =20 static void ccid_card_unrealize(DeviceState *qdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CCIDCardState *card =3D CCID_CARD(qdev); CCIDCardClass *cc =3D CCID_CARD_GET_CLASS(card); USBDevice *dev =3D USB_DEVICE(qdev->parent_bus->parent); USBCCIDState *s =3D USB_CCID_DEV(dev); - Error *local_err =3D NULL; =20 if (ccid_card_inserted(s)) { ccid_card_card_removed(card); } if (cc->unrealize) { - cc->unrealize(card, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cc->unrealize(card, errp); + if (*errp) { return; } } @@ -1292,11 +1291,11 @@ static void ccid_card_unrealize(DeviceState *qdev, = Error **errp) =20 static void ccid_card_realize(DeviceState *qdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CCIDCardState *card =3D CCID_CARD(qdev); CCIDCardClass *cc =3D CCID_CARD_GET_CLASS(card); USBDevice *dev =3D USB_DEVICE(qdev->parent_bus->parent); USBCCIDState *s =3D USB_CCID_DEV(dev); - Error *local_err =3D NULL; =20 if (card->slot !=3D 0) { error_setg(errp, "usb-ccid supports one slot, can't add %d", @@ -1308,9 +1307,8 @@ static void ccid_card_realize(DeviceState *qdev, Erro= r **errp) return; } if (cc->realize) { - cc->realize(card, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cc->realize(card, errp); + if (*errp) { return; } } diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c index 8545193488..71b6440801 100644 --- a/hw/usb/dev-storage.c +++ b/hw/usb/dev-storage.c @@ -717,19 +717,19 @@ static void usb_msd_get_bootindex(Object *obj, Visito= r *v, const char *name, static void usb_msd_set_bootindex(Object *obj, Visitor *v, const char *nam= e, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); USBDevice *dev =3D USB_DEVICE(obj); MSDState *s =3D USB_STORAGE_DEV(dev); int32_t boot_index; - Error *local_err =3D NULL; =20 - visit_type_int32(v, name, &boot_index, &local_err); - if (local_err) { - goto out; + visit_type_int32(v, name, &boot_index, errp); + if (*errp) { + return; } /* check whether bootindex is present in fw_boot_order list */ - check_boot_index(boot_index, &local_err); - if (local_err) { - goto out; + check_boot_index(boot_index, errp); + if (*errp) { + return; } /* change bootindex to a new one */ s->conf.bootindex =3D boot_index; @@ -738,9 +738,6 @@ static void usb_msd_set_bootindex(Object *obj, Visitor = *v, const char *name, object_property_set_int(OBJECT(s->scsi_dev), boot_index, "bootinde= x", &error_abort); } - -out: - error_propagate(errp, local_err); } =20 static const TypeInfo usb_storage_dev_type_info =3D { diff --git a/hw/usb/hcd-ohci-pci.c b/hw/usb/hcd-ohci-pci.c index c052f10521..2e88561bf8 100644 --- a/hw/usb/hcd-ohci-pci.c +++ b/hw/usb/hcd-ohci-pci.c @@ -60,7 +60,7 @@ static void ohci_pci_die(struct OHCIState *ohci) =20 static void usb_ohci_realize_pci(PCIDevice *dev, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); OHCIPCIState *ohci =3D PCI_OHCI(dev); =20 dev->config[PCI_CLASS_PROG] =3D 0x10; /* OHCI */ @@ -68,9 +68,8 @@ static void usb_ohci_realize_pci(PCIDevice *dev, Error **= errp) =20 usb_ohci_init(&ohci->state, DEVICE(dev), ohci->num_ports, 0, ohci->masterbus, ohci->firstport, - pci_get_address_space(dev), ohci_pci_die, &err); - if (err) { - error_propagate(errp, err); + pci_get_address_space(dev), ohci_pci_die, errp); + if (*errp) { return; } =20 diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index 145ee21fd6..d54a7c429f 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -1795,7 +1795,7 @@ void usb_ohci_init(OHCIState *ohci, DeviceState *dev,= uint32_t num_ports, uint32_t firstport, AddressSpace *as, void (*ohci_die_fn)(struct OHCIState *), Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); int i; =20 ohci->as =3D as; @@ -1831,9 +1831,8 @@ void usb_ohci_init(OHCIState *ohci, DeviceState *dev,= uint32_t num_ports, usb_register_companion(masterbus, ports, num_ports, firstport, ohci, &ohci_port_ops, USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL, - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } } else { @@ -1887,15 +1886,14 @@ typedef struct { =20 static void ohci_realize_pxa(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); OHCISysBusState *s =3D SYSBUS_OHCI(dev); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); - Error *err =3D NULL; =20 usb_ohci_init(&s->ohci, dev, s->num_ports, s->dma_offset, s->masterbus, s->firstport, - &address_space_memory, ohci_sysbus_die, &err); - if (err) { - error_propagate(errp, err); + &address_space_memory, ohci_sysbus_die, errp); + if (*errp) { return; } sysbus_init_irq(sbd, &s->ohci.irq); diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c index 23507ad3b5..758d2c700a 100644 --- a/hw/usb/hcd-uhci.c +++ b/hw/usb/hcd-uhci.c @@ -1213,7 +1213,7 @@ static USBBusOps uhci_bus_ops =3D { =20 static void usb_uhci_common_realize(PCIDevice *dev, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); PCIDeviceClass *pc =3D PCI_DEVICE_GET_CLASS(dev); UHCIPCIDeviceClass *u =3D container_of(pc, UHCIPCIDeviceClass, parent_= class); UHCIState *s =3D UHCI(dev); @@ -1234,9 +1234,8 @@ static void usb_uhci_common_realize(PCIDevice *dev, E= rror **errp) usb_register_companion(s->masterbus, ports, NB_PORTS, s->firstport, s, &uhci_port_ops, USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL, - &err); - if (err) { - error_propagate(errp, err); + errp); + if (*errp) { return; } } else { diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index 80988bb305..4dec185ab5 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -3369,8 +3369,8 @@ static void usb_xhci_init(XHCIState *xhci) =20 static void usb_xhci_realize(struct PCIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i, ret; - Error *err =3D NULL; =20 XHCIState *xhci =3D XHCI(dev); =20 @@ -3404,20 +3404,19 @@ static void usb_xhci_realize(struct PCIDevice *dev,= Error **errp) } =20 if (xhci->msi !=3D ON_OFF_AUTO_OFF) { - ret =3D msi_init(dev, 0x70, xhci->numintrs, true, false, &err); + ret =3D msi_init(dev, 0x70, xhci->numintrs, true, false, errp); /* Any error other than -ENOTSUP(board's MSI support is broken) * is a programming error */ assert(!ret || ret =3D=3D -ENOTSUP); if (ret && xhci->msi =3D=3D ON_OFF_AUTO_ON) { /* Can't satisfy user's explicit msi=3Don request, fail */ - error_append_hint(&err, "You have to use msi=3Dauto (default) = or " - "msi=3Doff with this machine type.\n"); - error_propagate(errp, err); + error_append_hint(errp, "You have to use msi=3Dauto (default) = or " + "msi=3Doff with this machine type.\n"); return; } - assert(!err || xhci->msi =3D=3D ON_OFF_AUTO_AUTO); + assert(!*errp || xhci->msi =3D=3D ON_OFF_AUTO_AUTO); /* With msi=3Dauto, we fall back to MSI off silently */ - error_free(err); + error_free_errp(errp); } =20 usb_xhci_init(xhci); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812324; cv=none; d=zoho.com; s=zohoarc; b=BInSsuCy7ngtyRHeeGd4P12+8Mgp9lwHrZ2KlJzLJ/IQeLj/atGx/ksYrmow/PDBt11xKxDdlHjAeuVnXXqQS0QfTF8gBA0nBoXCXcudRuPXvaIWmd8z2pIWES4dtDfSech3XKZtip7DsFq+C5YRsU4us7slWbz8g1Lgdp113lM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812324; h=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=CzIlmoiOlMyM3OXqDCZB8pSV9/Xv0MN+F0U3FxVtyW4=; b=G5lLYOmcsznO1UgP9rRlZ5ywRZXf2ixy2f0nCs527ozHao1yIK1ZhqpJTK9zId3/AUWfcK4XA3WWa1gXC29iZHV4qpVmDm1pnwPSsWHz+uR1pVsToD9Iwsfx+qksNaTX7+d+YyPwMWfczXsUUmFAkC+KnEvaPVesqcg+yR2zkCc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812324829318.76440269953434; Fri, 11 Oct 2019 09:45:24 -0700 (PDT) Received: from localhost ([::1]:54102 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy2b-0001Aw-Oc for importer@patchew.org; Fri, 11 Oct 2019 12:45:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36338) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQv-0006E6-9Y for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQu-0004RF-0g for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:25 -0400 Received: from relay.sw.ru ([185.231.240.75]:48044) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQt-0004DL-Pu for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:23 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQi-0003XG-C1; Fri, 11 Oct 2019 19:06:12 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 049/126] USB (serial adapter): introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:35 +0300 Message-Id: <20191011160552.22907-50-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz , Gerd Hoffmann , Samuel Thibault Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/usb/dev-serial.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c index 45cc74128a..72959b4005 100644 --- a/hw/usb/dev-serial.c +++ b/hw/usb/dev-serial.c @@ -484,8 +484,8 @@ static void usb_serial_event(void *opaque, int event) =20 static void usb_serial_realize(USBDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); USBSerialState *s =3D USB_SERIAL_DEV(dev); - Error *local_err =3D NULL; =20 usb_desc_create_serial(dev); usb_desc_init(dev); @@ -496,9 +496,8 @@ static void usb_serial_realize(USBDevice *dev, Error **= errp) return; } =20 - usb_check_attach(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + usb_check_attach(dev, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814749; cv=none; d=zoho.com; s=zohoarc; b=a6YoJRTJgcXjLI/M1zdrszBeB5IJq0te2DwqQgY5xh8D5CThf3Wa/WVHg7UdzCXBeKIABLdJqpnvxcethZ1yNDS2TEV8NiDz/IBnH3UB9zvmQ2gtEOcUieSEzBkkfSSK6UJEN8vvTfKZKUa0CVXECSMwVxJo3YzudpcTjmmt5iQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814749; h=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=v0hyWC/weYA2UCYtP8Wjcz40nE4l2EL7hIVPto6BWSc=; b=CZGrZM6IdanbCa3cL+nSF2HDVbST2RU7a2rfa+PxBVtTV3ieh6RU1jxJfW0gILGvKQlne73xTMDUryppQfgXbd6IInZovAmCRv7SJzFxObZsB1bMnYNW68MW5uXM4shYKhEsbn8TpQjHLF8kf4kigPAOR9tTJ+egPex7GS2sOWI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814749526676.8130628222046; Fri, 11 Oct 2019 10:25:49 -0700 (PDT) Received: from localhost ([::1]:54626 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyfk-0002ym-6C for importer@patchew.org; Fri, 11 Oct 2019 13:25:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36383) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQw-0006G7-CR for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQu-0004Ru-B7 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:26 -0400 Received: from relay.sw.ru ([185.231.240.75]:48054) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQu-0004F0-2k for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:24 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQi-0003XG-Md; Fri, 11 Oct 2019 19:06:12 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 050/126] VFIO: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:36 +0300 Message-Id: <20191011160552.22907-51-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Alex Williamson , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/vfio/common.c | 3 +++ hw/vfio/pci-quirks.c | 8 ++++---- hw/vfio/pci.c | 42 +++++++++++++++++++----------------------- hw/vfio/platform.c | 1 + 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/hw/vfio/common.c b/hw/vfio/common.c index 5ca11488d6..53edbf9530 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -136,6 +136,7 @@ static const char *index_to_str(VFIODevice *vbasedev, i= nt index) int vfio_set_irq_signaling(VFIODevice *vbasedev, int index, int subindex, int action, int fd, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct vfio_irq_set *irq_set; int argsz, ret =3D 0; const char *name; @@ -1455,6 +1456,7 @@ static void vfio_disconnect_container(VFIOGroup *grou= p) =20 VFIOGroup *vfio_get_group(int groupid, AddressSpace *as, Error **errp) { + ERRP_AUTO_PROPAGATE(); VFIOGroup *group; char path[32]; struct vfio_group_status status =3D { .argsz =3D sizeof(status) }; @@ -1544,6 +1546,7 @@ void vfio_put_group(VFIOGroup *group) int vfio_get_device(VFIOGroup *group, const char *name, VFIODevice *vbasedev, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct vfio_device_info dev_info =3D { .argsz =3D sizeof(dev_info) }; int ret, fd; =20 diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index 136f3a9ad6..a70abeca19 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -2106,19 +2106,18 @@ static void set_nv_gpudirect_clique_id(Object *obj,= Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; uint8_t value, *ptr =3D qdev_get_prop_ptr(dev, prop); - Error *local_err =3D NULL; =20 if (dev->realized) { qdev_prop_set_after_realize(dev, name, errp); return; } =20 - visit_type_uint8(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_uint8(v, name, &value, errp); + if (*errp) { return; } =20 @@ -2139,6 +2138,7 @@ const PropertyInfo qdev_prop_nv_gpudirect_clique =3D { =20 static int vfio_add_nv_gpudirect_cap(VFIOPCIDevice *vdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIDevice *pdev =3D &vdev->pdev; int ret, pos =3D 0xC8; =20 diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index c5e6fe61cb..e779b2cd22 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -119,7 +119,6 @@ static void vfio_intx_enable_kvm(VFIOPCIDevice *vdev, E= rror **errp) .gsi =3D vdev->intx.route.irq, .flags =3D KVM_IRQFD_FLAG_RESAMPLE, }; - Error *err =3D NULL; =20 if (vdev->no_kvm_intx || !kvm_irqfds_enabled() || vdev->intx.route.mode !=3D PCI_INTX_ENABLED || @@ -149,8 +148,7 @@ static void vfio_intx_enable_kvm(VFIOPCIDevice *vdev, E= rror **errp) =20 if (vfio_set_irq_signaling(&vdev->vbasedev, VFIO_PCI_INTX_IRQ_INDEX, 0, VFIO_IRQ_SET_ACTION_UNMASK, - irqfd.resamplefd, &err)) { - error_propagate(errp, err); + irqfd.resamplefd, errp)) { goto fail_vfio; } =20 @@ -253,8 +251,8 @@ static void vfio_intx_update(PCIDevice *pdev) =20 static int vfio_intx_enable(VFIOPCIDevice *vdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); uint8_t pin =3D vfio_pci_read_config(&vdev->pdev, PCI_INTERRUPT_PIN, 1= ); - Error *err =3D NULL; int32_t fd; int ret; =20 @@ -288,16 +286,15 @@ static int vfio_intx_enable(VFIOPCIDevice *vdev, Erro= r **errp) qemu_set_fd_handler(fd, vfio_intx_interrupt, NULL, vdev); =20 if (vfio_set_irq_signaling(&vdev->vbasedev, VFIO_PCI_INTX_IRQ_INDEX, 0, - VFIO_IRQ_SET_ACTION_TRIGGER, fd, &err)) { - error_propagate(errp, err); + VFIO_IRQ_SET_ACTION_TRIGGER, fd, errp)) { qemu_set_fd_handler(fd, NULL, NULL, vdev); event_notifier_cleanup(&vdev->intx.interrupt); return -errno; } =20 - vfio_intx_enable_kvm(vdev, &err); - if (err) { - warn_reportf_err(err, VFIO_MSG_PREFIX, vdev->vbasedev.name); + vfio_intx_enable_kvm(vdev, errp); + if (*errp) { + warn_reportf_err(*errp, VFIO_MSG_PREFIX, vdev->vbasedev.name); } =20 vdev->interrupt =3D VFIO_INT_INTx; @@ -1218,10 +1215,10 @@ static void vfio_disable_interrupts(VFIOPCIDevice *= vdev) =20 static int vfio_msi_setup(VFIOPCIDevice *vdev, int pos, Error **errp) { + ERRP_AUTO_PROPAGATE(); uint16_t ctrl; bool msi_64bit, msi_maskbit; int ret, entries; - Error *err =3D NULL; =20 if (pread(vdev->vbasedev.fd, &ctrl, sizeof(ctrl), vdev->config_offset + pos + PCI_CAP_FLAGS) !=3D sizeof(ctrl)= ) { @@ -1236,12 +1233,12 @@ static int vfio_msi_setup(VFIOPCIDevice *vdev, int = pos, Error **errp) =20 trace_vfio_msi_setup(vdev->vbasedev.name, pos); =20 - ret =3D msi_init(&vdev->pdev, pos, entries, msi_64bit, msi_maskbit, &e= rr); + ret =3D msi_init(&vdev->pdev, pos, entries, msi_64bit, msi_maskbit, er= rp); if (ret < 0) { if (ret =3D=3D -ENOTSUP) { return 0; } - error_propagate_prepend(errp, err, "msi_init failed: "); + error_prepend(errp, "msi_init failed: "); return ret; } vdev->msi_cap_size =3D 0xa + (msi_maskbit ? 0xa : 0) + (msi_64bit ? 0x= 4 : 0); @@ -1502,8 +1499,8 @@ static void vfio_msix_early_setup(VFIOPCIDevice *vdev= , Error **errp) =20 static int vfio_msix_setup(VFIOPCIDevice *vdev, int pos, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; - Error *err =3D NULL; =20 vdev->msix->pending =3D g_malloc0(BITS_TO_LONGS(vdev->msix->entries) * sizeof(unsigned long)); @@ -1512,14 +1509,13 @@ static int vfio_msix_setup(VFIOPCIDevice *vdev, int= pos, Error **errp) vdev->msix->table_bar, vdev->msix->table_offset, vdev->bars[vdev->msix->pba_bar].mr, vdev->msix->pba_bar, vdev->msix->pba_offset, pos, - &err); + errp); if (ret < 0) { if (ret =3D=3D -ENOTSUP) { - warn_report_err(err); + warn_report_errp(errp); return 0; } =20 - error_propagate(errp, err); return ret; } =20 @@ -1916,6 +1912,7 @@ static void vfio_check_af_flr(VFIOPCIDevice *vdev, ui= nt8_t pos) =20 static int vfio_add_std_cap(VFIOPCIDevice *vdev, uint8_t pos, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIDevice *pdev =3D &vdev->pdev; uint8_t cap_id, next, size; int ret; @@ -2469,6 +2466,7 @@ int vfio_populate_vga(VFIOPCIDevice *vdev, Error **er= rp) =20 static void vfio_populate_device(VFIOPCIDevice *vdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VFIODevice *vbasedev =3D &vdev->vbasedev; struct vfio_region_info *reg_info; struct vfio_irq_info irq_info =3D { .argsz =3D sizeof(irq_info) }; @@ -2700,11 +2698,11 @@ static void vfio_unregister_req_notifier(VFIOPCIDev= ice *vdev) =20 static void vfio_realize(PCIDevice *pdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VFIOPCIDevice *vdev =3D PCI_VFIO(pdev); VFIODevice *vbasedev_iter; VFIOGroup *group; char *tmp, *subsys, group_path[PATH_MAX], *group_name; - Error *err =3D NULL; ssize_t len; struct stat st; int groupid; @@ -2796,9 +2794,8 @@ static void vfio_realize(PCIDevice *pdev, Error **err= p) goto error; } =20 - vfio_populate_device(vdev, &err); - if (err) { - error_propagate(errp, err); + vfio_populate_device(vdev, errp); + if (*errp) { goto error; } =20 @@ -2891,9 +2888,8 @@ static void vfio_realize(PCIDevice *pdev, Error **err= p) =20 vfio_bars_prepare(vdev); =20 - vfio_msix_early_setup(vdev, &err); - if (err) { - error_propagate(errp, err); + vfio_msix_early_setup(vdev, errp); + if (*errp) { goto error; } =20 diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c index d7598c6152..236e5f8f57 100644 --- a/hw/vfio/platform.c +++ b/hw/vfio/platform.c @@ -617,6 +617,7 @@ static int vfio_base_device_init(VFIODevice *vbasedev, = Error **errp) */ static void vfio_platform_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VFIOPlatformDevice *vdev =3D VFIO_PLATFORM_DEVICE(dev); SysBusDevice *sbdev =3D SYS_BUS_DEVICE(dev); VFIODevice *vbasedev =3D &vdev->vbasedev; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815920; cv=none; d=zoho.com; s=zohoarc; b=gyn5nP7sgyF/QJyt5r7ASYo/CVO4TgR7yMzi2SdHtq88kMjA8DDYFOf/muH/wozCyTvxJDrap8tyxqJEEv9OMZt6Bi2oiEy7yB1KuMuHj6PC+iYV1gMnI260cpAxluroLPLeovjtRTnT2BRdLUH0wDy5hqCrBBDshp3TdW46GEc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815920; h=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=Vo+gpRA/prJq2f/jtNcOoZpTOVhGDx/bLIjyWikWxyU=; b=XKfGzaeHVLgLN2grMxSLxQWuTWfM7I+xekje0o1m03HU+Azsr5wrm4KPa2h4Mi0KXSOzDBA3x3DNS9tmy/N8wgYf45uEpPQ9lt79buUrtbDXJkrivQq8HPAdnyX9RbTYOmCne5me6mRvEsNJb+IBCD+tW24OsImKAXjUgB4Lpc4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815920407679.5745147957681; Fri, 11 Oct 2019 10:45:20 -0700 (PDT) Received: from localhost ([::1]:54862 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyyb-0002RI-2p for importer@patchew.org; Fri, 11 Oct 2019 13:45:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36802) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR7-0006ZG-IF for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR5-0004jm-2X for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:37 -0400 Received: from relay.sw.ru ([185.231.240.75]:48070) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR4-0004Fd-O5; Fri, 11 Oct 2019 12:06:34 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQi-0003XG-W4; Fri, 11 Oct 2019 19:06:13 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 051/126] vfio-ccw: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:37 +0300 Message-Id: <20191011160552.22907-52-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Eric Farman , vsementsov@virtuozzo.com, David Hildenbrand , Cornelia Huck , armbru@redhat.com, Greg Kurz , Halil Pasic , Christian Borntraeger , qemu-s390x@nongnu.org, Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/s390x/s390-ccw.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/hw/s390x/s390-ccw.c b/hw/s390x/s390-ccw.c index 0c5a5b60bd..415fa04091 100644 --- a/hw/s390x/s390-ccw.c +++ b/hw/s390x/s390-ccw.c @@ -55,6 +55,7 @@ static void s390_ccw_get_dev_info(S390CCWDevice *cdev, char *sysfsdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); unsigned int cssid, ssid, devid; char dev_path[PATH_MAX] =3D {0}, *tmp; =20 @@ -86,19 +87,19 @@ static void s390_ccw_get_dev_info(S390CCWDevice *cdev, =20 static void s390_ccw_realize(S390CCWDevice *cdev, char *sysfsdev, Error **= errp) { + ERRP_AUTO_PROPAGATE(); CcwDevice *ccw_dev =3D CCW_DEVICE(cdev); CCWDeviceClass *ck =3D CCW_DEVICE_GET_CLASS(ccw_dev); DeviceState *parent =3D DEVICE(ccw_dev); SubchDev *sch; int ret; - Error *err =3D NULL; =20 - s390_ccw_get_dev_info(cdev, sysfsdev, &err); - if (err) { - goto out_err_propagate; + s390_ccw_get_dev_info(cdev, sysfsdev, errp); + if (*errp) { + return; } =20 - sch =3D css_create_sch(ccw_dev->devno, &err); + sch =3D css_create_sch(ccw_dev->devno, errp); if (!sch) { goto out_mdevid_free; } @@ -108,13 +109,13 @@ static void s390_ccw_realize(S390CCWDevice *cdev, cha= r *sysfsdev, Error **errp) ccw_dev->sch =3D sch; ret =3D css_sch_build_schib(sch, &cdev->hostid); if (ret) { - error_setg_errno(&err, -ret, "%s: Failed to build initial schib", + error_setg_errno(errp, -ret, "%s: Failed to build initial schib", __func__); goto out_err; } =20 - ck->realize(ccw_dev, &err); - if (err) { + ck->realize(ccw_dev, errp); + if (*errp) { goto out_err; } =20 @@ -128,8 +129,6 @@ out_err: g_free(sch); out_mdevid_free: g_free(cdev->mdevid); -out_err_propagate: - error_propagate(errp, err); } =20 static void s390_ccw_unrealize(S390CCWDevice *cdev, Error **errp) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814796; cv=none; d=zoho.com; s=zohoarc; b=IThUFkx3ofB1aPoNDKJxIL+G0LAmS8VEumdQNzDNARQa8TaOMIuxSg8M2pKDd619aOX5FZXS1sJL8y6vkIzPxbsnj05onux0D3o51UNGcHymBFQ+/Z9PIKon23PBH53BZ93Xlthp8mBcPvfIAi916f2r3P1XFcJHbvba3iw0xuw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814796; h=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=stBQWMLZhVwWUUIVQtTcqsVVCbyI/lq/GrioRDtXvRE=; b=duVqYHOjPG2eyubj2Uwc/LraCMaSml7dYXuYOchJ5O7vXlosyUP2wb9SQ/ubvQItbMV6ccs03MK764SN5tUK2Tm1nUuB5NrfCooPzRob5jKO0nT7eVz1dbD6pSfxGVwYtki3/MFiX/9PfZpV3EVTTMZ3Mk64VguN84W5zk2I4hI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814796747688.8874318600822; Fri, 11 Oct 2019 10:26:36 -0700 (PDT) Received: from localhost ([::1]:54628 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIygS-0003lh-QV for importer@patchew.org; Fri, 11 Oct 2019 13:26:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36839) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR8-0006bQ-Lx for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR5-0004kS-GP for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:38 -0400 Received: from relay.sw.ru ([185.231.240.75]:48084) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR5-0004Fv-8B; Fri, 11 Oct 2019 12:06:35 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQj-0003XG-KL; Fri, 11 Oct 2019 19:06:13 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 052/126] vhost: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:38 +0300 Message-Id: <20191011160552.22907-53-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Fam Zheng , vsementsov@virtuozzo.com, qemu-block@nongnu.org, "Michael S. Tsirkin" , armbru@redhat.com, Max Reitz , Greg Kurz , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/block/vhost-user-blk.c | 6 +++--- hw/scsi/vhost-scsi.c | 12 +++++------- hw/scsi/vhost-user-scsi.c | 7 +++---- hw/virtio/vhost-vsock.c | 1 + 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 63da9bb619..9dfe173c19 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -388,9 +388,9 @@ static void vhost_user_blk_event(void *opaque, int even= t) =20 static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VHostUserBlk *s =3D VHOST_USER_BLK(vdev); - Error *err =3D NULL; int i, ret; =20 if (!s->chardev.chr) { @@ -429,8 +429,8 @@ static void vhost_user_blk_device_realize(DeviceState *= dev, Error **errp) NULL, (void *)dev, NULL, true); =20 reconnect: - if (qemu_chr_fe_wait_connected(&s->chardev, &err) < 0) { - error_report_err(err); + if (qemu_chr_fe_wait_connected(&s->chardev, errp) < 0) { + error_report_errp(errp); goto virtio_err; } =20 diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c index c693fc748a..2dca1f7fe2 100644 --- a/hw/scsi/vhost-scsi.c +++ b/hw/scsi/vhost-scsi.c @@ -165,9 +165,9 @@ static const VMStateDescription vmstate_virtio_vhost_sc= si =3D { =20 static void vhost_scsi_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOSCSICommon *vs =3D VIRTIO_SCSI_COMMON(dev); VHostSCSICommon *vsc =3D VHOST_SCSI_COMMON(dev); - Error *err =3D NULL; int vhostfd =3D -1; int ret; =20 @@ -195,9 +195,8 @@ static void vhost_scsi_realize(DeviceState *dev, Error = **errp) vhost_dummy_handle_output, vhost_dummy_handle_output, vhost_dummy_handle_output, - &err); - if (err !=3D NULL) { - error_propagate(errp, err); + errp); + if (*errp) { goto close_fd; } =20 @@ -207,9 +206,8 @@ static void vhost_scsi_realize(DeviceState *dev, Error = **errp) "When external environment supports it (Orchestrator migra= tes " "target SCSI device state or use shared storage over netwo= rk), " "set 'migratable' property to true to enable migration."); - migrate_add_blocker(vsc->migration_blocker, &err); - if (err) { - error_propagate(errp, err); + migrate_add_blocker(vsc->migration_blocker, errp); + if (*errp) { error_free(vsc->migration_blocker); goto free_virtio; } diff --git a/hw/scsi/vhost-user-scsi.c b/hw/scsi/vhost-user-scsi.c index 6a6c15dd32..ef4b25104f 100644 --- a/hw/scsi/vhost-user-scsi.c +++ b/hw/scsi/vhost-user-scsi.c @@ -68,11 +68,11 @@ static void vhost_dummy_handle_output(VirtIODevice *vde= v, VirtQueue *vq) =20 static void vhost_user_scsi_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOSCSICommon *vs =3D VIRTIO_SCSI_COMMON(dev); VHostUserSCSI *s =3D VHOST_USER_SCSI(dev); VHostSCSICommon *vsc =3D VHOST_SCSI_COMMON(s); struct vhost_virtqueue *vqs =3D NULL; - Error *err =3D NULL; int ret; =20 if (!vs->conf.chardev.chr) { @@ -82,9 +82,8 @@ static void vhost_user_scsi_realize(DeviceState *dev, Err= or **errp) =20 virtio_scsi_common_realize(dev, vhost_dummy_handle_output, vhost_dummy_handle_output, - vhost_dummy_handle_output, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + vhost_dummy_handle_output, errp); + if (*errp) { return; } =20 diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c index f5744363a8..61ade0fa65 100644 --- a/hw/virtio/vhost-vsock.c +++ b/hw/virtio/vhost-vsock.c @@ -300,6 +300,7 @@ static const VMStateDescription vmstate_virtio_vhost_vs= ock =3D { =20 static void vhost_vsock_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VHostVSock *vsock =3D VHOST_VSOCK(dev); int vhostfd; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815076; cv=none; d=zoho.com; s=zohoarc; b=BOQNaXA5TVjXLws+YQbVHtPmXK1wVJWybFU+U6THpDta5KesNPJifFtwD0WY37YMi8h4L15mKuYDaNiaG1+NCc3w8111MJVv1hEBwxPT7efy0hWe+C/U6GcsjPKdCXbJ248gTEN9YKihz8c3jJ9TvsXRjQzBicgIt/v3ybjmz50= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815076; h=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=FnMH64wRp6leyvv/ntu1WYSj04g6KoHKQCPHdulPKGw=; b=ByFDm6fD+peykDvUajQ5ZLwzBpZ39j7ZLfndlKzc6xYTwPDKS54xFcDxWCfu6Be+RW1yyqLHfvq/E4Hk2nIQk+R1BSzVSvt3efGi2v42OreAzyI/fN/Rufl2fMvJO9klmc6vk3jCAgrnO8nythG3BaVDRd9laE0kSeVDZpUGaHo= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815076792334.3699005127105; Fri, 11 Oct 2019 10:31:16 -0700 (PDT) Received: from localhost ([::1]:54692 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIykz-0001PG-6C for importer@patchew.org; Fri, 11 Oct 2019 13:31:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36422) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQx-0006IF-K1 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQv-0004UE-N8 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:27 -0400 Received: from relay.sw.ru ([185.231.240.75]:48094) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQv-0004GB-Eb for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:25 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQj-0003XG-VY; Fri, 11 Oct 2019 19:06:14 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 053/126] virtio: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:39 +0300 Message-Id: <20191011160552.22907-54-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, "Michael S. Tsirkin" , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/virtio/virtio-balloon.c | 35 ++++++++++++++++------------------- hw/virtio/virtio-bus.c | 17 +++++++---------- hw/virtio/virtio-pci.c | 2 ++ hw/virtio/virtio-rng-pci.c | 7 +++---- hw/virtio/virtio.c | 19 ++++++++----------- 5 files changed, 36 insertions(+), 44 deletions(-) diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c index 40b04f5180..eaee19df71 100644 --- a/hw/virtio/virtio-balloon.c +++ b/hw/virtio/virtio-balloon.c @@ -229,40 +229,38 @@ static void balloon_stats_poll_cb(void *opaque) static void balloon_stats_get_all(Object *obj, Visitor *v, const char *nam= e, void *opaque, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); VirtIOBalloon *s =3D opaque; int i; =20 - visit_start_struct(v, name, NULL, 0, &err); - if (err) { - goto out; + visit_start_struct(v, name, NULL, 0, errp); + if (*errp) { + return; } - visit_type_int(v, "last-update", &s->stats_last_update, &err); - if (err) { + visit_type_int(v, "last-update", &s->stats_last_update, errp); + if (*errp) { goto out_end; } =20 - visit_start_struct(v, "stats", NULL, 0, &err); - if (err) { + visit_start_struct(v, "stats", NULL, 0, errp); + if (*errp) { goto out_end; } for (i =3D 0; i < VIRTIO_BALLOON_S_NR; i++) { - visit_type_uint64(v, balloon_stat_names[i], &s->stats[i], &err); - if (err) { + visit_type_uint64(v, balloon_stat_names[i], &s->stats[i], errp); + if (*errp) { goto out_nested; } } - visit_check_struct(v, &err); + visit_check_struct(v, errp); out_nested: visit_end_struct(v, NULL); =20 - if (!err) { - visit_check_struct(v, &err); + if (!*errp) { + visit_check_struct(v, errp); } out_end: visit_end_struct(v, NULL); -out: - error_propagate(errp, err); } =20 static void balloon_stats_get_poll_interval(Object *obj, Visitor *v, @@ -277,13 +275,12 @@ static void balloon_stats_set_poll_interval(Object *o= bj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOBalloon *s =3D opaque; - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } =20 diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c index b2c804292e..d823fe682d 100644 --- a/hw/virtio/virtio-bus.c +++ b/hw/virtio/virtio-bus.c @@ -42,20 +42,19 @@ do { printf("virtio_bus: " fmt , ## __VA_ARGS__); } whi= le (0) /* A VirtIODevice is being plugged */ void virtio_bus_device_plugged(VirtIODevice *vdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *qdev =3D DEVICE(vdev); BusState *qbus =3D BUS(qdev_get_parent_bus(qdev)); VirtioBusState *bus =3D VIRTIO_BUS(qbus); VirtioBusClass *klass =3D VIRTIO_BUS_GET_CLASS(bus); VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(vdev); bool has_iommu =3D virtio_host_has_feature(vdev, VIRTIO_F_IOMMU_PLATFO= RM); - Error *local_err =3D NULL; =20 DPRINTF("%s: plug device.\n", qbus->name); =20 if (klass->pre_plugged !=3D NULL) { - klass->pre_plugged(qbus->parent, &local_err); - if (local_err) { - error_propagate(errp, local_err); + klass->pre_plugged(qbus->parent, errp); + if (*errp) { return; } } @@ -63,17 +62,15 @@ void virtio_bus_device_plugged(VirtIODevice *vdev, Erro= r **errp) /* Get the features of the plugged device. */ assert(vdc->get_features !=3D NULL); vdev->host_features =3D vdc->get_features(vdev, vdev->host_features, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } =20 if (klass->device_plugged !=3D NULL) { - klass->device_plugged(qbus->parent, &local_err); + klass->device_plugged(qbus->parent, errp); } - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } =20 diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index c6b47a9c73..a36e5f6990 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1525,6 +1525,7 @@ static void virtio_pci_pre_plugged(DeviceState *d, Er= ror **errp) /* This is called by virtio-bus just after the device is plugged. */ static void virtio_pci_device_plugged(DeviceState *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOPCIProxy *proxy =3D VIRTIO_PCI(d); VirtioBusState *bus =3D &proxy->bus; bool legacy =3D virtio_pci_legacy(proxy); @@ -1684,6 +1685,7 @@ static void virtio_pci_device_unplugged(DeviceState *= d) =20 static void virtio_pci_realize(PCIDevice *pci_dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOPCIProxy *proxy =3D VIRTIO_PCI(pci_dev); VirtioPCIClass *k =3D VIRTIO_PCI_GET_CLASS(pci_dev); bool pcie_port =3D pci_bus_is_express(pci_get_bus(pci_dev)) && diff --git a/hw/virtio/virtio-rng-pci.c b/hw/virtio/virtio-rng-pci.c index 8aaf54b781..993bb9aae4 100644 --- a/hw/virtio/virtio-rng-pci.c +++ b/hw/virtio/virtio-rng-pci.c @@ -32,14 +32,13 @@ struct VirtIORngPCI { =20 static void virtio_rng_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIORngPCI *vrng =3D VIRTIO_RNG_PCI(vpci_dev); DeviceState *vdev =3D DEVICE(&vrng->vdev); - Error *err =3D NULL; =20 qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 527df03bfd..3a318232e6 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -2606,24 +2606,22 @@ static void virtio_memory_listener_commit(MemoryLis= tener *listener) =20 static void virtio_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(dev); - Error *err =3D NULL; =20 /* Devices should either use vmsd or the load/save methods */ assert(!vdc->vmsd || !vdc->load); =20 if (vdc->realize !=3D NULL) { - vdc->realize(dev, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + vdc->realize(dev, errp); + if (*errp) { return; } } =20 - virtio_bus_device_plugged(vdev, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + virtio_bus_device_plugged(vdev, errp); + if (*errp) { vdc->unrealize(dev, NULL); return; } @@ -2634,16 +2632,15 @@ static void virtio_device_realize(DeviceState *dev,= Error **errp) =20 static void virtio_device_unrealize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VirtioDeviceClass *vdc =3D VIRTIO_DEVICE_GET_CLASS(dev); - Error *err =3D NULL; =20 virtio_bus_device_unplugged(vdev); =20 if (vdc->unrealize !=3D NULL) { - vdc->unrealize(dev, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + vdc->unrealize(dev, errp); + if (*errp) { return; } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811191; cv=none; d=zoho.com; s=zohoarc; b=VgwJ7k5ekkevkaxWO+9dA+msX89U4SeZtDpm9JKqlKQcoF7Fa01Z4kqw2vaUb7mJqS6XKo1qhn/j1JIjWc1PZwleyrH3N3uC2Tt+eynFO7OV3slRpVbje3uTNmVFTyd77x2uGkhNBidQh7WAFiZ2VePz4EckP7XbMrh3v92RRds= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811191; h=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=ze16RURFVRGOSAkfXTB+lVAx11ZkjQbeNjrXVGPuN6M=; b=cXepPv8qtFnUlRBljKWeQrubh+6sTByA4mrXZhM/ksTcR1b0RnVJDm3dZlKO7/QTWKgV4rXDnkNSEvilW5oHsgio1ohxNJEB1Gi+9ywFthM//iTKTb3SNufQZurqX7LqRFYSJV5YOhontAtiyjpGGIc5xgbpdslOlDBVwinCX5M= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 15708111911833.4854647785377892; Fri, 11 Oct 2019 09:26:31 -0700 (PDT) Received: from localhost ([::1]:53788 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxkL-0004tT-Rr for importer@patchew.org; Fri, 11 Oct 2019 12:26:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36413) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQx-0006Hf-CB for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQv-0004Uj-Sj for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:27 -0400 Received: from relay.sw.ru ([185.231.240.75]:48114) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQv-0004GN-LU for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:25 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQk-0003XG-9F; Fri, 11 Oct 2019 19:06:14 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 054/126] virtio-9p: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:40 +0300 Message-Id: <20191011160552.22907-55-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/9pfs/9p-local.c | 8 ++++---- hw/9pfs/9p.c | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c index 35635e7e7e..aac7989f16 100644 --- a/hw/9pfs/9p-local.c +++ b/hw/9pfs/9p-local.c @@ -1477,9 +1477,9 @@ static void error_append_security_model_hint(Error **= errp_in) =20 static int local_parse_opts(QemuOpts *opts, FsDriverEntry *fse, Error **er= rp) { + ERRP_AUTO_PROPAGATE(); const char *sec_model =3D qemu_opt_get(opts, "security_model"); const char *path =3D qemu_opt_get(opts, "path"); - Error *local_err =3D NULL; =20 if (!sec_model) { error_setg(errp, "security_model property not set"); @@ -1507,9 +1507,9 @@ static int local_parse_opts(QemuOpts *opts, FsDriverE= ntry *fse, Error **errp) return -1; } =20 - fsdev_throttle_parse_opts(opts, &fse->fst, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, + fsdev_throttle_parse_opts(opts, &fse->fst, errp); + if (*errp) { + error_prepend(errp, "invalid throttle configuration: "); return -1; } diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index cce2366219..1df2749e03 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -3552,6 +3552,7 @@ void pdu_submit(V9fsPDU *pdu, P9MsgHeader *hdr) int v9fs_device_realize_common(V9fsState *s, const V9fsTransport *t, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i, len; struct stat stat; FsDriverEntry *fse; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814474; cv=none; d=zoho.com; s=zohoarc; b=KxyaH2XCjXXlpcdiebFmLZ9eIAK8pFZ30++1TG6d1GXphc876MXZ4JWCEQkE23rwm5UDL7OeJ5bPPrCuvuah/H4mQyGxdytR6wGszdlJKQQWzPJzf4LV891yJlh9yD+PGgIGeHFnIPL/f+OVGKQ8TKFj1X1NROu+KNrIPpdeIQU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814474; h=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=6L7HD5ruco1TyWtC1tlVuOGqvPvyHmQPJ3sIBYa6WIc=; b=FnskmcOyUGzQyhvxRVaC9TzrNrbPJppjUs+uH7sBQyfYRGMTb/kMFhTkXUvp1436YuMhz/Et5tXc3Y/9lP7VeHGZDWxuT//0POsfVXvixQHJfSmrh0K5kuAxXmU/JAtCLW7Q7tXSMRqAM+2e5a71GayGScTGRcQH+W07mNEe5Yw= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814474843646.1479471243176; Fri, 11 Oct 2019 10:21:14 -0700 (PDT) Received: from localhost ([::1]:54564 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIybJ-0004qk-89 for importer@patchew.org; Fri, 11 Oct 2019 13:21:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36872) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR9-0006d0-GA for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR6-0004lM-AM for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:39 -0400 Received: from relay.sw.ru ([185.231.240.75]:48124) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR6-0004Gz-1a; Fri, 11 Oct 2019 12:06:36 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQk-0003XG-HA; Fri, 11 Oct 2019 19:06:14 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 055/126] virtio-blk: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:41 +0300 Message-Id: <20191011160552.22907-56-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, "Michael S. Tsirkin" , armbru@redhat.com, Max Reitz , Greg Kurz , Stefan Hajnoczi Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/block/dataplane/virtio-blk.c | 1 + hw/block/virtio-blk.c | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-bl= k.c index 119906a5fe..f8a1e70886 100644 --- a/hw/block/dataplane/virtio-blk.c +++ b/hw/block/dataplane/virtio-blk.c @@ -85,6 +85,7 @@ bool virtio_blk_data_plane_create(VirtIODevice *vdev, Vir= tIOBlkConf *conf, VirtIOBlockDataPlane **dataplane, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOBlockDataPlane *s; BusState *qbus =3D BUS(qdev_get_parent_bus(DEVICE(vdev))); VirtioBusClass *k =3D VIRTIO_BUS_GET_CLASS(qbus); diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index ed2ddebd2b..788d346727 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -1113,10 +1113,10 @@ static const BlockDevOps virtio_block_ops =3D { =20 static void virtio_blk_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VirtIOBlock *s =3D VIRTIO_BLK(dev); VirtIOBlkConf *conf =3D &s->conf; - Error *err =3D NULL; unsigned i; =20 if (!conf->conf.blk) { @@ -1188,9 +1188,8 @@ static void virtio_blk_device_realize(DeviceState *de= v, Error **errp) for (i =3D 0; i < conf->num_queues; i++) { virtio_add_queue(vdev, conf->queue_size, virtio_blk_handle_output); } - virtio_blk_data_plane_create(vdev, conf, &s->dataplane, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + virtio_blk_data_plane_create(vdev, conf, &s->dataplane, errp); + if (*errp) { virtio_cleanup(vdev); return; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812960; cv=none; d=zoho.com; s=zohoarc; b=AEs00d58yaiAYBp5xkvhchIDY8zwmqk8ai3ULUhIHHIc97Vo/TCMUeYUzP3RNJFaj1ULrsK4uP7jZOSvRFIWyEXPPpB12fORHPzXAx/hEkigNBZTffTxo+zOmgU9smHfZVTq7PYpIX5cxnGDDfVPfMItLEb84/jWCgbnnG6stVY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812960; h=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=QCqRGKsx0jc8Ak1P3E0Ufow5rUgj/Gha47Jc8n1m/ZE=; b=BoEp1Mbs9kli5bubeCLOhhoFBLIp3kCXbC8VeuuF3iNeDYdVvCDBvQsgl1L3Z+CZIQYOTRYaSN2zrRD5O4X2GEleiJh/px+dKfZaYgfys6Af/zeoNfEX/0FYLtxQg0cjZ2TjQLkK266PsnknirLm0wy7ryJDHsETBy0pehG5KpM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812960697669.957653596316; Fri, 11 Oct 2019 09:56:00 -0700 (PDT) Received: from localhost ([::1]:54218 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyCo-00056R-Fg for importer@patchew.org; Fri, 11 Oct 2019 12:55:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36903) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRA-0006eS-9V for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR6-0004lw-No for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:40 -0400 Received: from relay.sw.ru ([185.231.240.75]:48136) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR6-0004HR-Eu; Fri, 11 Oct 2019 12:06:36 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQk-0003XG-Ud; Fri, 11 Oct 2019 19:06:15 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 056/126] virtio-ccw: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:42 +0300 Message-Id: <20191011160552.22907-57-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, "Michael S. Tsirkin" , Cornelia Huck , David Hildenbrand , armbru@redhat.com, Greg Kurz , Halil Pasic , Christian Borntraeger , qemu-s390x@nongnu.org, Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/s390x/virtio-ccw-crypto.c | 7 +++---- hw/s390x/virtio-ccw-rng.c | 7 +++---- hw/s390x/virtio-ccw.c | 13 ++++++------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/hw/s390x/virtio-ccw-crypto.c b/hw/s390x/virtio-ccw-crypto.c index 086b397ad2..b942179f3f 100644 --- a/hw/s390x/virtio-ccw-crypto.c +++ b/hw/s390x/virtio-ccw-crypto.c @@ -17,14 +17,13 @@ =20 static void virtio_ccw_crypto_realize(VirtioCcwDevice *ccw_dev, Error **er= rp) { + ERRP_AUTO_PROPAGATE(); VirtIOCryptoCcw *dev =3D VIRTIO_CRYPTO_CCW(ccw_dev); DeviceState *vdev =3D DEVICE(&dev->vdev); - Error *err =3D NULL; =20 qdev_set_parent_bus(vdev, BUS(&ccw_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/s390x/virtio-ccw-rng.c b/hw/s390x/virtio-ccw-rng.c index 854254dd50..bc242f1fc6 100644 --- a/hw/s390x/virtio-ccw-rng.c +++ b/hw/s390x/virtio-ccw-rng.c @@ -18,14 +18,13 @@ =20 static void virtio_ccw_rng_realize(VirtioCcwDevice *ccw_dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIORNGCcw *dev =3D VIRTIO_RNG_CCW(ccw_dev); DeviceState *vdev =3D DEVICE(&dev->vdev); - Error *err =3D NULL; =20 qdev_set_parent_bus(vdev, BUS(&ccw_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index 6580ce5907..3d80b27ef5 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -692,18 +692,18 @@ static void virtio_sch_disable_cb(SubchDev *sch) =20 static void virtio_ccw_device_realize(VirtioCcwDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOCCWDeviceClass *k =3D VIRTIO_CCW_DEVICE_GET_CLASS(dev); CcwDevice *ccw_dev =3D CCW_DEVICE(dev); CCWDeviceClass *ck =3D CCW_DEVICE_GET_CLASS(ccw_dev); SubchDev *sch; - Error *err =3D NULL; =20 sch =3D css_create_sch(ccw_dev->devno, errp); if (!sch) { return; } if (!virtio_ccw_rev_max(dev) && dev->force_revision_1) { - error_setg(&err, "Invalid value of property max_rev " + error_setg(errp, "Invalid value of property max_rev " "(is %d expected >=3D 1)", virtio_ccw_rev_max(dev)); goto out_err; } @@ -728,21 +728,20 @@ static void virtio_ccw_device_realize(VirtioCcwDevice= *dev, Error **errp) } =20 if (k->realize) { - k->realize(dev, &err); - if (err) { + k->realize(dev, errp); + if (*errp) { goto out_err; } } =20 - ck->realize(ccw_dev, &err); - if (err) { + ck->realize(ccw_dev, errp); + if (*errp) { goto out_err; } =20 return; =20 out_err: - error_propagate(errp, err); css_subch_assign(sch->cssid, sch->ssid, sch->schid, sch->devno, NULL); ccw_dev->sch =3D NULL; g_free(sch); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815249; cv=none; d=zoho.com; s=zohoarc; b=M8XKO3O/38O3uAib391CKZKuL/wyNylfVROj+gB8rj8QlykojbXc5k9z8BWMLLZKyK55QYknUQxAvzWqeIyg2rsH5tdrq6oH7BxK+4vut+Jho/yIxaKrmBMnwlt2sCQO+egQVEeQ+RanxiRPzCnSO4Q9fazZ6UujgBeLImWsVBI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815249; h=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=oaB5in/qtxCd9MBlSBiYO674/jEa4z6ohkp4629iBxs=; b=WbxUEUmbLmPTwIn3fb+dmKoYuuG5BGP+2ICn+3r+KFWfgLYgd0RNz7oA9qEb87i34CHPu3fsm5ifzBZjTtxv90ffbAJe0fadCMVTrPaNTvAJ7jUTXIMSV796HRDKlvns9dCCzCaz+fJU6t+B57xicAbrM6WZactDUwnWY/N50fI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815249294880.5068017873526; Fri, 11 Oct 2019 10:34:09 -0700 (PDT) Received: from localhost ([::1]:54722 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIynn-000516-QL for importer@patchew.org; Fri, 11 Oct 2019 13:34:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36464) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQy-0006JR-CW for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQw-0004Vp-U5 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:28 -0400 Received: from relay.sw.ru ([185.231.240.75]:48144) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQw-0004Hs-MZ for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:26 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQl-0003XG-8D; Fri, 11 Oct 2019 19:06:15 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 057/126] virtio-input: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:43 +0300 Message-Id: <20191011160552.22907-58-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, "Michael S. Tsirkin" , armbru@redhat.com, Greg Kurz , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/input/virtio-input.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/hw/input/virtio-input.c b/hw/input/virtio-input.c index 51617a5885..964df770fd 100644 --- a/hw/input/virtio-input.c +++ b/hw/input/virtio-input.c @@ -232,16 +232,15 @@ static int virtio_input_post_load(void *opaque, int v= ersion_id) =20 static void virtio_input_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOInputClass *vic =3D VIRTIO_INPUT_GET_CLASS(dev); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VirtIOInput *vinput =3D VIRTIO_INPUT(dev); VirtIOInputConfig *cfg; - Error *local_err =3D NULL; =20 if (vic->realize) { - vic->realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + vic->realize(dev, errp); + if (*errp) { return; } } @@ -277,14 +276,13 @@ static void virtio_input_finalize(Object *obj) } static void virtio_input_device_unrealize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOInputClass *vic =3D VIRTIO_INPUT_GET_CLASS(dev); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); - Error *local_err =3D NULL; =20 if (vic->unrealize) { - vic->unrealize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + vic->unrealize(dev, errp); + if (*errp) { return; } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813149; cv=none; d=zoho.com; s=zohoarc; b=AYeLqxO5uX7IUEeJuS17zlH9CSzV9Ubj2MdaIlnhMQHaZSRfjcGxxfJPxV0T+SbmVtig6AKOaZNAmjtAoC+6Q64IJDRnLkNJnf4LTa9uguzpeIYgJTEuKksWOPmhTJIj6W+I0AMbgvN5V0gSnoRzdZ1AW8vocyCLyByRq72sN6Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813149; h=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=zeA5btg7+Ndl0JSIDpmh8X/3g8jIAbYej3rZaiCSXvQ=; b=licQaFvzHnlXG+ptfwsc9v67AM0vHJ+QlrwIXJ1K9JAYCGY7SJBjU79yrjA7WpRro7bAGdbuk67iqEPAcF/F+BXQiq6VGVbo+ZSAtIUezzRdjsfr1DVwWaAQbTOK2L970AFztg4G5fH7UweT7qbKckdF3Sj7FEofLxS0Vkfmzr8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081314992946.95942795867313; Fri, 11 Oct 2019 09:59:09 -0700 (PDT) Received: from localhost ([::1]:54248 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyFw-0000lF-8u for importer@patchew.org; Fri, 11 Oct 2019 12:59:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36472) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQy-0006Jg-IB for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQx-0004W4-4w for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:28 -0400 Received: from relay.sw.ru ([185.231.240.75]:48152) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQw-0004IL-Tc for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:27 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQl-0003XG-JW; Fri, 11 Oct 2019 19:06:15 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 058/126] virtio-serial: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:44 +0300 Message-Id: <20191011160552.22907-59-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Laurent Vivier , vsementsov@virtuozzo.com, "Michael S. Tsirkin" , Amit Shah , armbru@redhat.com, Greg Kurz , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/char/virtio-serial-bus.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c index 4e0ed829ae..8ab7f29d0a 100644 --- a/hw/char/virtio-serial-bus.c +++ b/hw/char/virtio-serial-bus.c @@ -935,12 +935,12 @@ static void remove_port(VirtIOSerial *vser, uint32_t = port_id) =20 static void virtser_port_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOSerialPort *port =3D VIRTIO_SERIAL_PORT(dev); VirtIOSerialPortClass *vsc =3D VIRTIO_SERIAL_PORT_GET_CLASS(port); VirtIOSerialBus *bus =3D VIRTIO_SERIAL_BUS(qdev_get_parent_bus(dev)); int max_nr_ports; bool plugging_port0; - Error *err =3D NULL; =20 port->vser =3D bus->vser; port->bh =3D qemu_bh_new(flush_queued_data_bh, port); @@ -986,9 +986,8 @@ static void virtser_port_device_realize(DeviceState *de= v, Error **errp) return; } =20 - vsc->realize(dev, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + vsc->realize(dev, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815387; cv=none; d=zoho.com; s=zohoarc; b=FzRGtW25mmX88zzUBw8WEM7HLtJA9EgSvRYnt9KWWSBlqxoolQOpFH0fRtgY4J5O+dNGeZDOIps1vTudzyUzSR1N0HVZoNePNsb2fK2EzTKVIk8faSD/UiSZaS76UDdZXHH62JgGA2FgRYtREUEbv7mztzkgcLe2PahS4t3ItEs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815387; h=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=vaojGkjoxxqAWMRi8UxXYsNESCaThShRZOlDOSJsj+w=; b=ewWRLAL9OICg9eEdPR92F2t6WUWviY7ClbafXE8CmKaXCfqiR9ctDmO+Mp6lEk4UD2I5/EsGMjE6G/+wN3G0VJ8hCd3BFB6NdGHfy/BY72kTq1ysGHmOI0DOgDjPVhqD8rNF0xEWGClLviwJxAlab3OlGA5f7lweeiNr++BiAy4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815387884463.6891214434954; Fri, 11 Oct 2019 10:36:27 -0700 (PDT) Received: from localhost ([::1]:54758 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyq2-0000Eg-2s for importer@patchew.org; Fri, 11 Oct 2019 13:36:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36491) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQz-0006Ka-3K for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQx-0004XG-JO for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:28 -0400 Received: from relay.sw.ru ([185.231.240.75]:48156) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQx-0004IY-9e for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:27 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQl-0003XG-RQ; Fri, 11 Oct 2019 19:06:15 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 059/126] virtio-rng: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:45 +0300 Message-Id: <20191011160552.22907-60-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Laurent Vivier , vsementsov@virtuozzo.com, Amit Shah , "Michael S. Tsirkin" , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- backends/rng.c | 7 +++---- hw/virtio/virtio-rng.c | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/backends/rng.c b/backends/rng.c index 391888b8b3..aa3b85f418 100644 --- a/backends/rng.c +++ b/backends/rng.c @@ -53,9 +53,9 @@ static void rng_backend_complete(UserCreatable *uc, Error= **errp) =20 static void rng_backend_prop_set_opened(Object *obj, bool value, Error **e= rrp) { + ERRP_AUTO_PROPAGATE(); RngBackend *s =3D RNG_BACKEND(obj); RngBackendClass *k =3D RNG_BACKEND_GET_CLASS(s); - Error *local_err =3D NULL; =20 if (value =3D=3D s->opened) { return; @@ -67,9 +67,8 @@ static void rng_backend_prop_set_opened(Object *obj, bool= value, Error **errp) } =20 if (k->opened) { - k->opened(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + k->opened(s, errp); + if (*errp) { return; } } diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c index e93bed020f..6db2c49677 100644 --- a/hw/virtio/virtio-rng.c +++ b/hw/virtio/virtio-rng.c @@ -174,9 +174,9 @@ static void virtio_rng_set_status(VirtIODevice *vdev, u= int8_t status) =20 static void virtio_rng_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VirtIORNG *vrng =3D VIRTIO_RNG(dev); - Error *local_err =3D NULL; =20 if (vrng->conf.period_ms <=3D 0) { error_setg(errp, "'period' parameter expects a positive integer"); @@ -195,9 +195,8 @@ static void virtio_rng_device_realize(DeviceState *dev,= Error **errp) Object *default_backend =3D object_new(TYPE_RNG_BUILTIN); =20 user_creatable_complete(USER_CREATABLE(default_backend), - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { object_unref(default_backend); return; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570816404; cv=none; d=zoho.com; s=zohoarc; b=ZvDFHXeybS1AlKRl+8OOn0vLPVkN0nM5kbudEF5KtiV4q88+vP5iYYhptDE0GxRI8n0aFGJ5TvlMUUUsj9URmxFX1XcSq0HJGZxPYJx3oR1BFqVkMI7oWVuvodikP6w0LiykFQz+pqZSPwrOp3seAvDNin5zEIohflXcIdpuHYQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570816404; h=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=qxKoXMl+2uUt8PL8gFFNgglgHkG9MCdOnfxqlgnA85c=; b=RvrVd/nNve2rYdsrgF0aPwlYZ+Ixj86DO6R/Q1WmoTA8sr8CmGNz9dpLhnNowXqpa2teilVjof7ElDrg/aa8vQ2ZmDj+3Tv6w7PwSwJ49mq4YUziNQi4qJmtN7y5+LitkqPXjwZdpBF19dwWNwsv/98Hi9h5rnol2Kw+Mqbgrhg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570816404208358.6610143661967; Fri, 11 Oct 2019 10:53:24 -0700 (PDT) Received: from localhost ([::1]:54966 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIz6Q-00032r-H5 for importer@patchew.org; Fri, 11 Oct 2019 13:53:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36922) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRA-0006fT-Pa for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR7-0004nB-RN for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:40 -0400 Received: from relay.sw.ru ([185.231.240.75]:48174) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR7-0004Ii-Jm; Fri, 11 Oct 2019 12:06:37 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQm-0003XG-4Q; Fri, 11 Oct 2019 19:06:16 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 060/126] megasas: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:46 +0300 Message-Id: <20191011160552.22907-61-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Fam Zheng , Hannes Reinecke , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Greg Kurz , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/scsi/megasas.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c index de9bd20887..007cfcff88 100644 --- a/hw/scsi/megasas.c +++ b/hw/scsi/megasas.c @@ -2311,11 +2311,11 @@ static const struct SCSIBusInfo megasas_scsi_info = =3D { =20 static void megasas_scsi_realize(PCIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MegasasState *s =3D MEGASAS(dev); MegasasBaseClass *b =3D MEGASAS_DEVICE_GET_CLASS(s); uint8_t *pci_conf; int i, bar_type; - Error *err =3D NULL; int ret; =20 pci_conf =3D dev->config; @@ -2326,20 +2326,19 @@ static void megasas_scsi_realize(PCIDevice *dev, Er= ror **errp) pci_conf[PCI_INTERRUPT_PIN] =3D 0x01; =20 if (s->msi !=3D ON_OFF_AUTO_OFF) { - ret =3D msi_init(dev, 0x50, 1, true, false, &err); + ret =3D msi_init(dev, 0x50, 1, true, false, errp); /* Any error other than -ENOTSUP(board's MSI support is broken) * is a programming error */ assert(!ret || ret =3D=3D -ENOTSUP); if (ret && s->msi =3D=3D ON_OFF_AUTO_ON) { /* Can't satisfy user's explicit msi=3Don request, fail */ - error_append_hint(&err, "You have to use msi=3Dauto (default) = or " - "msi=3Doff with this machine type.\n"); - error_propagate(errp, err); + error_append_hint(errp, "You have to use msi=3Dauto (default) = or " + "msi=3Doff with this machine type.\n"); return; } else if (ret) { /* With msi=3Dauto, we fall back to MSI off silently */ s->msi =3D ON_OFF_AUTO_OFF; - error_free(err); + error_free_errp(errp); } } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813328; cv=none; d=zoho.com; s=zohoarc; b=WP2dM4jtXB2t68TqqVQ3gi8EsXh06w2rdC5qQ4/pIgWsCqxpr8/8AjrRTBnqDVco9OrkIfh5hM6bAAlwe/R4GKo/HK39yB9rzeqmDnNsPEjBguwP2n3DMOIFXOtlMdrnI2GBcznjHdg6ofacOlfo/97qDObvGWuKDUJVIbqvXi0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813328; h=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=EIG89EcBS7KttpYnQuDjWFY5jO+IykZ6GuM9BI8zHec=; b=laTw0WwhwvE8B5S+wSrAANHJCMcJjfVG2rABlyQS1iahAe4skIFe/XAwl9mLAfSkaPif9qtsvPpThMfKOxeq4T5QDXYOh0yGppsMWRmiEwZ6phflVNG1UTJdL9ZRz5R50tz8h7MF303DLALYl2S5Fp3zueaLSfRBT73OcYaPvs8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813328835656.3506156921884; Fri, 11 Oct 2019 10:02:08 -0700 (PDT) Received: from localhost ([::1]:54290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyIp-0004nL-1e for importer@patchew.org; Fri, 11 Oct 2019 13:02:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36524) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxQz-0006Li-Lm for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQy-0004a4-8E for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:29 -0400 Received: from relay.sw.ru ([185.231.240.75]:48178) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQx-0004J0-UM for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:28 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQm-0003XG-EM; Fri, 11 Oct 2019 19:06:16 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 061/126] NVDIMM: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:47 +0300 Message-Id: <20191011160552.22907-62-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Xiao Guangrong , "Michael S. Tsirkin" , armbru@redhat.com, Greg Kurz , Igor Mammedov Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/mem/nvdimm.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/hw/mem/nvdimm.c b/hw/mem/nvdimm.c index 375f9a588a..e84d860688 100644 --- a/hw/mem/nvdimm.c +++ b/hw/mem/nvdimm.c @@ -44,29 +44,27 @@ static void nvdimm_get_label_size(Object *obj, Visitor = *v, const char *name, static void nvdimm_set_label_size(Object *obj, Visitor *v, const char *nam= e, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); NVDIMMDevice *nvdimm =3D NVDIMM(obj); - Error *local_err =3D NULL; uint64_t value; =20 if (nvdimm->nvdimm_mr) { - error_setg(&local_err, "cannot change property value"); - goto out; + error_setg(errp, "cannot change property value"); + return; } =20 - visit_type_size(v, name, &value, &local_err); - if (local_err) { - goto out; + visit_type_size(v, name, &value, errp); + if (*errp) { + return; } if (value < MIN_NAMESPACE_LABEL_SIZE) { - error_setg(&local_err, "Property '%s.%s' (0x%" PRIx64 ") is requir= ed" + error_setg(errp, "Property '%s.%s' (0x%" PRIx64 ") is required" " at least 0x%lx", object_get_typename(obj), name, value, MIN_NAMESPACE_LABEL_SIZE); - goto out; + return; } =20 nvdimm->label_size =3D value; -out: - error_propagate(errp, local_err); } =20 static void nvdimm_init(Object *obj) @@ -126,13 +124,12 @@ static void nvdimm_prepare_memory_region(NVDIMMDevice= *nvdimm, Error **errp) static MemoryRegion *nvdimm_md_get_memory_region(MemoryDeviceState *md, Error **errp) { + ERRP_AUTO_PROPAGATE(); NVDIMMDevice *nvdimm =3D NVDIMM(md); - Error *local_err =3D NULL; =20 if (!nvdimm->nvdimm_mr) { - nvdimm_prepare_memory_region(nvdimm, &local_err); - if (local_err) { - error_propagate(errp, local_err); + nvdimm_prepare_memory_region(nvdimm, errp); + if (*errp) { return NULL; } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815553; cv=none; d=zoho.com; s=zohoarc; b=AVvGZBgJ2sKtiuNAoWCo9mm6d6fnPgcKm2KB2KBLskMGAqVZiY86TcD3CR+qpBg8B36zHRbTlLycYtcxC6+VNa+z652gxzrpSYgyK/rSziRI9OCvEL73pJKRMPZdgbSYdl9KFiY8ZmZC6dRZijFVppDBSc/WQGi6HLrLK5bsVPo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815553; h=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=EIgB/aF5MINgOEw9xgiq+QJ7uSAtgdIhcA2WgR1ynEY=; b=Ord86P0ogmz0M7mXdvz8ozIXtGTdIuTRnnZ9DS4nv9ZNI8W73R/BBsTyyq6r7z4nDHIt1ykANkJkWvbxMS2Pen6eS//okMilmYdOF50VE1c9JC1FCFYRFgWYjlLc+w6ANt4hhWgpQe09PB3S1bDk69MkS8h3uby0+cuLwNRct10= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815553929985.5392327894075; Fri, 11 Oct 2019 10:39:13 -0700 (PDT) Received: from localhost ([::1]:54788 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIysi-0003te-DK for importer@patchew.org; Fri, 11 Oct 2019 13:39:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36534) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR0-0006MB-1d for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQy-0004ax-LF for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:29 -0400 Received: from relay.sw.ru ([185.231.240.75]:48190) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQy-0004JN-DC for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:28 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQm-0003XG-Ri; Fri, 11 Oct 2019 19:06:17 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 062/126] eepro100: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:48 +0300 Message-Id: <20191011160552.22907-63-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Stefan Weil , Jason Wang , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/net/eepro100.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c index cc2dd8b1c9..f40ae698fe 100644 --- a/hw/net/eepro100.c +++ b/hw/net/eepro100.c @@ -1829,17 +1829,16 @@ static NetClientInfo net_eepro100_info =3D { =20 static void e100_nic_realize(PCIDevice *pci_dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); EEPRO100State *s =3D DO_UPCAST(EEPRO100State, dev, pci_dev); E100PCIDeviceInfo *info =3D eepro100_get_class(s); - Error *local_err =3D NULL; =20 TRACE(OTHER, logout("\n")); =20 s->device =3D info->device; =20 - e100_pci_reset(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + e100_pci_reset(s, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811636; cv=none; d=zoho.com; s=zohoarc; b=nu/o5Tbe6MpDi+CU5g7Sdyf5xIY+vWuANEQLJDvO5qadw1iJ25aD79bh6qG1xYaAFwyndw5rvF+thBYJ5VXDp8008gcLg8uPoUYWxlGMu77gknsmgM+BLZb48bMECffnfUXmTc2+35r2rjFJSDPnOpHda+mbS6kxpDZd7NFaAw4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811636; h=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=DIRWaBWtxANfKHNZiPpEgj6i+4jVQo4oAYh7jvPZsCE=; b=IRXXZSJRivu/FV39zY8pVVEiFXKM+0MpzNPfABHJRs112rSgLo7zX76RR7N8Tu43S0INVfLDMALxFmeiwRbZHC7cSFfaOXVnK73ISbmFD9ClUyXEyvOdDW+J6HKg+weUfBzcD825+FN6y0dWJvnTtcynnjZ8Lxx5OaGsPGdKHsg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811636927531.50886854844; Fri, 11 Oct 2019 09:33:56 -0700 (PDT) Received: from localhost ([::1]:53928 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxrW-0004AG-5p for importer@patchew.org; Fri, 11 Oct 2019 12:33:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36550) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR0-0006N8-Ex for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQy-0004bU-Uz for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:30 -0400 Received: from relay.sw.ru ([185.231.240.75]:48198) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQy-0004JW-My for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:28 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQn-0003XG-8m; Fri, 11 Oct 2019 19:06:17 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 063/126] virtio-gpu: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:49 +0300 Message-Id: <20191011160552.22907-64-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, "Michael S. Tsirkin" , armbru@redhat.com, Greg Kurz , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/display/virtio-gpu-base.c | 7 +++---- hw/display/virtio-gpu-pci.c | 7 +++---- hw/display/virtio-vga.c | 7 +++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c index 55e07995fe..e1f25456a7 100644 --- a/hw/display/virtio-gpu-base.c +++ b/hw/display/virtio-gpu-base.c @@ -126,9 +126,9 @@ virtio_gpu_base_device_realize(DeviceState *qdev, VirtIOHandleOutput cursor_cb, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIODevice *vdev =3D VIRTIO_DEVICE(qdev); VirtIOGPUBase *g =3D VIRTIO_GPU_BASE(qdev); - Error *local_err =3D NULL; int i; =20 if (g->conf.max_outputs > VIRTIO_GPU_MAX_SCANOUTS) { @@ -139,9 +139,8 @@ virtio_gpu_base_device_realize(DeviceState *qdev, g->use_virgl_renderer =3D false; if (virtio_gpu_virgl_enabled(g->conf)) { error_setg(&g->migration_blocker, "virgl is not yet migratable"); - migrate_add_blocker(g->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + migrate_add_blocker(g->migration_blocker, errp); + if (*errp) { error_free(g->migration_blocker); return false; } diff --git a/hw/display/virtio-gpu-pci.c b/hw/display/virtio-gpu-pci.c index 25e4038874..13cd695a46 100644 --- a/hw/display/virtio-gpu-pci.c +++ b/hw/display/virtio-gpu-pci.c @@ -27,18 +27,17 @@ static Property virtio_gpu_pci_base_properties[] =3D { =20 static void virtio_gpu_pci_base_realize(VirtIOPCIProxy *vpci_dev, Error **= errp) { + ERRP_AUTO_PROPAGATE(); VirtIOGPUPCIBase *vgpu =3D VIRTIO_GPU_PCI_BASE(vpci_dev); VirtIOGPUBase *g =3D vgpu->vgpu; DeviceState *vdev =3D DEVICE(g); int i; - Error *local_error =3D NULL; =20 qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); virtio_pci_force_virtio_1(vpci_dev); - object_property_set_bool(OBJECT(vdev), true, "realized", &local_error); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); =20 - if (local_error) { - error_propagate(errp, local_error); + if (*errp) { return; } =20 diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c index cc6e66ea1c..047528ec37 100644 --- a/hw/display/virtio-vga.c +++ b/hw/display/virtio-vga.c @@ -90,10 +90,10 @@ static const VMStateDescription vmstate_virtio_vga_base= =3D { /* VGA device wrapper around PCI device around virtio GPU */ static void virtio_vga_base_realize(VirtIOPCIProxy *vpci_dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); VirtIOVGABase *vvga =3D VIRTIO_VGA_BASE(vpci_dev); VirtIOGPUBase *g =3D vvga->vgpu; VGACommonState *vga =3D &vvga->vga; - Error *err =3D NULL; uint32_t offset; int i; =20 @@ -138,9 +138,8 @@ static void virtio_vga_base_realize(VirtIOPCIProxy *vpc= i_dev, Error **errp) /* init virtio bits */ qdev_set_parent_bus(DEVICE(g), BUS(&vpci_dev->bus)); virtio_pci_force_virtio_1(vpci_dev); - object_property_set_bool(OBJECT(g), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(g), true, "realized", errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811393; cv=none; d=zoho.com; s=zohoarc; b=O4QlQCtCsva+0o+IJeIJ26jlX4Bu1FuuezRH3VirNVNUaE67HU0ZNqalvvmeioSyk+iBW934VjjEqELqRTKJ0f2LtLJl+Nzin62E30FgLM9PW5fCMS+r/txLjNlMEu1u11pfnqXHjHvGKbSc8SFwp49B/ubOGDdkERurhkek/V4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811393; h=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=cAfL7lXPk7SAw+cpWAEwv6mm1Faqk1uztO6ayLQxpxs=; b=U51Fs5u3Wja7Aj3+6dj4+ANdRV6uZB1RzsRzY3Ouk8jGPmSVY3zNJSGkpRQjU9bVVQJ0y43HccT5naO/aJdMl3kcnsGMVFl35y2LL3Fh2glubUD2/zKZg27ECdeDgZLL2PgeyQLI1zAsF2XrXbYkUkr4hhFcylqEZ9lPEB5nABk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570811393398788.3493626465649; Fri, 11 Oct 2019 09:29:53 -0700 (PDT) Received: from localhost ([::1]:53872 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxnc-0008Tz-2q for importer@patchew.org; Fri, 11 Oct 2019 12:29:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36555) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR0-0006NS-Ha for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxQz-0004bl-5t for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:30 -0400 Received: from relay.sw.ru ([185.231.240.75]:48208) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxQy-0004Jz-UW for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:29 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQn-0003XG-JA; Fri, 11 Oct 2019 19:06:17 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 064/126] fw_cfg: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:50 +0300 Message-Id: <20191011160552.22907-65-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , armbru@redhat.com, Greg Kurz , Gerd Hoffmann , Laszlo Ersek Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/nvram/fw_cfg.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 7dc3ac378e..e10687c876 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -1104,12 +1104,11 @@ static Property fw_cfg_io_properties[] =3D { =20 static void fw_cfg_io_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); FWCfgIoState *s =3D FW_CFG_IO(dev); - Error *local_err =3D NULL; =20 - fw_cfg_file_slots_allocate(FW_CFG(s), &local_err); - if (local_err) { - error_propagate(errp, local_err); + fw_cfg_file_slots_allocate(FW_CFG(s), errp); + if (*errp) { return; } =20 @@ -1155,14 +1154,13 @@ static Property fw_cfg_mem_properties[] =3D { =20 static void fw_cfg_mem_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); FWCfgMemState *s =3D FW_CFG_MEM(dev); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); const MemoryRegionOps *data_ops =3D &fw_cfg_data_mem_ops; - Error *local_err =3D NULL; =20 - fw_cfg_file_slots_allocate(FW_CFG(s), &local_err); - if (local_err) { - error_propagate(errp, local_err); + fw_cfg_file_slots_allocate(FW_CFG(s), errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815294; cv=none; d=zoho.com; s=zohoarc; b=HcAJxuvS8CUvGqPAalbOGBGVy7vrIxDLen8nGlbExRCwFcxdPa8aAlMpH0cjsz66TFBxvJSvUsVv4p8/vUaNUVh1wIxiCxmApObgK5iZa88aHpAi4y4D/CpFGkpqicSjefatAjiDFsvAEpmrbOSiWaAEk7MKeu0SceV1JDy0GwU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815294; h=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=w3guh8VvznikMZzT0K2fAJSNuiN9uxu7+QBNWRYwM0I=; b=DS2fAQndPu3o3sfj829eYgMauIz/9oXvojq1/Yu1+j8yywJ43Nwae3U/zrW77WeNbwGZSY3i+FcEMikELTxN6sLqdM+7W5XxcZ0NJYTVDt2aXE89UhZg9hCsUrGr1Dk+IkvJZOOkKLsJi7azfodJRfPxlmEYg1wGhy2jgrthF0g= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815294613873.4876312260517; Fri, 11 Oct 2019 10:34:54 -0700 (PDT) Received: from localhost ([::1]:54726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyoW-00067r-Ra for importer@patchew.org; Fri, 11 Oct 2019 13:34:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37083) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRF-0006n9-Am for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRA-0004pg-30 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:44 -0400 Received: from relay.sw.ru ([185.231.240.75]:48218) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR9-0004L4-MN; Fri, 11 Oct 2019 12:06:40 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQn-0003XG-ST; Fri, 11 Oct 2019 19:06:18 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 065/126] XIVE: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:51 +0300 Message-Id: <20191011160552.22907-66-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz , qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/intc/spapr_xive.c | 12 ++++----- hw/intc/spapr_xive_kvm.c | 55 ++++++++++++++++++---------------------- hw/intc/xive.c | 27 ++++++++------------ 3 files changed, 40 insertions(+), 54 deletions(-) diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c index 04879abf2e..b25c9ef9ea 100644 --- a/hw/intc/spapr_xive.c +++ b/hw/intc/spapr_xive.c @@ -273,10 +273,10 @@ static void spapr_xive_instance_init(Object *obj) =20 static void spapr_xive_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprXive *xive =3D SPAPR_XIVE(dev); XiveSource *xsrc =3D &xive->source; XiveENDSource *end_xsrc =3D &xive->end_source; - Error *local_err =3D NULL; =20 if (!xive->nr_irqs) { error_setg(errp, "Number of interrupt needs to be greater 0"); @@ -295,9 +295,8 @@ static void spapr_xive_realize(DeviceState *dev, Error = **errp) &error_fatal); object_property_add_const_link(OBJECT(xsrc), "xive", OBJECT(xive), &error_fatal); - object_property_set_bool(OBJECT(xsrc), true, "realized", &local_err); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(xsrc), true, "realized", errp); + if (*errp) { return; } sysbus_init_mmio(SYS_BUS_DEVICE(xive), &xsrc->esb_mmio); @@ -309,9 +308,8 @@ static void spapr_xive_realize(DeviceState *dev, Error = **errp) &error_fatal); object_property_add_const_link(OBJECT(end_xsrc), "xive", OBJECT(xive), &error_fatal); - object_property_set_bool(OBJECT(end_xsrc), true, "realized", &local_er= r); - if (local_err) { - error_propagate(errp, local_err); + object_property_set_bool(OBJECT(end_xsrc), true, "realized", errp); + if (*errp) { return; } sysbus_init_mmio(SYS_BUS_DEVICE(xive), &end_xsrc->esb_mmio); diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c index 51b334b676..02243537e6 100644 --- a/hw/intc/spapr_xive_kvm.c +++ b/hw/intc/spapr_xive_kvm.c @@ -186,6 +186,7 @@ void kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **er= rp) void kvmppc_xive_set_source_config(SpaprXive *xive, uint32_t lisn, XiveEAS= *eas, Error **errp) { + ERRP_AUTO_PROPAGATE(); uint32_t end_idx; uint32_t end_blk; uint8_t priority; @@ -193,7 +194,6 @@ void kvmppc_xive_set_source_config(SpaprXive *xive, uin= t32_t lisn, XiveEAS *eas, bool masked; uint32_t eisn; uint64_t kvm_src; - Error *local_err =3D NULL; =20 assert(xive_eas_is_valid(eas)); =20 @@ -214,9 +214,8 @@ void kvmppc_xive_set_source_config(SpaprXive *xive, uin= t32_t lisn, XiveEAS *eas, KVM_XIVE_SOURCE_EISN_MASK; =20 kvm_device_access(xive->fd, KVM_DEV_XIVE_GRP_SOURCE_CONFIG, lisn, - &kvm_src, true, &local_err); - if (local_err) { - error_propagate(errp, local_err); + &kvm_src, true, errp); + if (*errp) { return; } } @@ -255,19 +254,17 @@ int kvmppc_xive_source_reset_one(XiveSource *xsrc, in= t srcno, Error **errp) =20 static void kvmppc_xive_source_reset(XiveSource *xsrc, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprXive *xive =3D SPAPR_XIVE(xsrc->xive); int i; =20 for (i =3D 0; i < xsrc->nr_irqs; i++) { - Error *local_err =3D NULL; - if (!xive_eas_is_valid(&xive->eat[i])) { continue; } =20 - kvmppc_xive_source_reset_one(xsrc, i, &local_err); - if (local_err) { - error_propagate(errp, local_err); + kvmppc_xive_source_reset_one(xsrc, i, errp); + if (*errp) { return; } } @@ -389,11 +386,11 @@ void kvmppc_xive_get_queue_config(SpaprXive *xive, ui= nt8_t end_blk, uint32_t end_idx, XiveEND *end, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct kvm_ppc_xive_eq kvm_eq =3D { 0 }; uint64_t kvm_eq_idx; uint8_t priority; uint32_t server; - Error *local_err =3D NULL; =20 assert(xive_end_is_valid(end)); =20 @@ -406,9 +403,8 @@ void kvmppc_xive_get_queue_config(SpaprXive *xive, uint= 8_t end_blk, KVM_XIVE_EQ_SERVER_MASK; =20 kvm_device_access(xive->fd, KVM_DEV_XIVE_GRP_EQ_CONFIG, kvm_eq_idx, - &kvm_eq, false, &local_err); - if (local_err) { - error_propagate(errp, local_err); + &kvm_eq, false, errp); + if (*errp) { return; } =20 @@ -425,11 +421,11 @@ void kvmppc_xive_set_queue_config(SpaprXive *xive, ui= nt8_t end_blk, uint32_t end_idx, XiveEND *end, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct kvm_ppc_xive_eq kvm_eq =3D { 0 }; uint64_t kvm_eq_idx; uint8_t priority; uint32_t server; - Error *local_err =3D NULL; =20 /* * Build the KVM state from the local END structure. @@ -468,9 +464,8 @@ void kvmppc_xive_set_queue_config(SpaprXive *xive, uint= 8_t end_blk, KVM_XIVE_EQ_SERVER_MASK; =20 kvm_device_access(xive->fd, KVM_DEV_XIVE_GRP_EQ_CONFIG, kvm_eq_idx, - &kvm_eq, true, &local_err); - if (local_err) { - error_propagate(errp, local_err); + &kvm_eq, true, errp); + if (*errp) { return; } } @@ -483,7 +478,7 @@ void kvmppc_xive_reset(SpaprXive *xive, Error **errp) =20 static void kvmppc_xive_get_queues(SpaprXive *xive, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int i; =20 for (i =3D 0; i < xive->nr_ends; i++) { @@ -492,9 +487,8 @@ static void kvmppc_xive_get_queues(SpaprXive *xive, Err= or **errp) } =20 kvmppc_xive_get_queue_config(xive, SPAPR_XIVE_BLOCK_ID, i, - &xive->endt[i], &local_err); - if (local_err) { - error_propagate(errp, local_err); + &xive->endt[i], errp); + if (*errp) { return; } } @@ -742,8 +736,8 @@ static void *kvmppc_xive_mmap(SpaprXive *xive, int pgof= f, size_t len, */ void kvmppc_xive_connect(SpaprXive *xive, Error **errp) { + ERRP_AUTO_PROPAGATE(); XiveSource *xsrc =3D &xive->source; - Error *local_err =3D NULL; size_t esb_len =3D (1ull << xsrc->esb_shift) * xsrc->nr_irqs; size_t tima_len =3D 4ull << TM_SHIFT; CPUState *cs; @@ -772,8 +766,8 @@ void kvmppc_xive_connect(SpaprXive *xive, Error **errp) * 1. Source ESB pages - KVM mapping */ xsrc->esb_mmap =3D kvmppc_xive_mmap(xive, KVM_XIVE_ESB_PAGE_OFFSET, es= b_len, - &local_err); - if (local_err) { + errp); + if (*errp) { goto fail; } =20 @@ -790,8 +784,8 @@ void kvmppc_xive_connect(SpaprXive *xive, Error **errp) * 3. TIMA pages - KVM mapping */ xive->tm_mmap =3D kvmppc_xive_mmap(xive, KVM_XIVE_TIMA_PAGE_OFFSET, ti= ma_len, - &local_err); - if (local_err) { + errp); + if (*errp) { goto fail; } memory_region_init_ram_device_ptr(&xive->tm_mmio_kvm, OBJECT(xive), @@ -806,15 +800,15 @@ void kvmppc_xive_connect(SpaprXive *xive, Error **err= p) CPU_FOREACH(cs) { PowerPCCPU *cpu =3D POWERPC_CPU(cs); =20 - kvmppc_xive_cpu_connect(spapr_cpu_state(cpu)->tctx, &local_err); - if (local_err) { + kvmppc_xive_cpu_connect(spapr_cpu_state(cpu)->tctx, errp); + if (*errp) { goto fail; } } =20 /* Update the KVM sources */ - kvmppc_xive_source_reset(xsrc, &local_err); - if (local_err) { + kvmppc_xive_source_reset(xsrc, errp); + if (*errp) { goto fail; } =20 @@ -824,7 +818,6 @@ void kvmppc_xive_connect(SpaprXive *xive, Error **errp) return; =20 fail: - error_propagate(errp, local_err); kvmppc_xive_disconnect(xive, NULL); } =20 diff --git a/hw/intc/xive.c b/hw/intc/xive.c index 29df06df11..368f94df71 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -570,15 +570,14 @@ static void xive_tctx_reset(void *dev) =20 static void xive_tctx_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XiveTCTX *tctx =3D XIVE_TCTX(dev); PowerPCCPU *cpu; CPUPPCState *env; Object *obj; - Error *local_err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "cpu", &local_err); + obj =3D object_property_get_link(OBJECT(dev), "cpu", errp); if (!obj) { - error_propagate(errp, local_err); error_prepend(errp, "required link 'cpu' not found: "); return; } @@ -601,9 +600,8 @@ static void xive_tctx_realize(DeviceState *dev, Error *= *errp) =20 /* Connect the presenter to the VCPU (required for CPU hotplug) */ if (kvm_irqchip_in_kernel()) { - kvmppc_xive_cpu_connect(tctx, &local_err); - if (local_err) { - error_propagate(errp, local_err); + kvmppc_xive_cpu_connect(tctx, errp); + if (*errp) { return; } } @@ -681,15 +679,15 @@ static const TypeInfo xive_tctx_info =3D { =20 Object *xive_tctx_create(Object *cpu, XiveRouter *xrtr, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); Object *obj; =20 obj =3D object_new(TYPE_XIVE_TCTX); object_property_add_child(cpu, TYPE_XIVE_TCTX, obj, &error_abort); object_unref(obj); object_property_add_const_link(obj, "cpu", cpu, &error_abort); - object_property_set_bool(obj, true, "realized", &local_err); - if (local_err) { + object_property_set_bool(obj, true, "realized", errp); + if (*errp) { goto error; } =20 @@ -697,7 +695,6 @@ Object *xive_tctx_create(Object *cpu, XiveRouter *xrtr,= Error **errp) =20 error: object_unparent(obj); - error_propagate(errp, local_err); return NULL; } =20 @@ -1050,13 +1047,12 @@ static void xive_source_reset(void *dev) =20 static void xive_source_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XiveSource *xsrc =3D XIVE_SOURCE(dev); Object *obj; - Error *local_err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "xive", &local_err); + obj =3D object_property_get_link(OBJECT(dev), "xive", errp); if (!obj) { - error_propagate(errp, local_err); error_prepend(errp, "required link 'xive' not found: "); return; } @@ -1806,13 +1802,12 @@ static const MemoryRegionOps xive_end_source_ops = =3D { =20 static void xive_end_source_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XiveENDSource *xsrc =3D XIVE_END_SOURCE(dev); Object *obj; - Error *local_err =3D NULL; =20 - obj =3D object_property_get_link(OBJECT(dev), "xive", &local_err); + obj =3D object_property_get_link(OBJECT(dev), "xive", errp); if (!obj) { - error_propagate(errp, local_err); error_prepend(errp, "required link 'xive' not found: "); return; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815756; cv=none; d=zoho.com; s=zohoarc; b=QnZDAzRG2iRcw+ii7Ms87Dl4o/1l8gzPkJVLL2neRq86iTnSqp3Pu8ZQ1WYQ8iV9aqd5Lfvg81FXIZGOV4qKFiU2slEquSkFD4q3wk3yxRWXT2n2m1r6C4S/tAA81lqQzDsmzdpFasWAuD4V/VRgmUTie19M+PzkXiwcBNg4lzg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815756; h=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=klxmWvTAAAwXm8UxMK240H+7eZKbNf1SAMO3sfS0cQ0=; b=el25Gk6i4naZI/anwLzUzPT8O5WDxiY+3RxTj+0IAEUGswTblJC4ksxeqEAMQtnoUVVW08zA8ULbKcxtbGSciI98YEEHg5Tzu3oSHN8qUxCtfnDsy+VMUQSkcjDpmY6kX0xZ5p+nOj8B7o0TtKMfit5587ZP79CnjdRZEKZJT9E= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815756366687.5423244400888; Fri, 11 Oct 2019 10:42:36 -0700 (PDT) Received: from localhost ([::1]:54832 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyvv-0007la-QN for importer@patchew.org; Fri, 11 Oct 2019 13:42:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36599) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR1-0006Pb-T1 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR0-0004cy-D1 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:31 -0400 Received: from relay.sw.ru ([185.231.240.75]:48240) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR0-0004Ln-5F for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:30 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQo-0003XG-HU; Fri, 11 Oct 2019 19:06:18 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 066/126] Audio: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:52 +0300 Message-Id: <20191011160552.22907-67-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Gerd Hoffmann , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- audio/audio.c | 12 +++++------- hw/audio/intel-hda.c | 13 ++++++------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index 7128ee98dc..774f47d418 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1936,19 +1936,17 @@ static void audio_validate_per_direction_opts( =20 static void audio_validate_opts(Audiodev *dev, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 audio_create_pdos(dev); =20 - audio_validate_per_direction_opts(audio_get_pdo_in(dev), &err); - if (err) { - error_propagate(errp, err); + audio_validate_per_direction_opts(audio_get_pdo_in(dev), errp); + if (*errp) { return; } =20 - audio_validate_per_direction_opts(audio_get_pdo_out(dev), &err); - if (err) { - error_propagate(errp, err); + audio_validate_per_direction_opts(audio_get_pdo_out(dev), errp); + if (*errp) { return; } =20 diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index 6ecd383540..d0b178a1e1 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -1095,9 +1095,9 @@ static void intel_hda_reset(DeviceState *dev) =20 static void intel_hda_realize(PCIDevice *pci, Error **errp) { + ERRP_AUTO_PROPAGATE(); IntelHDAState *d =3D INTEL_HDA(pci); uint8_t *conf =3D d->pci.config; - Error *err =3D NULL; int ret; =20 d->name =3D object_get_typename(OBJECT(d)); @@ -1109,20 +1109,19 @@ static void intel_hda_realize(PCIDevice *pci, Error= **errp) =20 if (d->msi !=3D ON_OFF_AUTO_OFF) { ret =3D msi_init(&d->pci, d->old_msi_addr ? 0x50 : 0x60, - 1, true, false, &err); + 1, true, false, errp); /* Any error other than -ENOTSUP(board's MSI support is broken) * is a programming error */ assert(!ret || ret =3D=3D -ENOTSUP); if (ret && d->msi =3D=3D ON_OFF_AUTO_ON) { /* Can't satisfy user's explicit msi=3Don request, fail */ - error_append_hint(&err, "You have to use msi=3Dauto (default) = or " - "msi=3Doff with this machine type.\n"); - error_propagate(errp, err); + error_append_hint(errp, "You have to use msi=3Dauto (default) = or " + "msi=3Doff with this machine type.\n"); return; } - assert(!err || d->msi =3D=3D ON_OFF_AUTO_AUTO); + assert(!*errp || d->msi =3D=3D ON_OFF_AUTO_AUTO); /* With msi=3Dauto, we fall back to MSI off silently */ - error_free(err); + error_free_errp(errp); } =20 memory_region_init_io(&d->mmio, OBJECT(d), &intel_hda_mmio_ops, d, --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570817370; cv=none; d=zoho.com; s=zohoarc; b=SyaXmmQXgBhifd9J4Iae61KWA28uAA8HDhjkNYGNeq6qEl2B0aFziJ4WO3V9LPc2hkoXgOBYJtH3jBY6u4KvLuhpPl0pOoRFkq+rjeqB433AcX0IZTM118xRKO7ZIqekAiHYpnb/3XEGPETVsDvXR1dRUosfbFOrx2PIqNa1jcI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570817370; h=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=DWjmtViuVgKzkJb3HxCyk+aXKidmMgHhagKatZIlglI=; b=YvxgB6yPBgIkwuCeVxiell3lqOAK6L7M/QuD3+Te4cGx9HIxG6t3M9TstVeDHcXJNAqnZ8CcXXIpjwu6pG+F00OjP0KlgO8CgAG/d8gERRPSuS8R9mH++H51TCxzMg36BlXVA+oY5/Y62qsnEjt/xOJTUkxDJXrcrzBKJ5cbQI4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570817370864354.4702541139602; Fri, 11 Oct 2019 11:09:30 -0700 (PDT) Received: from localhost ([::1]:55164 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzLw-0004dm-8f for importer@patchew.org; Fri, 11 Oct 2019 14:09:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37310) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRM-0006zk-IW for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:07:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRB-0004qg-FH for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:52 -0400 Received: from relay.sw.ru ([185.231.240.75]:48252) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRA-0004MM-MT; Fri, 11 Oct 2019 12:06:41 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQp-0003XG-5Q; Fri, 11 Oct 2019 19:06:19 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 067/126] block: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:53 +0300 Message-Id: <20191011160552.22907-68-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Fam Zheng , vsementsov@virtuozzo.com, Alberto Garcia , qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz , Stefan Hajnoczi , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block.c | 225 ++++++++++++++++------------------- block/backup.c | 1 + block/block-backend.c | 19 ++- block/commit.c | 7 +- block/crypto.c | 14 +-- block/dirty-bitmap.c | 1 + block/io.c | 12 +- block/mirror.c | 19 ++- block/qapi.c | 26 ++--- block/snapshot.c | 16 +-- block/throttle-groups.c | 24 ++-- block/throttle.c | 7 +- block/vxhs.c | 23 ++-- blockdev.c | 252 +++++++++++++++++----------------------- blockjob.c | 8 +- hw/block/onenand.c | 7 +- job.c | 7 +- 17 files changed, 287 insertions(+), 381 deletions(-) diff --git a/block.c b/block.c index 5944124845..5cdfbb19fa 100644 --- a/block.c +++ b/block.c @@ -534,8 +534,8 @@ out: =20 int bdrv_create_file(const char *filename, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriver *drv; - Error *local_err =3D NULL; int ret; =20 drv =3D bdrv_find_protocol(filename, true, errp); @@ -543,8 +543,7 @@ int bdrv_create_file(const char *filename, QemuOpts *op= ts, Error **errp) return -ENOENT; } =20 - ret =3D bdrv_create(drv, filename, opts, &local_err); - error_propagate(errp, local_err); + ret =3D bdrv_create(drv, filename, opts, errp); return ret; } =20 @@ -824,14 +823,13 @@ static BlockdevDetectZeroesOptions bdrv_parse_detect_= zeroes(QemuOpts *opts, int open_flags, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); char *value =3D qemu_opt_get_del(opts, "detect-zeroes"); BlockdevDetectZeroesOptions detect_zeroes =3D qapi_enum_parse(&BlockdevDetectZeroesOptions_lookup, value, - BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF, &local_err); + BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF, errp); g_free(value); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return detect_zeroes; } =20 @@ -1275,12 +1273,11 @@ static int bdrv_open_driver(BlockDriverState *bs, B= lockDriver *drv, const char *node_name, QDict *options, int open_flags, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int i, ret; =20 - bdrv_assign_node_name(bs, node_name, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_assign_node_name(bs, node_name, errp); + if (*errp) { return -EINVAL; } =20 @@ -1290,16 +1287,15 @@ static int bdrv_open_driver(BlockDriverState *bs, B= lockDriver *drv, =20 if (drv->bdrv_file_open) { assert(!drv->bdrv_needs_filename || bs->filename[0]); - ret =3D drv->bdrv_file_open(bs, options, open_flags, &local_err); + ret =3D drv->bdrv_file_open(bs, options, open_flags, errp); } else if (drv->bdrv_open) { - ret =3D drv->bdrv_open(bs, options, open_flags, &local_err); + ret =3D drv->bdrv_open(bs, options, open_flags, errp); } else { ret =3D 0; } =20 if (ret < 0) { - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { } else if (bs->filename[0]) { error_setg_errno(errp, -ret, "Could not open '%s'", bs->filena= me); } else { @@ -1314,9 +1310,8 @@ static int bdrv_open_driver(BlockDriverState *bs, Blo= ckDriver *drv, return ret; } =20 - bdrv_refresh_limits(bs, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_refresh_limits(bs, errp); + if (*errp) { return -EINVAL; } =20 @@ -1430,6 +1425,7 @@ QemuOptsList bdrv_runtime_opts =3D { static int bdrv_open_common(BlockDriverState *bs, BlockBackend *file, QDict *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret, open_flags; const char *filename; const char *driver_name =3D NULL; @@ -1437,15 +1433,13 @@ static int bdrv_open_common(BlockDriverState *bs, B= lockBackend *file, const char *discard; QemuOpts *opts; BlockDriver *drv; - Error *local_err =3D NULL; =20 assert(bs->file =3D=3D NULL); assert(options !=3D NULL && bs->options !=3D options); =20 opts =3D qemu_opts_create(&bdrv_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto fail_opts; } @@ -1531,9 +1525,8 @@ static int bdrv_open_common(BlockDriverState *bs, Blo= ckBackend *file, } =20 bs->detect_zeroes =3D - bdrv_parse_detect_zeroes(opts, bs->open_flags, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_parse_detect_zeroes(opts, bs->open_flags, errp); + if (*errp) { ret =3D -EINVAL; goto fail_opts; } @@ -1565,6 +1558,7 @@ fail_opts: =20 static QDict *parse_json_filename(const char *filename, Error **errp) { + ERRP_AUTO_PROPAGATE(); QObject *options_obj; QDict *options; int ret; @@ -1593,17 +1587,16 @@ static QDict *parse_json_filename(const char *filen= ame, Error **errp) static void parse_json_protocol(QDict *options, const char **pfilename, Error **errp) { + ERRP_AUTO_PROPAGATE(); QDict *json_options; - Error *local_err =3D NULL; =20 /* Parse json: pseudo-protocol */ if (!*pfilename || !g_str_has_prefix(*pfilename, "json:")) { return; } =20 - json_options =3D parse_json_filename(*pfilename, &local_err); - if (local_err) { - error_propagate(errp, local_err); + json_options =3D parse_json_filename(*pfilename, errp); + if (*errp) { return; } =20 @@ -1623,11 +1616,11 @@ static void parse_json_protocol(QDict *options, con= st char **pfilename, static int bdrv_fill_options(QDict **options, const char *filename, int *flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *drvname; bool protocol =3D *flags & BDRV_O_PROTOCOL; bool parse_filename =3D false; BlockDriver *drv =3D NULL; - Error *local_err =3D NULL; =20 /* * Caution: while qdict_get_try_str() is fine, getting non-string @@ -1692,9 +1685,8 @@ static int bdrv_fill_options(QDict **options, const c= har *filename, =20 /* Driver-specific filename parsing */ if (drv && drv->bdrv_parse_filename && parse_filename) { - drv->bdrv_parse_filename(filename, *options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + drv->bdrv_parse_filename(filename, *options, errp); + if (*errp) { return -EINVAL; } =20 @@ -2123,16 +2115,15 @@ static void bdrv_child_abort_perm_update(BdrvChild = *c) int bdrv_child_try_set_perm(BdrvChild *c, uint64_t perm, uint64_t shared, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int ret; bool tighten_restrictions; =20 ret =3D bdrv_child_check_perm(c, NULL, perm, shared, NULL, - &tighten_restrictions, &local_err); + &tighten_restrictions, errp); if (ret < 0) { bdrv_child_abort_perm_update(c); if (tighten_restrictions) { - error_propagate(errp, local_err); } else { /* * Our caller may intend to only loosen restrictions and @@ -2140,7 +2131,7 @@ int bdrv_child_try_set_perm(BdrvChild *c, uint64_t pe= rm, uint64_t shared, * fatal in such a case, so we can just hide them from our * caller. */ - error_free(local_err); + error_free_errp(errp); ret =3D 0; } return ret; @@ -2366,8 +2357,8 @@ BdrvChild *bdrv_root_attach_child(BlockDriverState *c= hild_bs, uint64_t perm, uint64_t shared_perm, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); BdrvChild *child; - Error *local_err =3D NULL; int ret; =20 ret =3D bdrv_check_update_perm(child_bs, NULL, perm, shared_perm, NULL= , NULL, @@ -2392,12 +2383,12 @@ BdrvChild *bdrv_root_attach_child(BlockDriverState = *child_bs, * child_bs into the AioContext of the new parent. If this doesn't wor= k, * try moving the parent into the AioContext of child_bs instead. */ if (bdrv_get_aio_context(child_bs) !=3D ctx) { - ret =3D bdrv_try_set_aio_context(child_bs, ctx, &local_err); + ret =3D bdrv_try_set_aio_context(child_bs, ctx, errp); if (ret < 0 && child_role->can_set_aio_ctx) { GSList *ignore =3D g_slist_prepend(NULL, child);; ctx =3D bdrv_get_aio_context(child_bs); if (child_role->can_set_aio_ctx(child, ctx, &ignore, NULL)) { - error_free(local_err); + error_free_errp(errp); ret =3D 0; g_slist_free(ignore); ignore =3D g_slist_prepend(NULL, child);; @@ -2406,7 +2397,6 @@ BdrvChild *bdrv_root_attach_child(BlockDriverState *c= hild_bs, g_slist_free(ignore); } if (ret < 0) { - error_propagate(errp, local_err); g_free(child); bdrv_abort_perm_update(child_bs); return NULL; @@ -2592,6 +2582,7 @@ out: int bdrv_open_backing_file(BlockDriverState *bs, QDict *parent_options, const char *bdref_key, Error **errp) { + ERRP_AUTO_PROPAGATE(); char *backing_filename =3D NULL; char *bdref_key_dot; const char *reference =3D NULL; @@ -2600,7 +2591,6 @@ int bdrv_open_backing_file(BlockDriverState *bs, QDic= t *parent_options, BlockDriverState *backing_hd; QDict *options; QDict *tmp_parent_options =3D NULL; - Error *local_err =3D NULL; =20 if (bs->backing !=3D NULL) { goto free_exit; @@ -2642,10 +2632,9 @@ int bdrv_open_backing_file(BlockDriverState *bs, QDi= ct *parent_options, implicit_backing =3D !strcmp(bs->auto_backing_file, bs->backin= g_file); } =20 - backing_filename =3D bdrv_get_full_backing_filename(bs, &local_err= ); - if (local_err) { + backing_filename =3D bdrv_get_full_backing_filename(bs, errp); + if (*errp) { ret =3D -EINVAL; - error_propagate(errp, local_err); qobject_unref(options); goto free_exit; } @@ -2680,10 +2669,9 @@ int bdrv_open_backing_file(BlockDriverState *bs, QDi= ct *parent_options, =20 /* Hook up the backing file link; drop our reference, bs owns the * backing_hd reference now */ - bdrv_set_backing_hd(bs, backing_hd, &local_err); + bdrv_set_backing_hd(bs, backing_hd, errp); bdrv_unref(backing_hd); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto free_exit; } @@ -2775,8 +2763,8 @@ BdrvChild *bdrv_open_child(const char *filename, * option inheritance to work. Existing callers use it for the root node. = */ BlockDriverState *bdrv_open_blockdev_ref(BlockdevRef *ref, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs =3D NULL; - Error *local_err =3D NULL; QObject *obj =3D NULL; QDict *qdict =3D NULL; const char *reference =3D NULL; @@ -2789,9 +2777,8 @@ BlockDriverState *bdrv_open_blockdev_ref(BlockdevRef = *ref, Error **errp) assert(ref->type =3D=3D QTYPE_QDICT); =20 v =3D qobject_output_visitor_new(&obj); - visit_type_BlockdevOptions(v, NULL, &options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_BlockdevOptions(v, NULL, &options, errp); + if (*errp) { goto fail; } visit_complete(v, &obj); @@ -2823,12 +2810,12 @@ static BlockDriverState *bdrv_append_temp_snapshot(= BlockDriverState *bs, QDict *snapshot_options, Error **errp) { + ERRP_AUTO_PROPAGATE(); /* TODO: extra byte is a hack to ensure MAX_PATH space on Windows. */ char *tmp_filename =3D g_malloc0(PATH_MAX + 1); int64_t total_size; QemuOpts *opts =3D NULL; BlockDriverState *bs_snapshot =3D NULL; - Error *local_err =3D NULL; int ret; =20 /* if snapshot, we create a temporary backing file and open it @@ -2875,9 +2862,8 @@ static BlockDriverState *bdrv_append_temp_snapshot(Bl= ockDriverState *bs, * order to be able to return one, we have to increase * bs_snapshot's refcount here */ bdrv_ref(bs_snapshot); - bdrv_append(bs_snapshot, bs, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_append(bs_snapshot, bs, errp); + if (*errp) { bs_snapshot =3D NULL; goto out; } @@ -2910,6 +2896,7 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, const BdrvChildRole *child_role, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; BlockBackend *file =3D NULL; BlockDriverState *bs; @@ -2917,7 +2904,6 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, BdrvChild *child; const char *drvname; const char *backing; - Error *local_err =3D NULL; QDict *snapshot_options =3D NULL; int snapshot_flags =3D 0; =20 @@ -2951,8 +2937,8 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, } =20 /* json: syntax counts as explicit options, as if in the QDict */ - parse_json_protocol(options, &filename, &local_err); - if (local_err) { + parse_json_protocol(options, &filename, errp); + if (*errp) { goto fail; } =20 @@ -2964,8 +2950,8 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, parent->open_flags, parent->options); } =20 - ret =3D bdrv_fill_options(&options, filename, &flags, &local_err); - if (local_err) { + ret =3D bdrv_fill_options(&options, filename, &flags, errp); + if (*errp) { goto fail; } =20 @@ -3029,8 +3015,8 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, BlockDriverState *file_bs; =20 file_bs =3D bdrv_open_child_bs(filename, options, "file", bs, - &child_file, true, &local_err); - if (local_err) { + &child_file, true, errp); + if (*errp) { goto fail; } if (file_bs !=3D NULL) { @@ -3038,9 +3024,9 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, * looking at the header to guess the image format. This works= even * in cases where a guest would not see a consistent state. */ file =3D blk_new(bdrv_get_aio_context(file_bs), 0, BLK_PERM_AL= L); - blk_insert_bs(file, file_bs, &local_err); + blk_insert_bs(file, file_bs, errp); bdrv_unref(file_bs); - if (local_err) { + if (*errp) { goto fail; } =20 @@ -3051,7 +3037,7 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, /* Image format probing */ bs->probed =3D !drv; if (!drv && file) { - ret =3D find_image_format(file, filename, &drv, &local_err); + ret =3D find_image_format(file, filename, &drv, errp); if (ret < 0) { goto fail; } @@ -3080,7 +3066,7 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, assert(!(flags & BDRV_O_PROTOCOL) || !file); =20 /* Open the image */ - ret =3D bdrv_open_common(bs, file, options, &local_err); + ret =3D bdrv_open_common(bs, file, options, errp); if (ret < 0) { goto fail; } @@ -3092,7 +3078,7 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, =20 /* If there is a backing file, use it */ if ((flags & BDRV_O_NO_BACKING) =3D=3D 0) { - ret =3D bdrv_open_backing_file(bs, options, "backing", &local_err); + ret =3D bdrv_open_backing_file(bs, options, "backing", errp); if (ret < 0) { goto close_and_fail; } @@ -3135,9 +3121,9 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, if (snapshot_flags) { BlockDriverState *snapshot_bs; snapshot_bs =3D bdrv_append_temp_snapshot(bs, snapshot_flags, - snapshot_options, &local_e= rr); + snapshot_options, errp); snapshot_options =3D NULL; - if (local_err) { + if (*errp) { goto close_and_fail; } /* We are not going to return bs but the overlay on top of it @@ -3159,14 +3145,12 @@ fail: bs->options =3D NULL; bs->explicit_options =3D NULL; bdrv_unref(bs); - error_propagate(errp, local_err); return NULL; =20 close_and_fail: bdrv_unref(bs); qobject_unref(snapshot_options); qobject_unref(options); - error_propagate(errp, local_err); return NULL; } =20 @@ -3709,9 +3693,9 @@ static int bdrv_reopen_parse_backing(BDRVReopenState = *reopen_state, int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *q= ueue, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret =3D -1; int old_flags; - Error *local_err =3D NULL; BlockDriver *drv; QemuOpts *opts; QDict *orig_reopen_opts; @@ -3730,9 +3714,8 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state= , BlockReopenQueue *queue, =20 /* Process generic block layer options */ opts =3D qemu_opts_create(&bdrv_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, reopen_state->options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, reopen_state->options, errp); + if (*errp) { ret =3D -EINVAL; goto error; } @@ -3754,9 +3737,8 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state= , BlockReopenQueue *queue, } =20 reopen_state->detect_zeroes =3D - bdrv_parse_detect_zeroes(opts, reopen_state->flags, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_parse_detect_zeroes(opts, reopen_state->flags, errp); + if (*errp) { ret =3D -EINVAL; goto error; } @@ -3770,9 +3752,8 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state= , BlockReopenQueue *queue, * to r/w. Attempting to set to r/w may fail if either BDRV_O_ALLOW_RD= WR is * not set, or if the BDS still has copy_on_read enabled */ read_only =3D !(reopen_state->flags & BDRV_O_RDWR); - ret =3D bdrv_can_set_read_only(reopen_state->bs, read_only, true, &loc= al_err); - if (local_err) { - error_propagate(errp, local_err); + ret =3D bdrv_can_set_read_only(reopen_state->bs, read_only, true, errp= ); + if (*errp) { goto error; } =20 @@ -3798,10 +3779,9 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_stat= e, BlockReopenQueue *queue, goto error; } =20 - ret =3D drv->bdrv_reopen_prepare(reopen_state, queue, &local_err); + ret =3D drv->bdrv_reopen_prepare(reopen_state, queue, errp); if (ret) { - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + if (*errp) { } else { bdrv_refresh_filename(reopen_state->bs); error_setg(errp, "failed while preparing to reopen image '= %s'", @@ -4238,17 +4218,15 @@ out: void bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 - bdrv_set_backing_hd(bs_new, bs_top, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_set_backing_hd(bs_new, bs_top, errp); + if (*errp) { goto out; } =20 - bdrv_replace_node(bs_top, bs_new, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_replace_node(bs_top, bs_new, errp); + if (*errp) { bdrv_set_backing_hd(bs_new, NULL, &error_abort); goto out; } @@ -5309,9 +5287,9 @@ void bdrv_init_with_whitelist(void) static void coroutine_fn bdrv_co_invalidate_cache(BlockDriverState *bs, Error **errp) { + ERRP_AUTO_PROPAGATE(); BdrvChild *child, *parent; uint64_t perm, shared_perm; - Error *local_err =3D NULL; int ret; BdrvDirtyBitmap *bm; =20 @@ -5324,9 +5302,8 @@ static void coroutine_fn bdrv_co_invalidate_cache(Blo= ckDriverState *bs, } =20 QLIST_FOREACH(child, &bs->children, next) { - bdrv_co_invalidate_cache(child->bs, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_co_invalidate_cache(child->bs, errp); + if (*errp) { return; } } @@ -5346,19 +5323,17 @@ static void coroutine_fn bdrv_co_invalidate_cache(B= lockDriverState *bs, */ bs->open_flags &=3D ~BDRV_O_INACTIVE; bdrv_get_cumulative_perm(bs, &perm, &shared_perm); - ret =3D bdrv_check_perm(bs, NULL, perm, shared_perm, NULL, NULL, &loca= l_err); + ret =3D bdrv_check_perm(bs, NULL, perm, shared_perm, NULL, NULL, errp); if (ret < 0) { bs->open_flags |=3D BDRV_O_INACTIVE; - error_propagate(errp, local_err); return; } bdrv_set_perm(bs, perm, shared_perm); =20 if (bs->drv->bdrv_co_invalidate_cache) { - bs->drv->bdrv_co_invalidate_cache(bs, &local_err); - if (local_err) { + bs->drv->bdrv_co_invalidate_cache(bs, errp); + if (*errp) { bs->open_flags |=3D BDRV_O_INACTIVE; - error_propagate(errp, local_err); return; } } @@ -5378,10 +5353,9 @@ static void coroutine_fn bdrv_co_invalidate_cache(Bl= ockDriverState *bs, =20 QLIST_FOREACH(parent, &bs->parents, next_parent) { if (parent->role->activate) { - parent->role->activate(parent, &local_err); - if (local_err) { + parent->role->activate(parent, errp); + if (*errp) { bs->open_flags |=3D BDRV_O_INACTIVE; - error_propagate(errp, local_err); return; } } @@ -5423,18 +5397,17 @@ void bdrv_invalidate_cache(BlockDriverState *bs, Er= ror **errp) =20 void bdrv_invalidate_cache_all(Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; - Error *local_err =3D NULL; BdrvNextIterator it; =20 for (bs =3D bdrv_first(&it); bs; bs =3D bdrv_next(&it)) { AioContext *aio_context =3D bdrv_get_aio_context(bs); =20 aio_context_acquire(aio_context); - bdrv_invalidate_cache(bs, &local_err); + bdrv_invalidate_cache(bs, errp); aio_context_release(aio_context); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { bdrv_next_cleanup(&it); return; } @@ -5705,12 +5678,12 @@ void bdrv_img_create(const char *filename, const ch= ar *fmt, char *options, uint64_t img_size, int flags, bool qui= et, Error **errp) { + ERRP_AUTO_PROPAGATE(); QemuOptsList *create_opts =3D NULL; QemuOpts *opts =3D NULL; const char *backing_fmt, *backing_file; int64_t size; BlockDriver *drv, *proto_drv; - Error *local_err =3D NULL; int ret =3D 0; =20 /* Find driver and parse its options */ @@ -5746,15 +5719,15 @@ void bdrv_img_create(const char *filename, const ch= ar *fmt, =20 /* Parse -o options */ if (options) { - qemu_opts_do_parse(opts, options, NULL, &local_err); - if (local_err) { + qemu_opts_do_parse(opts, options, NULL, errp); + if (*errp) { goto out; } } =20 if (base_filename) { - qemu_opt_set(opts, BLOCK_OPT_BACKING_FILE, base_filename, &local_e= rr); - if (local_err) { + qemu_opt_set(opts, BLOCK_OPT_BACKING_FILE, base_filename, errp); + if (*errp) { error_setg(errp, "Backing file not supported for file format '= %s'", fmt); goto out; @@ -5762,8 +5735,8 @@ void bdrv_img_create(const char *filename, const char= *fmt, } =20 if (base_fmt) { - qemu_opt_set(opts, BLOCK_OPT_BACKING_FMT, base_fmt, &local_err); - if (local_err) { + qemu_opt_set(opts, BLOCK_OPT_BACKING_FMT, base_fmt, errp); + if (*errp) { error_setg(errp, "Backing file format not supported for file " "format '%s'", fmt); goto out; @@ -5792,8 +5765,8 @@ void bdrv_img_create(const char *filename, const char= *fmt, =20 full_backing =3D bdrv_get_full_backing_filename_from_filename(filename, backing= _file, - &local_err); - if (local_err) { + errp); + if (*errp) { goto out; } assert(full_backing); @@ -5809,17 +5782,17 @@ void bdrv_img_create(const char *filename, const ch= ar *fmt, qdict_put_bool(backing_options, BDRV_OPT_FORCE_SHARE, true); =20 bs =3D bdrv_open(full_backing, NULL, backing_options, back_flags, - &local_err); + errp); g_free(full_backing); if (!bs && size !=3D -1) { /* Couldn't open BS, but we have a size, so it's nonfatal */ - warn_reportf_err(local_err, - "Could not verify backing image. " - "This may become an error in future versions.\= n"); - local_err =3D NULL; + warn_reportf_err(*errp, + "Could not verify backing image. " + "This may become an error in future versions.= \n"); + *errp =3D NULL; } else if (!bs) { /* Couldn't open bs, do not have size */ - error_append_hint(&local_err, + error_append_hint(errp, "Could not open backing image to determine s= ize.\n"); goto out; } else { @@ -5849,7 +5822,7 @@ void bdrv_img_create(const char *filename, const char= *fmt, puts(""); } =20 - ret =3D bdrv_create(drv, filename, opts, &local_err); + ret =3D bdrv_create(drv, filename, opts, errp); =20 if (ret =3D=3D -EFBIG) { /* This is generally a better message than whatever the driver wou= ld @@ -5861,14 +5834,12 @@ void bdrv_img_create(const char *filename, const ch= ar *fmt, } error_setg(errp, "The image size is too large for file format '%s'" "%s", fmt, cluster_size_hint); - error_free(local_err); - local_err =3D NULL; + error_free_errp(errp); } =20 out: qemu_opts_del(opts); qemu_opts_free(create_opts); - error_propagate(errp, local_err); } =20 AioContext *bdrv_get_aio_context(BlockDriverState *bs) diff --git a/block/backup.c b/block/backup.c index 763f0d7ff6..58488a21fb 100644 --- a/block/backup.c +++ b/block/backup.c @@ -583,6 +583,7 @@ static const BlockJobDriver backup_job_driver =3D { static int64_t backup_calculate_cluster_size(BlockDriverState *target, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; BlockDriverInfo bdi; =20 diff --git a/block/block-backend.c b/block/block-backend.c index 1c605d5444..5c7d0015c0 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -186,8 +186,8 @@ static void blk_vm_state_changed(void *opaque, int runn= ing, RunState state) */ static void blk_root_activate(BdrvChild *child, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockBackend *blk =3D child->opaque; - Error *local_err =3D NULL; =20 if (!blk->disable_perm) { return; @@ -195,9 +195,8 @@ static void blk_root_activate(BdrvChild *child, Error *= *errp) =20 blk->disable_perm =3D false; =20 - blk_set_perm(blk, blk->perm, BLK_PERM_ALL, &local_err); - if (local_err) { - error_propagate(errp, local_err); + blk_set_perm(blk, blk->perm, BLK_PERM_ALL, errp); + if (*errp) { blk->disable_perm =3D true; return; } @@ -213,9 +212,8 @@ static void blk_root_activate(BdrvChild *child, Error *= *errp) return; } =20 - blk_set_perm(blk, blk->perm, blk->shared_perm, &local_err); - if (local_err) { - error_propagate(errp, local_err); + blk_set_perm(blk, blk->perm, blk->shared_perm, errp); + if (*errp) { blk->disable_perm =3D true; return; } @@ -961,15 +959,14 @@ void blk_set_dev_ops(BlockBackend *blk, const BlockDe= vOps *ops, */ void blk_dev_change_media_cb(BlockBackend *blk, bool load, Error **errp) { + ERRP_AUTO_PROPAGATE(); if (blk->dev_ops && blk->dev_ops->change_media_cb) { bool tray_was_open, tray_is_open; - Error *local_err =3D NULL; =20 tray_was_open =3D blk_dev_is_tray_open(blk); - blk->dev_ops->change_media_cb(blk->dev_opaque, load, &local_err); - if (local_err) { + blk->dev_ops->change_media_cb(blk->dev_opaque, load, errp); + if (*errp) { assert(load =3D=3D true); - error_propagate(errp, local_err); return; } tray_is_open =3D blk_dev_is_tray_open(blk); diff --git a/block/commit.c b/block/commit.c index bc8454463d..2538f6c799 100644 --- a/block/commit.c +++ b/block/commit.c @@ -261,10 +261,10 @@ void commit_start(const char *job_id, BlockDriverStat= e *bs, BlockdevOnError on_error, const char *backing_file_str, const char *filter_node_name, Error **errp) { + ERRP_AUTO_PROPAGATE(); CommitBlockJob *s; BlockDriverState *iter; BlockDriverState *commit_top_bs =3D NULL; - Error *local_err =3D NULL; int ret; =20 assert(top !=3D bs); @@ -303,10 +303,9 @@ void commit_start(const char *job_id, BlockDriverState= *bs, =20 commit_top_bs->total_sectors =3D top->total_sectors; =20 - bdrv_append(commit_top_bs, top, &local_err); - if (local_err) { + bdrv_append(commit_top_bs, top, errp); + if (*errp) { commit_top_bs =3D NULL; - error_propagate(errp, local_err); goto fail; } =20 diff --git a/block/crypto.c b/block/crypto.c index 7eb698774e..a1ecddee62 100644 --- a/block/crypto.c +++ b/block/crypto.c @@ -192,9 +192,9 @@ static int block_crypto_open_generic(QCryptoBlockFormat= format, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockCrypto *crypto =3D bs->opaque; QemuOpts *opts =3D NULL; - Error *local_err =3D NULL; int ret =3D -EINVAL; QCryptoBlockOpenOptions *open_opts =3D NULL; unsigned int cflags =3D 0; @@ -210,9 +210,8 @@ static int block_crypto_open_generic(QCryptoBlockFormat= format, bs->file->bs->supported_write_flags; =20 opts =3D qemu_opts_create(opts_spec, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { goto cleanup; } =20 @@ -543,6 +542,7 @@ static int coroutine_fn block_crypto_co_create_opts_luk= s(const char *filename, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); QCryptoBlockCreateOptions *create_opts =3D NULL; BlockDriverState *bs =3D NULL; QDict *cryptoopts; @@ -550,17 +550,15 @@ static int coroutine_fn block_crypto_co_create_opts_l= uks(const char *filename, char *buf =3D NULL; int64_t size; int ret; - Error *local_err =3D NULL; =20 /* Parse options */ size =3D qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0); =20 buf =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); prealloc =3D qapi_enum_parse(&PreallocMode_lookup, buf, - PREALLOC_MODE_OFF, &local_err); + PREALLOC_MODE_OFF, errp); g_free(buf); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return -EINVAL; } =20 diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c index 134e0c9a0c..099ed74dfa 100644 --- a/block/dirty-bitmap.c +++ b/block/dirty-bitmap.c @@ -237,6 +237,7 @@ static bool bdrv_dirty_bitmap_recording(BdrvDirtyBitmap= *bitmap) int bdrv_dirty_bitmap_check(const BdrvDirtyBitmap *bitmap, uint32_t flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); if ((flags & BDRV_BITMAP_BUSY) && bdrv_dirty_bitmap_busy(bitmap)) { error_setg(errp, "Bitmap '%s' is currently in use by another" " operation and cannot be used", bitmap->name); diff --git a/block/io.c b/block/io.c index 4f9ee97c2b..c3381103df 100644 --- a/block/io.c +++ b/block/io.c @@ -135,8 +135,8 @@ static void bdrv_merge_limits(BlockLimits *dst, const B= lockLimits *src) =20 void bdrv_refresh_limits(BlockDriverState *bs, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriver *drv =3D bs->drv; - Error *local_err =3D NULL; =20 memset(&bs->bl, 0, sizeof(bs->bl)); =20 @@ -151,9 +151,8 @@ void bdrv_refresh_limits(BlockDriverState *bs, Error **= errp) =20 /* Take some limits from the children as a default */ if (bs->file) { - bdrv_refresh_limits(bs->file->bs, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_refresh_limits(bs->file->bs, errp); + if (*errp) { return; } bdrv_merge_limits(&bs->bl, &bs->file->bs->bl); @@ -166,9 +165,8 @@ void bdrv_refresh_limits(BlockDriverState *bs, Error **= errp) } =20 if (bs->backing) { - bdrv_refresh_limits(bs->backing->bs, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_refresh_limits(bs->backing->bs, errp); + if (*errp) { return; } bdrv_merge_limits(&bs->bl, &bs->backing->bs->bl); diff --git a/block/mirror.c b/block/mirror.c index fe984efb90..c5462e81f2 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -1507,12 +1507,12 @@ static BlockJob *mirror_start_job( bool is_mirror, MirrorCopyMode copy_mode, Error **errp) { + ERRP_AUTO_PROPAGATE(); MirrorBlockJob *s; MirrorBDSOpaque *bs_opaque; BlockDriverState *mirror_top_bs; bool target_graph_mod; bool target_is_backing; - Error *local_err =3D NULL; int ret; =20 if (granularity =3D=3D 0) { @@ -1561,12 +1561,11 @@ static BlockJob *mirror_start_job( * it alive until block_job_create() succeeds even if bs has no parent= . */ bdrv_ref(mirror_top_bs); bdrv_drained_begin(bs); - bdrv_append(mirror_top_bs, bs, &local_err); + bdrv_append(mirror_top_bs, bs, errp); bdrv_drained_end(bs); =20 - if (local_err) { + if (*errp) { bdrv_unref(mirror_top_bs); - error_propagate(errp, local_err); return NULL; } =20 @@ -1647,9 +1646,8 @@ static BlockJob *mirror_start_job( * (We start tracking writes as of the following * bdrv_create_dirty_bitmap() call.) */ - bdrv_refresh_limits(mirror_top_bs, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_refresh_limits(mirror_top_bs, errp); + if (*errp) { goto fail; } =20 @@ -1760,8 +1758,8 @@ BlockJob *commit_active_start(const char *job_id, Blo= ckDriverState *bs, BlockCompletionFunc *cb, void *opaque, bool auto_complete, Error **errp) { + ERRP_AUTO_PROPAGATE(); bool base_read_only; - Error *local_err =3D NULL; BlockJob *ret; =20 base_read_only =3D bdrv_is_read_only(base); @@ -1778,9 +1776,8 @@ BlockJob *commit_active_start(const char *job_id, Blo= ckDriverState *bs, on_error, on_error, true, cb, opaque, &commit_active_job_driver, false, base, auto_complete, filter_node_name, false, MIRROR_COPY_MODE_BACKGROUND, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { goto error_restore_flags; } =20 diff --git a/block/qapi.c b/block/qapi.c index 7ee2ee065d..b3df170037 100644 --- a/block/qapi.c +++ b/block/qapi.c @@ -44,6 +44,7 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk, BlockDriverState *bs, Error **errp) { + ERRP_AUTO_PROPAGATE(); ImageInfo **p_image_info; BlockDriverState *bs0; BlockDeviceInfo *info; @@ -148,10 +149,8 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *= blk, p_image_info =3D &info->image; info->backing_file_depth =3D 0; while (1) { - Error *local_err =3D NULL; - bdrv_query_image_info(bs0, p_image_info, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_query_image_info(bs0, p_image_info, errp); + if (*errp) { qapi_free_BlockDeviceInfo(info); return NULL; } @@ -257,11 +256,11 @@ void bdrv_query_image_info(BlockDriverState *bs, ImageInfo **p_info, Error **errp) { + ERRP_AUTO_PROPAGATE(); int64_t size; const char *backing_filename; BlockDriverInfo bdi; int ret; - Error *err =3D NULL; ImageInfo *info; =20 aio_context_acquire(bdrv_get_aio_context(bs)); @@ -293,9 +292,8 @@ void bdrv_query_image_info(BlockDriverState *bs, info->dirty_flag =3D bdi.is_dirty; info->has_dirty_flag =3D true; } - info->format_specific =3D bdrv_get_specific_info(bs, &err); - if (err) { - error_propagate(errp, err); + info->format_specific =3D bdrv_get_specific_info(bs, errp); + if (*errp) { qapi_free_ImageInfo(info); goto out; } @@ -322,7 +320,7 @@ void bdrv_query_image_info(BlockDriverState *bs, g_free(backing_filename2); } =20 - ret =3D bdrv_query_snapshot_info_list(bs, &info->snapshots, &err); + ret =3D bdrv_query_snapshot_info_list(bs, &info->snapshots, errp); switch (ret) { case 0: if (info->snapshots) { @@ -332,10 +330,9 @@ void bdrv_query_image_info(BlockDriverState *bs, /* recoverable error */ case -ENOMEDIUM: case -ENOTSUP: - error_free(err); + error_free_errp(errp); break; default: - error_propagate(errp, err); qapi_free_ImageInfo(info); goto out; } @@ -552,9 +549,9 @@ static BlockStats *bdrv_query_bds_stats(BlockDriverStat= e *bs, =20 BlockInfoList *qmp_query_block(Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockInfoList *head =3D NULL, **p_next =3D &head; BlockBackend *blk; - Error *local_err =3D NULL; =20 for (blk =3D blk_all_next(NULL); blk; blk =3D blk_all_next(blk)) { BlockInfoList *info; @@ -564,9 +561,8 @@ BlockInfoList *qmp_query_block(Error **errp) } =20 info =3D g_malloc0(sizeof(*info)); - bdrv_query_info(blk, &info->value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_query_info(blk, &info->value, errp); + if (*errp) { g_free(info); qapi_free_BlockInfoList(head); return NULL; diff --git a/block/snapshot.c b/block/snapshot.c index bd9fb01817..8ef1d6573a 100644 --- a/block/snapshot.c +++ b/block/snapshot.c @@ -184,6 +184,7 @@ int bdrv_snapshot_goto(BlockDriverState *bs, const char *snapshot_id, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriver *drv =3D bs->drv; int ret, open_ret; =20 @@ -209,7 +210,6 @@ int bdrv_snapshot_goto(BlockDriverState *bs, BlockDriverState *file; QDict *options =3D qdict_clone_shallow(bs->options); QDict *file_options; - Error *local_err =3D NULL; =20 file =3D bs->file->bs; /* Prevent it from getting deleted when detached from bs */ @@ -226,13 +226,12 @@ int bdrv_snapshot_goto(BlockDriverState *bs, bs->file =3D NULL; =20 ret =3D bdrv_snapshot_goto(file, snapshot_id, errp); - open_ret =3D drv->bdrv_open(bs, options, bs->open_flags, &local_er= r); + open_ret =3D drv->bdrv_open(bs, options, bs->open_flags, errp); qobject_unref(options); if (open_ret < 0) { bdrv_unref(file); bs->drv =3D NULL; /* A bdrv_snapshot_goto() error takes precedence */ - error_propagate(errp, local_err); return ret < 0 ? ret : open_ret; } =20 @@ -370,18 +369,15 @@ int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverS= tate *bs, const char *id_or_name, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; - Error *local_err =3D NULL; =20 - ret =3D bdrv_snapshot_load_tmp(bs, id_or_name, NULL, &local_err); + ret =3D bdrv_snapshot_load_tmp(bs, id_or_name, NULL, errp); if (ret =3D=3D -ENOENT || ret =3D=3D -EINVAL) { - error_free(local_err); - local_err =3D NULL; - ret =3D bdrv_snapshot_load_tmp(bs, NULL, id_or_name, &local_err); + error_free_errp(errp); + ret =3D bdrv_snapshot_load_tmp(bs, NULL, id_or_name, errp); } =20 - error_propagate(errp, local_err); - return ret; } =20 diff --git a/block/throttle-groups.c b/block/throttle-groups.c index 77014c741b..299ebd3f6f 100644 --- a/block/throttle-groups.c +++ b/block/throttle-groups.c @@ -808,10 +808,10 @@ static void throttle_group_set(Object *obj, Visitor *= v, const char * name, void *opaque, Error **errp) =20 { + ERRP_AUTO_PROPAGATE(); ThrottleGroup *tg =3D THROTTLE_GROUP(obj); ThrottleConfig *cfg; ThrottleParamInfo *info =3D opaque; - Error *local_err =3D NULL; int64_t value; =20 /* If we have finished initialization, don't accept individual property @@ -819,16 +819,16 @@ static void throttle_group_set(Object *obj, Visitor *= v, const char * name, * transaction, as certain combinations are invalid. */ if (tg->is_initialized) { - error_setg(&local_err, "Property cannot be set after initializatio= n"); + error_setg(errp, "Property cannot be set after initialization"); goto ret; } =20 - visit_type_int64(v, name, &value, &local_err); - if (local_err) { + visit_type_int64(v, name, &value, errp); + if (*errp) { goto ret; } if (value < 0) { - error_setg(&local_err, "Property values cannot be negative"); + error_setg(errp, "Property values cannot be negative"); goto ret; } =20 @@ -842,7 +842,7 @@ static void throttle_group_set(Object *obj, Visitor *v,= const char * name, break; case BURST_LENGTH: if (value > UINT_MAX) { - error_setg(&local_err, "%s value must be in the" + error_setg(errp, "%s value must be in the" "range [0, %u]", info->name, UINT_MAX); goto ret; } @@ -854,7 +854,6 @@ static void throttle_group_set(Object *obj, Visitor *v,= const char * name, } =20 ret: - error_propagate(errp, local_err); return; =20 } @@ -891,20 +890,20 @@ static void throttle_group_set_limits(Object *obj, Vi= sitor *v, Error **errp) =20 { + ERRP_AUTO_PROPAGATE(); ThrottleGroup *tg =3D THROTTLE_GROUP(obj); ThrottleConfig cfg; ThrottleLimits arg =3D { 0 }; ThrottleLimits *argp =3D &arg; - Error *local_err =3D NULL; =20 - visit_type_ThrottleLimits(v, name, &argp, &local_err); - if (local_err) { + visit_type_ThrottleLimits(v, name, &argp, errp); + if (*errp) { goto ret; } qemu_mutex_lock(&tg->lock); throttle_get_config(&tg->ts, &cfg); - throttle_limits_to_config(argp, &cfg, &local_err); - if (local_err) { + throttle_limits_to_config(argp, &cfg, errp); + if (*errp) { goto unlock; } throttle_config(&tg->ts, tg->clock_type, &cfg); @@ -912,7 +911,6 @@ static void throttle_group_set_limits(Object *obj, Visi= tor *v, unlock: qemu_mutex_unlock(&tg->lock); ret: - error_propagate(errp, local_err); return; } =20 diff --git a/block/throttle.c b/block/throttle.c index 0349f42257..8955cfdc90 100644 --- a/block/throttle.c +++ b/block/throttle.c @@ -44,14 +44,13 @@ static QemuOptsList throttle_opts =3D { */ static int throttle_parse_options(QDict *options, char **group, Error **er= rp) { + ERRP_AUTO_PROPAGATE(); int ret; const char *group_name; - Error *local_err =3D NULL; QemuOpts *opts =3D qemu_opts_create(&throttle_opts, NULL, 0, &error_ab= ort); =20 - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto fin; } diff --git a/block/vxhs.c b/block/vxhs.c index 77fd5eb20d..b57e5471cd 100644 --- a/block/vxhs.c +++ b/block/vxhs.c @@ -293,13 +293,13 @@ static void vxhs_get_tls_creds(const char *id, char *= *cacert, static int vxhs_open(BlockDriverState *bs, QDict *options, int bdrv_flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVVXHSState *s =3D bs->opaque; void *dev_handlep; QDict *backing_options =3D NULL; QemuOpts *opts =3D NULL; QemuOpts *tcp_opts =3D NULL; char *of_vsa_addr =3D NULL; - Error *local_err =3D NULL; const char *vdisk_id_opt; const char *server_host_opt; int ret =3D 0; @@ -317,8 +317,8 @@ static int vxhs_open(BlockDriverState *bs, QDict *optio= ns, opts =3D qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); tcp_opts =3D qemu_opts_create(&runtime_tcp_opts, NULL, 0, &error_abort= ); =20 - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto out; } @@ -326,14 +326,14 @@ static int vxhs_open(BlockDriverState *bs, QDict *opt= ions, /* vdisk-id is the disk UUID */ vdisk_id_opt =3D qemu_opt_get(opts, VXHS_OPT_VDISK_ID); if (!vdisk_id_opt) { - error_setg(&local_err, QERR_MISSING_PARAMETER, VXHS_OPT_VDISK_ID); + error_setg(errp, QERR_MISSING_PARAMETER, VXHS_OPT_VDISK_ID); ret =3D -EINVAL; goto out; } =20 /* vdisk-id may contain a leading '/' */ if (strlen(vdisk_id_opt) > UUID_FMT_LEN + 1) { - error_setg(&local_err, "vdisk-id cannot be more than %d characters= ", + error_setg(errp, "vdisk-id cannot be more than %d characters", UUID_FMT_LEN); ret =3D -EINVAL; goto out; @@ -345,22 +345,22 @@ static int vxhs_open(BlockDriverState *bs, QDict *opt= ions, /* get the 'server.' arguments */ qdict_extract_subqdict(options, &backing_options, VXHS_OPT_SERVER"."); =20 - qemu_opts_absorb_qdict(tcp_opts, backing_options, &local_err); - if (local_err !=3D NULL) { + qemu_opts_absorb_qdict(tcp_opts, backing_options, errp); + if (*errp) { ret =3D -EINVAL; goto out; } =20 server_host_opt =3D qemu_opt_get(tcp_opts, VXHS_OPT_HOST); if (!server_host_opt) { - error_setg(&local_err, QERR_MISSING_PARAMETER, + error_setg(errp, QERR_MISSING_PARAMETER, VXHS_OPT_SERVER"."VXHS_OPT_HOST); ret =3D -EINVAL; goto out; } =20 if (strlen(server_host_opt) > MAXHOSTNAMELEN) { - error_setg(&local_err, "server.host cannot be more than %d charact= ers", + error_setg(errp, "server.host cannot be more than %d characters", MAXHOSTNAMELEN); ret =3D -EINVAL; goto out; @@ -370,8 +370,8 @@ static int vxhs_open(BlockDriverState *bs, QDict *optio= ns, s->tlscredsid =3D g_strdup(qemu_opt_get(opts, "tls-creds")); if (s->tlscredsid) { vxhs_get_tls_creds(s->tlscredsid, &cacert, &client_key, - &client_cert, &local_err); - if (local_err !=3D NULL) { + &client_cert, errp); + if (*errp) { ret =3D -EINVAL; goto out; } @@ -413,7 +413,6 @@ out: =20 if (ret < 0) { vxhs_unref(); - error_propagate(errp, local_err); g_free(s->vdisk_hostinfo.host); g_free(s->vdisk_guid); g_free(s->tlscredsid); diff --git a/blockdev.c b/blockdev.c index fbef6845c8..cfa5eae6c9 100644 --- a/blockdev.c +++ b/blockdev.c @@ -376,7 +376,7 @@ static void extract_common_blockdev_options(QemuOpts *o= pts, int *bdrv_flags, const char **throttling_group, ThrottleConfig *throttle_cfg, BlockdevDetectZeroesOptions *detect_zeroes, Error **errp) { - Error *local_error =3D NULL; + ERRP_AUTO_PROPAGATE(); const char *aio; =20 if (bdrv_flags) { @@ -455,9 +455,8 @@ static void extract_common_blockdev_options(QemuOpts *o= pts, int *bdrv_flags, qapi_enum_parse(&BlockdevDetectZeroesOptions_lookup, qemu_opt_get(opts, "detect-zeroes"), BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF, - &local_error); - if (local_error) { - error_propagate(errp, local_error); + errp); + if (*errp) { return; } } @@ -467,6 +466,7 @@ static void extract_common_blockdev_options(QemuOpts *o= pts, int *bdrv_flags, static BlockBackend *blockdev_init(const char *file, QDict *bs_opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *buf; int bdrv_flags =3D 0; int on_read_error, on_write_error; @@ -476,7 +476,6 @@ static BlockBackend *blockdev_init(const char *file, QD= ict *bs_opts, BlockDriverState *bs; ThrottleConfig cfg; int snapshot =3D 0; - Error *error =3D NULL; QemuOpts *opts; QDict *interval_dict =3D NULL; QList *interval_list =3D NULL; @@ -488,15 +487,13 @@ static BlockBackend *blockdev_init(const char *file, = QDict *bs_opts, /* Check common options by copying from bs_opts to opts, all other opt= ions * stay in bs_opts for processing by bdrv_open(). */ id =3D qdict_get_try_str(bs_opts, "id"); - opts =3D qemu_opts_create(&qemu_common_drive_opts, id, 1, &error); - if (error) { - error_propagate(errp, error); + opts =3D qemu_opts_create(&qemu_common_drive_opts, id, 1, errp); + if (*errp) { goto err_no_opts; } =20 - qemu_opts_absorb_qdict(opts, bs_opts, &error); - if (error) { - error_propagate(errp, error); + qemu_opts_absorb_qdict(opts, bs_opts, errp); + if (*errp) { goto early_err; } =20 @@ -524,9 +521,8 @@ static BlockBackend *blockdev_init(const char *file, QD= ict *bs_opts, } =20 extract_common_blockdev_options(opts, &bdrv_flags, &throttling_group, = &cfg, - &detect_zeroes, &error); - if (error) { - error_propagate(errp, error); + &detect_zeroes, errp); + if (*errp) { goto early_err; } =20 @@ -549,18 +545,16 @@ static BlockBackend *blockdev_init(const char *file, = QDict *bs_opts, =20 on_write_error =3D BLOCKDEV_ON_ERROR_ENOSPC; if ((buf =3D qemu_opt_get(opts, "werror")) !=3D NULL) { - on_write_error =3D parse_block_error_action(buf, 0, &error); - if (error) { - error_propagate(errp, error); + on_write_error =3D parse_block_error_action(buf, 0, errp); + if (*errp) { goto early_err; } } =20 on_read_error =3D BLOCKDEV_ON_ERROR_REPORT; if ((buf =3D qemu_opt_get(opts, "rerror")) !=3D NULL) { - on_read_error =3D parse_block_error_action(buf, 1, &error); - if (error) { - error_propagate(errp, error); + on_read_error =3D parse_block_error_action(buf, 1, errp); + if (*errp) { goto early_err; } } @@ -767,6 +761,7 @@ QemuOptsList qemu_legacy_drive_opts =3D { DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_= type, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *value; BlockBackend *blk; DriveInfo *dinfo =3D NULL; @@ -779,7 +774,6 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterface= Type block_default_type, bool read_only =3D false; bool copy_on_read; const char *filename; - Error *local_err =3D NULL; int i; =20 /* Change legacy command line options into QMP ones */ @@ -812,9 +806,8 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterface= Type block_default_type, =20 for (i =3D 0; i < ARRAY_SIZE(opt_renames); i++) { qemu_opt_rename(all_opts, opt_renames[i].from, opt_renames[i].to, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return NULL; } } @@ -851,9 +844,8 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterface= Type block_default_type, =20 legacy_opts =3D qemu_opts_create(&qemu_legacy_drive_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(legacy_opts, bs_opts, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(legacy_opts, bs_opts, errp); + if (*errp) { goto fail; } =20 @@ -993,13 +985,12 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfa= ceType block_default_type, } =20 /* Actual block device init: Functionality shared with blockdev-add */ - blk =3D blockdev_init(filename, bs_opts, &local_err); + blk =3D blockdev_init(filename, bs_opts, errp); bs_opts =3D NULL; if (!blk) { - error_propagate(errp, local_err); goto fail; } else { - assert(!local_err); + assert(!*errp); } =20 /* Create legacy DriveInfo */ @@ -1183,10 +1174,10 @@ SnapshotInfo *qmp_blockdev_snapshot_delete_internal= _sync(const char *device, const char *name, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; AioContext *aio_context; QEMUSnapshotInfo sn; - Error *local_err =3D NULL; SnapshotInfo *info =3D NULL; int ret; =20 @@ -1214,9 +1205,8 @@ SnapshotInfo *qmp_blockdev_snapshot_delete_internal_s= ync(const char *device, goto out_aio_context; } =20 - ret =3D bdrv_snapshot_find_by_id_and_name(bs, id, name, &sn, &local_er= r); - if (local_err) { - error_propagate(errp, local_err); + ret =3D bdrv_snapshot_find_by_id_and_name(bs, id, name, &sn, errp); + if (*errp) { goto out_aio_context; } if (!ret) { @@ -1227,9 +1217,8 @@ SnapshotInfo *qmp_blockdev_snapshot_delete_internal_s= ync(const char *device, goto out_aio_context; } =20 - bdrv_snapshot_delete(bs, id, name, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_snapshot_delete(bs, id, name, errp); + if (*errp) { goto out_aio_context; } =20 @@ -1370,7 +1359,7 @@ static int action_check_completion_mode(BlkActionStat= e *s, Error **errp) static void internal_snapshot_prepare(BlkActionState *common, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); const char *device; const char *name; BlockDriverState *bs; @@ -1432,9 +1421,8 @@ static void internal_snapshot_prepare(BlkActionState = *common, =20 /* check whether a snapshot with name exist */ ret =3D bdrv_snapshot_find_by_id_and_name(bs, NULL, name, &old_sn, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { goto out; } else if (ret) { error_setg(errp, @@ -1522,9 +1510,9 @@ typedef struct ExternalSnapshotState { static void external_snapshot_prepare(BlkActionState *common, Error **errp) { + ERRP_AUTO_PROPAGATE(); int flags =3D 0; QDict *options =3D NULL; - Error *local_err =3D NULL; /* Device and node name of the image to generate the snapshot from */ const char *device; const char *node_name; @@ -1635,9 +1623,8 @@ static void external_snapshot_prepare(BlkActionState = *common, bdrv_img_create(new_image_file, format, state->old_bs->filename, state->old_bs->drv->format_name, - NULL, size, flags, false, &local_err); - if (local_err) { - error_propagate(errp, local_err); + NULL, size, flags, false, errp); + if (*errp) { goto out; } } @@ -1685,9 +1672,8 @@ static void external_snapshot_prepare(BlkActionState = *common, * can fail, so we need to do it in .prepare; undoing it for abort is * always possible. */ bdrv_ref(state->new_bs); - bdrv_append(state->new_bs, state->old_bs, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_append(state->new_bs, state->old_bs, errp); + if (*errp) { goto out; } state->overlay_appended =3D true; @@ -1767,11 +1753,11 @@ static BlockJob *do_drive_backup(DriveBackup *backu= p, JobTxn *txn, =20 static void drive_backup_prepare(BlkActionState *common, Error **errp) { + ERRP_AUTO_PROPAGATE(); DriveBackupState *state =3D DO_UPCAST(DriveBackupState, common, common= ); BlockDriverState *bs; DriveBackup *backup; AioContext *aio_context; - Error *local_err =3D NULL; =20 assert(common->action->type =3D=3D TRANSACTION_ACTION_KIND_DRIVE_BACKU= P); backup =3D common->action->u.drive_backup.data; @@ -1789,9 +1775,8 @@ static void drive_backup_prepare(BlkActionState *comm= on, Error **errp) =20 state->bs =3D bs; =20 - state->job =3D do_drive_backup(backup, common->block_job_txn, &local_e= rr); - if (local_err) { - error_propagate(errp, local_err); + state->job =3D do_drive_backup(backup, common->block_job_txn, errp); + if (*errp) { goto out; } =20 @@ -1857,11 +1842,11 @@ static BlockJob *do_blockdev_backup(BlockdevBackup = *backup, JobTxn *txn, =20 static void blockdev_backup_prepare(BlkActionState *common, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevBackupState *state =3D DO_UPCAST(BlockdevBackupState, common, = common); BlockdevBackup *backup; BlockDriverState *bs, *target; AioContext *aio_context; - Error *local_err =3D NULL; =20 assert(common->action->type =3D=3D TRANSACTION_ACTION_KIND_BLOCKDEV_BA= CKUP); backup =3D common->action->u.blockdev_backup.data; @@ -1883,9 +1868,8 @@ static void blockdev_backup_prepare(BlkActionState *c= ommon, Error **errp) /* Paired with .clean() */ bdrv_drained_begin(state->bs); =20 - state->job =3D do_blockdev_backup(backup, common->block_job_txn, &loca= l_err); - if (local_err) { - error_propagate(errp, local_err); + state->job =3D do_blockdev_backup(backup, common->block_job_txn, errp); + if (*errp) { goto out; } =20 @@ -1952,7 +1936,7 @@ typedef struct BlockDirtyBitmapState { static void block_dirty_bitmap_add_prepare(BlkActionState *common, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); BlockDirtyBitmapAdd *action; BlockDirtyBitmapState *state =3D DO_UPCAST(BlockDirtyBitmapState, common, common); @@ -1968,12 +1952,11 @@ static void block_dirty_bitmap_add_prepare(BlkActio= nState *common, action->has_persistent, action->persistent, action->has_autoload, action->autoload, action->has_disabled, action->disabled, - &local_err); + errp); =20 - if (!local_err) { + if (!*errp) { state->prepared =3D true; } else { - error_propagate(errp, local_err); } } =20 @@ -2300,10 +2283,10 @@ void qmp_transaction(TransactionActionList *dev_lis= t, struct TransactionProperties *props, Error **errp) { + ERRP_AUTO_PROPAGATE(); TransactionActionList *dev_entry =3D dev_list; JobTxn *block_job_txn =3D NULL; BlkActionState *state, *next; - Error *local_err =3D NULL; =20 QTAILQ_HEAD(, BlkActionState) snap_bdrv_states; QTAILQ_INIT(&snap_bdrv_states); @@ -2339,9 +2322,8 @@ void qmp_transaction(TransactionActionList *dev_list, state->txn_props =3D props; QTAILQ_INSERT_TAIL(&snap_bdrv_states, state, entry); =20 - state->ops->prepare(state, &local_err); - if (local_err) { - error_propagate(errp, local_err); + state->ops->prepare(state, errp); + if (*errp) { goto delete_and_fail; } } @@ -2379,7 +2361,7 @@ void qmp_eject(bool has_device, const char *device, bool has_id, const char *id, bool has_force, bool force, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int rc; =20 if (!has_force) { @@ -2388,12 +2370,11 @@ void qmp_eject(bool has_device, const char *device, =20 rc =3D do_open_tray(has_device ? device : NULL, has_id ? id : NULL, - force, &local_err); + force, errp); if (rc && rc !=3D -ENOSYS) { - error_propagate(errp, local_err); return; } - error_free(local_err); + error_free_errp(errp); =20 blockdev_remove_medium(has_device, device, has_id, id, errp); } @@ -2466,7 +2447,7 @@ void qmp_blockdev_open_tray(bool has_device, const ch= ar *device, bool has_force, bool force, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int rc; =20 if (!has_force) { @@ -2474,20 +2455,19 @@ void qmp_blockdev_open_tray(bool has_device, const = char *device, } rc =3D do_open_tray(has_device ? device : NULL, has_id ? id : NULL, - force, &local_err); + force, errp); if (rc && rc !=3D -ENOSYS && rc !=3D -EINPROGRESS) { - error_propagate(errp, local_err); return; } - error_free(local_err); + error_free_errp(errp); } =20 void qmp_blockdev_close_tray(bool has_device, const char *device, bool has_id, const char *id, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockBackend *blk; - Error *local_err =3D NULL; =20 device =3D has_device ? device : NULL; id =3D has_id ? id : NULL; @@ -2511,9 +2491,8 @@ void qmp_blockdev_close_tray(bool has_device, const c= har *device, return; } =20 - blk_dev_change_media_cb(blk, true, &local_err); - if (local_err) { - error_propagate(errp, local_err); + blk_dev_change_media_cb(blk, true, errp); + if (*errp) { return; } } @@ -2583,7 +2562,7 @@ void qmp_blockdev_remove_medium(const char *id, Error= **errp) static void qmp_blockdev_insert_anon_medium(BlockBackend *blk, BlockDriverState *bs, Error **= errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); bool has_device; int ret; =20 @@ -2616,9 +2595,8 @@ static void qmp_blockdev_insert_anon_medium(BlockBack= end *blk, * slot here. * Do it after blk_insert_bs() so blk_is_inserted(blk) returns the= @load * value passed here (i.e. true). */ - blk_dev_change_media_cb(blk, true, &local_err); - if (local_err) { - error_propagate(errp, local_err); + blk_dev_change_media_cb(blk, true, errp); + if (*errp) { blk_remove_bs(blk); return; } @@ -2667,13 +2645,13 @@ void qmp_blockdev_change_medium(bool has_device, co= nst char *device, BlockdevChangeReadOnlyMode read_only, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockBackend *blk; BlockDriverState *medium_bs =3D NULL; int bdrv_flags; bool detect_zeroes; int rc; QDict *options =3D NULL; - Error *err =3D NULL; =20 blk =3D qmp_get_blk(has_device ? device : NULL, has_id ? id : NULL, @@ -2725,23 +2703,19 @@ void qmp_blockdev_change_medium(bool has_device, co= nst char *device, =20 rc =3D do_open_tray(has_device ? device : NULL, has_id ? id : NULL, - false, &err); + false, errp); if (rc && rc !=3D -ENOSYS) { - error_propagate(errp, err); goto fail; } - error_free(err); - err =3D NULL; + error_free_errp(errp); =20 - blockdev_remove_medium(has_device, device, has_id, id, &err); - if (err) { - error_propagate(errp, err); + blockdev_remove_medium(has_device, device, has_id, id, errp); + if (*errp) { goto fail; } =20 - qmp_blockdev_insert_anon_medium(blk, medium_bs, &err); - if (err) { - error_propagate(errp, err); + qmp_blockdev_insert_anon_medium(blk, medium_bs, errp); + if (*errp) { goto fail; } =20 @@ -2926,6 +2900,7 @@ static BdrvDirtyBitmap *do_block_dirty_bitmap_remove( const char *node, const char *name, bool release, BlockDriverState **bitmap_bs, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; BdrvDirtyBitmap *bitmap; =20 @@ -2941,14 +2916,12 @@ static BdrvDirtyBitmap *do_block_dirty_bitmap_remov= e( =20 if (bdrv_dirty_bitmap_get_persistence(bitmap)) { AioContext *aio_context =3D bdrv_get_aio_context(bs); - Error *local_err =3D NULL; =20 aio_context_acquire(aio_context); - bdrv_remove_persistent_dirty_bitmap(bs, name, &local_err); + bdrv_remove_persistent_dirty_bitmap(bs, name, errp); aio_context_release(aio_context); =20 - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + if (*errp) { return NULL; } } @@ -3033,10 +3006,10 @@ static BdrvDirtyBitmap *do_block_dirty_bitmap_merge( BlockDirtyBitmapMergeSourceList *bitmaps, HBitmap **backup, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; BdrvDirtyBitmap *dst, *src, *anon; BlockDirtyBitmapMergeSourceList *lst; - Error *local_err =3D NULL; =20 dst =3D block_dirty_bitmap_lookup(node, target, &bs, errp); if (!dst) { @@ -3074,9 +3047,8 @@ static BdrvDirtyBitmap *do_block_dirty_bitmap_merge( abort(); } =20 - bdrv_merge_dirty_bitmap(anon, src, NULL, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_merge_dirty_bitmap(anon, src, NULL, errp); + if (*errp) { dst =3D NULL; goto out; } @@ -3186,7 +3158,7 @@ void qmp_block_resize(bool has_device, const char *de= vice, bool has_node_name, const char *node_name, int64_t size, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); BlockBackend *blk =3D NULL; BlockDriverState *bs; AioContext *aio_context; @@ -3194,9 +3166,8 @@ void qmp_block_resize(bool has_device, const char *de= vice, =20 bs =3D bdrv_lookup_bs(has_device ? device : NULL, has_node_name ? node_name : NULL, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return; } =20 @@ -3243,10 +3214,10 @@ void qmp_block_stream(bool has_job_id, const char *= job_id, const char *device, bool has_auto_dismiss, bool auto_dismiss, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs, *iter; BlockDriverState *base_bs =3D NULL; AioContext *aio_context; - Error *local_err =3D NULL; const char *base_name =3D NULL; int job_flags =3D JOB_DEFAULT; =20 @@ -3319,9 +3290,8 @@ void qmp_block_stream(bool has_job_id, const char *jo= b_id, const char *device, } =20 stream_start(has_job_id ? job_id : NULL, bs, base_bs, base_name, - job_flags, has_speed ? speed : 0, on_error, &local_err); - if (local_err) { - error_propagate(errp, local_err); + job_flags, has_speed ? speed : 0, on_error, errp); + if (*errp) { goto out; } =20 @@ -3343,11 +3313,11 @@ void qmp_block_commit(bool has_job_id, const char *= job_id, const char *device, bool has_auto_dismiss, bool auto_dismiss, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; BlockDriverState *iter; BlockDriverState *base_bs, *top_bs; AioContext *aio_context; - Error *local_err =3D NULL; /* This will be part of the QMP command, if/when the * BlockdevOnError change for blkmirror makes it in */ @@ -3372,15 +3342,14 @@ void qmp_block_commit(bool has_job_id, const char *= job_id, const char *device, * live commit feature versions; for this to work, we must make sure = to * perform the device lookup before any generic errors that may occur= in a * scenario in which all optional arguments are omitted. */ - bs =3D qmp_get_root_bs(device, &local_err); + bs =3D qmp_get_root_bs(device, errp); if (!bs) { bs =3D bdrv_lookup_bs(device, device, NULL); if (!bs) { - error_free(local_err); + error_free_errp(errp); error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND, "Device '%s' not found", device); } else { - error_propagate(errp, local_err); } return; } @@ -3471,7 +3440,7 @@ void qmp_block_commit(bool has_job_id, const char *jo= b_id, const char *device, } commit_active_start(has_job_id ? job_id : NULL, bs, base_bs, job_flags, speed, on_error, - filter_node_name, NULL, NULL, false, &local_er= r); + filter_node_name, NULL, NULL, false, errp); } else { BlockDriverState *overlay_bs =3D bdrv_find_overlay(bs, top_bs); if (bdrv_op_is_blocked(overlay_bs, BLOCK_OP_TYPE_COMMIT_TARGET, er= rp)) { @@ -3479,10 +3448,9 @@ void qmp_block_commit(bool has_job_id, const char *j= ob_id, const char *device, } commit_start(has_job_id ? job_id : NULL, bs, base_bs, top_bs, job_= flags, speed, on_error, has_backing_file ? backing_file : NU= LL, - filter_node_name, &local_err); + filter_node_name, errp); } - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + if (*errp) { goto out; } =20 @@ -3610,13 +3578,13 @@ static BlockJob *do_backup_common(BackupCommon *bac= kup, static BlockJob *do_drive_backup(DriveBackup *backup, JobTxn *txn, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; BlockDriverState *target_bs; BlockDriverState *source =3D NULL; BlockJob *job =3D NULL; AioContext *aio_context; QDict *options; - Error *local_err =3D NULL; int flags; int64_t size; bool set_backing_hd =3D false; @@ -3676,15 +3644,14 @@ static BlockJob *do_drive_backup(DriveBackup *backu= p, JobTxn *txn, bdrv_refresh_filename(source); bdrv_img_create(backup->target, backup->format, source->filena= me, source->drv->format_name, NULL, - size, flags, false, &local_err); + size, flags, false, errp); } else { bdrv_img_create(backup->target, backup->format, NULL, NULL, NU= LL, - size, flags, false, &local_err); + size, flags, false, errp); } } =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { goto out; } =20 @@ -3701,8 +3668,8 @@ static BlockJob *do_drive_backup(DriveBackup *backup,= JobTxn *txn, } =20 if (set_backing_hd) { - bdrv_set_backing_hd(target_bs, source, &local_err); - if (local_err) { + bdrv_set_backing_hd(target_bs, source, errp); + if (*errp) { goto unref; } } @@ -3898,11 +3865,11 @@ static void blockdev_mirror_common(const char *job_= id, BlockDriverState *bs, =20 void qmp_drive_mirror(DriveMirror *arg, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; BlockDriverState *source, *target_bs; AioContext *aio_context; BlockMirrorBackingMode backing_mode; - Error *local_err =3D NULL; QDict *options =3D NULL; int flags; int64_t size; @@ -3970,7 +3937,7 @@ void qmp_drive_mirror(DriveMirror *arg, Error **errp) /* create new image w/o backing file */ assert(format); bdrv_img_create(arg->target, format, - NULL, NULL, NULL, size, flags, false, &local_err); + NULL, NULL, NULL, size, flags, false, errp); } else { switch (arg->mode) { case NEW_IMAGE_MODE_EXISTING: @@ -3981,15 +3948,14 @@ void qmp_drive_mirror(DriveMirror *arg, Error **err= p) bdrv_img_create(arg->target, format, source->filename, source->drv->format_name, - NULL, size, flags, false, &local_err); + NULL, size, flags, false, errp); break; default: abort(); } } =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { goto out; } =20 @@ -4032,9 +3998,8 @@ void qmp_drive_mirror(DriveMirror *arg, Error **errp) arg->has_copy_mode, arg->copy_mode, arg->has_auto_finalize, arg->auto_finalize, arg->has_auto_dismiss, arg->auto_dismiss, - &local_err); + errp); bdrv_unref(target_bs); - error_propagate(errp, local_err); out: aio_context_release(aio_context); } @@ -4057,11 +4022,11 @@ void qmp_blockdev_mirror(bool has_job_id, const cha= r *job_id, bool has_auto_dismiss, bool auto_dismiss, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; BlockDriverState *target_bs; AioContext *aio_context; BlockMirrorBackingMode backing_mode =3D MIRROR_LEAVE_BACKING_CHAIN; - Error *local_err =3D NULL; bool zero_target; int ret; =20 @@ -4097,8 +4062,7 @@ void qmp_blockdev_mirror(bool has_job_id, const char = *job_id, has_copy_mode, copy_mode, has_auto_finalize, auto_finalize, has_auto_dismiss, auto_dismiss, - &local_err); - error_propagate(errp, local_err); + errp); out: aio_context_release(aio_context); } @@ -4243,10 +4207,10 @@ void qmp_change_backing_file(const char *device, const char *backing_file, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs =3D NULL; AioContext *aio_context; BlockDriverState *image_bs =3D NULL; - Error *local_err =3D NULL; bool ro; int ret; =20 @@ -4258,9 +4222,8 @@ void qmp_change_backing_file(const char *device, aio_context =3D bdrv_get_aio_context(bs); aio_context_acquire(aio_context); =20 - image_bs =3D bdrv_lookup_bs(NULL, image_node_name, &local_err); - if (local_err) { - error_propagate(errp, local_err); + image_bs =3D bdrv_lookup_bs(NULL, image_node_name, errp); + if (*errp) { goto out; } =20 @@ -4308,8 +4271,7 @@ void qmp_change_backing_file(const char *device, } =20 if (ro) { - bdrv_reopen_set_read_only(image_bs, true, &local_err); - error_propagate(errp, local_err); + bdrv_reopen_set_read_only(image_bs, true, errp); } =20 out: @@ -4349,15 +4311,14 @@ out: =20 void qmp_blockdev_add(BlockdevOptions *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; QObject *obj; Visitor *v =3D qobject_output_visitor_new(&obj); QDict *qdict; - Error *local_err =3D NULL; =20 - visit_type_BlockdevOptions(v, NULL, &options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_BlockdevOptions(v, NULL, &options, errp); + if (*errp) { goto fail; } =20 @@ -4384,11 +4345,11 @@ fail: =20 void qmp_x_blockdev_reopen(BlockdevOptions *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; AioContext *ctx; QObject *obj; Visitor *v =3D qobject_output_visitor_new(&obj); - Error *local_err =3D NULL; BlockReopenQueue *queue; QDict *qdict; =20 @@ -4405,9 +4366,8 @@ void qmp_x_blockdev_reopen(BlockdevOptions *options, = Error **errp) } =20 /* Put all options in a QDict and flatten it */ - visit_type_BlockdevOptions(v, NULL, &options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_BlockdevOptions(v, NULL, &options, errp); + if (*errp) { goto fail; } =20 diff --git a/blockjob.c b/blockjob.c index c6e20e2fcd..2673fd91b8 100644 --- a/blockjob.c +++ b/blockjob.c @@ -394,6 +394,7 @@ void *block_job_create(const char *job_id, const BlockJ= obDriver *driver, uint64_t shared_perm, int64_t speed, int flags, BlockCompletionFunc *cb, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockBackend *blk; BlockJob *job; int ret; @@ -449,12 +450,9 @@ void *block_job_create(const char *job_id, const Block= JobDriver *driver, =20 /* Only set speed when necessary to avoid NotSupported error */ if (speed !=3D 0) { - Error *local_err =3D NULL; - - block_job_set_speed(job, speed, &local_err); - if (local_err) { + block_job_set_speed(job, speed, errp); + if (*errp) { job_early_fail(&job->job); - error_propagate(errp, local_err); return NULL; } } diff --git a/hw/block/onenand.c b/hw/block/onenand.c index fcc5a69b90..4e0f1bc1e5 100644 --- a/hw/block/onenand.c +++ b/hw/block/onenand.c @@ -776,11 +776,11 @@ static const MemoryRegionOps onenand_ops =3D { =20 static void onenand_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); OneNANDState *s =3D ONE_NAND(dev); uint32_t size =3D 1 << (24 + ((s->id.dev >> 4) & 7)); void *ram; - Error *local_err =3D NULL; =20 s->base =3D (hwaddr)-1; s->rdy =3D NULL; @@ -800,9 +800,8 @@ static void onenand_realize(DeviceState *dev, Error **e= rrp) return; } blk_set_perm(s->blk, BLK_PERM_CONSISTENT_READ | BLK_PERM_WRITE, - BLK_PERM_ALL, &local_err); - if (local_err) { - error_propagate(errp, local_err); + BLK_PERM_ALL, errp); + if (*errp) { return; } s->blk_cur =3D s->blk; diff --git a/job.c b/job.c index 04409b40aa..a12108a6d7 100644 --- a/job.c +++ b/job.c @@ -966,16 +966,15 @@ void job_complete(Job *job, Error **errp) =20 int job_finish_sync(Job *job, void (*finish)(Job *, Error **errp), Error *= *errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int ret; =20 job_ref(job); =20 if (finish) { - finish(job, &local_err); + finish(job, errp); } - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { job_unref(job); return -EBUSY; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813536; cv=none; d=zoho.com; s=zohoarc; b=d19WBxPUf+0nY0vXNAX/J98T43UvVEZWakzWWgiB6ai4XA+iBZ3TFtbG8J4PiY2uwwHgbvxGRFXAZVsendaQq8W2bK2KjATqxEOdNHJc+/vkh8G/zbCxTWg/ZfSmFvKflS+L1j/iqGX98H1Ms2CnKwFt1ecPBOy023qQp5CVbQc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813536; h=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=EVau3oBZtMn8b5M1XdjmIbEJCSaB8iDv7TAhViAh+2E=; b=XRxRK9pruBhyda77fDWwpWXJVXG1E8zpnXVQbKhiTWPYsnc/YtXbO7UD03zFcBM/x/3ZOEn3qPX71h6yT9uhKqp3nYg1U3xp52BgUIyPvpu+WvQ41L9D8Oj3bUquiZrd/JMt1iPCI1aNYNoH1g74bCFu00la9JLqUfKb5cYsXsY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813536154740.2877797516192; Fri, 11 Oct 2019 10:05:36 -0700 (PDT) Received: from localhost ([::1]:54334 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyM6-0001OS-9i for importer@patchew.org; Fri, 11 Oct 2019 13:05:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37051) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRE-0006lz-Df for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRB-0004qU-7A for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:44 -0400 Received: from relay.sw.ru ([185.231.240.75]:48262) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRA-0004Mj-U9; Fri, 11 Oct 2019 12:06:41 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQp-0003XG-Hj; Fri, 11 Oct 2019 19:06:19 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 068/126] scsi: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:54 +0300 Message-Id: <20191011160552.22907-69-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Fam Zheng , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Greg Kurz , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- scsi/pr-manager-helper.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/scsi/pr-manager-helper.c b/scsi/pr-manager-helper.c index ca27c93283..f41eaa8524 100644 --- a/scsi/pr-manager-helper.c +++ b/scsi/pr-manager-helper.c @@ -101,13 +101,13 @@ static int pr_manager_helper_write(PRManagerHelper *p= r_mgr, static int pr_manager_helper_initialize(PRManagerHelper *pr_mgr, Error **errp) { + ERRP_AUTO_PROPAGATE(); char *path =3D g_strdup(pr_mgr->path); SocketAddress saddr =3D { .type =3D SOCKET_ADDRESS_TYPE_UNIX, .u.q_unix.path =3D path }; QIOChannelSocket *sioc =3D qio_channel_socket_new(); - Error *local_err =3D NULL; =20 uint32_t flags; int r; @@ -116,11 +116,10 @@ static int pr_manager_helper_initialize(PRManagerHelp= er *pr_mgr, qio_channel_set_name(QIO_CHANNEL(sioc), "pr-manager-helper"); qio_channel_socket_connect_sync(sioc, &saddr, - &local_err); + errp); g_free(path); - if (local_err) { + if (*errp) { object_unref(OBJECT(sioc)); - error_propagate(errp, local_err); return -ENOTCONN; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812005; cv=none; d=zoho.com; s=zohoarc; b=ZZAJeJh9pVFug9Uo0x64Bhc2a3VMHI3MkDRYNxrIjeF2GKEyObNHyn1xRIcuiqMZA9BU5UObG/ekSqcpsfiiE/JrpQiBcG0s3HZhjINB9H+R1KrG6eNUCoOE4uX0KzOxgoIDYa0vpV3PSbkygQ3m34pGydim8XkJjS5fN4+zE+I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812005; h=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=fcuCzPDqGMyO2iZTRHvcKiKtNnkN3scZzCXefE7Xs1c=; b=VeEReMS1Pc6mQwX1wxcU4aKLEBF5HvHTMqYem5UFVczRwLtqrw6dDxGV0Ou7GMpQQuGDjBQyfqi+ThYQGRpfFJZPe7rv2YmYV53/waRzvAyeWp1RBMwHbEWDqNrFObB3BoGkvZZrPoYn1dAP1S2+bxQkQeUDchbkzjd2leK5424= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812005626164.75348145743487; Fri, 11 Oct 2019 09:40:05 -0700 (PDT) Received: from localhost ([::1]:54050 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxxT-0003KA-Uo for importer@patchew.org; Fri, 11 Oct 2019 12:40:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36658) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR3-0006Sb-Jv for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR1-0004ef-QZ for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:33 -0400 Received: from relay.sw.ru ([185.231.240.75]:48276) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR1-0004Mz-Gp for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:31 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQp-0003XG-Rb; Fri, 11 Oct 2019 19:06:20 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 069/126] chardev: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:55 +0300 Message-Id: <20191011160552.22907-70-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- chardev/char-socket.c | 7 +++---- chardev/char.c | 20 +++++++++----------- chardev/spice.c | 1 + 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 185fe38dda..75649630d3 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -963,6 +963,7 @@ static void tcp_chr_accept_server_sync(Chardev *chr) =20 static int tcp_chr_wait_connected(Chardev *chr, Error **errp) { + ERRP_AUTO_PROPAGATE(); SocketChardev *s =3D SOCKET_CHARDEV(chr); const char *opts[] =3D { "telnet", "tn3270", "websock", "tls-creds" }; bool optset[] =3D { s->is_telnet, s->is_tn3270, s->is_websock, s->tls_= creds }; @@ -1031,13 +1032,11 @@ static int tcp_chr_wait_connected(Chardev *chr, Err= or **errp) if (s->is_listen) { tcp_chr_accept_server_sync(chr); } else { - Error *err =3D NULL; - if (tcp_chr_connect_client_sync(chr, &err) < 0) { + if (tcp_chr_connect_client_sync(chr, errp) < 0) { if (s->reconnect_time) { - error_free(err); + error_free_errp(errp); g_usleep(s->reconnect_time * 1000ULL * 1000ULL); } else { - error_propagate(errp, err); return -1; } } diff --git a/chardev/char.c b/chardev/char.c index 7b6b2cb123..49eb5ffe06 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -603,7 +603,7 @@ static const char *chardev_alias_translate(const char *= name) =20 ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); const ChardevClass *cc; ChardevBackend *backend =3D NULL; const char *name =3D chardev_alias_translate(qemu_opt_get(opts, "backe= nd")); @@ -623,9 +623,8 @@ ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, Err= or **errp) backend->type =3D CHARDEV_BACKEND_KIND_NULL; =20 if (cc->parse) { - cc->parse(opts, backend, &local_err); - if (local_err) { - error_propagate(errp, local_err); + cc->parse(opts, backend, errp); + if (*errp) { qapi_free_ChardevBackend(backend); return NULL; } @@ -949,9 +948,9 @@ Chardev *qemu_chardev_new(const char *id, const char *t= ypename, GMainContext *gcontext, Error **errp) { + ERRP_AUTO_PROPAGATE(); Object *obj; Chardev *chr =3D NULL; - Error *local_err =3D NULL; bool be_opened =3D true; =20 assert(g_str_has_prefix(typename, "chardev-")); @@ -961,8 +960,8 @@ Chardev *qemu_chardev_new(const char *id, const char *t= ypename, chr->label =3D g_strdup(id); chr->gcontext =3D gcontext; =20 - qemu_char_open(chr, backend, &be_opened, &local_err); - if (local_err) { + qemu_char_open(chr, backend, &be_opened, errp); + if (*errp) { goto end; } =20 @@ -974,16 +973,15 @@ Chardev *qemu_chardev_new(const char *id, const char = *typename, } =20 if (id) { - object_property_add_child(get_chardevs_root(), id, obj, &local_err= ); - if (local_err) { + object_property_add_child(get_chardevs_root(), id, obj, errp); + if (*errp) { goto end; } object_unref(obj); } =20 end: - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { object_unref(obj); return NULL; } diff --git a/chardev/spice.c b/chardev/spice.c index 241e2b7770..ce2145fb19 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -267,6 +267,7 @@ static void qemu_chr_open_spice_vmc(Chardev *chr, bool *be_opened, Error **errp) { + ERRP_AUTO_PROPAGATE(); ChardevSpiceChannel *spicevmc =3D backend->u.spicevmc.data; const char *type =3D spicevmc->type; const char **psubtype =3D spice_server_char_device_recognized_subtypes= (); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813612; cv=none; d=zoho.com; s=zohoarc; b=QgoaT4rECio8tTNTJOt5rKNEMmKHNAIV+If6vhMYF8QoWXHK6vqoWyFiMYhqmIYL0rZSsEOA7YW3MbprXJZAENZaEwJFOyjukQlunHWNkoEssXe7o232hvVPx33YJni5w0NqKdx5MGPMKsJG9oy3D+yLeuwSgSaJXz00T1N8wWQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813612; h=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=9M5HnAHK6x0/57cITLFftIx4zrqrLUYNdxKdtiD4KO4=; b=JcRubePSf06YfsvYCaoXaR6UFryr9jWvPWvX8jaNQFePCtIsfm/V6IEmxsieEKqU/3tLcLoSoeyDb49r2L0zK5JqS0t1A6XwVBG501DvHNRL3oXQD+VsddbqJhqWUE15Pbxkirt6sPXJW93vcbxApk8hUSyJ0jrbFT/PB0Qnj4w= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813612983490.85392042804847; Fri, 11 Oct 2019 10:06:52 -0700 (PDT) Received: from localhost ([::1]:54358 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyNP-0003ml-Cy for importer@patchew.org; Fri, 11 Oct 2019 13:06:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36671) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR4-0006TD-27 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR1-0004f0-Vt for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:33 -0400 Received: from relay.sw.ru ([185.231.240.75]:48286) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR1-0004NH-NY for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:31 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQq-0003XG-8S; Fri, 11 Oct 2019 19:06:20 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 070/126] cmdline: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:56 +0300 Message-Id: <20191011160552.22907-71-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- util/qemu-option.c | 59 ++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/util/qemu-option.c b/util/qemu-option.c index 97172b5eaa..43633fe56f 100644 --- a/util/qemu-option.c +++ b/util/qemu-option.c @@ -145,6 +145,7 @@ static const QemuOptDesc *find_desc_by_name(const QemuO= ptDesc *desc, void parse_option_size(const char *name, const char *value, uint64_t *ret, Error **errp) { + ERRP_AUTO_PROPAGATE(); uint64_t size; int err; =20 @@ -541,9 +542,9 @@ int qemu_opt_unset(QemuOpts *opts, const char *name) static void opt_set(QemuOpts *opts, const char *name, char *value, bool prepend, bool *invalidp, Error **errp) { + ERRP_AUTO_PROPAGATE(); QemuOpt *opt; const QemuOptDesc *desc; - Error *local_err =3D NULL; =20 desc =3D find_desc_by_name(opts->list->desc, name); if (!desc && !opts_accepts_any(opts)) { @@ -565,9 +566,8 @@ static void opt_set(QemuOpts *opts, const char *name, c= har *value, } opt->desc =3D desc; opt->str =3D value; - qemu_opt_parse(opt, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opt_parse(opt, errp); + if (*errp) { qemu_opt_del(opt); } } @@ -660,6 +660,7 @@ QemuOpts *qemu_opts_find(QemuOptsList *list, const char= *id) QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id, int fail_if_exists, Error **errp) { + ERRP_AUTO_PROPAGATE(); QemuOpts *opts =3D NULL; =20 if (id) { @@ -711,12 +712,11 @@ void qemu_opts_loc_restore(QemuOpts *opts) void qemu_opts_set(QemuOptsList *list, const char *id, const char *name, const char *value, Error **errp) { + ERRP_AUTO_PROPAGATE(); QemuOpts *opts; - Error *local_err =3D NULL; =20 - opts =3D qemu_opts_create(list, id, 1, &local_err); - if (local_err) { - error_propagate(errp, local_err); + opts =3D qemu_opts_create(list, id, 1, errp); + if (*errp) { return; } qemu_opt_set(opts, name, value, errp); @@ -809,10 +809,10 @@ static void opts_do_parse(QemuOpts *opts, const char = *params, const char *firstname, bool prepend, bool *invalidp, Error **errp) { + ERRP_AUTO_PROPAGATE(); char *option =3D NULL; char *value =3D NULL; const char *p,*pe,*pc; - Error *local_err =3D NULL; =20 for (p =3D params; *p !=3D '\0'; p++) { pe =3D strchr(p, '=3D'); @@ -842,10 +842,9 @@ static void opts_do_parse(QemuOpts *opts, const char *= params, } if (strcmp(option, "id") !=3D 0) { /* store and parse */ - opt_set(opts, option, value, prepend, invalidp, &local_err); + opt_set(opts, option, value, prepend, invalidp, errp); value =3D NULL; - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { goto cleanup; } } @@ -878,11 +877,11 @@ static QemuOpts *opts_parse(QemuOptsList *list, const= char *params, bool permit_abbrev, bool defaults, bool *invalidp, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *firstname; char *id =3D NULL; const char *p; QemuOpts *opts; - Error *local_err =3D NULL; =20 assert(!permit_abbrev || list->implied_opt_name); firstname =3D permit_abbrev ? list->implied_opt_name : NULL; @@ -901,16 +900,14 @@ static QemuOpts *opts_parse(QemuOptsList *list, const= char *params, * (if unlikely) future misuse: */ assert(!defaults || list->merge_lists); - opts =3D qemu_opts_create(list, id, !defaults, &local_err); + opts =3D qemu_opts_create(list, id, !defaults, errp); g_free(id); if (opts =3D=3D NULL) { - error_propagate(errp, local_err); return NULL; } =20 - opts_do_parse(opts, params, firstname, defaults, invalidp, &local_err); - if (local_err) { - error_propagate(errp, local_err); + opts_do_parse(opts, params, firstname, defaults, invalidp, errp); + if (*errp) { qemu_opts_del(opts); return NULL; } @@ -1012,24 +1009,22 @@ static void qemu_opts_from_qdict_1(const char *key,= QObject *obj, void *opaque) QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const QDict *qdict, Error **errp) { + ERRP_AUTO_PROPAGATE(); OptsFromQDictState state; - Error *local_err =3D NULL; QemuOpts *opts; =20 opts =3D qemu_opts_create(list, qdict_get_try_str(qdict, "id"), 1, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return NULL; } =20 assert(opts !=3D NULL); =20 - state.errp =3D &local_err; + state.errp =3D errp; state.opts =3D opts; qdict_iter(qdict, qemu_opts_from_qdict_1, &state); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { qemu_opts_del(opts); return NULL; } @@ -1044,14 +1039,14 @@ QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, = const QDict *qdict, */ void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict, Error **errp) { + ERRP_AUTO_PROPAGATE(); const QDictEntry *entry, *next; =20 entry =3D qdict_first(qdict); =20 while (entry !=3D NULL) { - Error *local_err =3D NULL; OptsFromQDictState state =3D { - .errp =3D &local_err, + .errp =3D errp, .opts =3D opts, }; =20 @@ -1059,8 +1054,7 @@ void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qd= ict, Error **errp) =20 if (find_desc_by_name(opts->list->desc, entry->key)) { qemu_opts_from_qdict_1(entry->key, entry->value, &state); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } else { qdict_del(qdict, entry->key); @@ -1130,8 +1124,8 @@ QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdic= t) */ void qemu_opts_validate(QemuOpts *opts, const QemuOptDesc *desc, Error **e= rrp) { + ERRP_AUTO_PROPAGATE(); QemuOpt *opt; - Error *local_err =3D NULL; =20 assert(opts_accepts_any(opts)); =20 @@ -1142,9 +1136,8 @@ void qemu_opts_validate(QemuOpts *opts, const QemuOpt= Desc *desc, Error **errp) return; } =20 - qemu_opt_parse(opt, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opt_parse(opt, errp); + if (*errp) { return; } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812534; cv=none; d=zoho.com; s=zohoarc; b=ZbvEAH52ro3MtcnfXTwGgLGzR++x6tyxNfrhB1UfQsIQp+gRSKvwYWv1NpwOQJw1fTGES0Kvvhv/xkDW4yxkJsNCncSm5KIxpuInkA2Xn58mdIcUAtf0qdKCdg5ARh2c7cPNnQzwEGN1l1MKkpNkgQV1WgXmqOhAfWsfyWM6p3U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812534; h=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=FTsbbSnQj9LtecdmJR2NpHNQPU4yRo9TP41WUGxXAEA=; b=P5Sbc+EDIcVrvKi/oO5ASJ3V7UiBOELV2rwHceJWrnNFgErBM5GDhtznW4aOeqWADToDp1ZR/1ECIklZGrkjC9LSl61JSCfVK4+WTuw8SwO5A2SyGIG0NkCprdzvtW0duyW8I7awpy4AySh6oKx52gklYNtbS2x6RgingbImeFA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812534497815.1588237216567; Fri, 11 Oct 2019 09:48:54 -0700 (PDT) Received: from localhost ([::1]:54140 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy60-0004Mp-J9 for importer@patchew.org; Fri, 11 Oct 2019 12:48:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36744) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR6-0006Wr-3b for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR2-0004fP-Bl for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:35 -0400 Received: from relay.sw.ru ([185.231.240.75]:48296) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR1-0004NO-V9 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:32 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQq-0003XG-Jy; Fri, 11 Oct 2019 19:06:20 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 071/126] Dump: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:57 +0300 Message-Id: <20191011160552.22907-72-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- dump/dump.c | 151 ++++++++++++++++++++---------------------------- dump/win_dump.c | 29 ++++------ 2 files changed, 76 insertions(+), 104 deletions(-) diff --git a/dump/dump.c b/dump/dump.c index 6fb6e1245a..421e33d684 100644 --- a/dump/dump.c +++ b/dump/dump.c @@ -387,23 +387,21 @@ static void write_data(DumpState *s, void *buf, int l= ength, Error **errp) static void write_memory(DumpState *s, GuestPhysBlock *block, ram_addr_t s= tart, int64_t size, Error **errp) { + ERRP_AUTO_PROPAGATE(); int64_t i; - Error *local_err =3D NULL; =20 for (i =3D 0; i < size / s->dump_info.page_size; i++) { write_data(s, block->host_addr + start + i * s->dump_info.page_siz= e, - s->dump_info.page_size, &local_err); - if (local_err) { - error_propagate(errp, local_err); + s->dump_info.page_size, errp); + if (*errp) { return; } } =20 if ((size % s->dump_info.page_size) !=3D 0) { write_data(s, block->host_addr + start + i * s->dump_info.page_siz= e, - size % s->dump_info.page_size, &local_err); - if (local_err) { - error_propagate(errp, local_err); + size % s->dump_info.page_size, errp); + if (*errp) { return; } } @@ -473,11 +471,11 @@ static void get_offset_range(hwaddr phys_addr, =20 static void write_elf_loads(DumpState *s, Error **errp) { + ERRP_AUTO_PROPAGATE(); hwaddr offset, filesz; MemoryMapping *memory_mapping; uint32_t phdr_index =3D 1; uint32_t max_index; - Error *local_err =3D NULL; =20 if (s->have_section) { max_index =3D s->sh_info; @@ -491,14 +489,13 @@ static void write_elf_loads(DumpState *s, Error **err= p) s, &offset, &filesz); if (s->dump_info.d_class =3D=3D ELFCLASS64) { write_elf64_load(s, memory_mapping, phdr_index++, offset, - filesz, &local_err); + filesz, errp); } else { write_elf32_load(s, memory_mapping, phdr_index++, offset, - filesz, &local_err); + filesz, errp); } =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } =20 @@ -511,7 +508,7 @@ static void write_elf_loads(DumpState *s, Error **errp) /* write elf header, PT_NOTE and elf note to vmcore. */ static void dump_begin(DumpState *s, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 /* * the vmcore's format is: @@ -539,73 +536,64 @@ static void dump_begin(DumpState *s, Error **errp) =20 /* write elf header to vmcore */ if (s->dump_info.d_class =3D=3D ELFCLASS64) { - write_elf64_header(s, &local_err); + write_elf64_header(s, errp); } else { - write_elf32_header(s, &local_err); + write_elf32_header(s, errp); } - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } =20 if (s->dump_info.d_class =3D=3D ELFCLASS64) { /* write PT_NOTE to vmcore */ - write_elf64_note(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_elf64_note(s, errp); + if (*errp) { return; } =20 /* write all PT_LOAD to vmcore */ - write_elf_loads(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_elf_loads(s, errp); + if (*errp) { return; } =20 /* write section to vmcore */ if (s->have_section) { - write_elf_section(s, 1, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_elf_section(s, 1, errp); + if (*errp) { return; } } =20 /* write notes to vmcore */ - write_elf64_notes(fd_write_vmcore, s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_elf64_notes(fd_write_vmcore, s, errp); + if (*errp) { return; } } else { /* write PT_NOTE to vmcore */ - write_elf32_note(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_elf32_note(s, errp); + if (*errp) { return; } =20 /* write all PT_LOAD to vmcore */ - write_elf_loads(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_elf_loads(s, errp); + if (*errp) { return; } =20 /* write section to vmcore */ if (s->have_section) { - write_elf_section(s, 0, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_elf_section(s, 0, errp); + if (*errp) { return; } } =20 /* write notes to vmcore */ - write_elf32_notes(fd_write_vmcore, s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_elf32_notes(fd_write_vmcore, s, errp); + if (*errp) { return; } } @@ -641,9 +629,9 @@ static int get_next_block(DumpState *s, GuestPhysBlock = *block) /* write all memory to vmcore */ static void dump_iterate(DumpState *s, Error **errp) { + ERRP_AUTO_PROPAGATE(); GuestPhysBlock *block; int64_t size; - Error *local_err =3D NULL; =20 do { block =3D s->next_block; @@ -655,9 +643,8 @@ static void dump_iterate(DumpState *s, Error **errp) size -=3D block->target_end - (s->begin + s->length); } } - write_memory(s, block, s->start, size, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_memory(s, block, s->start, size, errp); + if (*errp) { return; } =20 @@ -666,11 +653,10 @@ static void dump_iterate(DumpState *s, Error **errp) =20 static void create_vmcore(DumpState *s, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 - dump_begin(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + dump_begin(s, errp); + if (*errp) { return; } =20 @@ -807,6 +793,7 @@ static bool note_name_equal(DumpState *s, /* write common header, sub header and elf note to vmcore */ static void create_header32(DumpState *s, Error **errp) { + ERRP_AUTO_PROPAGATE(); DiskDumpHeader32 *dh =3D NULL; KdumpSubHeader32 *kh =3D NULL; size_t size; @@ -815,7 +802,6 @@ static void create_header32(DumpState *s, Error **errp) uint32_t bitmap_blocks; uint32_t status =3D 0; uint64_t offset_note; - Error *local_err =3D NULL; =20 /* write common header, the version of kdump-compressed format is 6th = */ size =3D sizeof(DiskDumpHeader32); @@ -891,9 +877,8 @@ static void create_header32(DumpState *s, Error **errp) s->note_buf_offset =3D 0; =20 /* use s->note_buf to store notes temporarily */ - write_elf32_notes(buf_write_note, s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_elf32_notes(buf_write_note, s, errp); + if (*errp) { goto out; } if (write_buffer(s->fd, offset_note, s->note_buf, @@ -919,6 +904,7 @@ out: /* write common header, sub header and elf note to vmcore */ static void create_header64(DumpState *s, Error **errp) { + ERRP_AUTO_PROPAGATE(); DiskDumpHeader64 *dh =3D NULL; KdumpSubHeader64 *kh =3D NULL; size_t size; @@ -927,7 +913,6 @@ static void create_header64(DumpState *s, Error **errp) uint32_t bitmap_blocks; uint32_t status =3D 0; uint64_t offset_note; - Error *local_err =3D NULL; =20 /* write common header, the version of kdump-compressed format is 6th = */ size =3D sizeof(DiskDumpHeader64); @@ -1003,9 +988,8 @@ static void create_header64(DumpState *s, Error **errp) s->note_buf_offset =3D 0; =20 /* use s->note_buf to store notes temporarily */ - write_elf64_notes(buf_write_note, s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_elf64_notes(buf_write_note, s, errp); + if (*errp) { goto out; } =20 @@ -1031,14 +1015,13 @@ out: =20 static void write_dump_header(DumpState *s, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 if (s->dump_info.d_class =3D=3D ELFCLASS32) { - create_header32(s, &local_err); + create_header32(s, errp); } else { - create_header64(s, &local_err); + create_header64(s, errp); } - error_propagate(errp, local_err); } =20 static size_t dump_bitmap_get_bufsize(DumpState *s) @@ -1472,8 +1455,8 @@ out: =20 static void create_kdump_vmcore(DumpState *s, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; - Error *local_err =3D NULL; =20 /* * the kdump-compressed format is: @@ -1503,21 +1486,18 @@ static void create_kdump_vmcore(DumpState *s, Error= **errp) return; } =20 - write_dump_header(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_dump_header(s, errp); + if (*errp) { return; } =20 - write_dump_bitmap(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_dump_bitmap(s, errp); + if (*errp) { return; } =20 - write_dump_pages(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_dump_pages(s, errp); + if (*errp) { return; } =20 @@ -1647,10 +1627,10 @@ static void dump_init(DumpState *s, int fd, bool ha= s_format, DumpGuestMemoryFormat format, bool paging, bool has_= filter, int64_t begin, int64_t length, Error **errp) { + ERRP_AUTO_PROPAGATE(); VMCoreInfoState *vmci =3D vmcoreinfo_find(); CPUState *cpu; int nr_cpus; - Error *err =3D NULL; int ret; =20 s->has_format =3D has_format; @@ -1769,9 +1749,8 @@ static void dump_init(DumpState *s, int fd, bool has_= format, =20 /* get memory mapping */ if (paging) { - qemu_get_guest_memory_mapping(&s->list, &s->guest_phys_blocks, &er= r); - if (err !=3D NULL) { - error_propagate(errp, err); + qemu_get_guest_memory_mapping(&s->list, &s->guest_phys_blocks, err= p); + if (*errp) { goto cleanup; } } else { @@ -1870,33 +1849,32 @@ cleanup: /* this operation might be time consuming. */ static void dump_process(DumpState *s, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); DumpQueryResult *result =3D NULL; =20 if (s->has_format && s->format =3D=3D DUMP_GUEST_MEMORY_FORMAT_WIN_DMP= ) { #ifdef TARGET_X86_64 - create_win_dump(s, &local_err); + create_win_dump(s, errp); #endif } else if (s->has_format && s->format !=3D DUMP_GUEST_MEMORY_FORMAT_EL= F) { - create_kdump_vmcore(s, &local_err); + create_kdump_vmcore(s, errp); } else { - create_vmcore(s, &local_err); + create_vmcore(s, errp); } =20 /* make sure status is written after written_size updates */ smp_wmb(); atomic_set(&s->status, - (local_err ? DUMP_STATUS_FAILED : DUMP_STATUS_COMPLETED)); + (*errp ? DUMP_STATUS_FAILED : DUMP_STATUS_COMPLETED)); =20 /* send DUMP_COMPLETED message (unconditionally) */ result =3D qmp_query_dump(NULL); /* should never fail */ assert(result); - qapi_event_send_dump_completed(result, !!local_err, (local_err ? \ - error_get_pretty(local_err) : NULL)); + qapi_event_send_dump_completed(result, !!*errp, (*errp ? \ + error_get_pretty(*errp) : NULL)); qapi_free_DumpQueryResult(result); =20 - error_propagate(errp, local_err); dump_cleanup(s); } =20 @@ -1925,10 +1903,10 @@ void qmp_dump_guest_memory(bool paging, const char = *file, int64_t length, bool has_format, DumpGuestMemoryFormat format, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *p; int fd =3D -1; DumpState *s; - Error *local_err =3D NULL; bool detach_p =3D false; =20 if (runstate_check(RUN_STATE_INMIGRATE)) { @@ -2013,9 +1991,8 @@ void qmp_dump_guest_memory(bool paging, const char *f= ile, dump_state_prepare(s); =20 dump_init(s, fd, has_format, format, paging, has_begin, - begin, length, &local_err); - if (local_err) { - error_propagate(errp, local_err); + begin, length, errp); + if (*errp) { atomic_set(&s->status, DUMP_STATUS_FAILED); return; } diff --git a/dump/win_dump.c b/dump/win_dump.c index eda2a48974..7e905e7589 100644 --- a/dump/win_dump.c +++ b/dump/win_dump.c @@ -60,15 +60,14 @@ static size_t write_run(WinDumpPhyMemRun64 *run, int fd= , Error **errp) =20 static void write_runs(DumpState *s, WinDumpHeader64 *h, Error **errp) { + ERRP_AUTO_PROPAGATE(); WinDumpPhyMemDesc64 *desc =3D &h->PhysicalMemoryBlock; WinDumpPhyMemRun64 *run =3D desc->Run; - Error *local_err =3D NULL; int i; =20 for (i =3D 0; i < desc->NumberOfRuns; i++) { - s->written_size +=3D write_run(run + i, s->fd, &local_err); - if (local_err) { - error_propagate(errp, local_err); + s->written_size +=3D write_run(run + i, s->fd, errp); + if (*errp) { return; } } @@ -317,12 +316,12 @@ static void restore_context(WinDumpHeader64 *h, =20 void create_win_dump(DumpState *s, Error **errp) { + ERRP_AUTO_PROPAGATE(); WinDumpHeader64 *h =3D (WinDumpHeader64 *)(s->guest_note + VMCOREINFO_ELF_NOTE_HDR_SIZE); X86CPU *first_x86_cpu =3D X86_CPU(first_cpu); uint64_t saved_cr3 =3D first_x86_cpu->env.cr[3]; struct saved_context *saved_ctx =3D NULL; - Error *local_err =3D NULL; =20 if (s->guest_note_size !=3D sizeof(WinDumpHeader64) + VMCOREINFO_ELF_NOTE_HDR_SIZE) { @@ -330,9 +329,8 @@ void create_win_dump(DumpState *s, Error **errp) return; } =20 - check_header(h, &local_err); - if (local_err) { - error_propagate(errp, local_err); + check_header(h, errp); + if (*errp) { return; } =20 @@ -343,9 +341,8 @@ void create_win_dump(DumpState *s, Error **errp) =20 first_x86_cpu->env.cr[3] =3D h->DirectoryTableBase; =20 - check_kdbg(h, &local_err); - if (local_err) { - error_propagate(errp, local_err); + check_kdbg(h, errp); + if (*errp) { goto out_cr3; } =20 @@ -358,9 +355,8 @@ void create_win_dump(DumpState *s, Error **errp) * to determine if the system-saved context is valid */ =20 - patch_and_save_context(h, saved_ctx, &local_err); - if (local_err) { - error_propagate(errp, local_err); + patch_and_save_context(h, saved_ctx, errp); + if (*errp) { goto out_free; } =20 @@ -372,9 +368,8 @@ void create_win_dump(DumpState *s, Error **errp) goto out_restore; } =20 - write_runs(s, h, &local_err); - if (local_err) { - error_propagate(errp, local_err); + write_runs(s, h, errp); + if (*errp) { goto out_restore; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812199; cv=none; d=zoho.com; s=zohoarc; b=dlyiULLI4GmB6msrCk/+IzKcM31DK2CBPEWXGzyZJ6FnZ4aRYSsDR2QEwjjvaeSgXoVHjVg+3sqs09PVgfpwyrHEM76NBJPUa1fuimfKItpSazZwyY0rn1Yl7yYehxDxttG3geIPvXFptVr7BOMk0UUaZ4lFx34Ce+Xs24Iz9/s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812199; h=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=mBjnN7E/hoA0P2hjbjBsMokeZZnQHigPtkSN7GDG4ig=; b=g566wnxKVKeVqLwumdz7Y5aoxJJoNV67lf94zK6k2JcQg+R22YTCy8SCgyUyTKS2rzQkPSNIkIASzUNOMD7cEEUsnViULwpoSI7CtrZM7tHJmHwMwfBpdTLh5PVtabCzwwJM6BzP/QLFuIXhygfmfCvhdFxPODL3/R58A4+2oRs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812199586977.6684943358616; Fri, 11 Oct 2019 09:43:19 -0700 (PDT) Received: from localhost ([::1]:54084 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy0b-0007UP-Ry for importer@patchew.org; Fri, 11 Oct 2019 12:43:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36695) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR4-0006Ua-S2 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR2-0004fX-GP for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:34 -0400 Received: from relay.sw.ru ([185.231.240.75]:48306) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR2-0004Nb-8D for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:32 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQq-0003XG-QV; Fri, 11 Oct 2019 19:06:20 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 072/126] Memory API: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:58 +0300 Message-Id: <20191011160552.22907-73-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Paolo Bonzini , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- memory.c | 63 ++++++++++++++++++++++++-------------------------------- 1 file changed, 27 insertions(+), 36 deletions(-) diff --git a/memory.c b/memory.c index 978da3d3df..b46b5f41e9 100644 --- a/memory.c +++ b/memory.c @@ -1524,17 +1524,16 @@ void memory_region_init_ram_shared_nomigrate(Memory= Region *mr, bool share, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); memory_region_init(mr, owner, name, size); mr->ram =3D true; mr->terminates =3D true; mr->destructor =3D memory_region_destructor_ram; - mr->ram_block =3D qemu_ram_alloc(size, share, mr, &err); + mr->ram_block =3D qemu_ram_alloc(size, share, mr, errp); mr->dirty_log_mask =3D tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0; - if (err) { + if (*errp) { mr->size =3D int128_zero(); object_unparent(OBJECT(mr)); - error_propagate(errp, err); } } =20 @@ -1548,18 +1547,17 @@ void memory_region_init_resizeable_ram(MemoryRegion= *mr, void *host), Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); memory_region_init(mr, owner, name, size); mr->ram =3D true; mr->terminates =3D true; mr->destructor =3D memory_region_destructor_ram; mr->ram_block =3D qemu_ram_alloc_resizeable(size, max_size, resized, - mr, &err); + mr, errp); mr->dirty_log_mask =3D tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0; - if (err) { + if (*errp) { mr->size =3D int128_zero(); object_unparent(OBJECT(mr)); - error_propagate(errp, err); } } =20 @@ -1573,18 +1571,17 @@ void memory_region_init_ram_from_file(MemoryRegion = *mr, const char *path, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); memory_region_init(mr, owner, name, size); mr->ram =3D true; mr->terminates =3D true; mr->destructor =3D memory_region_destructor_ram; mr->align =3D align; - mr->ram_block =3D qemu_ram_alloc_from_file(size, mr, ram_flags, path, = &err); + mr->ram_block =3D qemu_ram_alloc_from_file(size, mr, ram_flags, path, = errp); mr->dirty_log_mask =3D tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0; - if (err) { + if (*errp) { mr->size =3D int128_zero(); object_unparent(OBJECT(mr)); - error_propagate(errp, err); } } =20 @@ -1596,19 +1593,18 @@ void memory_region_init_ram_from_fd(MemoryRegion *m= r, int fd, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); memory_region_init(mr, owner, name, size); mr->ram =3D true; mr->terminates =3D true; mr->destructor =3D memory_region_destructor_ram; mr->ram_block =3D qemu_ram_alloc_from_fd(size, mr, share ? RAM_SHARED : 0, - fd, &err); + fd, errp); mr->dirty_log_mask =3D tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0; - if (err) { + if (*errp) { mr->size =3D int128_zero(); object_unparent(OBJECT(mr)); - error_propagate(errp, err); } } #endif @@ -1667,18 +1663,17 @@ void memory_region_init_rom_nomigrate(MemoryRegion = *mr, uint64_t size, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); memory_region_init(mr, owner, name, size); mr->ram =3D true; mr->readonly =3D true; mr->terminates =3D true; mr->destructor =3D memory_region_destructor_ram; - mr->ram_block =3D qemu_ram_alloc(size, false, mr, &err); + mr->ram_block =3D qemu_ram_alloc(size, false, mr, errp); mr->dirty_log_mask =3D tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0; - if (err) { + if (*errp) { mr->size =3D int128_zero(); object_unparent(OBJECT(mr)); - error_propagate(errp, err); } } =20 @@ -1690,7 +1685,7 @@ void memory_region_init_rom_device_nomigrate(MemoryRe= gion *mr, uint64_t size, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); assert(ops); memory_region_init(mr, owner, name, size); mr->ops =3D ops; @@ -1698,11 +1693,10 @@ void memory_region_init_rom_device_nomigrate(Memory= Region *mr, mr->terminates =3D true; mr->rom_device =3D true; mr->destructor =3D memory_region_destructor_ram; - mr->ram_block =3D qemu_ram_alloc(size, false, mr, &err); - if (err) { + mr->ram_block =3D qemu_ram_alloc(size, false, mr, errp); + if (*errp) { mr->size =3D int128_zero(); object_unparent(OBJECT(mr)); - error_propagate(errp, err); } } =20 @@ -3162,12 +3156,11 @@ void memory_region_init_ram(MemoryRegion *mr, uint64_t size, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *owner_dev; - Error *err =3D NULL; =20 - memory_region_init_ram_nomigrate(mr, owner, name, size, &err); - if (err) { - error_propagate(errp, err); + memory_region_init_ram_nomigrate(mr, owner, name, size, errp); + if (*errp) { return; } /* This will assert if owner is neither NULL nor a DeviceState. @@ -3186,12 +3179,11 @@ void memory_region_init_rom(MemoryRegion *mr, uint64_t size, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *owner_dev; - Error *err =3D NULL; =20 - memory_region_init_rom_nomigrate(mr, owner, name, size, &err); - if (err) { - error_propagate(errp, err); + memory_region_init_rom_nomigrate(mr, owner, name, size, errp); + if (*errp) { return; } /* This will assert if owner is neither NULL nor a DeviceState. @@ -3212,13 +3204,12 @@ void memory_region_init_rom_device(MemoryRegion *mr, uint64_t size, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *owner_dev; - Error *err =3D NULL; =20 memory_region_init_rom_device_nomigrate(mr, owner, ops, opaque, - name, size, &err); - if (err) { - error_propagate(errp, err); + name, size, errp); + if (*errp) { return; } /* This will assert if owner is neither NULL nor a DeviceState. --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570811998; cv=none; d=zoho.com; s=zohoarc; b=CvOhPlRGoXsADaWMKSbC7/+6OY6zRLHrk36DCkjghzfGFmNwEUtozVDg/ppwj3ro31JqRSCIIWBCtcl6chdy6Lg7DLix27lMqXr4sjXfnIga1yrvWLJI0ibtVAu7KE76igUIzWHWKO8fFgfvNsQ7gF/XmJpg78LFoPSfvRLn3fQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570811998; h=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=WRdekoW5fm6YBf5Ccdadcv1mdRZ6Yc9k4UvWk5SmowY=; b=ALiRDhAUMsVHBL6IdyszvlvxHUiSNaBe5fjL1gxSfD4voCgRevfa33kqblfBjm2chKb77+SVZbIMtgODKxF+fUods8Wb+981fAdqO9TgFpTt8xOGJCJoRCMW9IFouc7AESRF5aI0TSQNLAXorSPIFGJelasyknnvmDbOvfalFDk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081199827822.528611362309448; Fri, 11 Oct 2019 09:39:58 -0700 (PDT) Received: from localhost ([::1]:54048 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxxM-0003AJ-IZ for importer@patchew.org; Fri, 11 Oct 2019 12:39:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36679) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR4-0006Tm-ET for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR2-0004fj-Kg for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:34 -0400 Received: from relay.sw.ru ([185.231.240.75]:48314) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR2-0004Nn-Cx for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:32 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQr-0003XG-1K; Fri, 11 Oct 2019 19:06:21 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 073/126] SPICE: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:59 +0300 Message-Id: <20191011160552.22907-74-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Gerd Hoffmann , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/display/qxl.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hw/display/qxl.c b/hw/display/qxl.c index cd7eb39d20..7596c7969b 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -2210,9 +2210,9 @@ static void qxl_realize_common(PCIQXLDevice *qxl, Err= or **errp) =20 static void qxl_realize_primary(PCIDevice *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCIQXLDevice *qxl =3D PCI_QXL(dev); VGACommonState *vga =3D &qxl->vga; - Error *local_err =3D NULL; =20 qxl_init_ramsize(qxl); vga->vbe_size =3D qxl->vgamem_size; @@ -2234,9 +2234,8 @@ static void qxl_realize_primary(PCIDevice *dev, Error= **errp) return; } =20 - qxl_realize_common(qxl, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qxl_realize_common(qxl, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812189; cv=none; d=zoho.com; s=zohoarc; b=DIQ/6GvC1Vlu9AgmiEkw2MiCzPHuY+CN8z+6fiTHhz0XW5nH6Ndp4Vcg99rFiaNeR1FcyT13idi3ZJJUjQMrcnXwGB6/J8rtNkTKk8eakMjf9pR7Mflrw8eozBJqEA6pb88CzUr8duVAIf9V93IYQg96uff7hMqPaSBXok2HZyA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812189; h=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=0upcyIVlCc26btE/8H4Wv2cAjMnvAm2J5oVN78PT5Gg=; b=RXjaY8z6w7lTD5sDDn8MuhGoeQmCk7lqBX7BS8qyAMCfc5oQ5fhP93hskA9+iczMMbdD06prR/z7mIVrjXY2jQo7kHgigBCVcorTYCwi01tn0QkoJmTPPVcWuaw+FSMz18m2eAcXAnrRclUOd+L9tpfrkuE7Xy+Ablp+KvpRJbo= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812189229298.5416435357323; Fri, 11 Oct 2019 09:43:09 -0700 (PDT) Received: from localhost ([::1]:54082 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy0P-0007Cl-JE for importer@patchew.org; Fri, 11 Oct 2019 12:43:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36743) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR6-0006Wq-4B for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR3-0004gK-1s for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:35 -0400 Received: from relay.sw.ru ([185.231.240.75]:48328) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR2-0004O1-NO for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:32 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQr-0003XG-9u; Fri, 11 Oct 2019 19:06:21 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 074/126] Graphics: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:00 +0300 Message-Id: <20191011160552.22907-75-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Gerd Hoffmann , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- ui/input-barrier.c | 7 +++---- ui/input.c | 14 ++++++-------- ui/vnc.c | 19 ++++++++----------- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/ui/input-barrier.c b/ui/input-barrier.c index a2c961f285..cce1cf35c3 100644 --- a/ui/input-barrier.c +++ b/ui/input-barrier.c @@ -492,8 +492,8 @@ static gboolean input_barrier_event(QIOChannel *ioc G_G= NUC_UNUSED, =20 static void input_barrier_complete(UserCreatable *uc, Error **errp) { + ERRP_AUTO_PROPAGATE(); InputBarrier *ib =3D INPUT_BARRIER(uc); - Error *local_err =3D NULL; =20 if (!ib->name) { error_setg(errp, QERR_MISSING_PARAMETER, "name"); @@ -509,9 +509,8 @@ static void input_barrier_complete(UserCreatable *uc, E= rror **errp) ib->sioc =3D qio_channel_socket_new(); qio_channel_set_name(QIO_CHANNEL(ib->sioc), "barrier-client"); =20 - qio_channel_socket_connect_sync(ib->sioc, &ib->saddr, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qio_channel_socket_connect_sync(ib->sioc, &ib->saddr, errp); + if (*errp) { return; } =20 diff --git a/ui/input.c b/ui/input.c index 4791b089c7..bea1745a33 100644 --- a/ui/input.c +++ b/ui/input.c @@ -87,12 +87,11 @@ void qemu_input_handler_bind(QemuInputHandlerState *s, const char *device_id, int head, Error **errp) { + ERRP_AUTO_PROPAGATE(); QemuConsole *con; - Error *err =3D NULL; =20 - con =3D qemu_console_lookup_by_device_name(device_id, head, &err); - if (err) { - error_propagate(errp, err); + con =3D qemu_console_lookup_by_device_name(device_id, head, errp); + if (*errp) { return; } =20 @@ -128,18 +127,17 @@ void qmp_input_send_event(bool has_device, const char= *device, bool has_head, int64_t head, InputEventList *events, Error **errp) { + ERRP_AUTO_PROPAGATE(); InputEventList *e; QemuConsole *con; - Error *err =3D NULL; =20 con =3D NULL; if (has_device) { if (!has_head) { head =3D 0; } - con =3D qemu_console_lookup_by_device_name(device, head, &err); - if (err) { - error_propagate(errp, err); + con =3D qemu_console_lookup_by_device_name(device, head, errp); + if (*errp) { return; } } diff --git a/ui/vnc.c b/ui/vnc.c index 4100d6e404..0354d30168 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -3795,6 +3795,7 @@ static int vnc_display_listen(VncDisplay *vd, =20 void vnc_display_open(const char *id, Error **errp) { + ERRP_AUTO_PROPAGATE(); VncDisplay *vd =3D vnc_display_find(id); QemuOpts *opts =3D qemu_opts_find(&qemu_vnc_opts, id); SocketAddress **saddr =3D NULL, **wsaddr =3D NULL; @@ -4008,11 +4009,9 @@ void vnc_display_open(const char *id, Error **errp) device_id =3D qemu_opt_get(opts, "display"); if (device_id) { int head =3D qemu_opt_get_number(opts, "head", 0); - Error *err =3D NULL; =20 - con =3D qemu_console_lookup_by_device_name(device_id, head, &err); - if (err) { - error_propagate(errp, err); + con =3D qemu_console_lookup_by_device_name(device_id, head, errp); + if (*errp) { goto fail; } } else { @@ -4106,18 +4105,16 @@ QemuOpts *vnc_parse(const char *str, Error **errp) =20 int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); char *id =3D (char *)qemu_opts_id(opts); =20 assert(id); - vnc_display_init(id, &local_err); - if (local_err) { - error_propagate(errp, local_err); + vnc_display_init(id, errp); + if (*errp) { return -1; } - vnc_display_open(id, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + vnc_display_open(id, errp); + if (*errp) { return -1; } return 0; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813745; cv=none; d=zoho.com; s=zohoarc; b=QPYn69/E9zw3h8rVgUBWPdCiZONCb3tpYItHXo6xCrkZa177WCkMnwbSTTVSrLZAF+dbid/9m1lg1BxCWFoN+FpgEoN21VSf/UfgbhNP9wgzDQn+trpvmsMG082tvhWSn83Uuj0PvfQQMlQ4s8KxEivtg1hL4WLQCnVfXf31JPM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813745; h=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=P91owZJMHvzFTPO55S1Y7LAceVJ6BgmVGi2AMAop30s=; b=Kpd7kkrpiL6zC4vHotXo5kGnF1TnLEuzO7zXdzra5verysufxw7PFVISOOxq+dAOIraLX8pTVedBc9SrALGX20ZZYpR9+yldSdWOah8rmpIEqFK5af99H9c3/e9e8KISogqad/ehGPwOLRj2MxkKigReOAf6tTAQmC/iIQB5Cw8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813745454182.0133109080275; Fri, 11 Oct 2019 10:09:05 -0700 (PDT) Received: from localhost ([::1]:54384 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyPW-0007EY-Tr for importer@patchew.org; Fri, 11 Oct 2019 13:09:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36719) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR5-0006VR-8m for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR3-0004ge-5B for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:35 -0400 Received: from relay.sw.ru ([185.231.240.75]:48336) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR2-0004OA-Tz for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:33 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQr-0003XG-JP; Fri, 11 Oct 2019 19:06:21 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 075/126] Main loop: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:01 +0300 Message-Id: <20191011160552.22907-76-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Paolo Bonzini , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- util/main-loop.c | 5 ++--- vl.c | 14 ++++++-------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/util/main-loop.c b/util/main-loop.c index e3eaa55866..fdd7f50fc8 100644 --- a/util/main-loop.c +++ b/util/main-loop.c @@ -145,9 +145,9 @@ static GArray *gpollfds; =20 int qemu_init_main_loop(Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; GSource *src; - Error *local_error =3D NULL; =20 init_clocks(qemu_timer_notify_cb); =20 @@ -156,9 +156,8 @@ int qemu_init_main_loop(Error **errp) return ret; } =20 - qemu_aio_context =3D aio_context_new(&local_error); + qemu_aio_context =3D aio_context_new(errp); if (!qemu_aio_context) { - error_propagate(errp, local_error); return -EMFILE; } qemu_notify_bh =3D qemu_bh_new(notify_event_cb, NULL); diff --git a/vl.c b/vl.c index 002bf4919e..7499ff5691 100644 --- a/vl.c +++ b/vl.c @@ -2213,11 +2213,10 @@ static int device_init_func(void *opaque, QemuOpts = *opts, Error **errp) =20 static int chardev_init_func(void *opaque, QemuOpts *opts, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 - if (!qemu_chr_new_from_opts(opts, NULL, &local_err)) { - if (local_err) { - error_propagate(errp, local_err); + if (!qemu_chr_new_from_opts(opts, NULL, errp)) { + if (*errp) { return -1; } exit(0); @@ -2613,8 +2612,8 @@ static int machine_set_property(void *opaque, const char *name, const char *value, Error **errp) { + ERRP_AUTO_PROPAGATE(); Object *obj =3D OBJECT(opaque); - Error *local_err =3D NULL; char *p, *qom_name; =20 if (strcmp(name, "type") =3D=3D 0) { @@ -2628,11 +2627,10 @@ static int machine_set_property(void *opaque, } } =20 - object_property_parse(obj, value, qom_name, &local_err); + object_property_parse(obj, value, qom_name, errp); g_free(qom_name); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return -1; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814112; cv=none; d=zoho.com; s=zohoarc; b=QGwYNeUOU7NwSJLLFhhKBeMAuxS8jhliYSy1KV8IHWm0b0qqwiEpNAJEEVn2sZZ8OaT8soLSiW8mKcZj2TXqEeC2vFJ+sTKZFQM7tvIBLI2XQQFq1yt1VVeWzyQwRYdw98HnaqAbdJTkLqz8G8yCg/Nve56BHCx0DiIGUMs8yFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814112; h=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=6EpxRl8mGtuLZRdXb4berIOfTM4OEKzGnnnpZsM9w7A=; b=aNq//MYcbRIhxmLtwuj/OQHHAxe7rllxpr82E0LYndep69nf+Tue6Wdu0rPIj1HXKcYx5+Emu6g1kdXw9SfpQcELgqUkpuqHIWd4+ZF9tn/ROYokesg9BMfdmZv/eMnwndaq3kyir6hC2KuIzIUmoPaKNen8tRJo9ApQDRFXRiU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814112316451.2912135726448; Fri, 11 Oct 2019 10:15:12 -0700 (PDT) Received: from localhost ([::1]:54464 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyVQ-0005ur-2L for importer@patchew.org; Fri, 11 Oct 2019 13:15:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36736) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR5-0006WB-Lw for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR3-0004hu-OL for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:35 -0400 Received: from relay.sw.ru ([185.231.240.75]:48350) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR3-0004Ok-Ev for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:33 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQr-0003XG-QI; Fri, 11 Oct 2019 19:06:21 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 076/126] Human Monitor (HMP): introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:02 +0300 Message-Id: <20191011160552.22907-77-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, "Dr. David Alan Gilbert" , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- monitor/misc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/monitor/misc.c b/monitor/misc.c index aef16f6cfb..4c658884f4 100644 --- a/monitor/misc.c +++ b/monitor/misc.c @@ -1775,20 +1775,19 @@ void monitor_fdset_dup_fd_remove(int dup_fd) =20 int monitor_fd_param(Monitor *mon, const char *fdname, Error **errp) { + ERRP_AUTO_PROPAGATE(); int fd; - Error *local_err =3D NULL; =20 if (!qemu_isdigit(fdname[0]) && mon) { - fd =3D monitor_get_fd(mon, fdname, &local_err); + fd =3D monitor_get_fd(mon, fdname, errp); } else { fd =3D qemu_parse_fd(fdname); if (fd =3D=3D -1) { - error_setg(&local_err, "Invalid file descriptor number '%s'", + error_setg(errp, "Invalid file descriptor number '%s'", fdname); } } - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { assert(fd =3D=3D -1); } else { assert(fd !=3D -1); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812690; cv=none; d=zoho.com; s=zohoarc; b=k2f0Rqe4pqvWTisZfO1GL5zJHQ2oRqtS/J/cYxOMz2PVNTF0bno49D9HwQiR1y/S1KL+c14VWHc5MXL1wxu8War/jn2E2OcFkkc2tJm7gyDkiuPwSGEzwag6+BWdry0MbN+orM0LE4yuOjxvA8nEwMw+FXId0T9l7aFBr7a8cZg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812690; h=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=W6zBXOewXMD0TULAdMuHHPlvXgRqdftpbWHi2daSQMQ=; b=gUSCkEbaHw5yNQv55AekIF9wbNWcKPNebOsGnjW1Z4oHmHX7Uifbhiofb0yaoxvnrUHZpvjmETgn1xvXENXsEvTR2UTkIEEzXX6rn6mntUySgnOUYa+aDKdeMRh+JBBZTlrHXErYQaWka8UAWPiunmjdObMIIp0pdmv5jOqpxhM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812690717684.2521915304383; Fri, 11 Oct 2019 09:51:30 -0700 (PDT) Received: from localhost ([::1]:54174 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy8W-00087g-Vr for importer@patchew.org; Fri, 11 Oct 2019 12:51:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36797) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR7-0006Yz-8W for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR4-0004iJ-1V for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:37 -0400 Received: from relay.sw.ru ([185.231.240.75]:48356) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR3-0004Ou-Kb for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:33 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQs-0003XG-8S; Fri, 11 Oct 2019 19:06:22 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 077/126] net: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:03 +0300 Message-Id: <20191011160552.22907-78-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Jason Wang , armbru@redhat.com, Vincenzo Maffione , Greg Kurz , Giuseppe Lettieri , Luigi Rizzo Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- net/can/can_host.c | 7 +++---- net/dump.c | 15 ++++++--------- net/filter-buffer.c | 15 ++++++--------- net/filter.c | 7 +++---- net/net.c | 41 +++++++++++++++++---------------------- net/netmap.c | 7 +++---- net/tap.c | 47 ++++++++++++++++++--------------------------- 7 files changed, 58 insertions(+), 81 deletions(-) diff --git a/net/can/can_host.c b/net/can/can_host.c index 1dfaf0ced0..ddbfdb8bac 100644 --- a/net/can/can_host.c +++ b/net/can/can_host.c @@ -50,12 +50,11 @@ static void can_host_disconnect(CanHostState *ch) =20 static void can_host_connect(CanHostState *ch, Error **errp) { + ERRP_AUTO_PROPAGATE(); CanHostClass *chc =3D CAN_HOST_GET_CLASS(ch); - Error *local_err =3D NULL; =20 - chc->connect(ch, &local_err); - if (local_err) { - error_propagate(errp, local_err); + chc->connect(ch, errp); + if (*errp) { return; } =20 diff --git a/net/dump.c b/net/dump.c index 23b3628dde..57d665b10d 100644 --- a/net/dump.c +++ b/net/dump.c @@ -191,23 +191,20 @@ static void filter_dump_get_maxlen(Object *obj, Visit= or *v, const char *name, static void filter_dump_set_maxlen(Object *obj, Visitor *v, const char *na= me, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); NetFilterDumpState *nfds =3D FILTER_DUMP(obj); - Error *local_err =3D NULL; uint32_t value; =20 - visit_type_uint32(v, name, &value, &local_err); - if (local_err) { - goto out; + visit_type_uint32(v, name, &value, errp); + if (*errp) { + return; } if (value =3D=3D 0) { - error_setg(&local_err, "Property '%s.%s' doesn't take value '%u'", + error_setg(errp, "Property '%s.%s' doesn't take value '%u'", object_get_typename(obj), name, value); - goto out; + return; } nfds->maxlen =3D value; - -out: - error_propagate(errp, local_err); } =20 static char *file_dump_get_filename(Object *obj, Error **errp) diff --git a/net/filter-buffer.c b/net/filter-buffer.c index 88da78f821..ac798ba421 100644 --- a/net/filter-buffer.c +++ b/net/filter-buffer.c @@ -169,23 +169,20 @@ static void filter_buffer_set_interval(Object *obj, V= isitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); FilterBufferState *s =3D FILTER_BUFFER(obj); - Error *local_err =3D NULL; uint32_t value; =20 - visit_type_uint32(v, name, &value, &local_err); - if (local_err) { - goto out; + visit_type_uint32(v, name, &value, errp); + if (*errp) { + return; } if (!value) { - error_setg(&local_err, "Property '%s.%s' requires a positive value= ", + error_setg(errp, "Property '%s.%s' requires a positive value", object_get_typename(obj), name); - goto out; + return; } s->interval =3D value; - -out: - error_propagate(errp, local_err); } =20 static void filter_buffer_init(Object *obj) diff --git a/net/filter.c b/net/filter.c index 4b932e79f9..7d5e457db0 100644 --- a/net/filter.c +++ b/net/filter.c @@ -191,11 +191,11 @@ static void netfilter_init(Object *obj) =20 static void netfilter_complete(UserCreatable *uc, Error **errp) { + ERRP_AUTO_PROPAGATE(); NetFilterState *nf =3D NETFILTER(uc); NetClientState *ncs[MAX_QUEUE_NUM]; NetFilterClass *nfc =3D NETFILTER_GET_CLASS(uc); int queues; - Error *local_err =3D NULL; =20 if (!nf->netdev_id) { error_setg(errp, "Parameter 'netdev' is required"); @@ -222,9 +222,8 @@ static void netfilter_complete(UserCreatable *uc, Error= **errp) nf->netdev =3D ncs[0]; =20 if (nfc->setup) { - nfc->setup(nf, &local_err); - if (local_err) { - error_propagate(errp, local_err); + nfc->setup(nf, errp); + if (*errp) { return; } } diff --git a/net/net.c b/net/net.c index 9e93c3f8a1..9bad414840 100644 --- a/net/net.c +++ b/net/net.c @@ -1098,9 +1098,9 @@ static void show_netdevs(void) =20 static int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); gchar **substrings =3D NULL; void *object =3D NULL; - Error *err =3D NULL; int ret =3D -1; Visitor *v =3D opts_visitor_new(opts); =20 @@ -1143,13 +1143,13 @@ static int net_client_init(QemuOpts *opts, bool is_= netdev, Error **errp) } =20 if (is_netdev) { - visit_type_Netdev(v, NULL, (Netdev **)&object, &err); + visit_type_Netdev(v, NULL, (Netdev **)&object, errp); } else { - visit_type_NetLegacy(v, NULL, (NetLegacy **)&object, &err); + visit_type_NetLegacy(v, NULL, (NetLegacy **)&object, errp); } =20 - if (!err) { - ret =3D net_client_init1(object, is_netdev, &err); + if (!*errp) { + ret =3D net_client_init1(object, is_netdev, errp); } =20 if (is_netdev) { @@ -1159,7 +1159,6 @@ static int net_client_init(QemuOpts *opts, bool is_ne= tdev, Error **errp) } =20 out: - error_propagate(errp, err); g_strfreev(substrings); visit_free(v); return ret; @@ -1172,28 +1171,25 @@ void netdev_add(QemuOpts *opts, Error **errp) =20 void qmp_netdev_add(QDict *qdict, QObject **ret, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); QemuOptsList *opts_list; QemuOpts *opts; =20 - opts_list =3D qemu_find_opts_err("netdev", &local_err); - if (local_err) { - goto out; + opts_list =3D qemu_find_opts_err("netdev", errp); + if (*errp) { + return; } =20 - opts =3D qemu_opts_from_qdict(opts_list, qdict, &local_err); - if (local_err) { - goto out; + opts =3D qemu_opts_from_qdict(opts_list, qdict, errp); + if (*errp) { + return; } =20 - netdev_add(opts, &local_err); - if (local_err) { + netdev_add(opts, errp); + if (*errp) { qemu_opts_del(opts); - goto out; + return; } - -out: - error_propagate(errp, local_err); } =20 void qmp_netdev_del(const char *id, Error **errp) @@ -1348,17 +1344,16 @@ void hmp_info_network(Monitor *mon, const QDict *qd= ict) =20 void colo_notify_filters_event(int event, Error **errp) { + ERRP_AUTO_PROPAGATE(); NetClientState *nc; NetFilterState *nf; NetFilterClass *nfc =3D NULL; - Error *local_err =3D NULL; =20 QTAILQ_FOREACH(nc, &net_clients, next) { QTAILQ_FOREACH(nf, &nc->filters, next) { nfc =3D NETFILTER_GET_CLASS(OBJECT(nf)); - nfc->handle_event(nf, event, &local_err); - if (local_err) { - error_propagate(errp, local_err); + nfc->handle_event(nf, event, errp); + if (*errp) { return; } } diff --git a/net/netmap.c b/net/netmap.c index 350f097f91..42982445be 100644 --- a/net/netmap.c +++ b/net/netmap.c @@ -406,15 +406,14 @@ static NetClientInfo net_netmap_info =3D { int net_init_netmap(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { + ERRP_AUTO_PROPAGATE(); const NetdevNetmapOptions *netmap_opts =3D &netdev->u.netmap; struct nm_desc *nmd; NetClientState *nc; - Error *err =3D NULL; NetmapState *s; =20 - nmd =3D netmap_open(netmap_opts, &err); - if (err) { - error_propagate(errp, err); + nmd =3D netmap_open(netmap_opts, errp); + if (*errp) { return -1; } /* Create the object. */ diff --git a/net/tap.c b/net/tap.c index 6207f61f84..b03146605d 100644 --- a/net/tap.c +++ b/net/tap.c @@ -610,7 +610,7 @@ static int net_tap_init(const NetdevTapOptions *tap, in= t *vnet_hdr, const char *setup_script, char *ifname, size_t ifname_sz, int mq_required, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); int fd, vnet_hdr_required; =20 if (tap->has_vnet_hdr) { @@ -630,9 +630,8 @@ static int net_tap_init(const NetdevTapOptions *tap, in= t *vnet_hdr, if (setup_script && setup_script[0] !=3D '\0' && strcmp(setup_script, "no") !=3D 0) { - launch_script(setup_script, ifname, fd, &err); - if (err) { - error_propagate(errp, err); + launch_script(setup_script, ifname, fd, errp); + if (*errp) { close(fd); return -1; } @@ -649,13 +648,12 @@ static void net_init_tap_one(const NetdevTapOptions *= tap, NetClientState *peer, const char *downscript, const char *vhostfdna= me, int vnet_hdr, int fd, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); TAPState *s =3D net_tap_fd_init(peer, model, name, fd, vnet_hdr); int vhostfd; =20 - tap_set_sndbuf(s->fd, tap, &err); - if (err) { - error_propagate(errp, err); + tap_set_sndbuf(s->fd, tap, errp); + if (*errp) { return; } =20 @@ -689,12 +687,11 @@ static void net_init_tap_one(const NetdevTapOptions *= tap, NetClientState *peer, } =20 if (vhostfdname) { - vhostfd =3D monitor_fd_param(cur_mon, vhostfdname, &err); + vhostfd =3D monitor_fd_param(cur_mon, vhostfdname, errp); if (vhostfd =3D=3D -1) { if (tap->has_vhostforce && tap->vhostforce) { - error_propagate(errp, err); } else { - warn_report_err(err); + warn_report_errp(errp); } return; } @@ -758,12 +755,12 @@ static int get_fds(char *str, char *fds[], int max) int net_init_tap(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp) { + ERRP_AUTO_PROPAGATE(); const NetdevTapOptions *tap; int fd, vnet_hdr =3D 0, i =3D 0, queues; /* for the no-fd, no-helper case */ const char *script =3D NULL; /* suppress wrong "uninit'd use" gcc warn= ing */ const char *downscript =3D NULL; - Error *err =3D NULL; const char *vhostfdname; char ifname[128]; =20 @@ -789,9 +786,8 @@ int net_init_tap(const Netdev *netdev, const char *name, return -1; } =20 - fd =3D monitor_fd_param(cur_mon, tap->fd, &err); + fd =3D monitor_fd_param(cur_mon, tap->fd, errp); if (fd =3D=3D -1) { - error_propagate(errp, err); return -1; } =20 @@ -801,9 +797,8 @@ int net_init_tap(const Netdev *netdev, const char *name, =20 net_init_tap_one(tap, peer, "tap", name, NULL, script, downscript, - vhostfdname, vnet_hdr, fd, &err); - if (err) { - error_propagate(errp, err); + vhostfdname, vnet_hdr, fd, errp); + if (*errp) { return -1; } } else if (tap->has_fds) { @@ -836,9 +831,8 @@ int net_init_tap(const Netdev *netdev, const char *name, } =20 for (i =3D 0; i < nfds; i++) { - fd =3D monitor_fd_param(cur_mon, fds[i], &err); + fd =3D monitor_fd_param(cur_mon, fds[i], errp); if (fd =3D=3D -1) { - error_propagate(errp, err); ret =3D -1; goto free_fail; } @@ -857,9 +851,8 @@ int net_init_tap(const Netdev *netdev, const char *name, net_init_tap_one(tap, peer, "tap", name, ifname, script, downscript, tap->has_vhostfds ? vhost_fds[i] : NULL, - vnet_hdr, fd, &err); - if (err) { - error_propagate(errp, err); + vnet_hdr, fd, errp); + if (*errp) { ret =3D -1; goto free_fail; } @@ -896,9 +889,8 @@ free_fail: =20 net_init_tap_one(tap, peer, "bridge", name, ifname, script, downscript, vhostfdname, - vnet_hdr, fd, &err); - if (err) { - error_propagate(errp, err); + vnet_hdr, fd, errp); + if (*errp) { close(fd); return -1; } @@ -935,9 +927,8 @@ free_fail: net_init_tap_one(tap, peer, "tap", name, ifname, i >=3D 1 ? "no" : script, i >=3D 1 ? "no" : downscript, - vhostfdname, vnet_hdr, fd, &err); - if (err) { - error_propagate(errp, err); + vhostfdname, vnet_hdr, fd, errp); + if (*errp) { close(fd); return -1; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814299; cv=none; d=zoho.com; s=zohoarc; b=RU7QA4eSxEQbI+mCbV6MwccgbaI1j3jHaa/g5/65WEZOQKwPrV6qsuRGC+cauSU5faX5PmMlcyVxcJ6yrah6Y/n2nNwkdLEAB0DNrXyOx1+n4cC6bcQB4gzSvGqjsr4YElyLxXoNC0BKRy1BywU/FA9zjd80f7C7pr6iMHl8iEw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814299; h=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=XAabjFwVnyFKAucCg6UHhmwUyE20B4zI5EYwTfAMCCU=; b=mXk/Ud68gJmeTXOnWn3cFz6iRy57OgF1wLhDjpsmH2AllG0hHI0yheaf1zv7gzGStam683LQWisEJwQQXgmdYenZogdCClqPzLIZFTm5vCfTsN6BpjBNAbvnDKNM9xsf1RT4EHlvxNFrnNd+yVrFJpywQd8L8Xg7OpKpndhaDsw= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081429978188.1939060050895; Fri, 11 Oct 2019 10:18:19 -0700 (PDT) Received: from localhost ([::1]:54528 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyYU-00012B-0V for importer@patchew.org; Fri, 11 Oct 2019 13:18:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36804) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR7-0006ZK-Ez for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR4-0004ie-Bi for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:37 -0400 Received: from relay.sw.ru ([185.231.240.75]:48362) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR4-0004Pf-3f for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:34 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQs-0003XG-GX; Fri, 11 Oct 2019 19:06:22 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 078/126] hostmem: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:04 +0300 Message-Id: <20191011160552.22907-79-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Eduardo Habkost , armbru@redhat.com, Greg Kurz , Igor Mammedov Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- backends/hostmem-file.c | 21 ++++++++------------ backends/hostmem-memfd.c | 18 ++++++++---------- backends/hostmem.c | 41 ++++++++++++++++++---------------------- 3 files changed, 34 insertions(+), 46 deletions(-) diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c index be64020746..4d03b9f33a 100644 --- a/backends/hostmem-file.c +++ b/backends/hostmem-file.c @@ -116,25 +116,22 @@ static void file_memory_backend_set_align(Object *o, = Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); HostMemoryBackend *backend =3D MEMORY_BACKEND(o); HostMemoryBackendFile *fb =3D MEMORY_BACKEND_FILE(o); - Error *local_err =3D NULL; uint64_t val; =20 if (host_memory_backend_mr_inited(backend)) { - error_setg(&local_err, "cannot change property '%s' of %s", + error_setg(errp, "cannot change property '%s' of %s", name, object_get_typename(o)); - goto out; + return; } =20 - visit_type_size(v, name, &val, &local_err); - if (local_err) { - goto out; + visit_type_size(v, name, &val, errp); + if (*errp) { + return; } fb->align =3D val; - - out: - error_propagate(errp, local_err); } =20 static bool file_memory_backend_get_pmem(Object *o, Error **errp) @@ -144,6 +141,7 @@ static bool file_memory_backend_get_pmem(Object *o, Err= or **errp) =20 static void file_memory_backend_set_pmem(Object *o, bool value, Error **er= rp) { + ERRP_AUTO_PROPAGATE(); HostMemoryBackend *backend =3D MEMORY_BACKEND(o); HostMemoryBackendFile *fb =3D MEMORY_BACKEND_FILE(o); =20 @@ -156,13 +154,10 @@ static void file_memory_backend_set_pmem(Object *o, b= ool value, Error **errp) =20 #ifndef CONFIG_LIBPMEM if (value) { - Error *local_err =3D NULL; - - error_setg(&local_err, + error_setg(errp, "Lack of libpmem support while setting the 'pmem=3Don'" " of %s. We can't ensure data persistence.", object_get_typename(o)); - error_propagate(errp, local_err); return; } #endif diff --git a/backends/hostmem-memfd.c b/backends/hostmem-memfd.c index 26070b425e..1f0677e5b4 100644 --- a/backends/hostmem-memfd.c +++ b/backends/hostmem-memfd.c @@ -77,27 +77,25 @@ static void memfd_backend_set_hugetlbsize(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); HostMemoryBackendMemfd *m =3D MEMORY_BACKEND_MEMFD(obj); - Error *local_err =3D NULL; uint64_t value; =20 if (host_memory_backend_mr_inited(MEMORY_BACKEND(obj))) { - error_setg(&local_err, "cannot change property value"); - goto out; + error_setg(errp, "cannot change property value"); + return; } =20 - visit_type_size(v, name, &value, &local_err); - if (local_err) { - goto out; + visit_type_size(v, name, &value, errp); + if (*errp) { + return; } if (!value) { - error_setg(&local_err, "Property '%s.%s' doesn't take value '%" + error_setg(errp, "Property '%s.%s' doesn't take value '%" PRIu64 "'", object_get_typename(obj), name, value); - goto out; + return; } m->hugetlbsize =3D value; -out: - error_propagate(errp, local_err); } =20 static void diff --git a/backends/hostmem.c b/backends/hostmem.c index 6d333dc23c..7a3dd9d69b 100644 --- a/backends/hostmem.c +++ b/backends/hostmem.c @@ -53,29 +53,27 @@ static void host_memory_backend_set_size(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); HostMemoryBackend *backend =3D MEMORY_BACKEND(obj); - Error *local_err =3D NULL; uint64_t value; =20 if (host_memory_backend_mr_inited(backend)) { - error_setg(&local_err, "cannot change property %s of %s ", + error_setg(errp, "cannot change property %s of %s ", name, object_get_typename(obj)); - goto out; + return; } =20 - visit_type_size(v, name, &value, &local_err); - if (local_err) { - goto out; + visit_type_size(v, name, &value, errp); + if (*errp) { + return; } if (!value) { - error_setg(&local_err, + error_setg(errp, "property '%s' of %s doesn't take value '%" PRIu64 "'", name, object_get_typename(obj), value); - goto out; + return; } backend->size =3D value; -out: - error_propagate(errp, local_err); } =20 static void @@ -221,7 +219,7 @@ static bool host_memory_backend_get_prealloc(Object *ob= j, Error **errp) static void host_memory_backend_set_prealloc(Object *obj, bool value, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); HostMemoryBackend *backend =3D MEMORY_BACKEND(obj); MachineState *ms =3D MACHINE(qdev_get_machine()); =20 @@ -243,9 +241,8 @@ static void host_memory_backend_set_prealloc(Object *ob= j, bool value, void *ptr =3D memory_region_get_ram_ptr(&backend->mr); uint64_t sz =3D memory_region_size(&backend->mr); =20 - os_mem_prealloc(fd, ptr, sz, ms->smp.cpus, &local_err); - if (local_err) { - error_propagate(errp, local_err); + os_mem_prealloc(fd, ptr, sz, ms->smp.cpus, errp); + if (*errp) { return; } backend->prealloc =3D true; @@ -311,17 +308,17 @@ size_t host_memory_backend_pagesize(HostMemoryBackend= *memdev) static void host_memory_backend_memory_complete(UserCreatable *uc, Error **errp) { + ERRP_AUTO_PROPAGATE(); HostMemoryBackend *backend =3D MEMORY_BACKEND(uc); HostMemoryBackendClass *bc =3D MEMORY_BACKEND_GET_CLASS(uc); MachineState *ms =3D MACHINE(qdev_get_machine()); - Error *local_err =3D NULL; void *ptr; uint64_t sz; =20 if (bc->alloc) { - bc->alloc(backend, &local_err); - if (local_err) { - goto out; + bc->alloc(backend, errp); + if (*errp) { + return; } =20 ptr =3D memory_region_get_ram_ptr(&backend->mr); @@ -378,14 +375,12 @@ host_memory_backend_memory_complete(UserCreatable *uc= , Error **errp) */ if (backend->prealloc) { os_mem_prealloc(memory_region_get_fd(&backend->mr), ptr, sz, - ms->smp.cpus, &local_err); - if (local_err) { - goto out; + ms->smp.cpus, errp); + if (*errp) { + return; } } } -out: - error_propagate(errp, local_err); } =20 static bool --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812388; cv=none; d=zoho.com; s=zohoarc; b=LdbwPq4myjqvxlPwFTLpJAJDTgwhRJ0gCbsccnjRArMQH44Sq3wcI4mir7+RM8KHmKTNHeMfrfFNR8xt0Fdm3eSb7fMIW4KC6wtX0/kn7zH0bjJtegG/pyezhrpF1YGxcY2ECrzAK5wMWrQ+8U6xgnHIX6xhT3fEKREWyCafUm0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812388; h=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=DmMaP1gpbCb07KoAYVx4jluOkyPO21AxWYpovH093sk=; b=b4666WqjhOJb8uGMwApRkwV2ZMbFMW2wrIxTdisyDwShjo2eAZ1a19VNkBQD7BIteMyQknZ48+O91WPBYAWlCp9pQBU7zzqZe3Lhm0slyV43Da/BRGbyiItHbGKtdRfUDcXpjNoniV0JxsS0r9kj0nmbP0k5BIQqphj+OsGiN+g= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812388009973.4404829412713; Fri, 11 Oct 2019 09:46:28 -0700 (PDT) Received: from localhost ([::1]:54118 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy3e-0002KW-4A for importer@patchew.org; Fri, 11 Oct 2019 12:46:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36783) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR7-0006YZ-2D for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR4-0004jG-Mt for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:36 -0400 Received: from relay.sw.ru ([185.231.240.75]:48376) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR4-0004QH-Et for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:34 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQs-0003XG-Vh; Fri, 11 Oct 2019 19:06:23 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 079/126] cryptodev: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:05 +0300 Message-Id: <20191011160552.22907-80-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , "Gonglei \(Arei\)" , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- backends/cryptodev-vhost-user.c | 10 ++++------ backends/cryptodev.c | 14 ++++++-------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/backends/cryptodev-vhost-user.c b/backends/cryptodev-vhost-use= r.c index b344283940..8bab46fd77 100644 --- a/backends/cryptodev-vhost-user.c +++ b/backends/cryptodev-vhost-user.c @@ -177,17 +177,16 @@ static void cryptodev_vhost_user_event(void *opaque, = int event) static void cryptodev_vhost_user_init( CryptoDevBackend *backend, Error **errp) { + ERRP_AUTO_PROPAGATE(); int queues =3D backend->conf.peers.queues; size_t i; - Error *local_err =3D NULL; Chardev *chr; CryptoDevBackendClient *cc; CryptoDevBackendVhostUser *s =3D CRYPTODEV_BACKEND_VHOST_USER(backend); =20 - chr =3D cryptodev_vhost_claim_chardev(s, &local_err); - if (local_err) { - error_propagate(errp, local_err); + chr =3D cryptodev_vhost_claim_chardev(s, errp); + if (*errp) { return; } =20 @@ -204,8 +203,7 @@ static void cryptodev_vhost_user_init( backend->conf.peers.ccs[i] =3D cc; =20 if (i =3D=3D 0) { - if (!qemu_chr_fe_init(&s->chr, chr, &local_err)) { - error_propagate(errp, local_err); + if (!qemu_chr_fe_init(&s->chr, chr, errp)) { return; } } diff --git a/backends/cryptodev.c b/backends/cryptodev.c index 5a9735684e..6fd039567d 100644 --- a/backends/cryptodev.c +++ b/backends/cryptodev.c @@ -153,22 +153,20 @@ static void cryptodev_backend_set_queues(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); CryptoDevBackend *backend =3D CRYPTODEV_BACKEND(obj); - Error *local_err =3D NULL; uint32_t value; =20 - visit_type_uint32(v, name, &value, &local_err); - if (local_err) { - goto out; + visit_type_uint32(v, name, &value, errp); + if (*errp) { + return; } if (!value) { - error_setg(&local_err, "Property '%s.%s' doesn't take value '%" + error_setg(errp, "Property '%s.%s' doesn't take value '%" PRIu32 "'", object_get_typename(obj), name, value); - goto out; + return; } backend->conf.peers.queues =3D value; -out: - error_propagate(errp, local_err); } =20 static void --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814633; cv=none; d=zoho.com; s=zohoarc; b=f1xg4tX6ixPNufVYzITu2E5OjgO5AXNBkFc22Mq6SWEn+dWQrzVAhL4jPxbfHlFeiLmw8cqF+tXyWn4Y4ObF23A37RNpxLEoP8kl4YiHhhf2BjnSaU3PaXb8J7GbvHcUnFXSJtT2M3M4Z35DY8SF8ezdplm5YxiDnj+7GCVufUg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814633; h=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=V6flM4mxi2XJG2f2RXPFwbqrBtMirCtMJFCrxJK+0DM=; b=EKwrcch38WjLEKv4WQQJEU6R24li3wttD95LUA56/Moqr2N1GCOYpFTUHiuXfPn2ZBUNb37zQ/hOVvsLLQ47EUmZ0QoQBwVUMgM8epmQ7Q8kCxkBhSIOtAXKCVF6sORS54H/DmcMMnZU+mdJUh+UyW1OvvVmRfemM/3pYmY6c3w= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081463347755.391962351970164; Fri, 11 Oct 2019 10:23:53 -0700 (PDT) Received: from localhost ([::1]:54602 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyds-000096-3D for importer@patchew.org; Fri, 11 Oct 2019 13:23:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36836) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR8-0006aw-GF for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR5-0004ja-0h for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:38 -0400 Received: from relay.sw.ru ([185.231.240.75]:48386) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR4-0004Qo-MV for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:34 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQt-0003XG-Av; Fri, 11 Oct 2019 19:06:23 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 080/126] QAPI: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:06 +0300 Message-Id: <20191011160552.22907-81-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Michael Roth , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- qapi/qapi-visit-core.c | 56 ++++++++++++++++--------------------- qapi/qmp-dispatch.c | 7 ++--- qapi/string-input-visitor.c | 7 ++--- 3 files changed, 30 insertions(+), 40 deletions(-) diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c index 5365561b07..f8c5be9130 100644 --- a/qapi/qapi-visit-core.c +++ b/qapi/qapi-visit-core.c @@ -39,18 +39,17 @@ void visit_free(Visitor *v) void visit_start_struct(Visitor *v, const char *name, void **obj, size_t size, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 trace_visit_start_struct(v, name, obj, size); if (obj) { assert(size); assert(!(v->type & VISITOR_OUTPUT) || *obj); } - v->start_struct(v, name, obj, size, &err); + v->start_struct(v, name, obj, size, errp); if (obj && (v->type & VISITOR_INPUT)) { - assert(!err !=3D !*obj); + assert(!*errp !=3D !*obj); } - error_propagate(errp, err); } =20 void visit_check_struct(Visitor *v, Error **errp) @@ -70,15 +69,14 @@ void visit_end_struct(Visitor *v, void **obj) void visit_start_list(Visitor *v, const char *name, GenericList **list, size_t size, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 assert(!list || size >=3D sizeof(GenericList)); trace_visit_start_list(v, name, list, size); - v->start_list(v, name, list, size, &err); + v->start_list(v, name, list, size, errp); if (list && (v->type & VISITOR_INPUT)) { - assert(!(err && *list)); + assert(!(*errp && *list)); } - error_propagate(errp, err); } =20 GenericList *visit_next_list(Visitor *v, GenericList *tail, size_t size) @@ -106,18 +104,17 @@ void visit_start_alternate(Visitor *v, const char *na= me, GenericAlternate **obj, size_t size, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 assert(obj && size >=3D sizeof(GenericAlternate)); assert(!(v->type & VISITOR_OUTPUT) || *obj); trace_visit_start_alternate(v, name, obj, size); if (v->start_alternate) { - v->start_alternate(v, name, obj, size, &err); + v->start_alternate(v, name, obj, size, errp); } if (v->type & VISITOR_INPUT) { - assert(v->start_alternate && !err !=3D !*obj); + assert(v->start_alternate && !*errp !=3D !*obj); } - error_propagate(errp, err); } =20 void visit_end_alternate(Visitor *v, void **obj) @@ -152,12 +149,11 @@ void visit_type_int(Visitor *v, const char *name, int= 64_t *obj, Error **errp) static void visit_type_uintN(Visitor *v, uint64_t *obj, const char *name, uint64_t max, const char *type, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); uint64_t value =3D *obj; =20 - v->type_uint64(v, name, &value, &err); - if (err) { - error_propagate(errp, err); + v->type_uint64(v, name, &value, errp); + if (*errp) { } else if (value > max) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, name ? name : "null", type); @@ -211,12 +207,11 @@ static void visit_type_intN(Visitor *v, int64_t *obj,= const char *name, int64_t min, int64_t max, const char *type, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); int64_t value =3D *obj; =20 - v->type_int64(v, name, &value, &err); - if (err) { - error_propagate(errp, err); + v->type_int64(v, name, &value, errp); + if (*errp) { } else if (value < min || value > max) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, name ? name : "null", type); @@ -286,7 +281,7 @@ void visit_type_bool(Visitor *v, const char *name, bool= *obj, Error **errp) =20 void visit_type_str(Visitor *v, const char *name, char **obj, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 assert(obj); /* TODO: Fix callers to not pass NULL when they mean "", so that we @@ -294,11 +289,10 @@ void visit_type_str(Visitor *v, const char *name, cha= r **obj, Error **errp) assert(!(v->type & VISITOR_OUTPUT) || *obj); */ trace_visit_type_str(v, name, obj); - v->type_str(v, name, obj, &err); + v->type_str(v, name, obj, errp); if (v->type & VISITOR_INPUT) { - assert(!err !=3D !*obj); + assert(!*errp !=3D !*obj); } - error_propagate(errp, err); } =20 void visit_type_number(Visitor *v, const char *name, double *obj, @@ -311,16 +305,15 @@ void visit_type_number(Visitor *v, const char *name, = double *obj, =20 void visit_type_any(Visitor *v, const char *name, QObject **obj, Error **e= rrp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 assert(obj); assert(v->type !=3D VISITOR_OUTPUT || *obj); trace_visit_type_any(v, name, obj); - v->type_any(v, name, obj, &err); + v->type_any(v, name, obj, errp); if (v->type =3D=3D VISITOR_INPUT) { - assert(!err !=3D !*obj); + assert(!*errp !=3D !*obj); } - error_propagate(errp, err); } =20 void visit_type_null(Visitor *v, const char *name, QNull **obj, @@ -352,13 +345,12 @@ static void output_type_enum(Visitor *v, const char *= name, int *obj, static void input_type_enum(Visitor *v, const char *name, int *obj, const QEnumLookup *lookup, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int64_t value; char *enum_str; =20 - visit_type_str(v, name, &enum_str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &enum_str, errp); + if (*errp) { return; } =20 diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c index bc264b3c9b..205e183871 100644 --- a/qapi/qmp-dispatch.c +++ b/qapi/qmp-dispatch.c @@ -78,7 +78,7 @@ static QDict *qmp_dispatch_check_obj(const QObject *reque= st, bool allow_oob, static QObject *do_qmp_dispatch(QmpCommandList *cmds, QObject *request, bool allow_oob, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); bool oob; const char *command; QDict *args, *dict; @@ -129,9 +129,8 @@ static QObject *do_qmp_dispatch(QmpCommandList *cmds, Q= Object *request, qobject_ref(args); } =20 - cmd->fn(args, &ret, &local_err); - if (local_err) { - error_propagate(errp, local_err); + cmd->fn(args, &ret, errp); + if (*errp) { } else if (cmd->options & QCO_NO_SUCCESS_RESP) { g_assert(!ret); } else if (!ret) { diff --git a/qapi/string-input-visitor.c b/qapi/string-input-visitor.c index 9be418b6d6..ef9b9b961a 100644 --- a/qapi/string-input-visitor.c +++ b/qapi/string-input-visitor.c @@ -313,14 +313,13 @@ static void parse_type_uint64(Visitor *v, const char = *name, uint64_t *obj, static void parse_type_size(Visitor *v, const char *name, uint64_t *obj, Error **errp) { + ERRP_AUTO_PROPAGATE(); StringInputVisitor *siv =3D to_siv(v); - Error *err =3D NULL; uint64_t val; =20 assert(siv->lm =3D=3D LM_NONE); - parse_option_size(name, siv->string, &val, &err); - if (err) { - error_propagate(errp, err); + parse_option_size(name, siv->string, &val, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813482; cv=none; d=zoho.com; s=zohoarc; b=HqAjneaPAgQFInzHhzG4KAU9VV7SjziN/+BY4Rg3+rfm5NbD3gvWF1tAMEfJ+Gl2NYd6xf/3oWBjZYthu7Dq4J96ch1iGtLRCvVW88H0L845W2AfR+CPxVbPwTcYT7Gm/RvXICOOg0mNRUmvcF/3pS+JfSkierUaCvE3TQ1Iuxs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813482; h=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=DNUEp+Qg4GgmzVranKNDcMxt6d/hh+ckqaIhbsHHy5M=; b=Bh6/vmqTmo9SkIC3vutRRSFBu0GOFWWKTzuSgZHzCjThlXWaey42f4ERflluogW6UGvrZmUQcUjKKvGVZIHuz4xaeingOfTje1UloOY3SkB1sddqYfiuG1Aj82QyyCnavjaPAFWY0J9JuIKnblysRr5iBQiYm7v9Vw4ZkGWXcUI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813482489445.91266720690487; Fri, 11 Oct 2019 10:04:42 -0700 (PDT) Received: from localhost ([::1]:54326 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyLJ-0008Vm-0T for importer@patchew.org; Fri, 11 Oct 2019 13:04:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36919) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRA-0006fO-NF for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR5-0004k6-Cd for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:40 -0400 Received: from relay.sw.ru ([185.231.240.75]:48388) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR4-0004RB-Vf for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:35 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQt-0003XG-Ho; Fri, 11 Oct 2019 19:06:23 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 081/126] qga: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:07 +0300 Message-Id: <20191011160552.22907-82-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Michael Roth , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- qga/commands-posix.c | 220 +++++++++++++++++++------------------------ 1 file changed, 97 insertions(+), 123 deletions(-) diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 6dcd2d5db6..257eaaf0da 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -82,8 +82,8 @@ static void ga_wait_child(pid_t pid, int *status, Error *= *errp) =20 void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *shutdown_flag; - Error *local_err =3D NULL; pid_t pid; int status; =20 @@ -116,9 +116,8 @@ void qmp_guest_shutdown(bool has_mode, const char *mode= , Error **errp) return; } =20 - ga_wait_child(pid, &status, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ga_wait_child(pid, &status, errp); + if (*errp) { return; } =20 @@ -151,10 +150,10 @@ int64_t qmp_guest_get_time(Error **errp) =20 void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; int status; pid_t pid; - Error *local_err =3D NULL; struct timeval tv; =20 /* If user has passed a time, validate and set it. */ @@ -203,9 +202,8 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns,= Error **errp) return; } =20 - ga_wait_child(pid, &status, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ga_wait_child(pid, &status, errp); + if (*errp) { return; } =20 @@ -328,11 +326,11 @@ find_open_flag(const char *mode_str, Error **errp) static FILE * safe_open_or_create(const char *path, const char *mode, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int oflag; =20 - oflag =3D find_open_flag(mode, &local_err); - if (local_err =3D=3D NULL) { + oflag =3D find_open_flag(mode, errp); + if (*errp =3D=3D NULL) { int fd; =20 /* If the caller wants / allows creation of a new file, we impleme= nt it @@ -364,13 +362,13 @@ safe_open_or_create(const char *path, const char *mod= e, Error **errp) } =20 if (fd =3D=3D -1) { - error_setg_errno(&local_err, errno, "failed to open file '%s' " + error_setg_errno(errp, errno, "failed to open file '%s' " "(mode: '%s')", path, mode); } else { qemu_set_cloexec(fd); =20 if ((oflag & O_CREAT) && fchmod(fd, DEFAULT_NEW_FILE_MODE) =3D= =3D -1) { - error_setg_errno(&local_err, errno, "failed to set permiss= ion " + error_setg_errno(errp, errno, "failed to set permission " "0%03o on new file '%s' (mode: '%s')", (unsigned)DEFAULT_NEW_FILE_MODE, path, mo= de); } else { @@ -378,7 +376,7 @@ safe_open_or_create(const char *path, const char *mode,= Error **errp) =20 f =3D fdopen(fd, mode); if (f =3D=3D NULL) { - error_setg_errno(&local_err, errno, "failed to associa= te " + error_setg_errno(errp, errno, "failed to associate " "stdio stream with file descriptor %d= , " "file '%s' (mode: '%s')", fd, path, m= ode); } else { @@ -393,24 +391,22 @@ safe_open_or_create(const char *path, const char *mod= e, Error **errp) } } =20 - error_propagate(errp, local_err); return NULL; } =20 int64_t qmp_guest_file_open(const char *path, bool has_mode, const char *m= ode, Error **errp) { + ERRP_AUTO_PROPAGATE(); FILE *fh; - Error *local_err =3D NULL; int64_t handle; =20 if (!has_mode) { mode =3D "r"; } slog("guest-file-open called, filepath: %s, mode: %s", path, mode); - fh =3D safe_open_or_create(path, mode, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + fh =3D safe_open_or_create(path, mode, errp); + if (*errp) { return -1; } =20 @@ -563,21 +559,20 @@ struct GuestFileSeek *qmp_guest_file_seek(int64_t han= dle, int64_t offset, GuestFileWhence *whence_code, Error **errp) { + ERRP_AUTO_PROPAGATE(); GuestFileHandle *gfh =3D guest_file_handle_find(handle, errp); GuestFileSeek *seek_data =3D NULL; FILE *fh; int ret; int whence; - Error *err =3D NULL; =20 if (!gfh) { return NULL; } =20 /* We stupidly exposed 'whence':'int' in our qapi */ - whence =3D ga_parse_whence(whence_code, &err); - if (err) { - error_propagate(errp, err); + whence =3D ga_parse_whence(whence_code, errp); + if (*errp) { return NULL; } =20 @@ -1150,15 +1145,14 @@ static GuestFilesystemInfo *build_guest_fsinfo(stru= ct FsMount *mount, =20 GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error **errp) { + ERRP_AUTO_PROPAGATE(); FsMountList mounts; struct FsMount *mount; GuestFilesystemInfoList *new, *ret =3D NULL; - Error *local_err =3D NULL; =20 QTAILQ_INIT(&mounts); - build_fs_mount_list(&mounts, &local_err); - if (local_err) { - error_propagate(errp, local_err); + build_fs_mount_list(&mounts, errp); + if (*errp) { return NULL; } =20 @@ -1166,11 +1160,10 @@ GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error= **errp) g_debug("Building guest fsinfo for '%s'", mount->dirname); =20 new =3D g_malloc0(sizeof(*ret)); - new->value =3D build_guest_fsinfo(mount, &local_err); + new->value =3D build_guest_fsinfo(mount, errp); new->next =3D ret; ret =3D new; - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { qapi_free_GuestFilesystemInfoList(ret); ret =3D NULL; break; @@ -1194,11 +1187,11 @@ static const char *fsfreeze_hook_arg_string[] =3D { =20 static void execute_fsfreeze_hook(FsfreezeHookArg arg, Error **errp) { + ERRP_AUTO_PROPAGATE(); int status; pid_t pid; const char *hook; const char *arg_str =3D fsfreeze_hook_arg_string[arg]; - Error *local_err =3D NULL; =20 hook =3D ga_fsfreeze_hook(ga_state); if (!hook) { @@ -1224,9 +1217,8 @@ static void execute_fsfreeze_hook(FsfreezeHookArg arg= , Error **errp) return; } =20 - ga_wait_child(pid, &status, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ga_wait_child(pid, &status, errp); + if (*errp) { return; } =20 @@ -1267,25 +1259,23 @@ int64_t qmp_guest_fsfreeze_freeze_list(bool has_mou= ntpoints, strList *mountpoints, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret =3D 0, i =3D 0; strList *list; FsMountList mounts; struct FsMount *mount; - Error *local_err =3D NULL; int fd; =20 slog("guest-fsfreeze called"); =20 - execute_fsfreeze_hook(FSFREEZE_HOOK_FREEZE, &local_err); - if (local_err) { - error_propagate(errp, local_err); + execute_fsfreeze_hook(FSFREEZE_HOOK_FREEZE, errp); + if (*errp) { return -1; } =20 QTAILQ_INIT(&mounts); - build_fs_mount_list(&mounts, &local_err); - if (local_err) { - error_propagate(errp, local_err); + build_fs_mount_list(&mounts, errp); + if (*errp) { return -1; } =20 @@ -1358,16 +1348,15 @@ error: */ int64_t qmp_guest_fsfreeze_thaw(Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; FsMountList mounts; FsMount *mount; int fd, i =3D 0, logged; - Error *local_err =3D NULL; =20 QTAILQ_INIT(&mounts); - build_fs_mount_list(&mounts, &local_err); - if (local_err) { - error_propagate(errp, local_err); + build_fs_mount_list(&mounts, errp); + if (*errp) { return 0; } =20 @@ -1433,6 +1422,7 @@ static void guest_fsfreeze_cleanup(void) GuestFilesystemTrimResponse * qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **errp) { + ERRP_AUTO_PROPAGATE(); GuestFilesystemTrimResponse *response; GuestFilesystemTrimResultList *list; GuestFilesystemTrimResult *result; @@ -1440,15 +1430,13 @@ qmp_guest_fstrim(bool has_minimum, int64_t minimum,= Error **errp) FsMountList mounts; struct FsMount *mount; int fd; - Error *local_err =3D NULL; struct fstrim_range r; =20 slog("guest-fstrim called"); =20 QTAILQ_INIT(&mounts); - build_fs_mount_list(&mounts, &local_err); - if (local_err) { - error_propagate(errp, local_err); + build_fs_mount_list(&mounts, errp); + if (*errp) { return NULL; } =20 @@ -1554,13 +1542,13 @@ static int run_process_child(const char *command[],= Error **errp) =20 static bool systemd_supports_mode(SuspendMode mode, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); const char *systemctl_args[3] =3D {"systemd-hibernate", "systemd-suspe= nd", "systemd-hybrid-sleep"}; const char *cmd[4] =3D {"systemctl", "status", systemctl_args[mode], N= ULL}; int status; =20 - status =3D run_process_child(cmd, &local_err); + status =3D run_process_child(cmd, errp); =20 /* * systemctl status uses LSB return codes so we can expect @@ -1574,31 +1562,29 @@ static bool systemd_supports_mode(SuspendMode mode,= Error **errp) return true; } =20 - error_propagate(errp, local_err); return false; } =20 static void systemd_suspend(SuspendMode mode, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); const char *systemctl_args[3] =3D {"hibernate", "suspend", "hybrid-sle= ep"}; const char *cmd[3] =3D {"systemctl", systemctl_args[mode], NULL}; int status; =20 - status =3D run_process_child(cmd, &local_err); + status =3D run_process_child(cmd, errp); =20 if (status =3D=3D 0) { return; } =20 - if ((status =3D=3D -1) && !local_err) { + if ((status =3D=3D -1) && !*errp) { error_setg(errp, "the helper program 'systemctl %s' was not found", systemctl_args[mode]); return; } =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { } else { error_setg(errp, "the helper program 'systemctl %s' returned an " "unexpected exit status code (%d)", @@ -1608,24 +1594,23 @@ static void systemd_suspend(SuspendMode mode, Error= **errp) =20 static bool pmutils_supports_mode(SuspendMode mode, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); const char *pmutils_args[3] =3D {"--hibernate", "--suspend", "--suspend-hybrid"}; const char *cmd[3] =3D {"pm-is-supported", pmutils_args[mode], NULL}; int status; =20 - status =3D run_process_child(cmd, &local_err); + status =3D run_process_child(cmd, errp); =20 if (status =3D=3D SUSPEND_SUPPORTED) { return true; } =20 - if ((status =3D=3D -1) && !local_err) { + if ((status =3D=3D -1) && !*errp) { return false; } =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { } else { error_setg(errp, "the helper program '%s' returned an unexpected exit" @@ -1637,26 +1622,25 @@ static bool pmutils_supports_mode(SuspendMode mode,= Error **errp) =20 static void pmutils_suspend(SuspendMode mode, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); const char *pmutils_binaries[3] =3D {"pm-hibernate", "pm-suspend", "pm-suspend-hybrid"}; const char *cmd[2] =3D {pmutils_binaries[mode], NULL}; int status; =20 - status =3D run_process_child(cmd, &local_err); + status =3D run_process_child(cmd, errp); =20 if (status =3D=3D 0) { return; } =20 - if ((status =3D=3D -1) && !local_err) { + if ((status =3D=3D -1) && !*errp) { error_setg(errp, "the helper program '%s' was not found", pmutils_binaries[mode]); return; } =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { } else { error_setg(errp, "the helper program '%s' returned an unexpected exit" @@ -1697,7 +1681,7 @@ static bool linux_sys_state_supports_mode(SuspendMode= mode, Error **errp) =20 static void linux_sys_state_suspend(SuspendMode mode, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); const char *sysfile_strs[3] =3D {"disk", "mem", NULL}; const char *sysfile_str =3D sysfile_strs[mode]; pid_t pid; @@ -1733,9 +1717,8 @@ static void linux_sys_state_suspend(SuspendMode mode,= Error **errp) return; } =20 - ga_wait_child(pid, &status, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ga_wait_child(pid, &status, errp); + if (*errp) { return; } =20 @@ -1747,41 +1730,40 @@ static void linux_sys_state_suspend(SuspendMode mod= e, Error **errp) =20 static void guest_suspend(SuspendMode mode, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); bool mode_supported =3D false; =20 - if (systemd_supports_mode(mode, &local_err)) { + if (systemd_supports_mode(mode, errp)) { mode_supported =3D true; - systemd_suspend(mode, &local_err); + systemd_suspend(mode, errp); } =20 - if (!local_err) { + if (!*errp) { return; } =20 - error_free(local_err); + error_free_errp(errp); =20 - if (pmutils_supports_mode(mode, &local_err)) { + if (pmutils_supports_mode(mode, errp)) { mode_supported =3D true; - pmutils_suspend(mode, &local_err); + pmutils_suspend(mode, errp); } =20 - if (!local_err) { + if (!*errp) { return; } =20 - error_free(local_err); + error_free_errp(errp); =20 - if (linux_sys_state_supports_mode(mode, &local_err)) { + if (linux_sys_state_supports_mode(mode, errp)) { mode_supported =3D true; - linux_sys_state_suspend(mode, &local_err); + linux_sys_state_suspend(mode, errp); } =20 if (!mode_supported) { error_setg(errp, "the requested suspend mode is not supported by the gue= st"); } else { - error_propagate(errp, local_err); } } =20 @@ -2120,17 +2102,17 @@ static void transfer_vcpu(GuestLogicalProcessor *vc= pu, bool sys2vcpu, =20 GuestLogicalProcessorList *qmp_guest_get_vcpus(Error **errp) { + ERRP_AUTO_PROPAGATE(); int64_t current; GuestLogicalProcessorList *head, **link; long sc_max; - Error *local_err =3D NULL; =20 current =3D 0; head =3D NULL; link =3D &head; - sc_max =3D SYSCONF_EXACT(_SC_NPROCESSORS_CONF, &local_err); + sc_max =3D SYSCONF_EXACT(_SC_NPROCESSORS_CONF, errp); =20 - while (local_err =3D=3D NULL && current < sc_max) { + while (*errp =3D=3D NULL && current < sc_max) { GuestLogicalProcessor *vcpu; GuestLogicalProcessorList *entry; int64_t id =3D current++; @@ -2141,7 +2123,7 @@ GuestLogicalProcessorList *qmp_guest_get_vcpus(Error = **errp) vcpu =3D g_malloc0(sizeof *vcpu); vcpu->logical_id =3D id; vcpu->has_can_offline =3D true; /* lolspeak ftw */ - transfer_vcpu(vcpu, true, path, &local_err); + transfer_vcpu(vcpu, true, path, errp); entry =3D g_malloc0(sizeof *entry); entry->value =3D vcpu; *link =3D entry; @@ -2150,41 +2132,39 @@ GuestLogicalProcessorList *qmp_guest_get_vcpus(Erro= r **errp) g_free(path); } =20 - if (local_err =3D=3D NULL) { + if (*errp =3D=3D NULL) { /* there's no guest with zero VCPUs */ g_assert(head !=3D NULL); return head; } =20 qapi_free_GuestLogicalProcessorList(head); - error_propagate(errp, local_err); return NULL; } =20 int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus, Error **errp) { + ERRP_AUTO_PROPAGATE(); int64_t processed; - Error *local_err =3D NULL; =20 processed =3D 0; while (vcpus !=3D NULL) { char *path =3D g_strdup_printf("/sys/devices/system/cpu/cpu%" PRId= 64 "/", vcpus->value->logical_id); =20 - transfer_vcpu(vcpus->value, false, path, &local_err); + transfer_vcpu(vcpus->value, false, path, errp); g_free(path); - if (local_err !=3D NULL) { + if (*errp) { break; } ++processed; vcpus =3D vcpus->next; } =20 - if (local_err !=3D NULL) { + if (*errp) { if (processed =3D=3D 0) { - error_propagate(errp, local_err); } else { - error_free(local_err); + error_free_errp(errp); } } =20 @@ -2196,7 +2176,7 @@ void qmp_guest_set_user_password(const char *username, bool crypted, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); char *passwd_path =3D NULL; pid_t pid; int status; @@ -2268,9 +2248,8 @@ void qmp_guest_set_user_password(const char *username, close(datafd[1]); datafd[1] =3D -1; =20 - ga_wait_child(pid, &status, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ga_wait_child(pid, &status, errp); + if (*errp) { goto out; } =20 @@ -2356,10 +2335,10 @@ static void transfer_memory_block(GuestMemoryBlock = *mem_blk, bool sys2memblk, GuestMemoryBlockResponse *result, Error **errp) { + ERRP_AUTO_PROPAGATE(); char *dirpath; int dirfd; char *status; - Error *local_err =3D NULL; =20 if (!sys2memblk) { DIR *dp; @@ -2404,11 +2383,11 @@ static void transfer_memory_block(GuestMemoryBlock = *mem_blk, bool sys2memblk, g_free(dirpath); =20 status =3D g_malloc0(10); - ga_read_sysfs_file(dirfd, "state", status, 10, &local_err); - if (local_err) { + ga_read_sysfs_file(dirfd, "state", status, 10, errp); + if (*errp) { /* treat with sysfs file that not exist in old kernel */ if (errno =3D=3D ENOENT) { - error_free(local_err); + error_free_errp(errp); if (sys2memblk) { mem_blk->online =3D true; mem_blk->can_offline =3D false; @@ -2418,7 +2397,6 @@ static void transfer_memory_block(GuestMemoryBlock *m= em_blk, bool sys2memblk, } } else { if (sys2memblk) { - error_propagate(errp, local_err); } else { result->response =3D GUEST_MEMORY_BLOCK_RESPONSE_TYPE_OPERATION_FAILED; @@ -2432,14 +2410,13 @@ static void transfer_memory_block(GuestMemoryBlock = *mem_blk, bool sys2memblk, =20 mem_blk->online =3D (strncmp(status, "online", 6) =3D=3D 0); =20 - ga_read_sysfs_file(dirfd, "removable", &removable, 1, &local_err); - if (local_err) { + ga_read_sysfs_file(dirfd, "removable", &removable, 1, errp); + if (*errp) { /* if no 'removable' file, it doesn't support offline mem blk = */ if (errno =3D=3D ENOENT) { - error_free(local_err); + error_free_errp(errp); mem_blk->can_offline =3D false; } else { - error_propagate(errp, local_err); } } else { mem_blk->can_offline =3D (removable !=3D '0'); @@ -2449,9 +2426,9 @@ static void transfer_memory_block(GuestMemoryBlock *m= em_blk, bool sys2memblk, const char *new_state =3D mem_blk->online ? "online" : "offlin= e"; =20 ga_write_sysfs_file(dirfd, "state", new_state, strlen(new_stat= e), - &local_err); - if (local_err) { - error_free(local_err); + errp); + if (*errp) { + error_free_errp(errp); result->response =3D GUEST_MEMORY_BLOCK_RESPONSE_TYPE_OPERATION_FAILED; goto out2; @@ -2477,8 +2454,8 @@ out1: =20 GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error **errp) { + ERRP_AUTO_PROPAGATE(); GuestMemoryBlockList *head, **link; - Error *local_err =3D NULL; struct dirent *de; DIR *dp; =20 @@ -2516,7 +2493,7 @@ GuestMemoryBlockList *qmp_guest_get_memory_blocks(Err= or **errp) /* The d_name is "memoryXXX", phys_index is block id, same as XXX= */ mem_blk->phys_index =3D strtoul(&de->d_name[6], NULL, 10); mem_blk->has_can_offline =3D true; /* lolspeak ftw */ - transfer_memory_block(mem_blk, true, NULL, &local_err); + transfer_memory_block(mem_blk, true, NULL, errp); =20 entry =3D g_malloc0(sizeof *entry); entry->value =3D mem_blk; @@ -2526,7 +2503,7 @@ GuestMemoryBlockList *qmp_guest_get_memory_blocks(Err= or **errp) } =20 closedir(dp); - if (local_err =3D=3D NULL) { + if (*errp =3D=3D NULL) { /* there's no guest with zero memory blocks */ if (head =3D=3D NULL) { error_setg(errp, "guest reported zero memory blocks!"); @@ -2535,15 +2512,14 @@ GuestMemoryBlockList *qmp_guest_get_memory_blocks(E= rror **errp) } =20 qapi_free_GuestMemoryBlockList(head); - error_propagate(errp, local_err); return NULL; } =20 GuestMemoryBlockResponseList * qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks, Error **errp) { + ERRP_AUTO_PROPAGATE(); GuestMemoryBlockResponseList *head, **link; - Error *local_err =3D NULL; =20 head =3D NULL; link =3D &head; @@ -2555,8 +2531,8 @@ qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem= _blks, Error **errp) =20 result =3D g_malloc0(sizeof(*result)); result->phys_index =3D current_mem_blk->phys_index; - transfer_memory_block(current_mem_blk, false, result, &local_err); - if (local_err) { /* should never happen */ + transfer_memory_block(current_mem_blk, false, result, errp); + if (*errp) { /* should never happen */ goto err; } entry =3D g_malloc0(sizeof *entry); @@ -2570,13 +2546,12 @@ qmp_guest_set_memory_blocks(GuestMemoryBlockList *m= em_blks, Error **errp) return head; err: qapi_free_GuestMemoryBlockResponseList(head); - error_propagate(errp, local_err); return NULL; } =20 GuestMemoryBlockInfo *qmp_guest_get_memory_block_info(Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); char *dirpath; int dirfd; char *buf; @@ -2592,11 +2567,10 @@ GuestMemoryBlockInfo *qmp_guest_get_memory_block_in= fo(Error **errp) g_free(dirpath); =20 buf =3D g_malloc0(20); - ga_read_sysfs_file(dirfd, "block_size_bytes", buf, 20, &local_err); + ga_read_sysfs_file(dirfd, "block_size_bytes", buf, 20, errp); close(dirfd); - if (local_err) { + if (*errp) { g_free(buf); - error_propagate(errp, local_err); return NULL; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570816799; cv=none; d=zoho.com; s=zohoarc; b=neeOEcCAIziT9GBZVsTqc5DWXkHD3lQFDplSr4t25JU1Nnia1V120KFxsJ4pipAQUmjPLIScqfIJXRnNjhPC8DJQZ3o0tA9djf35P6fpWbXgnw0GA0OSva83W8mLu3YIlCBwjDi59q9V65Zw9gJhGIpBzEHtnYz6DoJBzcTUiQU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570816799; h=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=5paHP1jkcNulU8RMDTZuwwZPjNmNVSVW8cjpEN6KurI=; b=PGY9coYWEg81Z4KUU7UrEgJYBdTPEMS8v8kI8ol8luWojTsL8R1y/Ju+OjAAJE94G/3p675DHgpohNu2AqKBHd1A8QLW9uyEFu3jLUrxSHbKZAPeVHikGyKSMvdHMEFss70tRhpJOmCqPCX5+gvTWyY3eNzHRaoPnV7sYcMjZqY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570816799828978.217408246745; Fri, 11 Oct 2019 10:59:59 -0700 (PDT) Received: from localhost ([::1]:55038 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzCn-0002Cq-QI for importer@patchew.org; Fri, 11 Oct 2019 13:59:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37094) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRF-0006nK-Az for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR6-0004l6-4s for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:45 -0400 Received: from relay.sw.ru ([185.231.240.75]:48398) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR5-0004SB-En for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:36 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQt-0003XG-Ru; Fri, 11 Oct 2019 19:06:24 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 082/126] QOM: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:08 +0300 Message-Id: <20191011160552.22907-83-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , armbru@redhat.com, Greg Kurz , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/core/qdev-properties-system.c | 28 ++-- hw/core/qdev-properties.c | 89 +++++------ hw/core/qdev.c | 40 +++-- qdev-monitor.c | 41 +++--- qom/object.c | 246 ++++++++++++++----------------- qom/object_interfaces.c | 27 ++-- qom/qom-qobject.c | 7 +- 7 files changed, 212 insertions(+), 266 deletions(-) diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-sys= tem.c index 70bfd4809b..2c7cddcf74 100644 --- a/hw/core/qdev-properties-system.c +++ b/hw/core/qdev-properties-system.c @@ -44,8 +44,8 @@ static void set_pointer(Object *obj, Visitor *v, Property= *prop, Error **errp), const char *name, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); - Error *local_err =3D NULL; void **ptr =3D qdev_get_prop_ptr(dev, prop); char *str; =20 @@ -54,9 +54,8 @@ static void set_pointer(Object *obj, Visitor *v, Property= *prop, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } if (!*str) { @@ -221,8 +220,8 @@ static void get_chr(Object *obj, Visitor *v, const char= *name, void *opaque, static void set_chr(Object *obj, Visitor *v, const char *name, void *opaqu= e, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); - Error *local_err =3D NULL; Property *prop =3D opaque; CharBackend *be =3D qdev_get_prop_ptr(dev, prop); Chardev *s; @@ -233,9 +232,8 @@ static void set_chr(Object *obj, Visitor *v, const char= *name, void *opaque, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } =20 @@ -289,12 +287,12 @@ static void get_netdev(Object *obj, Visitor *v, const= char *name, static void set_netdev(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; NICPeers *peers_ptr =3D qdev_get_prop_ptr(dev, prop); NetClientState **ncs =3D peers_ptr->ncs; NetClientState *peers[MAX_QUEUE_NUM]; - Error *local_err =3D NULL; int queues, err =3D 0, i =3D 0; char *str; =20 @@ -303,9 +301,8 @@ static void set_netdev(Object *obj, Visitor *v, const c= har *name, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } =20 @@ -370,11 +367,11 @@ static void get_audiodev(Object *obj, Visitor *v, con= st char* name, static void set_audiodev(Object *obj, Visitor *v, const char* name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; QEMUSoundCard *card =3D qdev_get_prop_ptr(dev, prop); AudioState *state; - Error *local_err =3D NULL; int err =3D 0; char *str; =20 @@ -383,9 +380,8 @@ static void set_audiodev(Object *obj, Visitor *v, const= char* name, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } =20 diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index ac28890e5a..66418edcf7 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -114,9 +114,9 @@ static void prop_get_bit(Object *obj, Visitor *v, const= char *name, static void prop_set_bit(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - Error *local_err =3D NULL; bool value; =20 if (dev->realized) { @@ -124,9 +124,8 @@ static void prop_set_bit(Object *obj, Visitor *v, const= char *name, return; } =20 - visit_type_bool(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_bool(v, name, &value, errp); + if (*errp) { return; } bit_prop_set(dev, prop, value); @@ -178,9 +177,9 @@ static void prop_get_bit64(Object *obj, Visitor *v, con= st char *name, static void prop_set_bit64(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - Error *local_err =3D NULL; bool value; =20 if (dev->realized) { @@ -188,9 +187,8 @@ static void prop_set_bit64(Object *obj, Visitor *v, con= st char *name, return; } =20 - visit_type_bool(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_bool(v, name, &value, errp); + if (*errp) { return; } bit64_prop_set(dev, prop, value); @@ -474,10 +472,10 @@ static void get_string(Object *obj, Visitor *v, const= char *name, static void set_string(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; char **ptr =3D qdev_get_prop_ptr(dev, prop); - Error *local_err =3D NULL; char *str; =20 if (dev->realized) { @@ -485,9 +483,8 @@ static void set_string(Object *obj, Visitor *v, const c= har *name, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } g_free(*ptr); @@ -534,10 +531,10 @@ static void get_mac(Object *obj, Visitor *v, const ch= ar *name, void *opaque, static void set_mac(Object *obj, Visitor *v, const char *name, void *opaqu= e, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; MACAddr *mac =3D qdev_get_prop_ptr(dev, prop); - Error *local_err =3D NULL; int i, pos; char *str, *p; =20 @@ -546,9 +543,8 @@ static void set_mac(Object *obj, Visitor *v, const char= *name, void *opaque, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } =20 @@ -656,11 +652,11 @@ const PropertyInfo qdev_prop_fdc_drive_type =3D { static void set_pci_devfn(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; int32_t value, *ptr =3D qdev_get_prop_ptr(dev, prop); unsigned int slot, fn, n; - Error *local_err =3D NULL; char *str; =20 if (dev->realized) { @@ -668,13 +664,11 @@ static void set_pci_devfn(Object *obj, Visitor *v, co= nst char *name, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_free(local_err); - local_err =3D NULL; - visit_type_int32(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { + error_free_errp(errp); + visit_type_int32(v, name, &value, errp); + if (*errp) { } else if (value < -1 || value > 255) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, name ? name : "null", "pci_devfn"); @@ -728,10 +722,10 @@ const PropertyInfo qdev_prop_pci_devfn =3D { static void set_blocksize(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; uint16_t value, *ptr =3D qdev_get_prop_ptr(dev, prop); - Error *local_err =3D NULL; const int64_t min =3D 512; const int64_t max =3D 32768; =20 @@ -740,9 +734,8 @@ static void set_blocksize(Object *obj, Visitor *v, cons= t char *name, return; } =20 - visit_type_uint16(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_uint16(v, name, &value, errp); + if (*errp) { return; } /* value of 0 means "unset" */ @@ -803,10 +796,10 @@ static void get_pci_host_devaddr(Object *obj, Visitor= *v, const char *name, static void set_pci_host_devaddr(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; PCIHostDeviceAddress *addr =3D qdev_get_prop_ptr(dev, prop); - Error *local_err =3D NULL; char *str, *p; char *e; unsigned long val; @@ -818,9 +811,8 @@ static void set_pci_host_devaddr(Object *obj, Visitor *= v, const char *name, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } =20 @@ -907,10 +899,10 @@ static void get_uuid(Object *obj, Visitor *v, const c= har *name, void *opaque, static void set_uuid(Object *obj, Visitor *v, const char *name, void *opaq= ue, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; QemuUUID *uuid =3D qdev_get_prop_ptr(dev, prop); - Error *local_err =3D NULL; char *str; =20 if (dev->realized) { @@ -918,9 +910,8 @@ static void set_uuid(Object *obj, Visitor *v, const cha= r *name, void *opaque, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } =20 @@ -977,6 +968,7 @@ static void array_element_release(Object *obj, const ch= ar *name, void *opaque) static void set_prop_arraylen(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); /* Setter for the property which defines the length of a * variable-sized property array. As well as actually setting the * array-length field in the device struct, we have to create the @@ -986,7 +978,6 @@ static void set_prop_arraylen(Object *obj, Visitor *v, = const char *name, Property *prop =3D opaque; uint32_t *alenptr =3D qdev_get_prop_ptr(dev, prop); void **arrayptr =3D (void *)dev + prop->arrayoffset; - Error *local_err =3D NULL; void *eltptr; const char *arrayname; int i; @@ -1000,9 +991,8 @@ static void set_prop_arraylen(Object *obj, Visitor *v,= const char *name, name); return; } - visit_type_uint32(v, name, alenptr, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_uint32(v, name, alenptr, errp); + if (*errp) { return; } if (!*alenptr) { @@ -1039,9 +1029,8 @@ static void set_prop_arraylen(Object *obj, Visitor *v= , const char *name, arrayprop->prop.info->get, arrayprop->prop.info->set, array_element_release, - arrayprop, &local_err); - if (local_err) { - error_propagate(errp, local_err); + arrayprop, errp); + if (*errp) { return; } } @@ -1322,20 +1311,19 @@ static void get_prop_pcielinkspeed(Object *obj, Vis= itor *v, const char *name, static void set_prop_pcielinkspeed(Object *obj, Visitor *v, const char *na= me, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; PCIExpLinkSpeed *p =3D qdev_get_prop_ptr(dev, prop); int speed; - Error *local_err =3D NULL; =20 if (dev->realized) { qdev_prop_set_after_realize(dev, name, errp); return; } =20 - visit_type_enum(v, prop->name, &speed, prop->info->enum_table, &local_= err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_enum(v, prop->name, &speed, prop->info->enum_table, errp); + if (*errp) { return; } =20 @@ -1410,20 +1398,19 @@ static void get_prop_pcielinkwidth(Object *obj, Vis= itor *v, const char *name, static void set_prop_pcielinkwidth(Object *obj, Visitor *v, const char *na= me, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; PCIExpLinkWidth *p =3D qdev_get_prop_ptr(dev, prop); int width; - Error *local_err =3D NULL; =20 if (dev->realized) { qdev_prop_set_after_realize(dev, name, errp); return; } =20 - visit_type_enum(v, prop->name, &width, prop->info->enum_table, &local_= err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_enum(v, prop->name, &width, prop->info->enum_table, errp); + if (*errp) { return; } =20 diff --git a/hw/core/qdev.c b/hw/core/qdev.c index e3be8cc3c4..72fd91e548 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -709,11 +709,11 @@ static void qdev_property_add_legacy(DeviceState *dev= , Property *prop, void qdev_property_add_static(DeviceState *dev, Property *prop, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); Object *obj =3D OBJECT(dev); =20 if (prop->info->create) { - prop->info->create(obj, prop, &local_err); + prop->info->create(obj, prop, errp); } else { /* * TODO qdev_prop_ptr does not have getters or setters. It must @@ -726,11 +726,10 @@ void qdev_property_add_static(DeviceState *dev, Prope= rty *prop, object_property_add(obj, prop->name, prop->info->name, prop->info->get, prop->info->set, prop->info->release, - prop, &local_err); + prop, errp); } =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } =20 @@ -812,11 +811,11 @@ static bool check_only_migratable(Object *obj, Error = **errp) =20 static void device_set_realized(Object *obj, bool value, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); DeviceClass *dc =3D DEVICE_GET_CLASS(dev); HotplugHandler *hotplug_ctrl; BusState *bus; - Error *local_err =3D NULL; bool unattached_parent =3D false; static int unattached_count; =20 @@ -826,7 +825,7 @@ static void device_set_realized(Object *obj, bool value= , Error **errp) } =20 if (value && !dev->realized) { - if (!check_only_migratable(obj, &local_err)) { + if (!check_only_migratable(obj, errp)) { goto fail; } =20 @@ -842,15 +841,15 @@ static void device_set_realized(Object *obj, bool val= ue, Error **errp) =20 hotplug_ctrl =3D qdev_get_hotplug_handler(dev); if (hotplug_ctrl) { - hotplug_handler_pre_plug(hotplug_ctrl, dev, &local_err); - if (local_err !=3D NULL) { + hotplug_handler_pre_plug(hotplug_ctrl, dev, errp); + if (*errp) { goto fail; } } =20 if (dc->realize) { - dc->realize(dev, &local_err); - if (local_err !=3D NULL) { + dc->realize(dev, errp); + if (*errp) { goto fail; } } @@ -868,15 +867,15 @@ static void device_set_realized(Object *obj, bool val= ue, Error **errp) if (vmstate_register_with_alias_id(dev, -1, qdev_get_vmsd(dev)= , dev, dev->instance_id_alias, dev->alias_required_for_ver= sion, - &local_err) < 0) { + errp) < 0) { goto post_realize_fail; } } =20 QLIST_FOREACH(bus, &dev->child_bus, sibling) { object_property_set_bool(OBJECT(bus), true, "realized", - &local_err); - if (local_err !=3D NULL) { + errp); + if (*errp) { goto child_realize_fail; } } @@ -886,8 +885,8 @@ static void device_set_realized(Object *obj, bool value= , Error **errp) dev->pending_deleted_event =3D false; =20 if (hotplug_ctrl) { - hotplug_handler_plug(hotplug_ctrl, dev, &local_err); - if (local_err !=3D NULL) { + hotplug_handler_plug(hotplug_ctrl, dev, errp); + if (*errp) { goto child_realize_fail; } } @@ -896,23 +895,23 @@ static void device_set_realized(Object *obj, bool val= ue, Error **errp) /* We want to catch in local_err only first error */ QLIST_FOREACH(bus, &dev->child_bus, sibling) { object_property_set_bool(OBJECT(bus), false, "realized", - local_err ? NULL : &local_err); + *errp ? NULL : errp); } if (qdev_get_vmsd(dev)) { vmstate_unregister(dev, qdev_get_vmsd(dev), dev); } if (dc->unrealize) { - dc->unrealize(dev, local_err ? NULL : &local_err); + dc->unrealize(dev, *errp ? NULL : errp); } dev->pending_deleted_event =3D true; DEVICE_LISTENER_CALL(unrealize, Reverse, dev); =20 - if (local_err !=3D NULL) { + if (*errp) { goto fail; } } =20 - assert(local_err =3D=3D NULL); + assert(*errp =3D=3D NULL); dev->realized =3D value; return; =20 @@ -934,7 +933,6 @@ post_realize_fail: } =20 fail: - error_propagate(errp, local_err); if (unattached_parent) { object_unparent(OBJECT(dev)); unattached_count--; diff --git a/qdev-monitor.c b/qdev-monitor.c index d14ef6af01..0a6f4e03ab 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -170,17 +170,16 @@ static void qdev_print_devinfos(bool show_no_user) static int set_property(void *opaque, const char *name, const char *value, Error **errp) { + ERRP_AUTO_PROPAGATE(); Object *obj =3D opaque; - Error *err =3D NULL; =20 if (strcmp(name, "driver") =3D=3D 0) return 0; if (strcmp(name, "bus") =3D=3D 0) return 0; =20 - object_property_parse(obj, value, name, &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_parse(obj, value, name, errp); + if (*errp) { return -1; } return 0; @@ -564,11 +563,11 @@ void qdev_set_id(DeviceState *dev, const char *id) =20 DeviceState *qdev_device_add(QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceClass *dc; const char *driver, *path; DeviceState *dev; BusState *bus =3D NULL; - Error *err =3D NULL; =20 driver =3D qemu_opt_get(opts, "driver"); if (!driver) { @@ -616,9 +615,9 @@ DeviceState *qdev_device_add(QemuOpts *opts, Error **er= rp) dev =3D DEVICE(object_new(driver)); =20 /* Check whether the hotplug is allowed by the machine */ - if (qdev_hotplug && !qdev_hotplug_allowed(dev, &err)) { + if (qdev_hotplug && !qdev_hotplug_allowed(dev, errp)) { /* Error must be set in the machine hook */ - assert(err); + assert(*errp); goto err_del_dev; } =20 @@ -626,7 +625,7 @@ DeviceState *qdev_device_add(QemuOpts *opts, Error **er= rp) qdev_set_parent_bus(dev, bus); } else if (qdev_hotplug && !qdev_get_machine_hotplug_handler(dev)) { /* No bus, no machine hotplug handler --> device is not hotpluggab= le */ - error_setg(&err, "Device '%s' can not be hotplugged on this machin= e", + error_setg(errp, "Device '%s' can not be hotplugged on this machin= e", driver); goto err_del_dev; } @@ -634,20 +633,19 @@ DeviceState *qdev_device_add(QemuOpts *opts, Error **= errp) qdev_set_id(dev, qemu_opts_id(opts)); =20 /* set properties */ - if (qemu_opt_foreach(opts, set_property, dev, &err)) { + if (qemu_opt_foreach(opts, set_property, dev, errp)) { goto err_del_dev; } =20 dev->opts =3D opts; - object_property_set_bool(OBJECT(dev), true, "realized", &err); - if (err !=3D NULL) { + object_property_set_bool(OBJECT(dev), true, "realized", errp); + if (*errp) { dev->opts =3D NULL; goto err_del_dev; } return dev; =20 err_del_dev: - error_propagate(errp, err); object_unparent(OBJECT(dev)); object_unref(OBJECT(dev)); return NULL; @@ -749,22 +747,20 @@ void hmp_info_qdm(Monitor *mon, const QDict *qdict) =20 void qmp_device_add(QDict *qdict, QObject **ret_data, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); QemuOpts *opts; DeviceState *dev; =20 - opts =3D qemu_opts_from_qdict(qemu_find_opts("device"), qdict, &local_= err); - if (local_err) { - error_propagate(errp, local_err); + opts =3D qemu_opts_from_qdict(qemu_find_opts("device"), qdict, errp); + if (*errp) { return; } if (!monitor_cur_is_qmp() && qdev_device_help(opts)) { qemu_opts_del(opts); return; } - dev =3D qdev_device_add(opts, &local_err); + dev =3D qdev_device_add(opts, errp); if (!dev) { - error_propagate(errp, local_err); qemu_opts_del(opts); return; } @@ -802,10 +798,10 @@ static DeviceState *find_device_state(const char *id,= Error **errp) =20 void qdev_unplug(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceClass *dc =3D DEVICE_GET_CLASS(dev); HotplugHandler *hotplug_ctrl; HotplugHandlerClass *hdc; - Error *local_err =3D NULL; =20 if (dev->parent_bus && !qbus_is_hotpluggable(dev->parent_bus)) { error_setg(errp, QERR_BUS_NO_HOTPLUG, dev->parent_bus->name); @@ -834,14 +830,13 @@ void qdev_unplug(DeviceState *dev, Error **errp) * otherwise just remove it synchronously */ hdc =3D HOTPLUG_HANDLER_GET_CLASS(hotplug_ctrl); if (hdc->unplug_request) { - hotplug_handler_unplug_request(hotplug_ctrl, dev, &local_err); + hotplug_handler_unplug_request(hotplug_ctrl, dev, errp); } else { - hotplug_handler_unplug(hotplug_ctrl, dev, &local_err); - if (!local_err) { + hotplug_handler_unplug(hotplug_ctrl, dev, errp); + if (!*errp) { object_unparent(OBJECT(dev)); } } - error_propagate(errp, local_err); } =20 void qmp_device_del(const char *id, Error **errp) diff --git a/qom/object.c b/qom/object.c index 6fa9c619fa..b56f4bb6e7 100644 --- a/qom/object.c +++ b/qom/object.c @@ -374,6 +374,7 @@ static void object_post_init_with_type(Object *obj, Typ= eImpl *ti) =20 void object_apply_global_props(Object *obj, const GPtrArray *props, Error = **errp) { + ERRP_AUTO_PROPAGATE(); int i; =20 if (!props) { @@ -382,7 +383,6 @@ void object_apply_global_props(Object *obj, const GPtrA= rray *props, Error **errp =20 for (i =3D 0; i < props->len; i++) { GlobalProperty *p =3D g_ptr_array_index(props, i); - Error *err =3D NULL; =20 if (object_dynamic_cast(obj, p->driver) =3D=3D NULL) { continue; @@ -391,9 +391,9 @@ void object_apply_global_props(Object *obj, const GPtrA= rray *props, Error **errp continue; } p->used =3D true; - object_property_parse(obj, p->value, p->property, &err); - if (err !=3D NULL) { - error_prepend(&err, "can't apply global %s.%s=3D%s: ", + object_property_parse(obj, p->value, p->property, errp); + if (*errp) { + error_prepend(errp, "can't apply global %s.%s=3D%s: ", p->driver, p->property, p->value); /* * If errp !=3D NULL, propagate error and return. @@ -401,10 +401,9 @@ void object_apply_global_props(Object *obj, const GPtr= Array *props, Error **errp * with the remaining globals. */ if (errp) { - error_propagate(errp, err); return; } else { - warn_report_err(err); + warn_report_errp(errp); } } } @@ -496,27 +495,27 @@ void object_initialize_childv(Object *parentobj, cons= t char *propname, void *childobj, size_t size, const char *typ= e, Error **errp, va_list vargs) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); Object *obj; UserCreatable *uc; =20 object_initialize(childobj, size, type); obj =3D OBJECT(childobj); =20 - object_set_propv(obj, &local_err, vargs); - if (local_err) { + object_set_propv(obj, errp, vargs); + if (*errp) { goto out; } =20 - object_property_add_child(parentobj, propname, obj, &local_err); - if (local_err) { + object_property_add_child(parentobj, propname, obj, errp); + if (*errp) { goto out; } =20 uc =3D (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE); if (uc) { - user_creatable_complete(uc, &local_err); - if (local_err) { + user_creatable_complete(uc, errp); + if (*errp) { object_unparent(obj); goto out; } @@ -530,8 +529,7 @@ void object_initialize_childv(Object *parentobj, const = char *propname, object_unref(obj); =20 out: - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { object_unref(obj); } } @@ -670,9 +668,9 @@ Object *object_new_with_propv(const char *typename, Error **errp, va_list vargs) { + ERRP_AUTO_PROPAGATE(); Object *obj; ObjectClass *klass; - Error *local_err =3D NULL; UserCreatable *uc; =20 klass =3D object_class_by_name(typename); @@ -687,21 +685,21 @@ Object *object_new_with_propv(const char *typename, } obj =3D object_new_with_type(klass->type); =20 - if (object_set_propv(obj, &local_err, vargs) < 0) { + if (object_set_propv(obj, errp, vargs) < 0) { goto error; } =20 if (id !=3D NULL) { - object_property_add_child(parent, id, obj, &local_err); - if (local_err) { + object_property_add_child(parent, id, obj, errp); + if (*errp) { goto error; } } =20 uc =3D (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE); if (uc) { - user_creatable_complete(uc, &local_err); - if (local_err) { + user_creatable_complete(uc, errp); + if (*errp) { if (id !=3D NULL) { object_unparent(obj); } @@ -713,7 +711,6 @@ Object *object_new_with_propv(const char *typename, return obj; =20 error: - error_propagate(errp, local_err); object_unref(obj); return NULL; } @@ -738,17 +735,16 @@ int object_set_propv(Object *obj, Error **errp, va_list vargs) { + ERRP_AUTO_PROPAGATE(); const char *propname; - Error *local_err =3D NULL; =20 propname =3D va_arg(vargs, char *); while (propname !=3D NULL) { const char *value =3D va_arg(vargs, char *); =20 g_assert(value !=3D NULL); - object_property_parse(obj, value, propname, &local_err); - if (local_err) { - error_propagate(errp, local_err); + object_property_parse(obj, value, propname, errp); + if (*errp) { return -1; } propname =3D va_arg(vargs, char *); @@ -1430,7 +1426,7 @@ typedef struct EnumProperty { int object_property_get_enum(Object *obj, const char *name, const char *typename, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); Visitor *v; char *str; int ret; @@ -1451,9 +1447,8 @@ int object_property_get_enum(Object *obj, const char = *name, enumprop =3D prop->opaque; =20 v =3D string_output_visitor_new(false, &str); - object_property_get(obj, v, name, &err); - if (err) { - error_propagate(errp, err); + object_property_get(obj, v, name, errp); + if (*errp) { visit_free(v); return 0; } @@ -1471,14 +1466,13 @@ int object_property_get_enum(Object *obj, const cha= r *name, void object_property_get_uint16List(Object *obj, const char *name, uint16List **list, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); Visitor *v; char *str; =20 v =3D string_output_visitor_new(false, &str); - object_property_get(obj, v, name, &err); - if (err) { - error_propagate(errp, err); + object_property_get(obj, v, name, errp); + if (*errp) { goto out; } visit_complete(v, &str); @@ -1502,14 +1496,13 @@ void object_property_parse(Object *obj, const char = *string, char *object_property_print(Object *obj, const char *name, bool human, Error **errp) { + ERRP_AUTO_PROPAGATE(); Visitor *v; char *string =3D NULL; - Error *local_err =3D NULL; =20 v =3D string_output_visitor_new(human, &string); - object_property_get(obj, v, name, &local_err); - if (local_err) { - error_propagate(errp, local_err); + object_property_get(obj, v, name, errp); + if (*errp) { goto out; } =20 @@ -1589,7 +1582,7 @@ static void object_finalize_child_property(Object *ob= j, const char *name, void object_property_add_child(Object *obj, const char *name, Object *child, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); gchar *type; ObjectProperty *op; =20 @@ -1601,9 +1594,8 @@ void object_property_add_child(Object *obj, const cha= r *name, type =3D g_strdup_printf("child<%s>", object_get_typename(OBJECT(child= ))); =20 op =3D object_property_add(obj, name, type, object_get_child_property,= NULL, - object_finalize_child_property, child, &local= _err); - if (local_err) { - error_propagate(errp, local_err); + object_finalize_child_property, child, errp); + if (*errp) { goto out; } =20 @@ -1689,28 +1681,26 @@ static void object_set_link_property(Object *obj, V= isitor *v, const char *name, void *opaque, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); LinkProperty *prop =3D opaque; Object **child =3D prop->child; Object *old_target =3D *child; Object *new_target =3D NULL; char *path =3D NULL; =20 - visit_type_str(v, name, &path, &local_err); + visit_type_str(v, name, &path, errp); =20 - if (!local_err && strcmp(path, "") !=3D 0) { - new_target =3D object_resolve_link(obj, name, path, &local_err); + if (!*errp && strcmp(path, "") !=3D 0) { + new_target =3D object_resolve_link(obj, name, path, errp); } =20 g_free(path); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } =20 - prop->check(obj, name, new_target, &local_err); - if (local_err) { - error_propagate(errp, local_err); + prop->check(obj, name, new_target, errp); + if (*errp) { return; } =20 @@ -1746,7 +1736,7 @@ void object_property_add_link(Object *obj, const char= *name, ObjectPropertyLinkFlags flags, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); LinkProperty *prop =3D g_malloc(sizeof(*prop)); gchar *full_type; ObjectProperty *op; @@ -1762,9 +1752,8 @@ void object_property_add_link(Object *obj, const char= *name, check ? object_set_link_property : NULL, object_release_link_property, prop, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { g_free(prop); goto out; } @@ -1959,13 +1948,12 @@ typedef struct StringProperty static void property_get_str(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); StringProperty *prop =3D opaque; char *value; - Error *err =3D NULL; =20 - value =3D prop->get(obj, &err); - if (err) { - error_propagate(errp, err); + value =3D prop->get(obj, errp); + if (*errp) { return; } =20 @@ -1976,13 +1964,12 @@ static void property_get_str(Object *obj, Visitor *= v, const char *name, static void property_set_str(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); StringProperty *prop =3D opaque; char *value; - Error *local_err =3D NULL; =20 - visit_type_str(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &value, errp); + if (*errp) { return; } =20 @@ -2002,7 +1989,7 @@ void object_property_add_str(Object *obj, const char = *name, void (*set)(Object *, const char *, Error **), Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); StringProperty *prop =3D g_malloc0(sizeof(*prop)); =20 prop->get =3D get; @@ -2012,9 +1999,8 @@ void object_property_add_str(Object *obj, const char = *name, get ? property_get_str : NULL, set ? property_set_str : NULL, property_release_str, - prop, &local_err); - if (local_err) { - error_propagate(errp, local_err); + prop, errp); + if (*errp) { g_free(prop); } } @@ -2025,7 +2011,7 @@ void object_class_property_add_str(ObjectClass *klass= , const char *name, Error **), Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); StringProperty *prop =3D g_malloc0(sizeof(*prop)); =20 prop->get =3D get; @@ -2035,9 +2021,8 @@ void object_class_property_add_str(ObjectClass *klass= , const char *name, get ? property_get_str : NULL, set ? property_set_str : NULL, property_release_str, - prop, &local_err); - if (local_err) { - error_propagate(errp, local_err); + prop, errp); + if (*errp) { g_free(prop); } } @@ -2051,13 +2036,12 @@ typedef struct BoolProperty static void property_get_bool(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); BoolProperty *prop =3D opaque; bool value; - Error *err =3D NULL; =20 - value =3D prop->get(obj, &err); - if (err) { - error_propagate(errp, err); + value =3D prop->get(obj, errp); + if (*errp) { return; } =20 @@ -2067,13 +2051,12 @@ static void property_get_bool(Object *obj, Visitor = *v, const char *name, static void property_set_bool(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); BoolProperty *prop =3D opaque; bool value; - Error *local_err =3D NULL; =20 - visit_type_bool(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_bool(v, name, &value, errp); + if (*errp) { return; } =20 @@ -2092,7 +2075,7 @@ void object_property_add_bool(Object *obj, const char= *name, void (*set)(Object *, bool, Error **), Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); BoolProperty *prop =3D g_malloc0(sizeof(*prop)); =20 prop->get =3D get; @@ -2102,9 +2085,8 @@ void object_property_add_bool(Object *obj, const char= *name, get ? property_get_bool : NULL, set ? property_set_bool : NULL, property_release_bool, - prop, &local_err); - if (local_err) { - error_propagate(errp, local_err); + prop, errp); + if (*errp) { g_free(prop); } } @@ -2114,7 +2096,7 @@ void object_class_property_add_bool(ObjectClass *klas= s, const char *name, void (*set)(Object *, bool, Error **), Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); BoolProperty *prop =3D g_malloc0(sizeof(*prop)); =20 prop->get =3D get; @@ -2124,9 +2106,8 @@ void object_class_property_add_bool(ObjectClass *klas= s, const char *name, get ? property_get_bool : NULL, set ? property_set_bool : NULL, property_release_bool, - prop, &local_err); - if (local_err) { - error_propagate(errp, local_err); + prop, errp); + if (*errp) { g_free(prop); } } @@ -2134,13 +2115,12 @@ void object_class_property_add_bool(ObjectClass *kl= ass, const char *name, static void property_get_enum(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); EnumProperty *prop =3D opaque; int value; - Error *err =3D NULL; =20 - value =3D prop->get(obj, &err); - if (err) { - error_propagate(errp, err); + value =3D prop->get(obj, errp); + if (*errp) { return; } =20 @@ -2150,13 +2130,12 @@ static void property_get_enum(Object *obj, Visitor = *v, const char *name, static void property_set_enum(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); EnumProperty *prop =3D opaque; int value; - Error *err =3D NULL; =20 - visit_type_enum(v, name, &value, prop->lookup, &err); - if (err) { - error_propagate(errp, err); + visit_type_enum(v, name, &value, prop->lookup, errp); + if (*errp) { return; } prop->set(obj, value, errp); @@ -2176,7 +2155,7 @@ void object_property_add_enum(Object *obj, const char= *name, void (*set)(Object *, int, Error **), Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); EnumProperty *prop =3D g_malloc(sizeof(*prop)); =20 prop->lookup =3D lookup; @@ -2187,9 +2166,8 @@ void object_property_add_enum(Object *obj, const char= *name, get ? property_get_enum : NULL, set ? property_set_enum : NULL, property_release_enum, - prop, &local_err); - if (local_err) { - error_propagate(errp, local_err); + prop, errp); + if (*errp) { g_free(prop); } } @@ -2201,7 +2179,7 @@ void object_class_property_add_enum(ObjectClass *klas= s, const char *name, void (*set)(Object *, int, Error **), Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); EnumProperty *prop =3D g_malloc(sizeof(*prop)); =20 prop->lookup =3D lookup; @@ -2212,9 +2190,8 @@ void object_class_property_add_enum(ObjectClass *klas= s, const char *name, get ? property_get_enum : NULL, set ? property_set_enum : NULL, property_release_enum, - prop, &local_err); - if (local_err) { - error_propagate(errp, local_err); + prop, errp); + if (*errp) { g_free(prop); } } @@ -2226,48 +2203,46 @@ typedef struct TMProperty { static void property_get_tm(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); TMProperty *prop =3D opaque; - Error *err =3D NULL; struct tm value; =20 - prop->get(obj, &value, &err); - if (err) { - goto out; + prop->get(obj, &value, errp); + if (*errp) { + return; } =20 - visit_start_struct(v, name, NULL, 0, &err); - if (err) { - goto out; + visit_start_struct(v, name, NULL, 0, errp); + if (*errp) { + return; } - visit_type_int32(v, "tm_year", &value.tm_year, &err); - if (err) { + visit_type_int32(v, "tm_year", &value.tm_year, errp); + if (*errp) { goto out_end; } - visit_type_int32(v, "tm_mon", &value.tm_mon, &err); - if (err) { + visit_type_int32(v, "tm_mon", &value.tm_mon, errp); + if (*errp) { goto out_end; } - visit_type_int32(v, "tm_mday", &value.tm_mday, &err); - if (err) { + visit_type_int32(v, "tm_mday", &value.tm_mday, errp); + if (*errp) { goto out_end; } - visit_type_int32(v, "tm_hour", &value.tm_hour, &err); - if (err) { + visit_type_int32(v, "tm_hour", &value.tm_hour, errp); + if (*errp) { goto out_end; } - visit_type_int32(v, "tm_min", &value.tm_min, &err); - if (err) { + visit_type_int32(v, "tm_min", &value.tm_min, errp); + if (*errp) { goto out_end; } - visit_type_int32(v, "tm_sec", &value.tm_sec, &err); - if (err) { + visit_type_int32(v, "tm_sec", &value.tm_sec, errp); + if (*errp) { goto out_end; } - visit_check_struct(v, &err); + visit_check_struct(v, errp); out_end: visit_end_struct(v, NULL); -out: - error_propagate(errp, err); =20 } =20 @@ -2282,7 +2257,7 @@ void object_property_add_tm(Object *obj, const char *= name, void (*get)(Object *, struct tm *, Error **), Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); TMProperty *prop =3D g_malloc0(sizeof(*prop)); =20 prop->get =3D get; @@ -2290,9 +2265,8 @@ void object_property_add_tm(Object *obj, const char *= name, object_property_add(obj, name, "struct tm", get ? property_get_tm : NULL, NULL, property_release_tm, - prop, &local_err); - if (local_err) { - error_propagate(errp, local_err); + prop, errp); + if (*errp) { g_free(prop); } } @@ -2301,7 +2275,7 @@ void object_class_property_add_tm(ObjectClass *klass,= const char *name, void (*get)(Object *, struct tm *, Error= **), Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); TMProperty *prop =3D g_malloc0(sizeof(*prop)); =20 prop->get =3D get; @@ -2309,9 +2283,8 @@ void object_class_property_add_tm(ObjectClass *klass,= const char *name, object_class_property_add(klass, name, "struct tm", get ? property_get_tm : NULL, NULL, property_release_tm, - prop, &local_err); - if (local_err) { - error_propagate(errp, local_err); + prop, errp); + if (*errp) { g_free(prop); } } @@ -2446,11 +2419,11 @@ void object_property_add_alias(Object *obj, const c= har *name, Object *target_obj, const char *target_name, Error **errp) { + ERRP_AUTO_PROPAGATE(); AliasProperty *prop; ObjectProperty *op; ObjectProperty *target_prop; gchar *prop_type; - Error *local_err =3D NULL; =20 target_prop =3D object_property_find(target_obj, target_name, errp); if (!target_prop) { @@ -2472,9 +2445,8 @@ void object_property_add_alias(Object *obj, const cha= r *name, property_get_alias, property_set_alias, property_release_alias, - prop, &local_err); - if (local_err) { - error_propagate(errp, local_err); + prop, errp); + if (*errp) { g_free(prop); goto out; } diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c index cb5809934a..02a43b6d98 100644 --- a/qom/object_interfaces.c +++ b/qom/object_interfaces.c @@ -33,10 +33,10 @@ Object *user_creatable_add_type(const char *type, const= char *id, const QDict *qdict, Visitor *v, Error **errp) { + ERRP_AUTO_PROPAGATE(); Object *obj; ObjectClass *klass; const QDictEntry *e; - Error *local_err =3D NULL; =20 klass =3D object_class_by_name(type); if (!klass) { @@ -57,34 +57,34 @@ Object *user_creatable_add_type(const char *type, const= char *id, =20 assert(qdict); obj =3D object_new(type); - visit_start_struct(v, NULL, NULL, 0, &local_err); - if (local_err) { + visit_start_struct(v, NULL, NULL, 0, errp); + if (*errp) { goto out; } for (e =3D qdict_first(qdict); e; e =3D qdict_next(qdict, e)) { - object_property_set(obj, v, e->key, &local_err); - if (local_err) { + object_property_set(obj, v, e->key, errp); + if (*errp) { break; } } - if (!local_err) { - visit_check_struct(v, &local_err); + if (!*errp) { + visit_check_struct(v, errp); } visit_end_struct(v, NULL); - if (local_err) { + if (*errp) { goto out; } =20 if (id !=3D NULL) { object_property_add_child(object_get_objects_root(), - id, obj, &local_err); - if (local_err) { + id, obj, errp); + if (*errp) { goto out; } } =20 - user_creatable_complete(USER_CREATABLE(obj), &local_err); - if (local_err) { + user_creatable_complete(USER_CREATABLE(obj), errp); + if (*errp) { if (id !=3D NULL) { object_property_del(object_get_objects_root(), id, &error_abort); @@ -92,8 +92,7 @@ Object *user_creatable_add_type(const char *type, const c= har *id, goto out; } out: - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { object_unref(obj); return NULL; } diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c index c3b95aa354..6713c29503 100644 --- a/qom/qom-qobject.c +++ b/qom/qom-qobject.c @@ -30,16 +30,15 @@ void object_property_set_qobject(Object *obj, QObject *= value, QObject *object_property_get_qobject(Object *obj, const char *name, Error **errp) { + ERRP_AUTO_PROPAGATE(); QObject *ret =3D NULL; - Error *local_err =3D NULL; Visitor *v; =20 v =3D qobject_output_visitor_new(&ret); - object_property_get(obj, v, name, &local_err); - if (!local_err) { + object_property_get(obj, v, name, errp); + if (!*errp) { visit_complete(v, &ret); } - error_propagate(errp, local_err); visit_free(v); return ret; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570816151; cv=none; d=zoho.com; s=zohoarc; b=AojsMs1anfqkff4U5FU9oLgQXmrzGnyirGaRAmmId4JVfuhyeS/tWyGXKfd9qVDtk4+wZ7HZaAFH89srwvUzsp8rUPgMMMPyGOx8H7l+w/duaS3URedfZI+QrCD7lwexr8PcuAQDUqbbDArVmRYxaU/rC2bO6HpHd23msdNAdwc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570816151; h=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=3c2PsmAA2prDgAaQMar7MGxgzcUPx0ZLYNn5oAAsHJQ=; b=dy9STkMnHsRs7KGZSAooGoaMvduVncjKEsTvsm/sehrw4v2c3Q5KEx8VsbgDBFKbQMrjmxpnIdr12LdxX3hGJOAnJjlSmr6hj6ncRGNKxB0yjB/4bR5+2CjKrP+LynD+80o6LA+F3svQquGV+NkyMWQtKrHnhl+til6pfiYIweg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570816151291162.86461032784212; Fri, 11 Oct 2019 10:49:11 -0700 (PDT) Received: from localhost ([::1]:54902 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIz2L-0006K5-Q5 for importer@patchew.org; Fri, 11 Oct 2019 13:49:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36837) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR8-0006bJ-Ef for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR6-0004kw-0D for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:38 -0400 Received: from relay.sw.ru ([185.231.240.75]:48408) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR5-0004SQ-Nu for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:35 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQu-0003XG-8Y; Fri, 11 Oct 2019 19:06:24 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 083/126] QMP: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:09 +0300 Message-Id: <20191011160552.22907-84-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- monitor/qmp-cmds.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c index c6faa3eaf0..2db3199a2e 100644 --- a/monitor/qmp-cmds.c +++ b/monitor/qmp-cmds.c @@ -126,9 +126,9 @@ void qmp_x_exit_preconfig(Error **errp) =20 void qmp_cont(Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockBackend *blk; BlockJob *job; - Error *local_err =3D NULL; =20 /* if there is a dump in background, we should wait until the dump * finished */ @@ -161,9 +161,8 @@ void qmp_cont(Error **errp) * If there are no inactive block nodes (e.g. because the VM was just * paused rather than completing a migration), bdrv_inactivate_all() s= imply * doesn't do anything. */ - bdrv_invalidate_cache_all(&local_err); - if (local_err) { - error_propagate(errp, local_err); + bdrv_invalidate_cache_all(errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812624; cv=none; d=zoho.com; s=zohoarc; b=hSXwVpKW4f5nTgmwPApvieIBz1lzsu12OauMxgW37ahxk3W7cgaCj+q2NNvJAQyiDmXME+hTlZfkuk0KkxvWR2UGmuEpZIwR2xykuugO9Ry4+c1U1HDQopvoSCCceYmrjtCn+HBZP9vT1j8ywpWCprwictaU9Ra+HOCSiTZb5aA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812624; h=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=HoBZm2v4WBI810aZB0d/iW5SpYbwW2DPB5EqCHtthNc=; b=B+k5KcJr2o/1YXH/YNadtnFu+dAHRDC/pv+q+hEkCSajmHhduX61uff001d7afsVcSTjoTd2Tsz4HF6wMtvOaGQUCyYk0Y+YH/iin+yU9uUIVWuPnqXU5jvEoEJu3V5s2siVly7+sFwJnrq3JNKTfOXDgNMISZ9lVs4Y+hcL/v8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812624307228.06617084256823; Fri, 11 Oct 2019 09:50:24 -0700 (PDT) Received: from localhost ([::1]:54158 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy7S-0006DB-Ju for importer@patchew.org; Fri, 11 Oct 2019 12:50:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36880) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR9-0006dN-Kc for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR6-0004m2-PZ for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:39 -0400 Received: from relay.sw.ru ([185.231.240.75]:48422) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR6-0004TB-GT for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:36 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQu-0003XG-IJ; Fri, 11 Oct 2019 19:06:24 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 084/126] SLIRP: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:10 +0300 Message-Id: <20191011160552.22907-85-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Jan Kiszka , Jason Wang , armbru@redhat.com, Greg Kurz , Samuel Thibault Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- net/slirp.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/net/slirp.c b/net/slirp.c index c4334ee876..cbde9ba2a9 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -941,6 +941,7 @@ static ssize_t guestfwd_write(const void *buf, size_t l= en, void *chr) =20 static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **e= rrp) { + ERRP_AUTO_PROPAGATE(); /* TODO: IPv6 */ struct in_addr server =3D { .s_addr =3D 0 }; struct GuestFwd *fwd; @@ -979,7 +980,6 @@ static int slirp_guestfwd(SlirpState *s, const char *co= nfig_str, Error **errp) return -1; } } else { - Error *err =3D NULL; /* * FIXME: sure we want to support implicit * muxed monitors here? @@ -993,9 +993,8 @@ static int slirp_guestfwd(SlirpState *s, const char *co= nfig_str, Error **errp) } =20 fwd =3D g_new(struct GuestFwd, 1); - qemu_chr_fe_init(&fwd->hd, chr, &err); - if (err) { - error_propagate(errp, err); + qemu_chr_fe_init(&fwd->hd, chr, errp); + if (*errp) { object_unparent(OBJECT(chr)); g_free(fwd); return -1; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813024; cv=none; d=zoho.com; s=zohoarc; b=bxGwEw5Tvzmk7Bz3348ba2fEI/mb1JZ2oT/SAP/yKpNKmMzU76yEagMuKvaSoZIhVaw0Skv9SacCjtpa5wpkPK6hjQ9ldxYPniDb8K/h5hAkROMCPOj5/3jquDJnltGR2lX65Btr1YU9yV49ULaTCGmg5Of+sJ6K/NFMm1S+NAU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813024; h=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=VwhAEDDSan+SwEwHX5o1NCuNE8BuKLpwzTPcefCPfSc=; b=bQPfyJnDCKE3cIDIS6K7x+zNUXbbrHu8jmxU3ogM7aPeNXl8VqqytlCxdMXulKHJMhfYkmxcjSsCf18XdBkkYXSUa5sQzjwPWG6z6G2YwgxF+mXR+2GkIa57Vreye+ddP/4vO5bVX6OVCspMiZtOgD+BbNRynAovVj4eqOgNV5E= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813024005757.8649038244686; Fri, 11 Oct 2019 09:57:04 -0700 (PDT) Received: from localhost ([::1]:54232 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyDt-00072g-W0 for importer@patchew.org; Fri, 11 Oct 2019 12:57:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36902) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRA-0006eQ-A9 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR6-0004lr-NN for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:40 -0400 Received: from relay.sw.ru ([185.231.240.75]:48436) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR6-0004Tt-Dr for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:36 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQu-0003XG-VF; Fri, 11 Oct 2019 19:06:25 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 085/126] Tracing: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:11 +0300 Message-Id: <20191011160552.22907-86-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Stefan Hajnoczi , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- trace/qmp.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/trace/qmp.c b/trace/qmp.c index 38246e1aa6..05335f2da4 100644 --- a/trace/qmp.c +++ b/trace/qmp.c @@ -70,7 +70,7 @@ TraceEventInfoList *qmp_trace_event_get_state(const char = *name, bool has_vcpu, int64_t vcpu, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); TraceEventInfoList *events =3D NULL; TraceEventIter iter; TraceEvent *ev; @@ -78,9 +78,8 @@ TraceEventInfoList *qmp_trace_event_get_state(const char = *name, CPUState *cpu; =20 /* Check provided vcpu */ - cpu =3D get_cpu(has_vcpu, vcpu, &err); - if (err) { - error_propagate(errp, err); + cpu =3D get_cpu(has_vcpu, vcpu, errp); + if (*errp) { return NULL; } =20 @@ -135,16 +134,15 @@ void qmp_trace_event_set_state(const char *name, bool= enable, bool has_vcpu, int64_t vcpu, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); TraceEventIter iter; TraceEvent *ev; bool is_pattern =3D trace_event_is_pattern(name); CPUState *cpu; =20 /* Check provided vcpu */ - cpu =3D get_cpu(has_vcpu, vcpu, &err); - if (err) { - error_propagate(errp, err); + cpu =3D get_cpu(has_vcpu, vcpu, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570812776; cv=none; d=zoho.com; s=zohoarc; b=SsD5royLeZloryUK+mypMG9ePYU5xGsDUe/zycizL5yn+yoCz10JjVHosUn7iFGurrqMVGCX8aMb1Wj935RDy30i2PWHQQk1zPfOkl5zbGHlOxMlv/uS4fMovaN5V/6gbvrBJErqZIF+fyjb43NNH7OykE0Q2vpugCqnAnA3/y8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570812776; h=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=//TgL9cI+NgLmpx53KJlNxfv5OtwY/FqOMH4FOWL2k8=; b=mi+qMfEmCGSe0xCgs1kFD98ike7zGkrEsUYLKsIS6cu1WX78mKZL1y6DxogGuyQFUwZKhul6VOAIT93j2nNqGDEMTGKmFyVfT3EvmXGZcgrajFvKmDjppfh0NcHwuY3w72cX01Gp4rueWqKJ/nAx9SzYbo3rNwUgJsNO8oO3fjQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570812776099223.2928810331333; Fri, 11 Oct 2019 09:52:56 -0700 (PDT) Received: from localhost ([::1]:54190 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIy9u-0001St-AI for importer@patchew.org; Fri, 11 Oct 2019 12:52:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36888) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxR9-0006dk-Rq for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR7-0004mF-0g for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:39 -0400 Received: from relay.sw.ru ([185.231.240.75]:48444) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR6-0004Ub-OK for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:36 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQv-0003XG-A4; Fri, 11 Oct 2019 19:06:25 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 086/126] TPM: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:12 +0300 Message-Id: <20191011160552.22907-87-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Stefan Berger , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/tpm/tpm_util.c | 7 +++---- tpm.c | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/hw/tpm/tpm_util.c b/hw/tpm/tpm_util.c index 62b091f0c0..b0657bbbf2 100644 --- a/hw/tpm/tpm_util.c +++ b/hw/tpm/tpm_util.c @@ -47,8 +47,8 @@ static void get_tpm(Object *obj, Visitor *v, const char *= name, void *opaque, static void set_tpm(Object *obj, Visitor *v, const char *name, void *opaqu= e, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); - Error *local_err =3D NULL; Property *prop =3D opaque; TPMBackend *s, **be =3D qdev_get_prop_ptr(dev, prop); char *str; @@ -58,9 +58,8 @@ static void set_tpm(Object *obj, Visitor *v, const char *= name, void *opaque, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } =20 diff --git a/tpm.c b/tpm.c index 9c9e20bbb7..359ebb7f68 100644 --- a/tpm.c +++ b/tpm.c @@ -81,11 +81,11 @@ TPMBackend *qemu_find_tpm_be(const char *id) =20 static int tpm_init_tpmdev(void *dummy, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *value; const char *id; const TPMBackendClass *be; TPMBackend *drv; - Error *local_err =3D NULL; int i; =20 if (!QLIST_EMPTY(&tpm_backends)) { @@ -116,9 +116,8 @@ static int tpm_init_tpmdev(void *dummy, QemuOpts *opts,= Error **errp) } =20 /* validate backend specific opts */ - qemu_opts_validate(opts, be->opts, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_validate(opts, be->opts, errp); + if (*errp) { return 1; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813326; cv=none; d=zoho.com; s=zohoarc; b=DxF4s7NlRipKwjvPJ7n0kCdEsLN0sgdSwud5BS2Y7ZgUODPvCPpDAsXGAuBUX2qoKM/tLw4eY+m6zSXvlFTyymn9NOudBJuOWTJTpmALz7itsp2dBzfjuQG57u8ZwHGVRr65DlA33/RDXsIAEp4RXtSzbQHiaRjRi23QJc5OaNo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813326; h=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=LzfZtFEggEY35ncyuta1FW8StfH2MwDhyDUmbU19XN4=; b=McPEAanRIXWACGh+wXEapY1XYSm0tfjyRZlz3gW5RywXUbcypf8I1GxDz4qvVEFdKWs383TQels+ETwvz8UsA0VnuMwBwC5CwLf3aLw6ZYRKNftXZ9PWQw7fwBN144d3dz0MSnTddt9hN6Xbs2TaP3lEROJQ2PK5/7hKyo0wPRs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813326866404.3004182618324; Fri, 11 Oct 2019 10:02:06 -0700 (PDT) Received: from localhost ([::1]:54288 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyIm-0004lq-L9 for importer@patchew.org; Fri, 11 Oct 2019 13:02:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37027) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRD-0006k5-CG for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR8-0004oN-JC for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:43 -0400 Received: from relay.sw.ru ([185.231.240.75]:48470) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR8-0004WM-8x for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:38 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQv-0003XG-KW; Fri, 11 Oct 2019 19:06:25 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 087/126] Migration: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:13 +0300 Message-Id: <20191011160552.22907-88-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Juan Quintela , armbru@redhat.com, "Dr. David Alan Gilbert" , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- migration/migration.c | 39 ++++++++++++++++++--------------------- migration/ram.c | 13 ++++++------- migration/rdma.c | 13 ++++++------- migration/savevm.c | 2 ++ migration/socket.c | 18 ++++++++---------- 5 files changed, 40 insertions(+), 45 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 5f7e4d15e9..36a0b9e783 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -583,6 +583,7 @@ void migration_fd_process_incoming(QEMUFile *f) =20 void migration_ioc_process_incoming(QIOChannel *ioc, Error **errp) { + ERRP_AUTO_PROPAGATE(); MigrationIncomingState *mis =3D migration_incoming_get_current(); bool start_migration; =20 @@ -603,12 +604,10 @@ void migration_ioc_process_incoming(QIOChannel *ioc, = Error **errp) */ start_migration =3D !migrate_use_multifd(); } else { - Error *local_err =3D NULL; /* Multiple connections */ assert(migrate_use_multifd()); - start_migration =3D multifd_recv_new_channel(ioc, &local_err); - if (local_err) { - error_propagate(errp, local_err); + start_migration =3D multifd_recv_new_channel(ioc, errp); + if (*errp) { return; } } @@ -971,6 +970,7 @@ static bool migrate_caps_check(bool *cap_list, MigrationCapabilityStatusList *params, Error **errp) { + ERRP_AUTO_PROPAGATE(); MigrationCapabilityStatusList *cap; bool old_postcopy_cap; MigrationIncomingState *mis =3D migration_incoming_get_current(); @@ -1764,7 +1764,7 @@ void migrate_del_blocker(Error *reason) =20 void qmp_migrate_incoming(const char *uri, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); static bool once =3D true; =20 if (!deferred_incoming) { @@ -1775,10 +1775,9 @@ void qmp_migrate_incoming(const char *uri, Error **e= rrp) error_setg(errp, "The incoming migration has already been started"= ); } =20 - qemu_start_incoming_migration(uri, &local_err); + qemu_start_incoming_migration(uri, errp); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } =20 @@ -1856,7 +1855,7 @@ bool migration_is_blocked(Error **errp) static bool migrate_prepare(MigrationState *s, bool blk, bool blk_inc, bool resume, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 if (resume) { if (s->state !=3D MIGRATION_STATUS_POSTCOPY_PAUSED) { @@ -1909,9 +1908,8 @@ static bool migrate_prepare(MigrationState *s, bool b= lk, bool blk_inc, "current migration capabilities"); return false; } - migrate_set_block_enabled(true, &local_err); - if (local_err) { - error_propagate(errp, local_err); + migrate_set_block_enabled(true, errp); + if (*errp) { return false; } s->must_remove_block_options =3D true; @@ -1935,7 +1933,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool = blk, bool has_inc, bool inc, bool has_detach, bool detach, bool has_resume, bool resume, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); MigrationState *s =3D migrate_get_current(); const char *p; =20 @@ -1946,17 +1944,17 @@ void qmp_migrate(const char *uri, bool has_blk, boo= l blk, } =20 if (strstart(uri, "tcp:", &p)) { - tcp_start_outgoing_migration(s, p, &local_err); + tcp_start_outgoing_migration(s, p, errp); #ifdef CONFIG_RDMA } else if (strstart(uri, "rdma:", &p)) { - rdma_start_outgoing_migration(s, p, &local_err); + rdma_start_outgoing_migration(s, p, errp); #endif } else if (strstart(uri, "exec:", &p)) { - exec_start_outgoing_migration(s, p, &local_err); + exec_start_outgoing_migration(s, p, errp); } else if (strstart(uri, "unix:", &p)) { - unix_start_outgoing_migration(s, p, &local_err); + unix_start_outgoing_migration(s, p, errp); } else if (strstart(uri, "fd:", &p)) { - fd_start_outgoing_migration(s, p, &local_err); + fd_start_outgoing_migration(s, p, errp); } else { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "uri", "a valid migration protocol"); @@ -1966,9 +1964,8 @@ void qmp_migrate(const char *uri, bool has_blk, bool = blk, return; } =20 - if (local_err) { - migrate_fd_error(s, local_err); - error_propagate(errp, local_err); + if (*errp) { + migrate_fd_error(s, *errp); return; } } diff --git a/migration/ram.c b/migration/ram.c index 22423f08cd..0100c11dd7 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1474,14 +1474,14 @@ bool multifd_recv_all_channels_created(void) */ bool multifd_recv_new_channel(QIOChannel *ioc, Error **errp) { + ERRP_AUTO_PROPAGATE(); MultiFDRecvParams *p; - Error *local_err =3D NULL; int id; =20 - id =3D multifd_recv_initial_packet(ioc, &local_err); + id =3D multifd_recv_initial_packet(ioc, errp); if (id < 0) { - multifd_recv_terminate_threads(local_err); - error_propagate_prepend(errp, local_err, + multifd_recv_terminate_threads(*errp); + error_prepend(errp, "failed to receive packet" " via multifd channel %d: ", atomic_read(&multifd_recv_state->count)); @@ -1491,10 +1491,9 @@ bool multifd_recv_new_channel(QIOChannel *ioc, Error= **errp) =20 p =3D &multifd_recv_state->params[id]; if (p->c !=3D NULL) { - error_setg(&local_err, "multifd: received id '%d' already setup'", + error_setg(errp, "multifd: received id '%d' already setup'", id); - multifd_recv_terminate_threads(local_err); - error_propagate(errp, local_err); + multifd_recv_terminate_threads(*errp); return false; } p->c =3D ioc; diff --git a/migration/rdma.c b/migration/rdma.c index 4c74e88a37..db985fee73 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -2396,8 +2396,9 @@ static void qemu_rdma_cleanup(RDMAContext *rdma) =20 static int qemu_rdma_source_init(RDMAContext *rdma, bool pin_all, Error **= errp) { + ERRP_AUTO_PROPAGATE(); int ret, idx; - Error *local_err =3D NULL, **temp =3D &local_err; + Error **temp =3D errp; =20 /* * Will be validated against destination's actual capabilities @@ -2450,7 +2451,6 @@ static int qemu_rdma_source_init(RDMAContext *rdma, b= ool pin_all, Error **errp) return 0; =20 err_rdma_source_init: - error_propagate(errp, local_err); qemu_rdma_cleanup(rdma); return -1; } @@ -4044,18 +4044,18 @@ static void rdma_accept_incoming_migration(void *op= aque) =20 void rdma_start_incoming_migration(const char *host_port, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; RDMAContext *rdma, *rdma_return_path =3D NULL; - Error *local_err =3D NULL; =20 trace_rdma_start_incoming_migration(); - rdma =3D qemu_rdma_data_init(host_port, &local_err); + rdma =3D qemu_rdma_data_init(host_port, errp); =20 if (rdma =3D=3D NULL) { goto err; } =20 - ret =3D qemu_rdma_dest_init(rdma, &local_err); + ret =3D qemu_rdma_dest_init(rdma, errp); =20 if (ret) { goto err; @@ -4074,7 +4074,7 @@ void rdma_start_incoming_migration(const char *host_p= ort, Error **errp) =20 /* initialize the RDMAContext for return path */ if (migrate_postcopy()) { - rdma_return_path =3D qemu_rdma_data_init(host_port, &local_err); + rdma_return_path =3D qemu_rdma_data_init(host_port, errp); =20 if (rdma_return_path =3D=3D NULL) { goto err; @@ -4087,7 +4087,6 @@ void rdma_start_incoming_migration(const char *host_p= ort, Error **errp) NULL, (void *)(intptr_t)rdma); return; err: - error_propagate(errp, local_err); g_free(rdma); g_free(rdma_return_path); } diff --git a/migration/savevm.c b/migration/savevm.c index bb9462a54d..f9293fe192 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2586,6 +2586,7 @@ int qemu_load_device_state(QEMUFile *f) =20 int save_snapshot(const char *name, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs, *bs1; QEMUSnapshotInfo sn1, *sn =3D &sn1, old_sn1, *old_sn =3D &old_sn1; int ret =3D -1; @@ -2790,6 +2791,7 @@ void qmp_xen_load_devices_state(const char *filename,= Error **errp) =20 int load_snapshot(const char *name, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs, *bs_vm_state; QEMUSnapshotInfo sn; QEMUFile *f; diff --git a/migration/socket.c b/migration/socket.c index 97c9efde59..bc07ef92a1 100644 --- a/migration/socket.c +++ b/migration/socket.c @@ -139,12 +139,11 @@ void tcp_start_outgoing_migration(MigrationState *s, const char *host_port, Error **errp) { - Error *err =3D NULL; - SocketAddress *saddr =3D tcp_build_address(host_port, &err); - if (!err) { - socket_start_outgoing_migration(s, saddr, &err); + ERRP_AUTO_PROPAGATE(); + SocketAddress *saddr =3D tcp_build_address(host_port, errp); + if (!*errp) { + socket_start_outgoing_migration(s, saddr, errp); } - error_propagate(errp, err); } =20 void unix_start_outgoing_migration(MigrationState *s, @@ -209,13 +208,12 @@ static void socket_start_incoming_migration(SocketAdd= ress *saddr, =20 void tcp_start_incoming_migration(const char *host_port, Error **errp) { - Error *err =3D NULL; - SocketAddress *saddr =3D tcp_build_address(host_port, &err); - if (!err) { - socket_start_incoming_migration(saddr, &err); + ERRP_AUTO_PROPAGATE(); + SocketAddress *saddr =3D tcp_build_address(host_port, errp); + if (!*errp) { + socket_start_incoming_migration(saddr, errp); } qapi_free_SocketAddress(saddr); - error_propagate(errp, err); } =20 void unix_start_incoming_migration(const char *path, Error **errp) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813392; cv=none; d=zoho.com; s=zohoarc; b=fcCFKGRKFYbG13Gahq7ah/04tQQcU4DtaMW5X5uqg9GARUm6wNsRw0jwvlHpvHeYh2hQNhrZTAic6rgFFDeB2JsULoepUESFTHlbAQu+3K6E9+7dCeTjgtd6em3m/ZjWw6sEnkfhp+G7kVsaQdm+hSFkI2k/aCvrym6bt7SrIl4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813392; h=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=5UBXd47Rheba4Z2uwJ1iJ33C2hnZKrUbyLoPT0s2YYo=; b=jc5Z3NgA04/bGyVGR5qaT5kboYYEDDbwT0yrh6C+Cc/tzoNTFOghx8IfSNL0bQrf1+9q/UgQsDC3oRymTojBf2NIQa1sObSxk3zQicAcFloyId7NwtYFPnBlZmYUFkwkCrj4lUlBAUvIN4+qGSmJwetwN7ioPOyudhe6h0diZyo= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813392772226.41606593369033; Fri, 11 Oct 2019 10:03:12 -0700 (PDT) Received: from localhost ([::1]:54298 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyJq-0006JG-SD for importer@patchew.org; Fri, 11 Oct 2019 13:03:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36995) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRC-0006io-Js for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR8-0004oh-Mz for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:42 -0400 Received: from relay.sw.ru ([185.231.240.75]:48486) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR8-0004WR-Aj for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:38 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQw-0003XG-2C; Fri, 11 Oct 2019 19:06:26 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 088/126] Cryptography: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:14 +0300 Message-Id: <20191011160552.22907-89-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- crypto/block-luks.c | 56 +++++++++++++++++++-------------------------- crypto/secret.c | 17 ++++++-------- crypto/tlssession.c | 7 +++--- 3 files changed, 33 insertions(+), 47 deletions(-) diff --git a/crypto/block-luks.c b/crypto/block-luks.c index 4861db810c..45c21c2fcc 100644 --- a/crypto/block-luks.c +++ b/crypto/block-luks.c @@ -442,8 +442,8 @@ qcrypto_block_luks_store_header(QCryptoBlock *block, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); const QCryptoBlockLUKS *luks =3D block->opaque; - Error *local_err =3D NULL; size_t i; g_autofree QCryptoBlockLUKSHeader *hdr_copy =3D NULL; =20 @@ -469,10 +469,9 @@ qcrypto_block_luks_store_header(QCryptoBlock *block, =20 /* Write out the partition header and key slot headers */ writefunc(block, 0, (const uint8_t *)hdr_copy, sizeof(*hdr_copy), - opaque, &local_err); + opaque, errp); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return -1; } return 0; @@ -603,9 +602,9 @@ qcrypto_block_luks_check_header(const QCryptoBlockLUKS = *luks, Error **errp) static int qcrypto_block_luks_parse_header(QCryptoBlockLUKS *luks, Error **errp) { + ERRP_AUTO_PROPAGATE(); g_autofree char *cipher_mode =3D g_strdup(luks->header.cipher_mode); char *ivgen_name, *ivhash_name; - Error *local_err =3D NULL; =20 /* * The cipher_mode header contains a string that we have @@ -632,17 +631,15 @@ qcrypto_block_luks_parse_header(QCryptoBlockLUKS *luk= s, Error **errp) ivhash_name++; =20 luks->ivgen_hash_alg =3D qcrypto_block_luks_hash_name_lookup(ivhas= h_name, - &local_= err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return -1; } } =20 luks->cipher_mode =3D qcrypto_block_luks_cipher_mode_lookup(cipher_mod= e, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return -1; } =20 @@ -650,24 +647,21 @@ qcrypto_block_luks_parse_header(QCryptoBlockLUKS *luk= s, Error **errp) qcrypto_block_luks_cipher_name_lookup(luks->header.cipher_name, luks->cipher_mode, luks->header.master_key_= len, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return -1; } =20 luks->hash_alg =3D qcrypto_block_luks_hash_name_lookup(luks->header.hash_spec, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return -1; } =20 luks->ivgen_alg =3D qcrypto_block_luks_ivgen_name_lookup(ivgen_name, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return -1; } =20 @@ -679,9 +673,8 @@ qcrypto_block_luks_parse_header(QCryptoBlockLUKS *luks,= Error **errp) luks->ivgen_cipher_alg =3D qcrypto_block_luks_essiv_cipher(luks->cipher_alg, luks->ivgen_hash_alg, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { return -1; } } else { @@ -1186,9 +1179,9 @@ qcrypto_block_luks_create(QCryptoBlock *block, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); QCryptoBlockLUKS *luks; QCryptoBlockCreateOptionsLUKS luks_opts; - Error *local_err =3D NULL; g_autofree uint8_t *masterkey =3D NULL; size_t header_sectors; size_t split_key_sectors; @@ -1298,9 +1291,8 @@ qcrypto_block_luks_create(QCryptoBlock *block, luks->ivgen_cipher_alg =3D qcrypto_block_luks_essiv_cipher(luks_opts.cipher_alg, luks_opts.ivgen_hash_alg, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { goto error; } } else { @@ -1364,9 +1356,8 @@ qcrypto_block_luks_create(QCryptoBlock *block, luks->header.master_key_salt, QCRYPTO_BLOCK_LUKS_SALT_LEN, QCRYPTO_BLOCK_LUKS_DIGEST_LEN, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { goto error; } =20 @@ -1439,9 +1430,8 @@ qcrypto_block_luks_create(QCryptoBlock *block, block->sector_size; =20 /* Reserve header space to match payload offset */ - initfunc(block, block->payload_offset, opaque, &local_err); - if (local_err) { - error_propagate(errp, local_err); + initfunc(block, block->payload_offset, opaque, errp); + if (*errp) { goto error; } =20 diff --git a/crypto/secret.c b/crypto/secret.c index 1cf0ad0ce8..962d2c1d44 100644 --- a/crypto/secret.c +++ b/crypto/secret.c @@ -178,27 +178,25 @@ qcrypto_secret_prop_set_loaded(Object *obj, bool value, Error **errp) { + ERRP_AUTO_PROPAGATE(); QCryptoSecret *secret =3D QCRYPTO_SECRET(obj); =20 if (value) { - Error *local_err =3D NULL; uint8_t *input =3D NULL; size_t inputlen =3D 0; uint8_t *output =3D NULL; size_t outputlen =3D 0; =20 - qcrypto_secret_load_data(secret, &input, &inputlen, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qcrypto_secret_load_data(secret, &input, &inputlen, errp); + if (*errp) { return; } =20 if (secret->keyid) { qcrypto_secret_decrypt(secret, input, inputlen, - &output, &outputlen, &local_err); + &output, &outputlen, errp); g_free(input); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } input =3D output; @@ -206,10 +204,9 @@ qcrypto_secret_prop_set_loaded(Object *obj, } else { if (secret->format !=3D QCRYPTO_SECRET_FORMAT_RAW) { qcrypto_secret_decode(input, inputlen, - &output, &outputlen, &local_err); + &output, &outputlen, errp); g_free(input); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } input =3D output; diff --git a/crypto/tlssession.c b/crypto/tlssession.c index 33203e8ca7..abb3912304 100644 --- a/crypto/tlssession.c +++ b/crypto/tlssession.c @@ -256,13 +256,13 @@ static int qcrypto_tls_session_check_certificate(QCryptoTLSSession *session, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; unsigned int status; const gnutls_datum_t *certs; unsigned int nCerts, i; time_t now; gnutls_x509_crt_t cert =3D NULL; - Error *err =3D NULL; =20 now =3D time(NULL); if (now =3D=3D ((time_t)-1)) { @@ -354,9 +354,8 @@ qcrypto_tls_session_check_certificate(QCryptoTLSSession= *session, bool allow; =20 allow =3D qauthz_is_allowed_by_id(session->authzid, - session->peername, &err); - if (err) { - error_propagate(errp, err); + session->peername, errp); + if (*errp) { goto error; } if (!allow) { --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814954; cv=none; d=zoho.com; s=zohoarc; b=Y3ZwP8YoaowKV4KqGpo/mqg6Y7eggEs69CgOsgQOz7fHX54K6pkIG1qaLcL4snikk8gM2QdLDtvNDp41kLYoM/KIzWThEOD8ZT5floCzcO/AsW83DYbmuALRef8AR2j8KtfjHPcn588zzO7ngixbtmhPuImegF+iwZBSNcddVHE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814954; h=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=ZNwPehF7nD71Ry78J0x4O+d5dTbg74r0YQ23JTbo2QU=; b=Pg0YEAZjwroxs5MOlpPFsEWEqO0aE1IjtS8lhQ1TfqWxlo6hWFsXeyhiP9fy5+3VZEpGg52BbUAJc+64kl9KK70li5ojdycy1D7sau5H+rBDMxPAp28LJJd/CTRGxxzznGuR0BbDCpCcj80hmv7kg+Jwzqoh2V5XCQrpEIDRaMY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814954308888.188710739437; Fri, 11 Oct 2019 10:29:14 -0700 (PDT) Received: from localhost ([::1]:54664 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyj2-0007Vo-VV for importer@patchew.org; Fri, 11 Oct 2019 13:29:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37006) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRD-0006jF-2U for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR8-0004om-NW for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:42 -0400 Received: from relay.sw.ru ([185.231.240.75]:48468) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR8-0004WH-B7 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:38 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQw-0003XG-9B; Fri, 11 Oct 2019 19:06:26 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 089/126] I/O Channels: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:15 +0300 Message-Id: <20191011160552.22907-90-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- io/dns-resolver.c | 7 +++---- io/net-listener.c | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/io/dns-resolver.c b/io/dns-resolver.c index 6ebe2a5650..a45c5ca0c8 100644 --- a/io/dns-resolver.c +++ b/io/dns-resolver.c @@ -52,13 +52,13 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSReso= lver *resolver, SocketAddress ***addrs, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct addrinfo ai, *res, *e; InetSocketAddress *iaddr =3D &addr->u.inet; char port[33]; char uaddr[INET6_ADDRSTRLEN + 1]; char uport[33]; int rc; - Error *err =3D NULL; size_t i; =20 *naddrs =3D 0; @@ -69,11 +69,10 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSReso= lver *resolver, if (iaddr->has_numeric && iaddr->numeric) { ai.ai_flags |=3D AI_NUMERICHOST | AI_NUMERICSERV; } - ai.ai_family =3D inet_ai_family_from_address(iaddr, &err); + ai.ai_family =3D inet_ai_family_from_address(iaddr, errp); ai.ai_socktype =3D SOCK_STREAM; =20 - if (err) { - error_propagate(errp, err); + if (*errp) { return -1; } =20 diff --git a/io/net-listener.c b/io/net-listener.c index 5d8a226872..ba000e7ede 100644 --- a/io/net-listener.c +++ b/io/net-listener.c @@ -65,11 +65,11 @@ int qio_net_listener_open_sync(QIONetListener *listener, int num, Error **errp) { + ERRP_AUTO_PROPAGATE(); QIODNSResolver *resolver =3D qio_dns_resolver_get_instance(); SocketAddress **resaddrs; size_t nresaddrs; size_t i; - Error *err =3D NULL; bool success =3D false; =20 if (qio_dns_resolver_lookup_sync(resolver, @@ -84,7 +84,7 @@ int qio_net_listener_open_sync(QIONetListener *listener, QIOChannelSocket *sioc =3D qio_channel_socket_new(); =20 if (qio_channel_socket_listen_sync(sioc, resaddrs[i], num, - err ? NULL : &err) =3D=3D 0) { + *errp ? NULL : errp) =3D=3D 0) { success =3D true; =20 qio_net_listener_add(listener, sioc); @@ -96,10 +96,9 @@ int qio_net_listener_open_sync(QIONetListener *listener, g_free(resaddrs); =20 if (success) { - error_free(err); + error_free_errp(errp); return 0; } else { - error_propagate(errp, err); return -1; } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813146; cv=none; d=zoho.com; s=zohoarc; b=Qs+G5EGLOdIX/G4dOFzVpbKcQSg/8+P5R9Y5NL+IJWbYjfhlAO9mmrkgUi9lgaD3WhIWs8O3quqON/vOykQLbu1tqqa+Gaozgm9m3AmmDTMvzUBd/8yPJT7qeJe0jsDLbEseN5lTR+zX8E9zOu2a747Pm9r3GpsEwn8IQFnoxoI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813146; h=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=eE4W/FvRqoQ+bbVJmjLNNFXZ/a19E7xw71pUle8CIrE=; b=bHR12CaLDGfLAPfdNLbtq46nx21I9scvSHXxw/Ig3Udb6FzI9Pqs3M8TERSj8I0UbNmwlxft0RJl6c4XaMVVpU3my0QwJk+c1DJJRU3toZ8gm8i6ImhkD9DOU5DWMIZ+RByKpSRuRN2vMYxpUgqr0eFBiHsBfPPfFKu4E9aWVQA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813146951973.511070028101; Fri, 11 Oct 2019 09:59:06 -0700 (PDT) Received: from localhost ([::1]:54246 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyFt-0000e1-FU for importer@patchew.org; Fri, 11 Oct 2019 12:59:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37001) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRC-0006j3-PU for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR8-0004oO-JF for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:42 -0400 Received: from relay.sw.ru ([185.231.240.75]:48478) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR8-0004WI-8Y for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:38 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQw-0003XG-En; Fri, 11 Oct 2019 19:06:26 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 090/126] Sockets: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:16 +0300 Message-Id: <20191011160552.22907-91-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , armbru@redhat.com, Greg Kurz , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- util/qemu-sockets.c | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index bcc06d0e01..12db07c092 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -211,6 +211,7 @@ static int inet_listen_saddr(InetSocketAddress *saddr, int num, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct addrinfo ai,*res,*e; char port[33]; char uaddr[INET6_ADDRSTRLEN+1]; @@ -219,7 +220,6 @@ static int inet_listen_saddr(InetSocketAddress *saddr, int slisten =3D -1; int saved_errno =3D 0; bool socket_created =3D false; - Error *err =3D NULL; =20 if (saddr->keep_alive) { error_setg(errp, "keep-alive option is not supported for passive " @@ -232,11 +232,10 @@ static int inet_listen_saddr(InetSocketAddress *saddr, if (saddr->has_numeric && saddr->numeric) { ai.ai_flags |=3D AI_NUMERICHOST | AI_NUMERICSERV; } - ai.ai_family =3D inet_ai_family_from_address(saddr, &err); + ai.ai_family =3D inet_ai_family_from_address(saddr, errp); ai.ai_socktype =3D SOCK_STREAM; =20 - if (err) { - error_propagate(errp, err); + if (*errp) { return -1; } =20 @@ -387,9 +386,9 @@ static int inet_connect_addr(struct addrinfo *addr, Err= or **errp) static struct addrinfo *inet_parse_connect_saddr(InetSocketAddress *saddr, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct addrinfo ai, *res; int rc; - Error *err =3D NULL; static int useV4Mapped =3D 1; =20 memset(&ai, 0, sizeof(ai)); @@ -398,11 +397,10 @@ static struct addrinfo *inet_parse_connect_saddr(Inet= SocketAddress *saddr, if (atomic_read(&useV4Mapped)) { ai.ai_flags |=3D AI_V4MAPPED; } - ai.ai_family =3D inet_ai_family_from_address(saddr, &err); + ai.ai_family =3D inet_ai_family_from_address(saddr, errp); ai.ai_socktype =3D SOCK_STREAM; =20 - if (err) { - error_propagate(errp, err); + if (*errp) { return NULL; } =20 @@ -443,7 +441,7 @@ static struct addrinfo *inet_parse_connect_saddr(InetSo= cketAddress *saddr, */ int inet_connect_saddr(InetSocketAddress *saddr, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); struct addrinfo *res, *e; int sock =3D -1; =20 @@ -453,9 +451,8 @@ int inet_connect_saddr(InetSocketAddress *saddr, Error = **errp) } =20 for (e =3D res; e !=3D NULL; e =3D e->ai_next) { - error_free(local_err); - local_err =3D NULL; - sock =3D inet_connect_addr(e, &local_err); + error_free_errp(errp); + sock =3D inet_connect_addr(e, errp); if (sock >=3D 0) { break; } @@ -464,7 +461,6 @@ int inet_connect_saddr(InetSocketAddress *saddr, Error = **errp) freeaddrinfo(res); =20 if (sock < 0) { - error_propagate(errp, local_err); return sock; } =20 @@ -487,20 +483,19 @@ static int inet_dgram_saddr(InetSocketAddress *sraddr, InetSocketAddress *sladdr, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct addrinfo ai, *peer =3D NULL, *local =3D NULL; const char *addr; const char *port; int sock =3D -1, rc; - Error *err =3D NULL; =20 /* lookup peer addr */ memset(&ai,0, sizeof(ai)); ai.ai_flags =3D AI_CANONNAME | AI_V4MAPPED | AI_ADDRCONFIG; - ai.ai_family =3D inet_ai_family_from_address(sraddr, &err); + ai.ai_family =3D inet_ai_family_from_address(sraddr, errp); ai.ai_socktype =3D SOCK_DGRAM; =20 - if (err) { - error_propagate(errp, err); + if (*errp) { goto err; } =20 @@ -861,6 +856,7 @@ static int unix_listen_saddr(UnixSocketAddress *saddr, int num, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct sockaddr_un un; int sock, fd; char *pathbuf =3D NULL; @@ -936,6 +932,7 @@ err: =20 static int unix_connect_saddr(UnixSocketAddress *saddr, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct sockaddr_un un; int sock, rc; size_t pathlen; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813227; cv=none; d=zoho.com; s=zohoarc; b=ncIhozuRbgbcfxca4ve1Sas1XkVGQKiQStBwsbOtrCDY7JcozG4kZxQhEu7vkdNo6uMXourdV12gPLYevgZ25Ph4oIWmkoIelZ1u7lPvZSnyNh/bY9CBTqbT42jRMr3/s5TavgUsHLLOT7Ehz+wsTHTnmFm7asm+C920IDC/LPg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813227; h=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=c3oXsk3bdGJylIY5dNE1xrKE23Gyb3ZmVfrmNAV7vtQ=; b=NU6l+J5jUkFcoFdeVZ8Jcy1yO7E4d1shjT3/1Xjy+iXkcUoa7+jfBGvJ3HknjPLE152+8GGo+NvVS+Omhc/BMnGYAQWLNRBjzP105JndttQ5Fj1V1yzsBb57Kahvdut7+xsct2h4oemPdRKSbOS12QVUOP6mfPla6AiBwRi4zaA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813227044272.4688225736247; Fri, 11 Oct 2019 10:00:27 -0700 (PDT) Received: from localhost ([::1]:54260 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyH5-0002fx-58 for importer@patchew.org; Fri, 11 Oct 2019 13:00:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36952) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRB-0006hQ-SG for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxR8-0004oC-In for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:41 -0400 Received: from relay.sw.ru ([185.231.240.75]:48480) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxR8-0004WK-8f for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:38 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQw-0003XG-MD; Fri, 11 Oct 2019 19:06:26 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 091/126] colo: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:17 +0300 Message-Id: <20191011160552.22907-92-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Hailiang Zhang , Juan Quintela , armbru@redhat.com, Greg Kurz , "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- migration/colo.c | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 2c88aa57a2..375aa6d8ce 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -243,19 +243,19 @@ void qmp_xen_set_replication(bool enable, bool primar= y, =20 ReplicationStatus *qmp_query_xen_replication_status(Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); ReplicationStatus *s =3D g_new0(ReplicationStatus, 1); =20 - replication_get_error_all(&err); - if (err) { + replication_get_error_all(errp); + if (*errp) { s->error =3D true; s->has_desc =3D true; - s->desc =3D g_strdup(error_get_pretty(err)); + s->desc =3D g_strdup(error_get_pretty(*errp)); } else { s->error =3D false; } =20 - error_free(err); + error_free_errp(errp); return s; } =20 @@ -314,12 +314,11 @@ static void colo_send_message(QEMUFile *f, COLOMessag= e msg, static void colo_send_message_value(QEMUFile *f, COLOMessage msg, uint64_t value, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int ret; =20 - colo_send_message(f, msg, &local_err); - if (local_err) { - error_propagate(errp, local_err); + colo_send_message(f, msg, errp); + if (*errp) { return; } qemu_put_be64(f, value); @@ -354,12 +353,11 @@ static COLOMessage colo_receive_message(QEMUFile *f, = Error **errp) static void colo_receive_check_message(QEMUFile *f, COLOMessage expect_msg, Error **errp) { + ERRP_AUTO_PROPAGATE(); COLOMessage msg; - Error *local_err =3D NULL; =20 - msg =3D colo_receive_message(f, &local_err); - if (local_err) { - error_propagate(errp, local_err); + msg =3D colo_receive_message(f, errp); + if (*errp) { return; } if (msg !=3D expect_msg) { @@ -371,13 +369,12 @@ static void colo_receive_check_message(QEMUFile *f, C= OLOMessage expect_msg, static uint64_t colo_receive_message_value(QEMUFile *f, uint32_t expect_ms= g, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); uint64_t value; int ret; =20 - colo_receive_check_message(f, expect_msg, &local_err); - if (local_err) { - error_propagate(errp, local_err); + colo_receive_check_message(f, expect_msg, errp); + if (*errp) { return 0; } =20 @@ -667,12 +664,11 @@ void migrate_start_colo_process(MigrationState *s) static void colo_wait_handle_message(QEMUFile *f, int *checkpoint_request, Error **errp) { + ERRP_AUTO_PROPAGATE(); COLOMessage msg; - Error *local_err =3D NULL; =20 - msg =3D colo_receive_message(f, &local_err); - if (local_err) { - error_propagate(errp, local_err); + msg =3D colo_receive_message(f, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570816618; cv=none; d=zoho.com; s=zohoarc; b=LbxJncXIUnm2FRkaL2XMU6B3tRbQqpu0KSSBsEpRJPfpK9+Fp+lqTuvgBYuNWLu0AT7G0Q+XRLNrBBLO/b++eZQDvDdPOglNFMtNrXXYyJz6lKypSR2Lvemacixm61PNd2/KtG/QsEF6hfLDo2u1ST2i/n24K8mtHKmTJpHH+p0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570816618; h=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=wMoLBll03aSEImtzaJM67bMLUqJwraQyqW+YZZ+j9eU=; b=BrZijvVQLzF0fnR0XrveaNKI9MGkRAVTqY4H1gLFerkwUe55lUDQFTHKejZd4vzCCNo1kgRgFO22eguF9dt7h4Ux5IbUUe+OtM7/g04uMkip1rBykjmUObi+rG27m26cUa8kINfY3omDw7DlDanmpmgCAQN6CkIeDnWCyXnYRAI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570816618953569.697208348652; Fri, 11 Oct 2019 10:56:58 -0700 (PDT) Received: from localhost ([::1]:55002 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIz9t-0006xl-FQ for importer@patchew.org; Fri, 11 Oct 2019 13:56:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37222) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRK-0006uy-4E for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRI-0004vu-Lw for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:49 -0400 Received: from relay.sw.ru ([185.231.240.75]:48494) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRI-0004X7-Et; Fri, 11 Oct 2019 12:06:48 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQw-0003XG-UF; Fri, 11 Oct 2019 19:06:27 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 092/126] Record/replay: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:18 +0300 Message-Id: <20191011160552.22907-93-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Greg Kurz , Pavel Dovgalyuk , Paolo Bonzini , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/blkreplay.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/block/blkreplay.c b/block/blkreplay.c index 2b7931b940..4b548e382f 100644 --- a/block/blkreplay.c +++ b/block/blkreplay.c @@ -23,15 +23,14 @@ typedef struct Request { static int blkreplay_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int ret; =20 /* Open the image file */ bs->file =3D bdrv_open_child(NULL, options, "image", - bs, &child_file, false, &local_err); - if (local_err) { + bs, &child_file, false, errp); + if (*errp) { ret =3D -EINVAL; - error_propagate(errp, local_err); goto fail; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570817073; cv=none; d=zoho.com; s=zohoarc; b=DBZzQnaTQSNfGq24q8UFc2md2uU+iBjve7saON7SdO00s1qTFNX/xAAVycSU0Yr7YBzF0LjiCmjoPDVC8zjvjHKbN0b6xZUQAd115dWbamFQ9w+YHTWA70w+YSjZq2LL79mxjy3/O2xEdKu0QmLuf5jLOgNfZCPjLNirq1/oTyM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570817073; h=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=CjMhi5YzIZ7/erjpl/nJm94OR36uGvV5dJAb0zkaOgI=; b=PTvFNXRe3VmgbsnT7ISRDm3wM2I2axmo6jdqB26bah80AYoN1/4gAqZbY3fcStKb2aR+Oo79qGbCx6oZoqEuj5ZYzxtIJlsGbxftuZQGjB00Lv6pEAigr1gMwGLPhZ+0vmJsqaMGW1wkqGI9plY4465cm77mmu9xdYxr7c/CWeA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570817073899169.80822375152263; Fri, 11 Oct 2019 11:04:33 -0700 (PDT) Received: from localhost ([::1]:55102 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzHA-0006ME-Eq for importer@patchew.org; Fri, 11 Oct 2019 14:04:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37256) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRK-0006wf-Un for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRI-0004w4-Vd for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:50 -0400 Received: from relay.sw.ru ([185.231.240.75]:48506) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRI-0004Y4-Na; Fri, 11 Oct 2019 12:06:48 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQx-0003XG-7b; Fri, 11 Oct 2019 19:06:27 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 093/126] VMDK: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:19 +0300 Message-Id: <20191011160552.22907-94-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Fam Zheng , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/vmdk.c | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/block/vmdk.c b/block/vmdk.c index fed3b50c8a..bf1f2c4cac 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -1078,6 +1078,7 @@ static const char *next_line(const char *s) static int vmdk_parse_extents(const char *desc, BlockDriverState *bs, QDict *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; int matches; char access[11]; @@ -1092,7 +1093,6 @@ static int vmdk_parse_extents(const char *desc, Block= DriverState *bs, BDRVVmdkState *s =3D bs->opaque; VmdkExtent *extent; char extent_opt_prefix[32]; - Error *local_err =3D NULL; =20 for (p =3D desc; *p; p =3D next_line(p)) { /* parse extent line in one of below formats: @@ -1152,10 +1152,9 @@ static int vmdk_parse_extents(const char *desc, Bloc= kDriverState *bs, assert(ret < 32); =20 extent_file =3D bdrv_open_child(extent_path, options, extent_opt_p= refix, - bs, &child_file, false, &local_err); + bs, &child_file, false, errp); g_free(extent_path); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto out; } @@ -1251,11 +1250,11 @@ exit: static int vmdk_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); char *buf; int ret; BDRVVmdkState *s =3D bs->opaque; uint32_t magic; - Error *local_err =3D NULL; =20 bs->file =3D bdrv_open_child(NULL, options, "file", bs, &child_file, false, errp); @@ -1303,9 +1302,8 @@ static int vmdk_open(BlockDriverState *bs, QDict *opt= ions, int flags, error_setg(&s->migration_blocker, "The vmdk format used by node '%s' " "does not support live migration", bdrv_get_device_or_node_name(bs)); - ret =3D migrate_add_blocker(s->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ret =3D migrate_add_blocker(s->migration_blocker, errp); + if (*errp) { error_free(s->migration_blocker); goto fail; } @@ -2223,21 +2221,19 @@ static int vmdk_create_extent(const char *filename,= int64_t filesize, BlockBackend **pbb, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; BlockBackend *blk =3D NULL; - Error *local_err =3D NULL; =20 - ret =3D bdrv_create_file(filename, opts, &local_err); + ret =3D bdrv_create_file(filename, opts, errp); if (ret < 0) { - error_propagate(errp, local_err); goto exit; } =20 blk =3D blk_new_open(filename, NULL, NULL, BDRV_O_RDWR | BDRV_O_RESIZE | BDRV_O_PROTOCOL, - &local_err); + errp); if (blk =3D=3D NULL) { - error_propagate(errp, local_err); ret =3D -EIO; goto exit; } @@ -2333,10 +2329,10 @@ static int coroutine_fn vmdk_co_do_create(int64_t s= ize, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); int extent_idx; BlockBackend *blk =3D NULL; BlockBackend *extent_blk; - Error *local_err =3D NULL; char *desc =3D NULL; int ret =3D 0; bool flat, split, compress; @@ -2440,9 +2436,8 @@ static int coroutine_fn vmdk_co_do_create(int64_t siz= e, char *full_backing =3D bdrv_get_full_backing_filename_from_filename(blk_bs(blk)->file= name, backing_file, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { ret =3D -ENOENT; goto exit; } @@ -2591,7 +2586,7 @@ exit: static int coroutine_fn vmdk_co_create_opts(const char *filename, QemuOpts= *opts, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); char *desc =3D NULL; int64_t total_size =3D 0; char *adapter_type =3D NULL; @@ -2634,9 +2629,8 @@ static int coroutine_fn vmdk_co_create_opts(const cha= r *filename, QemuOpts *opts adapter_type_enum =3D qapi_enum_parse(&BlockdevVmdkAdapterType_loo= kup, adapter_type, BLOCKDEV_VMDK_ADAPTER_TYPE_IDE, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { ret =3D -EINVAL; goto exit; } @@ -2651,9 +2645,8 @@ static int coroutine_fn vmdk_co_create_opts(const cha= r *filename, QemuOpts *opts subformat =3D qapi_enum_parse(&BlockdevVmdkSubformat_lookup, fmt, BLOCKDEV_VMDK_SUBFORMAT_MONOLITHICSPAR= SE, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { ret =3D -EINVAL; goto exit; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570813678; cv=none; d=zoho.com; s=zohoarc; b=jrScQEjYR6UBoEHYzNNv0jkt8p3/fTTr72HJYcs2BEjxRelMMwGDEiqD+yWesZmMcZf+zkSKPvw4UAlOZUemHQOGHXpuLRmhhhlN1YfRMyDJe3CiYH0x0ds4AZ55aIFWUuSC1SxlB9dAZVy/oFO/YQR0xpHgpTMna7134cqmUVA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570813678; h=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=0o1UtXDWW0ruD/g6MFdjS43JbGPfrQUn7J4BSYhpmws=; b=JyOdEDTV9wHZSCV9/Dkt4FNqpYHe6OZmTgt1/cSXyumnHvaJJQblPKgQs5rUjTUKq3K0JStute3Y2oKvC+4XWqFgtFNvcW+KdWBFvDfmKKc7bV/hcQfY3+ZTpzol3BtriQqbpveleP3cv6DQ5mJLowdi6T6w2BlBetiReRyk2bE= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570813678314774.9312735219023; Fri, 11 Oct 2019 10:07:58 -0700 (PDT) Received: from localhost ([::1]:54372 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyOS-0005Yj-Hl for importer@patchew.org; Fri, 11 Oct 2019 13:07:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37255) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRK-0006we-Uj for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRJ-0004wI-4b for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:50 -0400 Received: from relay.sw.ru ([185.231.240.75]:48516) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRI-0004Yu-Sf; Fri, 11 Oct 2019 12:06:49 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQx-0003XG-IF; Fri, 11 Oct 2019 19:06:27 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 094/126] RBD: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:20 +0300 Message-Id: <20191011160552.22907-95-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz , Jason Dillaman Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/rbd.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/block/rbd.c b/block/rbd.c index 057af43d48..fc821da17e 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -428,10 +428,10 @@ static int coroutine_fn qemu_rbd_co_create_opts(const= char *filename, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptions *create_options; BlockdevCreateOptionsRbd *rbd_opts; BlockdevOptionsRbd *loc; - Error *local_err =3D NULL; const char *keypairs, *password_secret; QDict *options =3D NULL; int ret =3D 0; @@ -452,10 +452,9 @@ static int coroutine_fn qemu_rbd_co_create_opts(const = char *filename, rbd_opts->has_cluster_size =3D (rbd_opts->cluster_size !=3D 0); =20 options =3D qdict_new(); - qemu_rbd_parse_filename(filename, options, &local_err); - if (local_err) { + qemu_rbd_parse_filename(filename, options, errp); + if (*errp) { ret =3D -EINVAL; - error_propagate(errp, local_err); goto exit; } =20 @@ -572,8 +571,8 @@ static int qemu_rbd_connect(rados_t *cluster, rados_ioc= tx_t *io_ctx, const char *keypairs, const char *secretid, Error **errp) { + ERRP_AUTO_PROPAGATE(); char *mon_host =3D NULL; - Error *local_err =3D NULL; int r; =20 if (secretid) { @@ -586,9 +585,8 @@ static int qemu_rbd_connect(rados_t *cluster, rados_ioc= tx_t *io_ctx, opts->has_key_secret =3D true; } =20 - mon_host =3D qemu_rbd_mon_host(opts, &local_err); - if (local_err) { - error_propagate(errp, local_err); + mon_host =3D qemu_rbd_mon_host(opts, errp); + if (*errp) { r =3D -EINVAL; goto failed_opts; } @@ -660,8 +658,8 @@ failed_opts: static int qemu_rbd_convert_options(QDict *options, BlockdevOptionsRbd **o= pts, Error **errp) { + ERRP_AUTO_PROPAGATE(); Visitor *v; - Error *local_err =3D NULL; =20 /* Convert the remaining options into a QAPI object */ v =3D qobject_input_visitor_new_flat_confused(options, errp); @@ -669,11 +667,10 @@ static int qemu_rbd_convert_options(QDict *options, B= lockdevOptionsRbd **opts, return -EINVAL; } =20 - visit_type_BlockdevOptionsRbd(v, NULL, opts, &local_err); + visit_type_BlockdevOptionsRbd(v, NULL, opts, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return -EINVAL; } =20 @@ -710,10 +707,10 @@ static int qemu_rbd_attempt_legacy_options(QDict *opt= ions, static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVRBDState *s =3D bs->opaque; BlockdevOptionsRbd *opts =3D NULL; const QDictEntry *e; - Error *local_err =3D NULL; char *keypairs, *secretid; int r; =20 @@ -727,13 +724,12 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict = *options, int flags, qdict_del(options, "password-secret"); } =20 - r =3D qemu_rbd_convert_options(options, &opts, &local_err); - if (local_err) { + r =3D qemu_rbd_convert_options(options, &opts, errp); + if (*errp) { /* If keypairs are present, that means some options are present in * the modern option format. Don't attempt to parse legacy option * formats, as we won't support mixed usage. */ if (keypairs) { - error_propagate(errp, local_err); goto out; } =20 @@ -746,7 +742,6 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict *o= ptions, int flags, if (r < 0) { /* Propagate the original error, not the legacy parsing fallba= ck * error, as the latter was just a best-effort attempt. */ - error_propagate(errp, local_err); goto out; } /* Take care whenever deciding to actually deprecate; once this ab= ility --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815845; cv=none; d=zoho.com; s=zohoarc; b=MMjimfJmEohx0xu88uT+s3lY7luKTXTjtvLvhBKs9Wj/IG8eWNbqsHubca2DgMuBhIj2dbPGM+P6IuAfttTiCGA5f7kRJp5V6qL84N7g98/rXqYhLXAbL5yCUJbhRuyegyxQEPVXUce40p48KysYDsLkCe7cEp3hHAVR6yidmSA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815845; h=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=16WaeP4XYvcv+NXDXgndW2tvhqyLIAKYmFvuvROVwIo=; b=cOKhgS2WqsTzEv0738ESa0onzLX+y6Ka9pAYngQHSG68LvNmx1AuGiahnDxYqzIhg0/m+Tf4KARWdJ72vAg6ZGCOHUF6Vh9NiTRbnF7yKTlSPc1/NSBav0mEtMt1VJ9Vs4VRXiclDnYCmM7HkFUsh7vh2aEzRGDvzN+H7bnHKok= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815845055207.8821391450051; Fri, 11 Oct 2019 10:44:05 -0700 (PDT) Received: from localhost ([::1]:54842 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyxP-0000zN-Rh for importer@patchew.org; Fri, 11 Oct 2019 13:44:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37293) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRM-0006zK-DE for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRJ-0004wx-Ph for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:52 -0400 Received: from relay.sw.ru ([185.231.240.75]:48536) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRJ-0004aS-G6; Fri, 11 Oct 2019 12:06:49 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQx-0003XG-P2; Fri, 11 Oct 2019 19:06:27 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 095/126] Sheepdog: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:21 +0300 Message-Id: <20191011160552.22907-96-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, sheepdog@lists.wpkg.org, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz , Liu Yuan Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/sheepdog.c | 73 ++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 40 deletions(-) diff --git a/block/sheepdog.c b/block/sheepdog.c index 773dfc6ab1..396ec1be28 100644 --- a/block/sheepdog.c +++ b/block/sheepdog.c @@ -529,10 +529,10 @@ static void sd_aio_setup(SheepdogAIOCB *acb, BDRVShee= pdogState *s, =20 static SocketAddress *sd_server_config(QDict *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); QDict *server =3D NULL; Visitor *iv =3D NULL; SocketAddress *saddr =3D NULL; - Error *local_err =3D NULL; =20 qdict_extract_subqdict(options, &server, "server."); =20 @@ -541,9 +541,8 @@ static SocketAddress *sd_server_config(QDict *options, = Error **errp) goto done; } =20 - visit_type_SocketAddress(iv, NULL, &saddr, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_SocketAddress(iv, NULL, &saddr, errp); + if (*errp) { goto done; } =20 @@ -1008,7 +1007,7 @@ static void sd_config_done(SheepdogConfig *cfg) static void sd_parse_uri(SheepdogConfig *cfg, const char *filename, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); QueryParams *qp =3D NULL; bool is_unix; URI *uri; @@ -1017,7 +1016,7 @@ static void sd_parse_uri(SheepdogConfig *cfg, const c= har *filename, =20 cfg->uri =3D uri =3D uri_parse(filename); if (!uri) { - error_setg(&err, "invalid URI '%s'", filename); + error_setg(errp, "invalid URI '%s'", filename); goto out; } =20 @@ -1029,18 +1028,18 @@ static void sd_parse_uri(SheepdogConfig *cfg, const= char *filename, } else if (!g_strcmp0(uri->scheme, "sheepdog+unix")) { is_unix =3D true; } else { - error_setg(&err, "URI scheme must be 'sheepdog', 'sheepdog+tcp'," + error_setg(errp, "URI scheme must be 'sheepdog', 'sheepdog+tcp'," " or 'sheepdog+unix'"); goto out; } =20 if (uri->path =3D=3D NULL || !strcmp(uri->path, "/")) { - error_setg(&err, "missing file path in URI"); + error_setg(errp, "missing file path in URI"); goto out; } if (g_strlcpy(cfg->vdi, uri->path + 1, SD_MAX_VDI_LEN) >=3D SD_MAX_VDI_LEN) { - error_setg(&err, "VDI name is too long"); + error_setg(errp, "VDI name is too long"); goto out; } =20 @@ -1049,25 +1048,25 @@ static void sd_parse_uri(SheepdogConfig *cfg, const= char *filename, if (is_unix) { /* sheepdog+unix:///vdiname?socket=3Dpath */ if (uri->server || uri->port) { - error_setg(&err, "URI scheme %s doesn't accept a server addres= s", + error_setg(errp, "URI scheme %s doesn't accept a server addres= s", uri->scheme); goto out; } if (!qp->n) { - error_setg(&err, + error_setg(errp, "URI scheme %s requires query parameter 'socket'", uri->scheme); goto out; } if (qp->n !=3D 1 || strcmp(qp->p[0].name, "socket")) { - error_setg(&err, "unexpected query parameters"); + error_setg(errp, "unexpected query parameters"); goto out; } cfg->path =3D qp->p[0].value; } else { /* sheepdog[+tcp]://[host:port]/vdiname */ if (qp->n) { - error_setg(&err, "unexpected query parameters"); + error_setg(errp, "unexpected query parameters"); goto out; } cfg->host =3D uri->server; @@ -1078,7 +1077,7 @@ static void sd_parse_uri(SheepdogConfig *cfg, const c= har *filename, if (uri->fragment) { if (!sd_parse_snapid_or_tag(uri->fragment, &cfg->snap_id, cfg->tag)) { - error_setg(&err, "'%s' is not a valid snapshot ID", + error_setg(errp, "'%s' is not a valid snapshot ID", uri->fragment); goto out; } @@ -1087,8 +1086,7 @@ static void sd_parse_uri(SheepdogConfig *cfg, const c= har *filename, } =20 out: - if (err) { - error_propagate(errp, err); + if (*errp) { sd_config_done(cfg); } } @@ -1113,7 +1111,7 @@ out: static void parse_vdiname(SheepdogConfig *cfg, const char *filename, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); char *p, *q, *uri; const char *host_spec, *vdi_spec; int nr_sep; @@ -1155,14 +1153,14 @@ static void parse_vdiname(SheepdogConfig *cfg, cons= t char *filename, * FIXME We to escape URI meta-characters, e.g. "x?y=3Dz" * produces "sheepdog://x?y=3Dz". Because of that ... */ - sd_parse_uri(cfg, uri, &err); - if (err) { + sd_parse_uri(cfg, uri, errp); + if (*errp) { /* * ... this can fail, but the error message is misleading. * Replace it by the traditional useless one until the * escaping is fixed. */ - error_free(err); + error_free_errp(errp); error_setg(errp, "Can't parse filename"); } =20 @@ -1173,17 +1171,16 @@ static void parse_vdiname(SheepdogConfig *cfg, cons= t char *filename, static void sd_parse_filename(const char *filename, QDict *options, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); SheepdogConfig cfg; char buf[32]; =20 if (strstr(filename, "://")) { - sd_parse_uri(&cfg, filename, &err); + sd_parse_uri(&cfg, filename, errp); } else { - parse_vdiname(&cfg, filename, &err); + parse_vdiname(&cfg, filename, errp); } - if (err) { - error_propagate(errp, err); + if (*errp) { return; } =20 @@ -1543,6 +1540,7 @@ static QemuOptsList runtime_opts =3D { static int sd_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret, fd; uint32_t vid =3D 0; BDRVSheepdogState *s =3D bs->opaque; @@ -1550,15 +1548,13 @@ static int sd_open(BlockDriverState *bs, QDict *opt= ions, int flags, uint64_t snap_id; char *buf =3D NULL; QemuOpts *opts; - Error *local_err =3D NULL; =20 s->bs =3D bs; s->aio_context =3D bdrv_get_aio_context(bs); =20 opts =3D qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto err_no_fd; } @@ -1850,19 +1846,18 @@ out_with_err_set: static int sd_create_prealloc(BlockdevOptionsSheepdog *location, int64_t s= ize, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs; Visitor *v; QObject *obj =3D NULL; QDict *qdict; - Error *local_err =3D NULL; int ret; =20 v =3D qobject_output_visitor_new(&obj); - visit_type_BlockdevOptionsSheepdog(v, NULL, &location, &local_err); + visit_type_BlockdevOptionsSheepdog(v, NULL, &location, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { qobject_unref(obj); return -EINVAL; } @@ -2160,11 +2155,11 @@ out: static int coroutine_fn sd_co_create_opts(const char *filename, QemuOpts *= opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptions *create_options =3D NULL; QDict *qdict, *location_qdict; Visitor *v; char *redundancy; - Error *local_err =3D NULL; int ret; =20 redundancy =3D qemu_opt_get_del(opts, BLOCK_OPT_REDUNDANCY); @@ -2175,9 +2170,8 @@ static int coroutine_fn sd_co_create_opts(const char = *filename, QemuOpts *opts, location_qdict =3D qdict_new(); qdict_put(qdict, "location", location_qdict); =20 - sd_parse_filename(filename, location_qdict, &local_err); - if (local_err) { - error_propagate(errp, local_err); + sd_parse_filename(filename, location_qdict, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -2203,11 +2197,10 @@ static int coroutine_fn sd_co_create_opts(const cha= r *filename, QemuOpts *opts, goto fail; } =20 - visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err); + visit_type_BlockdevCreateOptions(v, NULL, &create_options, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto fail; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815471; cv=none; d=zoho.com; s=zohoarc; b=W19rIqwz10WSQRRazKX7B7W4tSHZPK+tJFNVYigYMGN9A3BAS2cVjTPMKoBsfhoK9dVup1IAhfvN0qL7jb6zZQwY8AJsj4F300mrtf5HKaF6HS88mW0qseaEPHdSRJgyLWdBQU+j2eLROVLS2xvinq2SJP6iASGh24qPLq5dxrs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815471; h=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=ChQ1NmaQfCcF/3kxItnMw6I/kM95gG6Y/2PGQpUw9do=; b=bN8JKldNV1jF8dNJXhxlF/xQTO4GzfnwbS0quaPDFaSHZI5SwtfwhZNdkl8rA3DrXH0nIdEtL1dUi8fLEqeY0ZNb7OGj1f4SAVbmxCcEkUmKpTujKxYoY5yxnldgeukm4HW+fDmEr1pVoMHqNdBjQWG72NXjfAQGSfY99f4Cwhc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815471430412.989849157673; Fri, 11 Oct 2019 10:37:51 -0700 (PDT) Received: from localhost ([::1]:54762 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyrN-0001lL-Ti for importer@patchew.org; Fri, 11 Oct 2019 13:37:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37273) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRL-0006yE-Lm for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRK-0004x5-0P for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:51 -0400 Received: from relay.sw.ru ([185.231.240.75]:48542) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRJ-0004bD-Oh; Fri, 11 Oct 2019 12:06:49 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQy-0003XG-8Z; Fri, 11 Oct 2019 19:06:28 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 096/126] VHDX: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:22 +0300 Message-Id: <20191011160552.22907-97-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, Jeff Cody , armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/vhdx-log.c | 1 + block/vhdx.c | 22 +++++++++------------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/block/vhdx-log.c b/block/vhdx-log.c index fdd3a7adc3..176e03327b 100644 --- a/block/vhdx-log.c +++ b/block/vhdx-log.c @@ -748,6 +748,7 @@ exit: int vhdx_parse_log(BlockDriverState *bs, BDRVVHDXState *s, bool *flushed, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret =3D 0; VHDXHeader *hdr; VHDXLogSequence logs =3D { 0 }; diff --git a/block/vhdx.c b/block/vhdx.c index 6a09d0a55c..e3ca23214c 100644 --- a/block/vhdx.c +++ b/block/vhdx.c @@ -898,11 +898,11 @@ static void vhdx_close(BlockDriverState *bs) static int vhdx_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVVHDXState *s =3D bs->opaque; int ret =3D 0; uint32_t i; uint64_t signature; - Error *local_err =3D NULL; =20 bs->file =3D bdrv_open_child(NULL, options, "file", bs, &child_file, false, errp); @@ -931,9 +931,8 @@ static int vhdx_open(BlockDriverState *bs, QDict *optio= ns, int flags, * header update */ vhdx_guid_generate(&s->session_guid); =20 - vhdx_parse_header(bs, s, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + vhdx_parse_header(bs, s, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -1007,9 +1006,8 @@ static int vhdx_open(BlockDriverState *bs, QDict *opt= ions, int flags, error_setg(&s->migration_blocker, "The vhdx format used by node '%s' " "does not support live migration", bdrv_get_device_or_node_name(bs)); - ret =3D migrate_add_blocker(s->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ret =3D migrate_add_blocker(s->migration_blocker, errp); + if (*errp) { error_free(s->migration_blocker); goto fail; } @@ -1966,11 +1964,11 @@ static int coroutine_fn vhdx_co_create_opts(const c= har *filename, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptions *create_options =3D NULL; QDict *qdict; Visitor *v; BlockDriverState *bs =3D NULL; - Error *local_err =3D NULL; int ret; =20 static const QDictRenames opt_renames[] =3D { @@ -1989,9 +1987,8 @@ static int coroutine_fn vhdx_co_create_opts(const cha= r *filename, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_create_file(filename, opts, &local_err); + ret =3D bdrv_create_file(filename, opts, errp); if (ret < 0) { - error_propagate(errp, local_err); goto fail; } =20 @@ -2012,11 +2009,10 @@ static int coroutine_fn vhdx_co_create_opts(const c= har *filename, goto fail; } =20 - visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err); + visit_type_BlockdevCreateOptions(v, NULL, &create_options, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto fail; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815659; cv=none; d=zoho.com; s=zohoarc; b=ew55wOKDgOcYN9Z2dAM+vMGBXpnrZhTvtIaBfoZoI6WKquKBStLbRbvmqZ7DIPQfjrQU3hKVOEi01icQLpDYnqgOqIcnaEYwOWaHKjXK4b8m9lAOe9elfLFiXF4MPuvP0XQsW0OjBWwtZu/acTkJ7aMKleGuAeVtks+t+LzFYtM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815659; h=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=oJfaJAJNuQ/Ij0sJ8LISLgZQdffANjtI2wSH4hGo9T8=; b=Z/J1MZlgxnyXqYHmr7pIM8yDdVa/iOjawr/2XaYWsNBRzjWGrr6Vro0KaFY5ReLffa9oqfw8X2QpaoU68QTLHE4Wo8G1MoS52tLN5hb6RNTXtKkBh+g2g4RN7hKrWn0UOQMCsK2/VxUEQLiyJDzKYENLTQEN7wef33QqvGBhUkw= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815659522794.0685602922839; Fri, 11 Oct 2019 10:40:59 -0700 (PDT) Received: from localhost ([::1]:54802 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyuO-0005nS-AW for importer@patchew.org; Fri, 11 Oct 2019 13:40:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37304) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRM-0006zh-F7 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRK-0004xO-Mr for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:52 -0400 Received: from relay.sw.ru ([185.231.240.75]:48560) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRK-0004cJ-Fa; Fri, 11 Oct 2019 12:06:50 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQy-0003XG-Qf; Fri, 11 Oct 2019 19:06:29 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 097/126] VDI: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:23 +0300 Message-Id: <20191011160552.22907-98-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, Stefan Weil , armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/vdi.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/block/vdi.c b/block/vdi.c index 806ba7f53c..0f2e0723f9 100644 --- a/block/vdi.c +++ b/block/vdi.c @@ -371,11 +371,11 @@ static int vdi_probe(const uint8_t *buf, int buf_size= , const char *filename) static int vdi_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVVdiState *s =3D bs->opaque; VdiHeader header; size_t bmap_size; int ret; - Error *local_err =3D NULL; QemuUUID uuid_link, uuid_parent; =20 bs->file =3D bdrv_open_child(NULL, options, "file", bs, &child_file, @@ -496,9 +496,8 @@ static int vdi_open(BlockDriverState *bs, QDict *option= s, int flags, error_setg(&s->migration_blocker, "The vdi format used by node '%s' " "does not support live migration", bdrv_get_device_or_node_name(bs)); - ret =3D migrate_add_blocker(s->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ret =3D migrate_add_blocker(s->migration_blocker, errp); + if (*errp) { error_free(s->migration_blocker); goto fail_free_bmap; } @@ -735,6 +734,7 @@ nonallocating_write: static int coroutine_fn vdi_co_do_create(BlockdevCreateOptions *create_opt= ions, size_t block_size, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptionsVdi *vdi_opts; int ret =3D 0; uint64_t bytes =3D 0; @@ -899,13 +899,13 @@ static int coroutine_fn vdi_co_create(BlockdevCreateO= ptions *create_options, static int coroutine_fn vdi_co_create_opts(const char *filename, QemuOpts = *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); QDict *qdict =3D NULL; BlockdevCreateOptions *create_options =3D NULL; BlockDriverState *bs_file =3D NULL; uint64_t block_size =3D DEFAULT_CLUSTER_SIZE; bool is_static =3D false; Visitor *v; - Error *local_err =3D NULL; int ret; =20 /* Parse options and convert legacy syntax. @@ -956,11 +956,10 @@ static int coroutine_fn vdi_co_create_opts(const char= *filename, QemuOpts *opts, ret =3D -EINVAL; goto done; } - visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err); + visit_type_BlockdevCreateOptions(v, NULL, &create_options, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto done; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570816033; cv=none; d=zoho.com; s=zohoarc; b=dBmI1tBpHmVEHhFmxAMwFjCYqIwvAkzyNdDhyZ43y5AUb177MKI4j0+QoWNK/diV0KmBCtLQUWNbj1oJler3w+hhQRpxWodm//ILstOzlD4hA0YqQsbbzvYIoXGn6jJzc3vKunqEGOURTdg/UJ3mAd6uUB2GguYlfRPFsWldUU0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570816033; h=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=OHKLmRkEeVCrFtUJGODgRwZe936Z9JeynzFxjsTnCfY=; b=FTFjieZnU3ekGVoHC4Muk7lIOWu5kkyTpViliZ5k2gVgEDQ9L0zhShc2UVGgqjkEbTAqTfXdSY4t7Y6qiJC4dI0jPn1Ag8NLg5PTiJe1VHMpUfjO1IhDzPGcSnNRA9PvscxFAmihXzPY+pKZAOsOM++b+Nm6ibX/e03q0YB2EVM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081603329169.1625998985802; Fri, 11 Oct 2019 10:47:13 -0700 (PDT) Received: from localhost ([::1]:54888 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIz0S-0004aw-1h for importer@patchew.org; Fri, 11 Oct 2019 13:47:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37336) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRN-00070y-6A for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRL-0004y8-Es for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:53 -0400 Received: from relay.sw.ru ([185.231.240.75]:48578) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRL-0004cu-6b; Fri, 11 Oct 2019 12:06:51 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQz-0003XG-AJ; Fri, 11 Oct 2019 19:06:29 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 098/126] iSCSI: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:24 +0300 Message-Id: <20191011160552.22907-99-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, Peter Lieven , armbru@redhat.com, Greg Kurz , Ronnie Sahlberg , Paolo Bonzini , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/iscsi.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/block/iscsi.c b/block/iscsi.c index 506bf5f875..bd825fe40e 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -1779,6 +1779,7 @@ static void iscsi_save_designator(IscsiLun *lun, static int iscsi_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); IscsiLun *iscsilun =3D bs->opaque; struct iscsi_context *iscsi =3D NULL; struct scsi_task *task =3D NULL; @@ -1786,7 +1787,6 @@ static int iscsi_open(BlockDriverState *bs, QDict *op= tions, int flags, struct scsi_inquiry_supported_pages *inq_vpd; char *initiator_name =3D NULL; QemuOpts *opts; - Error *local_err =3D NULL; const char *transport_name, *portal, *target; #if LIBISCSI_API_VERSION >=3D (20160603) enum iscsi_transport_type transport; @@ -1794,9 +1794,8 @@ static int iscsi_open(BlockDriverState *bs, QDict *op= tions, int flags, int i, ret =3D 0, timeout =3D 0, lun; =20 opts =3D qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto out; } @@ -1850,9 +1849,8 @@ static int iscsi_open(BlockDriverState *bs, QDict *op= tions, int flags, } =20 /* check if we got CHAP username/password via the options */ - apply_chap(iscsi, opts, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + apply_chap(iscsi, opts, errp); + if (*errp) { ret =3D -EINVAL; goto out; } @@ -1864,9 +1862,8 @@ static int iscsi_open(BlockDriverState *bs, QDict *op= tions, int flags, } =20 /* check if we got HEADER_DIGEST via the options */ - apply_header_digest(iscsi, opts, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + apply_header_digest(iscsi, opts, errp); + if (*errp) { ret =3D -EINVAL; goto out; } @@ -1918,9 +1915,8 @@ static int iscsi_open(BlockDriverState *bs, QDict *op= tions, int flags, flags &=3D ~BDRV_O_RDWR; } =20 - iscsi_readcapacity_sync(iscsilun, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + iscsi_readcapacity_sync(iscsilun, errp); + if (*errp) { ret =3D -EINVAL; goto out; } @@ -2124,8 +2120,8 @@ static void iscsi_reopen_commit(BDRVReopenState *reop= en_state) static int coroutine_fn iscsi_co_truncate(BlockDriverState *bs, int64_t of= fset, PreallocMode prealloc, Error **e= rrp) { + ERRP_AUTO_PROPAGATE(); IscsiLun *iscsilun =3D bs->opaque; - Error *local_err =3D NULL; =20 if (prealloc !=3D PREALLOC_MODE_OFF) { error_setg(errp, "Unsupported preallocation mode '%s'", @@ -2138,9 +2134,8 @@ static int coroutine_fn iscsi_co_truncate(BlockDriver= State *bs, int64_t offset, return -ENOTSUP; } =20 - iscsi_readcapacity_sync(iscsilun, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + iscsi_readcapacity_sync(iscsilun, errp); + if (*errp) { return -EIO; } =20 @@ -2159,12 +2154,12 @@ static int coroutine_fn iscsi_co_truncate(BlockDriv= erState *bs, int64_t offset, static int coroutine_fn iscsi_co_create_opts(const char *filename, QemuOpt= s *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret =3D 0; int64_t total_size =3D 0; BlockDriverState *bs; IscsiLun *iscsilun =3D NULL; QDict *bs_options; - Error *local_err =3D NULL; =20 bs =3D bdrv_new(); =20 @@ -2175,9 +2170,8 @@ static int coroutine_fn iscsi_co_create_opts(const ch= ar *filename, QemuOpts *opt iscsilun =3D bs->opaque; =20 bs_options =3D qdict_new(); - iscsi_parse_filename(filename, bs_options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + iscsi_parse_filename(filename, bs_options, errp); + if (*errp) { ret =3D -EINVAL; } else { ret =3D iscsi_open(bs, bs_options, 0, NULL); --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570817225; cv=none; d=zoho.com; s=zohoarc; b=PbTKqFMS+oXNvRbqefrm9nppBp0zgefNg7BLQYpDAWYvpTcCiq+WqTVYYcQQR8AIgOj4ln6CKlFd6C5ulQlJu09cii92sulB0BUao0ykRDrv5p5oacX62XIaAP9Njc4HjT8N1J9cAgtJtuDO4AjuF+9V4HJWM/hj7XomU6xwI5M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570817225; h=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=98B6+2yJTgv9vzhrj7bDzFegqcc8OejLvGG4Z+tH2qg=; b=MdpJX2vNfPyGbmz/alQNXxmEWaIi5gU2jqL2Pb9qkjgwch3abSygU4U7j/luWkGu4aq3NxseVh2phqaHwqCIj97Ndx90mT9RQTWxlwI//DRe7nCUKwpHXliaRPIgtv+gTYn2c2hptKzdGHZgqFrZYbOGC41rRR45L67QBmNw9xM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570817225263633.7939857614158; Fri, 11 Oct 2019 11:07:05 -0700 (PDT) Received: from localhost ([::1]:55142 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzJg-0001he-1t for importer@patchew.org; Fri, 11 Oct 2019 14:07:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37395) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRP-000752-69 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRM-0004zc-Jg for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:54 -0400 Received: from relay.sw.ru ([185.231.240.75]:48602) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRM-0004e1-BG; Fri, 11 Oct 2019 12:06:52 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR0-0003XG-2P; Fri, 11 Oct 2019 19:06:30 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 099/126] nbd: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:25 +0300 Message-Id: <20191011160552.22907-100-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/nbd.h | 1 + block/nbd.c | 49 +++++++++++++++++++++------------------------ nbd/client.c | 5 +++++ nbd/server.c | 5 +++++ 4 files changed, 34 insertions(+), 26 deletions(-) diff --git a/include/block/nbd.h b/include/block/nbd.h index 316fd705a9..330f40142a 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -360,6 +360,7 @@ void nbd_server_start(SocketAddress *addr, const char *= tls_creds, static inline int nbd_read(QIOChannel *ioc, void *buffer, size_t size, const char *desc, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret =3D qio_channel_read_all(ioc, buffer, size, errp) < 0 ? -EIO := 0; =20 if (ret < 0) { diff --git a/block/nbd.c b/block/nbd.c index c66fdf54b9..2f8a924562 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -805,10 +805,10 @@ static int nbd_co_receive_cmdread_reply(BDRVNBDState = *s, uint64_t handle, uint64_t offset, QEMUIOVector *qio= v, int *request_ret, Error **errp) { + ERRP_AUTO_PROPAGATE(); NBDReplyChunkIter iter; NBDReply reply; void *payload =3D NULL; - Error *local_err =3D NULL; =20 NBD_FOREACH_REPLY_CHUNK(s, iter, handle, s->info.structured_reply, qiov, &reply, &payload) @@ -827,20 +827,20 @@ static int nbd_co_receive_cmdread_reply(BDRVNBDState = *s, uint64_t handle, break; case NBD_REPLY_TYPE_OFFSET_HOLE: ret =3D nbd_parse_offset_hole_payload(s, &reply.structured, pa= yload, - offset, qiov, &local_err); + offset, qiov, errp); if (ret < 0) { nbd_channel_error(s, ret); - nbd_iter_channel_error(&iter, ret, &local_err); + nbd_iter_channel_error(&iter, ret, errp); } break; default: if (!nbd_reply_type_is_error(chunk->type)) { /* not allowed reply type */ nbd_channel_error(s, -EINVAL); - error_setg(&local_err, + error_setg(errp, "Unexpected reply type: %d (%s) for CMD_READ", chunk->type, nbd_reply_type_lookup(chunk->type)= ); - nbd_iter_channel_error(&iter, -EINVAL, &local_err); + nbd_iter_channel_error(&iter, -EINVAL, errp); } } =20 @@ -858,10 +858,10 @@ static int nbd_co_receive_blockstatus_reply(BDRVNBDSt= ate *s, NBDExtent *extent, int *request_ret, Error **errp) { + ERRP_AUTO_PROPAGATE(); NBDReplyChunkIter iter; NBDReply reply; void *payload =3D NULL; - Error *local_err =3D NULL; bool received =3D false; =20 assert(!extent->length); @@ -875,27 +875,27 @@ static int nbd_co_receive_blockstatus_reply(BDRVNBDSt= ate *s, case NBD_REPLY_TYPE_BLOCK_STATUS: if (received) { nbd_channel_error(s, -EINVAL); - error_setg(&local_err, "Several BLOCK_STATUS chunks in rep= ly"); - nbd_iter_channel_error(&iter, -EINVAL, &local_err); + error_setg(errp, "Several BLOCK_STATUS chunks in reply"); + nbd_iter_channel_error(&iter, -EINVAL, errp); } received =3D true; =20 ret =3D nbd_parse_blockstatus_payload(s, &reply.structured, payload, length, extent, - &local_err); + errp); if (ret < 0) { nbd_channel_error(s, ret); - nbd_iter_channel_error(&iter, ret, &local_err); + nbd_iter_channel_error(&iter, ret, errp); } break; default: if (!nbd_reply_type_is_error(chunk->type)) { nbd_channel_error(s, -EINVAL); - error_setg(&local_err, + error_setg(errp, "Unexpected reply type: %d (%s) " "for CMD_BLOCK_STATUS", chunk->type, nbd_reply_type_lookup(chunk->type)= ); - nbd_iter_channel_error(&iter, -EINVAL, &local_err); + nbd_iter_channel_error(&iter, -EINVAL, errp); } } =20 @@ -904,8 +904,8 @@ static int nbd_co_receive_blockstatus_reply(BDRVNBDStat= e *s, } =20 if (!extent->length && !iter.request_ret) { - error_setg(&local_err, "Server did not reply with any status exten= ts"); - nbd_iter_channel_error(&iter, -EIO, &local_err); + error_setg(errp, "Server did not reply with any status extents"); + nbd_iter_channel_error(&iter, -EIO, errp); } =20 error_propagate(errp, iter.err); @@ -1173,16 +1173,15 @@ static void nbd_client_close(BlockDriverState *bs) static QIOChannelSocket *nbd_establish_connection(SocketAddress *saddr, Error **errp) { + ERRP_AUTO_PROPAGATE(); QIOChannelSocket *sioc; - Error *local_err =3D NULL; =20 sioc =3D qio_channel_socket_new(); qio_channel_set_name(QIO_CHANNEL(sioc), "nbd-client"); =20 - qio_channel_socket_connect_sync(sioc, saddr, &local_err); - if (local_err) { + qio_channel_socket_connect_sync(sioc, saddr, errp); + if (*errp) { object_unref(OBJECT(sioc)); - error_propagate(errp, local_err); return NULL; } =20 @@ -1486,10 +1485,10 @@ static bool nbd_process_legacy_socket_options(QDict= *output_options, static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); SocketAddress *saddr =3D NULL; QDict *addr =3D NULL; Visitor *iv =3D NULL; - Error *local_err =3D NULL; =20 qdict_extract_subqdict(options, &addr, "server."); if (!qdict_size(addr)) { @@ -1502,9 +1501,8 @@ static SocketAddress *nbd_config(BDRVNBDState *s, QDi= ct *options, goto done; } =20 - visit_type_SocketAddress(iv, NULL, &saddr, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_SocketAddress(iv, NULL, &saddr, errp); + if (*errp) { goto done; } =20 @@ -1597,15 +1595,14 @@ static QemuOptsList nbd_runtime_opts =3D { static int nbd_process_options(BlockDriverState *bs, QDict *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVNBDState *s =3D bs->opaque; QemuOpts *opts; - Error *local_err =3D NULL; int ret =3D -EINVAL; =20 opts =3D qemu_opts_create(&nbd_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { goto error; } =20 diff --git a/nbd/client.c b/nbd/client.c index f6733962b4..6e510f4a14 100644 --- a/nbd/client.c +++ b/nbd/client.c @@ -68,6 +68,7 @@ static int nbd_send_option_request(QIOChannel *ioc, uint3= 2_t opt, uint32_t len, const char *data, Error **errp) { + ERRP_AUTO_PROPAGATE(); NBDOption req; QEMU_BUILD_BUG_ON(sizeof(req) !=3D 16); =20 @@ -153,6 +154,7 @@ static int nbd_receive_option_reply(QIOChannel *ioc, ui= nt32_t opt, static int nbd_handle_reply_err(QIOChannel *ioc, NBDOptionReply *reply, bool strict, Error **errp) { + ERRP_AUTO_PROPAGATE(); g_autofree char *msg =3D NULL; =20 if (!(reply->type & (1 << 31))) { @@ -331,6 +333,7 @@ static int nbd_receive_list(QIOChannel *ioc, char **nam= e, char **description, static int nbd_opt_info_or_go(QIOChannel *ioc, uint32_t opt, NBDExportInfo *info, Error **errp) { + ERRP_AUTO_PROPAGATE(); NBDOptionReply reply; uint32_t len =3D strlen(info->name); uint16_t type; @@ -870,6 +873,7 @@ static int nbd_start_negotiate(AioContext *aio_context,= QIOChannel *ioc, bool structured_reply, bool *zeroes, Error **errp) { + ERRP_AUTO_PROPAGATE(); uint64_t magic; =20 trace_nbd_start_negotiate(tlscreds, hostname ? hostname : ""); @@ -1005,6 +1009,7 @@ int nbd_receive_negotiate(AioContext *aio_context, QI= OChannel *ioc, const char *hostname, QIOChannel **outioc, NBDExportInfo *info, Error **errp) { + ERRP_AUTO_PROPAGATE(); int result; bool zeroes; bool base_allocation =3D info->base_allocation; diff --git a/nbd/server.c b/nbd/server.c index d8d1e62455..fdb93aab3f 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -211,6 +211,7 @@ static int GCC_FMT_ATTR(4, 0) nbd_negotiate_send_rep_verr(NBDClient *client, uint32_t type, Error **errp, const char *fmt, va_list va) { + ERRP_AUTO_PROPAGATE(); g_autofree char *msg =3D NULL; int ret; size_t len; @@ -365,6 +366,7 @@ static int nbd_opt_read_name(NBDClient *client, char *n= ame, uint32_t *length, static int nbd_negotiate_send_rep_list(NBDClient *client, NBDExport *exp, Error **errp) { + ERRP_AUTO_PROPAGATE(); size_t name_len, desc_len; uint32_t len; const char *name =3D exp->name ? exp->name : ""; @@ -427,6 +429,7 @@ static void nbd_check_meta_export(NBDClient *client) static int nbd_negotiate_handle_export_name(NBDClient *client, bool no_zer= oes, Error **errp) { + ERRP_AUTO_PROPAGATE(); char name[NBD_MAX_NAME_SIZE + 1]; char buf[NBD_REPLY_EXPORT_NAME_SIZE] =3D ""; size_t len; @@ -1260,6 +1263,7 @@ static int nbd_negotiate_options(NBDClient *client, E= rror **errp) */ static coroutine_fn int nbd_negotiate(NBDClient *client, Error **errp) { + ERRP_AUTO_PROPAGATE(); char buf[NBD_OLDSTYLE_NEGOTIATE_SIZE] =3D ""; int ret; =20 @@ -1631,6 +1635,7 @@ void nbd_export_close(NBDExport *exp) =20 void nbd_export_remove(NBDExport *exp, NbdServerRemoveMode mode, Error **e= rrp) { + ERRP_AUTO_PROPAGATE(); if (mode =3D=3D NBD_SERVER_REMOVE_MODE_HARD || QTAILQ_EMPTY(&exp->clie= nts)) { nbd_export_close(exp); return; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815649; cv=none; d=zoho.com; s=zohoarc; b=laQzwYvRFp+PmkX7ZxGgNIM3ZkiyIBUJ6unFZ4T57jE5dFg2ThRIvF5/JgU1FIUKWMl7HW7PM5lcRwM1USppvSab6yoLpwOL2AYVwvtqqebeqca9AjV/gM2tz08exjo+tkgAb3QuPDthBfFOkiIkvaLaK2cn9SB3paLfqtcLNrQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815649; h=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=ZMlKqwzl8xwLRlK2JuVMNU73Q4j1A0Cwp9rDnx8Bg6U=; b=i84kBLYcxB5KU/1I/6oVKl2E8myR/K7HGD+5BxUSZT6AagOe4cVyepm12p4DDMuZYJxG0BkWrevWcOkbxa9RQ1dHpGOKVuWPeXYq5+fXSJo+q/K7/qd17APwHeDqLzrxTYVetc6gpqic4h4K4TtfnOoauSEd7G3b79fBPjDezvU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815649086865.4617303114816; Fri, 11 Oct 2019 10:40:49 -0700 (PDT) Received: from localhost ([::1]:54794 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyuF-0005TP-F6 for importer@patchew.org; Fri, 11 Oct 2019 13:40:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41352) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxlO-0006n8-Ld for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxlM-0002Vz-MU for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:34 -0400 Received: from relay.sw.ru ([185.231.240.75]:49794) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxlK-0002Sc-Sh; Fri, 11 Oct 2019 12:27:32 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR1-0003XG-5G; Fri, 11 Oct 2019 19:06:31 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 100/126] NFS: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:26 +0300 Message-Id: <20191011160552.22907-101-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, Peter Lieven , armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nfs.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/block/nfs.c b/block/nfs.c index f39acfdb28..ec0dbe3385 100644 --- a/block/nfs.c +++ b/block/nfs.c @@ -561,21 +561,20 @@ out: static BlockdevOptionsNfs *nfs_options_qdict_to_qapi(QDict *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevOptionsNfs *opts =3D NULL; Visitor *v; const QDictEntry *e; - Error *local_err =3D NULL; =20 v =3D qobject_input_visitor_new_flat_confused(options, errp); if (!v) { return NULL; } =20 - visit_type_BlockdevOptionsNfs(v, NULL, &opts, &local_err); + visit_type_BlockdevOptionsNfs(v, NULL, &opts, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return NULL; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815288; cv=none; d=zoho.com; s=zohoarc; b=bqKnCjP2z4dw1UG/JR6IQZHsyyHUUozUyKHY86F6PHeN8r36SZuM0QWQIr/7tGvNlzMCm02Qp4gm1rfdoYPlI9x1t4j27yX42d3ZM1ISHf2MysWT9o6H38iNXze9Oxy6DyPvmgnK37k56NyX2CQoea250ho5a0w7dafWoLjtFpk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815288; h=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=IT01QupRb9V4EHrcU+eH/2nTwgiP/xHPMlHloC+L3I8=; b=ohZPvMroRZc42uJR1YDXK4TJ1r11XTPD72x79ZvgweVDHQ0TcqRF5La9w2FQ716cgt/ybMOWx8Df0jFtFOkLEs3oNf4xx5swdxlw7engZiYBVZN42tp4MxuOQ53o7KrtbHzBOEs689GR3hgAGHUh2SOTLAvYIpiuzQE9SRguuOI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815288472681.4554696734588; Fri, 11 Oct 2019 10:34:48 -0700 (PDT) Received: from localhost ([::1]:54724 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyoO-000613-Ll for importer@patchew.org; Fri, 11 Oct 2019 13:34:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41515) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxlx-0007NR-R5 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxlw-0002e7-Lt for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:09 -0400 Received: from relay.sw.ru ([185.231.240.75]:49928) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxlv-0002du-TT; Fri, 11 Oct 2019 12:28:08 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR1-0003XG-Ta; Fri, 11 Oct 2019 19:06:32 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 101/126] SSH: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:27 +0300 Message-Id: <20191011160552.22907-102-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, "Richard W.M. Jones" , armbru@redhat.com, Greg Kurz , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/ssh.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/block/ssh.c b/block/ssh.c index 84d01e892b..98df18ecb7 100644 --- a/block/ssh.c +++ b/block/ssh.c @@ -614,17 +614,16 @@ static bool ssh_process_legacy_options(QDict *output_= opts, =20 static BlockdevOptionsSsh *ssh_parse_options(QDict *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevOptionsSsh *result =3D NULL; QemuOpts *opts =3D NULL; - Error *local_err =3D NULL; const QDictEntry *e; Visitor *v; =20 /* Translate legacy options */ opts =3D qemu_opts_create(&ssh_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { goto fail; } =20 @@ -638,11 +637,10 @@ static BlockdevOptionsSsh *ssh_parse_options(QDict *o= ptions, Error **errp) goto fail; } =20 - visit_type_BlockdevOptionsSsh(v, NULL, &result, &local_err); + visit_type_BlockdevOptionsSsh(v, NULL, &result, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { goto fail; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815478; cv=none; d=zoho.com; s=zohoarc; b=ShovFGT5lL0ZHHmKZCB701Y9/QizWwe44MqYgnn0Di6fsLgqV+RpdnigUWSB+FdDqd+PjdpTPltYQhfpKQLwqcK2dBTNm2LZGTZGbwhNMQ6Wgoe05oHX83ryRRH8pTyYGsHSIkxE/xF52J1QobbMyIxwI2nUPCucAS8FXBhQD74= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815478; h=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=u7XeOHwLlyauXBYhN/7SDDAuFR2wc+ivSwq3z7SD3mE=; b=IWuxBlNxzHg8zrefcgU0qQJC4SdxsgFaWqhQzTYEh1iBusVIN4Nxpl30umho86uxHQL58wn+u0LFMOZVyzMbL50lpjMK6c4P0gwgZ2zZN2VOzyh8O+1g4slaNk+SwdFsaILH0J2oJKnhQMmAHkqqdEtqPklrwqDwIeXSMMu+/zs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081547870873.88395956264606; Fri, 11 Oct 2019 10:37:58 -0700 (PDT) Received: from localhost ([::1]:54764 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyrV-0001qa-8t for importer@patchew.org; Fri, 11 Oct 2019 13:37:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41294) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxlD-0006k6-9W for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxlA-0002Ks-B2 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:23 -0400 Received: from relay.sw.ru ([185.231.240.75]:49782) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxl9-0002J8-Fr; Fri, 11 Oct 2019 12:27:19 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR2-0003XG-DE; Fri, 11 Oct 2019 19:06:32 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 102/126] CURL: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:28 +0300 Message-Id: <20191011160552.22907-103-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/curl.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/block/curl.c b/block/curl.c index f86299378e..bd687ec9f0 100644 --- a/block/curl.c +++ b/block/curl.c @@ -642,10 +642,10 @@ static QemuOptsList runtime_opts =3D { static int curl_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVCURLState *s =3D bs->opaque; CURLState *state =3D NULL; QemuOpts *opts; - Error *local_err =3D NULL; const char *file; const char *cookie; const char *cookie_secret; @@ -671,9 +671,8 @@ static int curl_open(BlockDriverState *bs, QDict *optio= ns, int flags, =20 qemu_mutex_init(&s->mutex); opts =3D qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { goto out_noclean; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814820; cv=none; d=zoho.com; s=zohoarc; b=JxiN9SGXypKkXasZMWYxUArq17oEHknZZQ8ftUzd22t4OcTNnJjXeluFL9c++3sM2lu0ah1q6trGmO0OcXT5kqUzCvrcefz+P79bM07peKL1NKYONr9/uw7XB+CYG49LUp8imy9sTT+I7zhG+3WmpYyZzeoZ5moMTOGGdfr2rMA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814820; h=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=BJetuSoHxXrdLMdD4ao/Zwl+tU4cfKimGebue4vCsDQ=; b=KYcgdovQgN7OAsYKaEbucqsp3KOEeelwmtehC3AFGbmmH/hQW0Z5T++oRCjnLft3JMXVsCKUhSE+1RHexs5axm/VZfJ5uxEC+KNc6ZjGOx6qxSM7PbHpXoXxt/eByR2M1EB2mklGVOhN99GruTJl5zGBzwsP011stqvhmVemURI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814820072759.419689266311; Fri, 11 Oct 2019 10:27:00 -0700 (PDT) Received: from localhost ([::1]:54630 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIygs-0004Yl-LQ for importer@patchew.org; Fri, 11 Oct 2019 13:26:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40322) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxgT-0008MG-Gf for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxgQ-0007wr-AY for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:29 -0400 Received: from relay.sw.ru ([185.231.240.75]:49616) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxgQ-0007wY-3B; Fri, 11 Oct 2019 12:22:26 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR2-0003XG-LB; Fri, 11 Oct 2019 19:06:32 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 103/126] GLUSTER: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:29 +0300 Message-Id: <20191011160552.22907-104-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz , integration@gluster.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/gluster.c | 69 ++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/block/gluster.c b/block/gluster.c index 64028b2cba..683101612e 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -419,6 +419,7 @@ out: static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct glfs *glfs; int ret; int old_errno; @@ -512,38 +513,38 @@ out: static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf, QDict *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); QemuOpts *opts; SocketAddress *gsconf =3D NULL; SocketAddressList *curr =3D NULL; QDict *backing_options =3D NULL; - Error *local_err =3D NULL; char *str =3D NULL; const char *ptr; int i, type, num_servers; =20 /* create opts info from runtime_json_opts list */ opts =3D qemu_opts_create(&runtime_json_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { goto out; } =20 num_servers =3D qdict_array_entries(options, GLUSTER_OPT_SERVER_PATTER= N); if (num_servers < 1) { - error_setg(&local_err, QERR_MISSING_PARAMETER, "server"); + error_setg(errp, QERR_MISSING_PARAMETER, "server"); goto out; } =20 ptr =3D qemu_opt_get(opts, GLUSTER_OPT_VOLUME); if (!ptr) { - error_setg(&local_err, QERR_MISSING_PARAMETER, GLUSTER_OPT_VOLUME); + error_setg(errp, QERR_MISSING_PARAMETER, GLUSTER_OPT_VOLUME); goto out; } gconf->volume =3D g_strdup(ptr); =20 ptr =3D qemu_opt_get(opts, GLUSTER_OPT_PATH); if (!ptr) { - error_setg(&local_err, QERR_MISSING_PARAMETER, GLUSTER_OPT_PATH); + error_setg(errp, QERR_MISSING_PARAMETER, GLUSTER_OPT_PATH); goto out; } gconf->path =3D g_strdup(ptr); @@ -555,15 +556,15 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlu= ster *gconf, =20 /* create opts info from runtime_type_opts list */ opts =3D qemu_opts_create(&runtime_type_opts, NULL, 0, &error_abor= t); - qemu_opts_absorb_qdict(opts, backing_options, &local_err); - if (local_err) { + qemu_opts_absorb_qdict(opts, backing_options, errp); + if (*errp) { goto out; } =20 ptr =3D qemu_opt_get(opts, GLUSTER_OPT_TYPE); if (!ptr) { - error_setg(&local_err, QERR_MISSING_PARAMETER, GLUSTER_OPT_TYP= E); - error_append_hint(&local_err, GERR_INDEX_HINT, i); + error_setg(errp, QERR_MISSING_PARAMETER, GLUSTER_OPT_TYPE); + error_append_hint(errp, GERR_INDEX_HINT, i); goto out; =20 } @@ -574,10 +575,10 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlu= ster *gconf, type =3D qapi_enum_parse(&SocketAddressType_lookup, ptr, -1, NULL); if (type !=3D SOCKET_ADDRESS_TYPE_INET && type !=3D SOCKET_ADDRESS_TYPE_UNIX) { - error_setg(&local_err, + error_setg(errp, "Parameter '%s' may be 'inet' or 'unix'", GLUSTER_OPT_TYPE); - error_append_hint(&local_err, GERR_INDEX_HINT, i); + error_append_hint(errp, GERR_INDEX_HINT, i); goto out; } gsconf->type =3D type; @@ -586,24 +587,24 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlu= ster *gconf, if (gsconf->type =3D=3D SOCKET_ADDRESS_TYPE_INET) { /* create opts info from runtime_inet_opts list */ opts =3D qemu_opts_create(&runtime_inet_opts, NULL, 0, &error_= abort); - qemu_opts_absorb_qdict(opts, backing_options, &local_err); - if (local_err) { + qemu_opts_absorb_qdict(opts, backing_options, errp); + if (*errp) { goto out; } =20 ptr =3D qemu_opt_get(opts, GLUSTER_OPT_HOST); if (!ptr) { - error_setg(&local_err, QERR_MISSING_PARAMETER, + error_setg(errp, QERR_MISSING_PARAMETER, GLUSTER_OPT_HOST); - error_append_hint(&local_err, GERR_INDEX_HINT, i); + error_append_hint(errp, GERR_INDEX_HINT, i); goto out; } gsconf->u.inet.host =3D g_strdup(ptr); ptr =3D qemu_opt_get(opts, GLUSTER_OPT_PORT); if (!ptr) { - error_setg(&local_err, QERR_MISSING_PARAMETER, + error_setg(errp, QERR_MISSING_PARAMETER, GLUSTER_OPT_PORT); - error_append_hint(&local_err, GERR_INDEX_HINT, i); + error_append_hint(errp, GERR_INDEX_HINT, i); goto out; } gsconf->u.inet.port =3D g_strdup(ptr); @@ -624,19 +625,19 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlu= ster *gconf, gsconf->u.inet.has_ipv6 =3D true; } if (gsconf->u.inet.has_to) { - error_setg(&local_err, "Parameter 'to' not supported"); + error_setg(errp, "Parameter 'to' not supported"); goto out; } if (gsconf->u.inet.has_ipv4 || gsconf->u.inet.has_ipv6) { - error_setg(&local_err, "Parameters 'ipv4/ipv6' not support= ed"); + error_setg(errp, "Parameters 'ipv4/ipv6' not supported"); goto out; } qemu_opts_del(opts); } else { /* create opts info from runtime_unix_opts list */ opts =3D qemu_opts_create(&runtime_unix_opts, NULL, 0, &error_= abort); - qemu_opts_absorb_qdict(opts, backing_options, &local_err); - if (local_err) { + qemu_opts_absorb_qdict(opts, backing_options, errp); + if (*errp) { goto out; } =20 @@ -644,15 +645,15 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlu= ster *gconf, if (!ptr) { ptr =3D qemu_opt_get(opts, GLUSTER_OPT_SOCKET); } else if (qemu_opt_get(opts, GLUSTER_OPT_SOCKET)) { - error_setg(&local_err, + error_setg(errp, "Conflicting parameters 'path' and 'socket'"); - error_append_hint(&local_err, GERR_INDEX_HINT, i); + error_append_hint(errp, GERR_INDEX_HINT, i); goto out; } if (!ptr) { - error_setg(&local_err, QERR_MISSING_PARAMETER, + error_setg(errp, QERR_MISSING_PARAMETER, GLUSTER_OPT_PATH); - error_append_hint(&local_err, GERR_INDEX_HINT, i); + error_append_hint(errp, GERR_INDEX_HINT, i); goto out; } gsconf->u.q_unix.path =3D g_strdup(ptr); @@ -679,7 +680,6 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlust= er *gconf, return 0; =20 out: - error_propagate(errp, local_err); qapi_free_SocketAddress(gsconf); qemu_opts_del(opts); g_free(str); @@ -694,6 +694,7 @@ static int qemu_gluster_parse(BlockdevOptionsGluster *g= conf, const char *filename, QDict *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; if (filename) { ret =3D qemu_gluster_parse_uri(gconf, filename); @@ -810,18 +811,17 @@ static bool qemu_gluster_test_seek(struct glfs_fd *fd) static int qemu_gluster_open(BlockDriverState *bs, QDict *options, int bdrv_flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVGlusterState *s =3D bs->opaque; int open_flags =3D 0; int ret =3D 0; BlockdevOptionsGluster *gconf =3D NULL; QemuOpts *opts; - Error *local_err =3D NULL; const char *filename, *logfile; =20 opts =3D qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto out; } @@ -1134,11 +1134,11 @@ static int coroutine_fn qemu_gluster_co_create_opts= (const char *filename, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptions *options; BlockdevCreateOptionsGluster *gopts; BlockdevOptionsGluster *gconf; char *tmp =3D NULL; - Error *local_err =3D NULL; int ret; =20 options =3D g_new0(BlockdevCreateOptions, 1); @@ -1153,10 +1153,9 @@ static int coroutine_fn qemu_gluster_co_create_opts(= const char *filename, =20 tmp =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); gopts->preallocation =3D qapi_enum_parse(&PreallocMode_lookup, tmp, - PREALLOC_MODE_OFF, &local_err); + PREALLOC_MODE_OFF, errp); g_free(tmp); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto fail; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570817799; cv=none; d=zoho.com; s=zohoarc; b=RoSp4JTNhYYJcNj5rUjSaxOVqtZme7UZmZvpjh3aBmeQcVVLaR0jRKN0OmA5QchpCAsGKQ3eaqOJGS78EaBmYHn8t5BJPVog1ULs1+oHoNi7z4639pFAGKsygjNQZ12Iti4wNtTuIRQx1HM/aMBA0nLk9xH/dzy272RisDJ/I1c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570817799; h=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=z49c2Zi23lVlWS1fM+YaC96dZk+aqyq/euj8mx/ejCM=; b=gk+3hm98a0gRbZl6mwGf25S853R0BcW0I1Ga3YHrJ/ZRA3dwWmmWpQCEYxlBBoWO6WdOtqgykQLNZsnbIKdKVzaYcfruRlgJBhT8BI4DSYH3av3Csb8i3gJV+B57vSFNwcvGKb9L6m9gVxL0E/6j4YjITKEs1LOO3Qmz10qbveI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570817799956240.92534667454743; Fri, 11 Oct 2019 11:16:39 -0700 (PDT) Received: from localhost ([::1]:55262 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzSw-0004mV-IJ for importer@patchew.org; Fri, 11 Oct 2019 14:16:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41622) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxmL-0007oo-L1 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxmK-0002vo-Bm for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:33 -0400 Received: from relay.sw.ru ([185.231.240.75]:49990) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxmK-0002ur-4H; Fri, 11 Oct 2019 12:28:32 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR3-0003XG-7w; Fri, 11 Oct 2019 19:06:33 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 104/126] NVMe Block Driver: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:30 +0300 Message-Id: <20191011160552.22907-105-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , Fam Zheng , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nvme.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index 5be3a39b63..8447d1caea 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -187,9 +187,9 @@ static NVMeQueuePair *nvme_create_queue_pair(BlockDrive= rState *bs, int idx, int size, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i, r; BDRVNVMeState *s =3D bs->opaque; - Error *local_err =3D NULL; NVMeQueuePair *q =3D g_new0(NVMeQueuePair, 1); uint64_t prp_list_iova; =20 @@ -209,16 +209,14 @@ static NVMeQueuePair *nvme_create_queue_pair(BlockDri= verState *bs, req->prp_list_page =3D q->prp_list_pages + i * s->page_size; req->prp_list_iova =3D prp_list_iova + i * s->page_size; } - nvme_init_queue(bs, &q->sq, size, NVME_SQ_ENTRY_BYTES, &local_err); - if (local_err) { - error_propagate(errp, local_err); + nvme_init_queue(bs, &q->sq, size, NVME_SQ_ENTRY_BYTES, errp); + if (*errp) { goto fail; } q->sq.doorbell =3D &s->regs->doorbells[idx * 2 * s->doorbell_scale]; =20 - nvme_init_queue(bs, &q->cq, size, NVME_CQ_ENTRY_BYTES, &local_err); - if (local_err) { - error_propagate(errp, local_err); + nvme_init_queue(bs, &q->cq, size, NVME_CQ_ENTRY_BYTES, errp); + if (*errp) { goto fail; } q->cq.doorbell =3D &s->regs->doorbells[(idx * 2 + 1) * s->doorbell_sca= le]; @@ -569,12 +567,12 @@ static bool nvme_poll_cb(void *opaque) static int nvme_init(BlockDriverState *bs, const char *device, int namespa= ce, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVNVMeState *s =3D bs->opaque; int ret; uint64_t cap; uint64_t timeout_ms; uint64_t deadline, now; - Error *local_err =3D NULL; =20 qemu_co_mutex_init(&s->dma_map_lock); qemu_co_queue_init(&s->dma_flush_queue); @@ -666,9 +664,8 @@ static int nvme_init(BlockDriverState *bs, const char *= device, int namespace, aio_set_event_notifier(bdrv_get_aio_context(bs), &s->irq_notifier, false, nvme_handle_event, nvme_poll_cb); =20 - nvme_identify(bs, namespace, &local_err); - if (local_err) { - error_propagate(errp, local_err); + nvme_identify(bs, namespace, errp); + if (*errp) { ret =3D -EIO; goto out; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570819414; cv=none; d=zoho.com; s=zohoarc; b=mfcmCURj8Rpn3VuE7QJqob4Uq6fGZUk6fH0cXG8LLhO1A9sfq0Ihv1GJdIMY5MaI7VSu0UmB1J7z9dWwVyuPo9K3aLqfWTylC2tOFh0dt5ikjUBxVSCU/wm/pqRRKm+dRttDx5bnHDP3jVwmIRniP7zrQTruDusPUm/ja7VhNm0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570819414; h=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=T2M5Fuo6MlKvqBE31y6VGOBX5OzZts1l2493HkbcIxI=; b=iI9Qq3rwQFxx+oe4ozAeVSTvVmrU4zx8enFz+tX1q8EADzcoBVgZ2zQM2ZiW7B9CQgNvCGEasPHQsMrMct+Vq2g+ZkgQUU7BdE1+1Wp0bgvtaR6Mkkyq75Nr3OSUWel0LpwHV0gqbbSVwDwUWOlnizABCIQEbCTy9FbqA0xGi9w= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570819414074916.1943140964596; Fri, 11 Oct 2019 11:43:34 -0700 (PDT) Received: from localhost ([::1]:55728 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzsu-0002cS-R3 for importer@patchew.org; Fri, 11 Oct 2019 14:43:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41752) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxmx-00006C-JN for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:29:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxmw-0003NV-Ba for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:29:11 -0400 Received: from relay.sw.ru ([185.231.240.75]:50034) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxmw-0003NI-4K for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:29:10 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR3-0003XG-HJ; Fri, 11 Oct 2019 19:06:33 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 105/126] Bootdevice: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:31 +0300 Message-Id: <20191011160552.22907-106-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , "Gonglei \(Arei\)" , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- bootdevice.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/bootdevice.c b/bootdevice.c index 1d225202f9..ca69cbeb05 100644 --- a/bootdevice.c +++ b/bootdevice.c @@ -53,7 +53,7 @@ void qemu_register_boot_set(QEMUBootSetHandler *func, voi= d *opaque) =20 void qemu_boot_set(const char *boot_order, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 if (!boot_set_handler) { error_setg(errp, "no function defined to set boot device list for" @@ -61,9 +61,8 @@ void qemu_boot_set(const char *boot_order, Error **errp) return; } =20 - validate_bootdevices(boot_order, &local_err); - if (local_err) { - error_propagate(errp, local_err); + validate_bootdevices(boot_order, errp); + if (*errp) { return; } =20 @@ -286,26 +285,23 @@ static void device_get_bootindex(Object *obj, Visitor= *v, const char *name, static void device_set_bootindex(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); BootIndexProperty *prop =3D opaque; int32_t boot_index; - Error *local_err =3D NULL; =20 - visit_type_int32(v, name, &boot_index, &local_err); - if (local_err) { - goto out; + visit_type_int32(v, name, &boot_index, errp); + if (*errp) { + return; } /* check whether bootindex is present in fw_boot_order list */ - check_boot_index(boot_index, &local_err); - if (local_err) { - goto out; + check_boot_index(boot_index, errp); + if (*errp) { + return; } /* change bootindex to a new one */ *prop->bootindex =3D boot_index; =20 add_boot_device_path(*prop->bootindex, prop->dev, prop->suffix); - -out: - error_propagate(errp, local_err); } =20 static void property_release_bootindex(Object *obj, const char *name, @@ -322,7 +318,7 @@ void device_add_bootindex_property(Object *obj, int32_t= *bootindex, const char *name, const char *suffix, DeviceState *dev, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); BootIndexProperty *prop =3D g_malloc0(sizeof(*prop)); =20 prop->bootindex =3D bootindex; @@ -333,10 +329,9 @@ void device_add_bootindex_property(Object *obj, int32_= t *bootindex, device_get_bootindex, device_set_bootindex, property_release_bootindex, - prop, &local_err); + prop, errp); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { g_free(prop); return; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570816269; cv=none; d=zoho.com; s=zohoarc; b=MbYZyILXDjEMIZbYPgj+c4ix4YVFHUqSmBgoQ/M3iUv/4HzUnIZ/MBKZyONHhdAEo8lrffnYfcRx83VRuosKWs9z5rbhwCXacwCBs0Pr+bKGaOtR4aChqSV60J5WuBKWD6I71JeYKbAkWVrGHjQoGjutbrmJeQ4qvtsKTCCl84Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570816269; h=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=8Q4tHFujYHYwbPVT2nyJFs1S+i0gAJ5RZT8eAAUtOpk=; b=l0LSn+k5L/vsMub0t0rC8Ar7T6KSF3n0KRjk0xZP5CJvTwcqdWw42Vjn4yZ/t6owgCGOnghIUFjvr/G4zbI+fIF3qYclJJ4KuxiSeg+B1sVy0h+XoumnU8k5PtUDsT2I6902it0zd44o4IpHBUGVs5k2m5xT+BHhHZLH7ndgH2Y= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570816269875653.9582971725449; Fri, 11 Oct 2019 10:51:09 -0700 (PDT) Received: from localhost ([::1]:54930 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIz4G-00006A-6C for importer@patchew.org; Fri, 11 Oct 2019 13:51:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41708) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxmd-0007vk-1b for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxma-0003Cy-Ty for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:50 -0400 Received: from relay.sw.ru ([185.231.240.75]:50016) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxmZ-0003Ca-TE; Fri, 11 Oct 2019 12:28:48 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR4-0003XG-1s; Fri, 11 Oct 2019 19:06:34 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 106/126] Quorum: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:32 +0300 Message-Id: <20191011160552.22907-107-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, Alberto Garcia , qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/quorum.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/block/quorum.c b/block/quorum.c index df68adcfaa..5c531e1ec5 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -861,8 +861,8 @@ static QemuOptsList quorum_runtime_opts =3D { static int quorum_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVQuorumState *s =3D bs->opaque; - Error *local_err =3D NULL; QemuOpts *opts =3D NULL; const char *pattern_str; bool *opened; @@ -874,27 +874,27 @@ static int quorum_open(BlockDriverState *bs, QDict *o= ptions, int flags, /* count how many different children are present */ s->num_children =3D qdict_array_entries(options, "children."); if (s->num_children < 0) { - error_setg(&local_err, "Option children is not a valid array"); + error_setg(errp, "Option children is not a valid array"); ret =3D -EINVAL; goto exit; } if (s->num_children < 1) { - error_setg(&local_err, + error_setg(errp, "Number of provided children must be 1 or more"); ret =3D -EINVAL; goto exit; } =20 opts =3D qemu_opts_create(&quorum_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto exit; } =20 s->threshold =3D qemu_opt_get_number(opts, QUORUM_OPT_VOTE_THRESHOLD, = 0); /* and validate it against s->num_children */ - ret =3D quorum_valid_threshold(s->threshold, s->num_children, &local_e= rr); + ret =3D quorum_valid_threshold(s->threshold, s->num_children, errp); if (ret < 0) { goto exit; } @@ -907,7 +907,7 @@ static int quorum_open(BlockDriverState *bs, QDict *opt= ions, int flags, -EINVAL, NULL); } if (ret < 0) { - error_setg(&local_err, "Please set read-pattern as fifo or quorum"= ); + error_setg(errp, "Please set read-pattern as fifo or quorum"); goto exit; } s->read_pattern =3D ret; @@ -915,7 +915,7 @@ static int quorum_open(BlockDriverState *bs, QDict *opt= ions, int flags, if (s->read_pattern =3D=3D QUORUM_READ_PATTERN_QUORUM) { s->is_blkverify =3D qemu_opt_get_bool(opts, QUORUM_OPT_BLKVERIFY, = false); if (s->is_blkverify && (s->num_children !=3D 2 || s->threshold != =3D 2)) { - error_setg(&local_err, "blkverify=3Don can only be set if ther= e are " + error_setg(errp, "blkverify=3Don can only be set if there are " "exactly two files and vote-threshold is 2"); ret =3D -EINVAL; goto exit; @@ -924,7 +924,7 @@ static int quorum_open(BlockDriverState *bs, QDict *opt= ions, int flags, s->rewrite_corrupted =3D qemu_opt_get_bool(opts, QUORUM_OPT_REWRIT= E, false); if (s->rewrite_corrupted && s->is_blkverify) { - error_setg(&local_err, + error_setg(errp, "rewrite-corrupted=3Don cannot be used with blkveri= fy=3Don"); ret =3D -EINVAL; goto exit; @@ -941,8 +941,8 @@ static int quorum_open(BlockDriverState *bs, QDict *opt= ions, int flags, assert(ret < 32); =20 s->children[i] =3D bdrv_open_child(NULL, options, indexstr, bs, - &child_format, false, &local_err); - if (local_err) { + &child_format, false, errp); + if (*errp) { ret =3D -EINVAL; goto close_exit; } @@ -969,7 +969,6 @@ close_exit: exit: qemu_opts_del(opts); /* propagate error */ - error_propagate(errp, local_err); return ret; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815129; cv=none; d=zoho.com; s=zohoarc; b=mGnvyUG9JGXy6djSZHKPB0g9vO+0vqR9A2gQnWcsmVmRmzC8BoBwyuw7oHhy0ETr3tZndSmGUEtG5HDYZJFeo/waHBmhofMNZAMeyrtIjtosFYsVw5qC8tDeb7WnFBBtuWk/d2nimsJ11POdWJk7wMMa3s0rYDUBTI5z+V3wnSY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815129; h=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=NlD71UNY85Mjq0Lf9JlOrfyV3fN5qRM1UtsyrM4I01g=; b=ZCQ7nnLsKf3ClgpIqXPZ6Mwzfwh45vQOyu9QgwSNDHzjE/YQLybkkOpoI+q81KkkDdLgrclSiS1hKnq/KwaVAMCtSHiW7+H8yNMD5FbMEzvzmbuivWDcyf1mskyY7b9tw72b7IDcsdbdVvLfCH3WqYRYfQaSPhj6gXl7+PIEEF0= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815129556158.37159807775174; Fri, 11 Oct 2019 10:32:09 -0700 (PDT) Received: from localhost ([::1]:54698 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIylr-0002YU-OU for importer@patchew.org; Fri, 11 Oct 2019 13:32:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40504) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxgy-0000cs-5r for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxgw-00088V-Mu for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:00 -0400 Received: from relay.sw.ru ([185.231.240.75]:49666) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxgw-000886-Fo; Fri, 11 Oct 2019 12:22:58 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR4-0003XG-L5; Fri, 11 Oct 2019 19:06:34 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 107/126] blklogwrites: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:33 +0300 Message-Id: <20191011160552.22907-108-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz , Ari Sundholm Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/blklogwrites.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/block/blklogwrites.c b/block/blklogwrites.c index 04d8b33607..841cfeef95 100644 --- a/block/blklogwrites.c +++ b/block/blklogwrites.c @@ -141,36 +141,33 @@ static uint64_t blk_log_writes_find_cur_log_sector(Bd= rvChild *log, static int blk_log_writes_open(BlockDriverState *bs, QDict *options, int f= lags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVBlkLogWritesState *s =3D bs->opaque; QemuOpts *opts; - Error *local_err =3D NULL; int ret; uint64_t log_sector_size; bool log_append; =20 opts =3D qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; - error_propagate(errp, local_err); goto fail; } =20 /* Open the file */ bs->file =3D bdrv_open_child(NULL, options, "file", bs, &child_file, f= alse, - &local_err); - if (local_err) { + errp); + if (*errp) { ret =3D -EINVAL; - error_propagate(errp, local_err); goto fail; } =20 /* Open the log file */ s->log_file =3D bdrv_open_child(NULL, options, "log", bs, &child_file,= false, - &local_err); - if (local_err) { + errp); + if (*errp) { ret =3D -EINVAL; - error_propagate(errp, local_err); goto fail; } =20 @@ -220,10 +217,9 @@ static int blk_log_writes_open(BlockDriverState *bs, Q= Dict *options, int flags, if (blk_log_writes_sector_size_valid(log_sector_size)) { s->cur_log_sector =3D blk_log_writes_find_cur_log_sector(s->log_file, log_sector= _size, - le64_to_cpu(log_sb.nr_entries), &local= _err); - if (local_err) { + le64_to_cpu(log_sb.nr_entries), errp); + if (*errp) { ret =3D -EINVAL; - error_propagate(errp, local_err); goto fail_log; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570818405; cv=none; d=zoho.com; s=zohoarc; b=nyIYyiPQpQyPH0GZjoHPKegXL4YH6FDO+iIlkpqPTipGL3b2V+10zc65XHnzMGrLp5tLEguG8Xd/8HbAyHGGp61aZL6eGY82Hon0i0WVIVGPfd5wgv8lm01NUPO3pZAa4OFdiJpzZYhYCBVIc3ljWCfSOUYl6eSiyNuXChr2hO8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570818405; h=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=W47WAokon6R7lAD07xrt7xa+O6TOnZvPWrtJ27Jr36I=; b=TjeF8IibvaSEOlMv3YejaNf+T5TYX/y5U5R2QPtPPw14ct5hzX3n+LMYFHAtN0yTDQVOZ51sHgMx+n5kigT2KaIkDH+L4rbs+NJAx4j3Nf0EZtvgeO5U1eA0f8vtnp4JhREPS5TLqE0U7VeI45UncMIVmbpOVZgHBiharcNL2Cc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570818405900846.5752018783951; Fri, 11 Oct 2019 11:26:45 -0700 (PDT) Received: from localhost ([::1]:55440 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzcg-00086V-8r for importer@patchew.org; Fri, 11 Oct 2019 14:26:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40548) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxh9-0000pN-1l for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxh7-0008IJ-L3 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:10 -0400 Received: from relay.sw.ru ([185.231.240.75]:49680) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxh7-0008H0-BL; Fri, 11 Oct 2019 12:23:09 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR5-0003XG-8N; Fri, 11 Oct 2019 19:06:35 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 108/126] blkverify: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:34 +0300 Message-Id: <20191011160552.22907-109-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz , Stefan Hajnoczi Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/blkverify.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/block/blkverify.c b/block/blkverify.c index 304b0a1368..96e54f8439 100644 --- a/block/blkverify.c +++ b/block/blkverify.c @@ -110,35 +110,32 @@ static QemuOptsList runtime_opts =3D { static int blkverify_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVBlkverifyState *s =3D bs->opaque; QemuOpts *opts; - Error *local_err =3D NULL; int ret; =20 opts =3D qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } =20 /* Open the raw file */ bs->file =3D bdrv_open_child(qemu_opt_get(opts, "x-raw"), options, "ra= w", - bs, &child_file, false, &local_err); - if (local_err) { + bs, &child_file, false, errp); + if (*errp) { ret =3D -EINVAL; - error_propagate(errp, local_err); goto fail; } =20 /* Open the test file */ s->test_file =3D bdrv_open_child(qemu_opt_get(opts, "x-image"), option= s, "test", bs, &child_format, false, - &local_err); - if (local_err) { + errp); + if (*errp) { ret =3D -EINVAL; - error_propagate(errp, local_err); goto fail; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570819274; cv=none; d=zoho.com; s=zohoarc; b=l2sRpTBgzGMrra5uRH/SeIEkAfHm9ExwL+SjqTC6QfKwhdeDL+Npq2I3MtGZ/BVi//26Tkj+Mf+3T654iSEWTMqxfbeeEoZ0hzrEBOE9qOW+SUJj53dVMy7/j8nEme5D/+MYl9NJA6ddJrBOfQWiJITWcdyXdn5x0TBor6Zeh2M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570819274; h=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=HAmjCVi4ZXXoZm7UsVxTIPe1NhTf9oY+WVceyAKqMrE=; b=edmY0QuyXRD/6jsMS6ZnVD7qg4az9XAPGHEnTiAbGIPc/LPi7K4/7ItOdV8+NHYdywdm/jnn6CfnU7JndLOKbiXzCLxgmEntibX2h61lKVJ3WDeotfMoqyY0F7kU0iCwtSePEaUwjfVVgQSq5kiCrbCc+Y+fGzigj5d9M2Bxi80= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570819274505173.84682542506346; Fri, 11 Oct 2019 11:41:14 -0700 (PDT) Received: from localhost ([::1]:55698 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzqj-000804-AE for importer@patchew.org; Fri, 11 Oct 2019 14:41:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41561) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxm9-0007UQ-6I for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxm7-0002oW-PK for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:21 -0400 Received: from relay.sw.ru ([185.231.240.75]:49960) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxm7-0002mQ-Hq; Fri, 11 Oct 2019 12:28:19 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR5-0003XG-Rp; Fri, 11 Oct 2019 19:06:36 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 109/126] parallels: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:35 +0300 Message-Id: <20191011160552.22907-110-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Greg Kurz , Stefan Hajnoczi , "Denis V. Lunev" , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/parallels.c | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 7cd2714b69..c8ba23bbd5 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -613,8 +613,8 @@ static int coroutine_fn parallels_co_create_opts(const = char *filename, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptions *create_options =3D NULL; - Error *local_err =3D NULL; BlockDriverState *bs =3D NULL; QDict *qdict; Visitor *v; @@ -635,9 +635,8 @@ static int coroutine_fn parallels_co_create_opts(const = char *filename, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_create_file(filename, opts, &local_err); + ret =3D bdrv_create_file(filename, opts, errp); if (ret < 0) { - error_propagate(errp, local_err); goto done; } =20 @@ -658,11 +657,10 @@ static int coroutine_fn parallels_co_create_opts(cons= t char *filename, goto done; } =20 - visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err); + visit_type_BlockdevCreateOptions(v, NULL, &create_options, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto done; } @@ -721,11 +719,11 @@ static int parallels_update_header(BlockDriverState *= bs) static int parallels_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVParallelsState *s =3D bs->opaque; ParallelsHeader ph; int ret, size, i; QemuOpts *opts =3D NULL; - Error *local_err =3D NULL; char *buf; =20 bs->file =3D bdrv_open_child(NULL, options, "file", bs, &child_file, @@ -813,13 +811,13 @@ static int parallels_open(BlockDriverState *bs, QDict= *options, int flags, } } =20 - opts =3D qemu_opts_create(¶llels_runtime_opts, NULL, 0, &local_err= ); - if (local_err !=3D NULL) { + opts =3D qemu_opts_create(¶llels_runtime_opts, NULL, 0, errp); + if (*errp) { goto fail_options; } =20 - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err !=3D NULL) { + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { goto fail_options; } =20 @@ -829,9 +827,9 @@ static int parallels_open(BlockDriverState *bs, QDict *= options, int flags, buf =3D qemu_opt_get_del(opts, PARALLELS_OPT_PREALLOC_MODE); s->prealloc_mode =3D qapi_enum_parse(&prealloc_mode_lookup, buf, PRL_PREALLOC_MODE_FALLOCATE, - &local_err); + errp); g_free(buf); - if (local_err !=3D NULL) { + if (*errp) { goto fail_options; } =20 @@ -855,9 +853,8 @@ static int parallels_open(BlockDriverState *bs, QDict *= options, int flags, error_setg(&s->migration_blocker, "The Parallels format used by node '= %s' " "does not support live migration", bdrv_get_device_or_node_name(bs)); - ret =3D migrate_add_blocker(s->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ret =3D migrate_add_blocker(s->migration_blocker, errp); + if (*errp) { error_free(s->migration_blocker); goto fail; } @@ -872,7 +869,6 @@ fail: return ret; =20 fail_options: - error_propagate(errp, local_err); ret =3D -EINVAL; goto fail; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815819; cv=none; d=zoho.com; s=zohoarc; b=SYNOwJ/Oa8j8f81tVjGg/kedotaJak3dBpRiBA1WSletdD+kTo1mXBBtgQ/3XrD2e1Bnj8lOX6RIFw3k5Aiw6c5ebW7VOJcnywEsKIqg7v8MNKJLSZR8bGoY71ILESfsqBqM99w/9x4ffC2VQO9BisJtuTb+LJzc1OIqulJ6ug0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815819; h=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=q82OZeei3lDu/jW0FZn9MKegSMz/54xaFtTZIQoTVy0=; b=WUejVvgy3qT3ZTX19k8MKxpq/OElbn/OJR3mwbZOpWzSCi43LdPBazZKML9ka04xJq0Ldab4ifj/JD5GMvTRiqqlfAQNtC0Ju3tDi2I26UD1015Z3ipdTl/OUgFB1ct9Nb7B6yJVi/uj6OaOrLvDIrfjCz6FmhgD4Dlg6PXekYU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815819841858.049947573652; Fri, 11 Oct 2019 10:43:39 -0700 (PDT) Received: from localhost ([::1]:54836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyx0-0000bO-93 for importer@patchew.org; Fri, 11 Oct 2019 13:43:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41457) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxli-0007Aa-7y for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxlg-0002cH-Jl for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:54 -0400 Received: from relay.sw.ru ([185.231.240.75]:49820) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxlg-0002c0-Cp; Fri, 11 Oct 2019 12:27:52 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR6-0003XG-5E; Fri, 11 Oct 2019 19:06:36 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 110/126] qed: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:36 +0300 Message-Id: <20191011160552.22907-111-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz , Stefan Hajnoczi Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/qed.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/block/qed.c b/block/qed.c index 0d8fd507aa..689522519d 100644 --- a/block/qed.c +++ b/block/qed.c @@ -721,11 +721,11 @@ static int coroutine_fn bdrv_qed_co_create_opts(const= char *filename, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptions *create_options =3D NULL; QDict *qdict; Visitor *v; BlockDriverState *bs =3D NULL; - Error *local_err =3D NULL; int ret; =20 static const QDictRenames opt_renames[] =3D { @@ -745,9 +745,8 @@ static int coroutine_fn bdrv_qed_co_create_opts(const c= har *filename, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_create_file(filename, opts, &local_err); + ret =3D bdrv_create_file(filename, opts, errp); if (ret < 0) { - error_propagate(errp, local_err); goto fail; } =20 @@ -768,11 +767,10 @@ static int coroutine_fn bdrv_qed_co_create_opts(const= char *filename, goto fail; } =20 - visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err); + visit_type_BlockdevCreateOptions(v, NULL, &create_options, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -1587,18 +1585,18 @@ static int bdrv_qed_change_backing_file(BlockDriver= State *bs, static void coroutine_fn bdrv_qed_co_invalidate_cache(BlockDriverState *bs, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVQEDState *s =3D bs->opaque; - Error *local_err =3D NULL; int ret; =20 bdrv_qed_close(bs); =20 bdrv_qed_init_state(bs); qemu_co_mutex_lock(&s->table_lock); - ret =3D bdrv_qed_do_open(bs, NULL, bs->open_flags, &local_err); + ret =3D bdrv_qed_do_open(bs, NULL, bs->open_flags, errp); qemu_co_mutex_unlock(&s->table_lock); - if (local_err) { - error_propagate_prepend(errp, local_err, + if (*errp) { + error_prepend(errp, "Could not reopen qed layer: "); return; } else if (ret < 0) { --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570818745; cv=none; d=zoho.com; s=zohoarc; b=JzcISM1gg6RXKSAUu7dbLFW0iKRdSEFPJxmyZRBr8DnIKnc7NfJhnAYKSC+ijmR5PxmdH7g0U8mI/ea/5COjo9NnaTiItA1jpKcwQPLtb/wALiuPFm0MQw/EkuMsDEKvFSV/nIXAuTqpueNUaGRmpWXamsHOjVtbsLzTbsEt0YM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570818745; h=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=bmV5YLojywR08LU3w6vqoUG/Qc/AVgtygNvlI2H9Y+U=; b=VJL98e1o0YyyJdiovZ7mIcCo7tKJLJEOjotg++3KwTrwhY4tyRnn7WuCmYOJMv+8TR5f0Hklq1xyT03YjVWluAvMTIWJleFw90OMNt9b5RWFRsovKAim5p/0iaNsRgwCIKJE+TazSB3Ec+boW4aLPJU76TLZox8Adef2wzBvNko= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570818745042277.54735771409935; Fri, 11 Oct 2019 11:32:25 -0700 (PDT) Received: from localhost ([::1]:55530 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIziA-0005wB-KG for importer@patchew.org; Fri, 11 Oct 2019 14:32:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40615) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxhK-00015v-De for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxhI-0008NX-CM for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:22 -0400 Received: from relay.sw.ru ([185.231.240.75]:49704) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxhI-0008N4-0Z; Fri, 11 Oct 2019 12:23:20 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR6-0003XG-Nk; Fri, 11 Oct 2019 19:06:37 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 111/126] raw: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:37 +0300 Message-Id: <20191011160552.22907-112-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, Stefan Weil , armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/file-posix.c | 79 ++++++++++++++++++++-------------------------- block/file-win32.c | 29 +++++++---------- block/raw-format.c | 7 ++-- 3 files changed, 50 insertions(+), 65 deletions(-) diff --git a/block/file-posix.c b/block/file-posix.c index f12c06de2d..fa75232713 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -320,6 +320,7 @@ static bool raw_is_io_aligned(int fd, void *buf, size_t= len) =20 static void raw_probe_alignment(BlockDriverState *bs, int fd, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVRawState *s =3D bs->opaque; char *buf; size_t max_align =3D MAX(MAX_BLOCKSIZE, getpagesize()); @@ -473,9 +474,9 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, int bdrv_flags, int open_flags, bool device, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVRawState *s =3D bs->opaque; QemuOpts *opts; - Error *local_err =3D NULL; const char *filename =3D NULL; const char *str; BlockdevAioOptions aio, aio_default; @@ -484,9 +485,8 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, OnOffAuto locking; =20 opts =3D qemu_opts_create(&raw_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -503,9 +503,8 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, : BLOCKDEV_AIO_OPTIONS_THREADS; aio =3D qapi_enum_parse(&BlockdevAioOptions_lookup, qemu_opt_get(opts, "aio"), - aio_default, &local_err); - if (local_err) { - error_propagate(errp, local_err); + aio_default, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -513,9 +512,8 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, =20 locking =3D qapi_enum_parse(&OnOffAuto_lookup, qemu_opt_get(opts, "locking"), - ON_OFF_AUTO_AUTO, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ON_OFF_AUTO_AUTO, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -541,9 +539,8 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, =20 str =3D qemu_opt_get(opts, "pr-manager"); if (str) { - s->pr_mgr =3D pr_manager_lookup(str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + s->pr_mgr =3D pr_manager_lookup(str, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -817,9 +814,9 @@ static int raw_handle_perm_lock(BlockDriverState *bs, uint64_t new_perm, uint64_t new_shared, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVRawState *s =3D bs->opaque; int ret =3D 0; - Error *local_err =3D NULL; =20 if (!s->use_lock) { return 0; @@ -859,22 +856,22 @@ static int raw_handle_perm_lock(BlockDriverState *bs, /* fall through to unlock bytes. */ case RAW_PL_ABORT: raw_apply_lock_bytes(s, s->fd, s->perm, ~s->shared_perm, - true, &local_err); - if (local_err) { + true, errp); + if (*errp) { /* Theoretically the above call only unlocks bytes and it cann= ot * fail. Something weird happened, report it. */ - warn_report_err(local_err); + warn_report_errp(errp); } break; case RAW_PL_COMMIT: raw_apply_lock_bytes(s, s->fd, new_perm, ~new_shared, - true, &local_err); - if (local_err) { + true, errp); + if (*errp) { /* Theoretically the above call only unlocks bytes and it cann= ot * fail. Something weird happened, report it. */ - warn_report_err(local_err); + warn_report_errp(errp); } break; } @@ -948,11 +945,11 @@ static int raw_reconfigure_getfd(BlockDriverState *bs= , int flags, static int raw_reopen_prepare(BDRVReopenState *state, BlockReopenQueue *queue, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVRawState *s; BDRVRawReopenState *rs; QemuOpts *opts; int ret; - Error *local_err =3D NULL; =20 assert(state !=3D NULL); assert(state->bs !=3D NULL); @@ -964,9 +961,8 @@ static int raw_reopen_prepare(BDRVReopenState *state, =20 /* Handle options changes */ opts =3D qemu_opts_create(&raw_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, state->options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, state->options, errp); + if (*errp) { ret =3D -EINVAL; goto out; } @@ -981,9 +977,8 @@ static int raw_reopen_prepare(BDRVReopenState *state, qemu_opts_to_qdict(opts, state->options); =20 rs->fd =3D raw_reconfigure_getfd(state->bs, state->flags, &rs->open_fl= ags, - state->perm, true, &local_err); - if (local_err) { - error_propagate(errp, local_err); + state->perm, true, errp); + if (*errp) { ret =3D -1; goto out; } @@ -991,9 +986,8 @@ static int raw_reopen_prepare(BDRVReopenState *state, /* Fail already reopen_prepare() if we can't get a working O_DIRECT * alignment with the new fd. */ if (rs->fd !=3D -1) { - raw_probe_alignment(state->bs, rs->fd, &local_err); - if (local_err) { - error_propagate(errp, local_err); + raw_probe_alignment(state->bs, rs->fd, errp); + if (*errp) { ret =3D -EINVAL; goto out_fd; } @@ -2232,8 +2226,8 @@ static int64_t raw_get_allocated_file_size(BlockDrive= rState *bs) static int coroutine_fn raw_co_create(BlockdevCreateOptions *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptionsFile *file_opts; - Error *local_err =3D NULL; int fd; uint64_t perm, shared; int result =3D 0; @@ -2315,13 +2309,13 @@ raw_co_create(BlockdevCreateOptions *options, Error= **errp) } =20 out_unlock: - raw_apply_lock_bytes(NULL, fd, 0, 0, true, &local_err); - if (local_err) { + raw_apply_lock_bytes(NULL, fd, 0, 0, true, errp); + if (*errp) { /* The above call should not fail, and if it does, that does * not mean the whole creation operation has failed. So * report it the user for their convenience, but do not report * it to the caller. */ - warn_report_err(local_err); + warn_report_errp(errp); } =20 out_close: @@ -2336,12 +2330,12 @@ out: static int coroutine_fn raw_co_create_opts(const char *filename, QemuOpts = *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptions options; int64_t total_size =3D 0; bool nocow =3D false; PreallocMode prealloc; char *buf =3D NULL; - Error *local_err =3D NULL; =20 /* Skip file: protocol prefix */ strstart(filename, "file:", &filename); @@ -2352,10 +2346,9 @@ static int coroutine_fn raw_co_create_opts(const cha= r *filename, QemuOpts *opts, nocow =3D qemu_opt_get_bool(opts, BLOCK_OPT_NOCOW, false); buf =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); prealloc =3D qapi_enum_parse(&PreallocMode_lookup, buf, - PREALLOC_MODE_OFF, &local_err); + PREALLOC_MODE_OFF, errp); g_free(buf); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return -EINVAL; } =20 @@ -3155,8 +3148,8 @@ static bool hdev_is_sg(BlockDriverState *bs) static int hdev_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVRawState *s =3D bs->opaque; - Error *local_err =3D NULL; int ret; =20 #if defined(__APPLE__) && defined(__MACH__) @@ -3221,9 +3214,8 @@ hdev_open_Mac_error: =20 s->type =3D FTYPE_FILE; =20 - ret =3D raw_open_common(bs, options, flags, 0, true, &local_err); + ret =3D raw_open_common(bs, options, flags, 0, true, errp); if (ret < 0) { - error_propagate(errp, local_err); #if defined(__APPLE__) && defined(__MACH__) if (*bsd_path) { filename =3D bsd_path; @@ -3557,15 +3549,14 @@ static BlockDriver bdrv_host_cdrom =3D { static int cdrom_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVRawState *s =3D bs->opaque; - Error *local_err =3D NULL; int ret; =20 s->type =3D FTYPE_CD; =20 - ret =3D raw_open_common(bs, options, flags, 0, true, &local_err); + ret =3D raw_open_common(bs, options, flags, 0, true, errp); if (ret) { - error_propagate(errp, local_err); return ret; } =20 diff --git a/block/file-win32.c b/block/file-win32.c index 41f55dfece..6ef3117cda 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -326,11 +326,11 @@ static bool get_aio_option(QemuOpts *opts, int flags,= Error **errp) static int raw_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVRawState *s =3D bs->opaque; int access_flags; DWORD overlapped; QemuOpts *opts; - Error *local_err =3D NULL; const char *filename; bool use_aio; int ret; @@ -338,9 +338,8 @@ static int raw_open(BlockDriverState *bs, QDict *option= s, int flags, s->type =3D FTYPE_FILE; =20 opts =3D qemu_opts_create(&raw_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -353,9 +352,8 @@ static int raw_open(BlockDriverState *bs, QDict *option= s, int flags, =20 filename =3D qemu_opt_get(opts, "filename"); =20 - use_aio =3D get_aio_option(opts, flags, &local_err); - if (local_err) { - error_propagate(errp, local_err); + use_aio =3D get_aio_option(opts, flags, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -722,33 +720,30 @@ static void hdev_refresh_limits(BlockDriverState *bs,= Error **errp) static int hdev_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVRawState *s =3D bs->opaque; int access_flags, create_flags; int ret =3D 0; DWORD overlapped; char device_name[64]; - - Error *local_err =3D NULL; const char *filename; bool use_aio; =20 QemuOpts *opts =3D qemu_opts_create(&raw_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto done; } =20 filename =3D qemu_opt_get(opts, "filename"); =20 - use_aio =3D get_aio_option(opts, flags, &local_err); - if (!local_err && use_aio) { - error_setg(&local_err, "AIO is not supported on Windows host devic= es"); + use_aio =3D get_aio_option(opts, flags, errp); + if (!*errp && use_aio) { + error_setg(errp, "AIO is not supported on Windows host devices"); } - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto done; } diff --git a/block/raw-format.c b/block/raw-format.c index 42c28cc29a..8903b54499 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -74,7 +74,7 @@ static QemuOptsList raw_create_opts =3D { static int raw_read_options(QDict *options, BlockDriverState *bs, BDRVRawState *s, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); QemuOpts *opts =3D NULL; int64_t real_size =3D 0; int ret; @@ -86,9 +86,8 @@ static int raw_read_options(QDict *options, BlockDriverSt= ate *bs, } =20 opts =3D qemu_opts_create(&raw_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto end; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815123; cv=none; d=zoho.com; s=zohoarc; b=khp92QXuhURDmqDpFk5dx1jkIGaSCLGkXnWCDbkDJ6oaJvCbALg3Mmrbne+LBF9+tvQUzs9TawZDqzfE2dr8E7no81gnNlRPDbSAvWMFT69q9COs8LxSljqGl03PuEVrE82kLE8QJDOBlFyakSx/yGqywvDEoLfXI3vwtkfeJw0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815123; h=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=VKbZgotb9ciiMEsyyfT+ZNB73AEL70Fj1vfthPTEMNM=; b=KpaCXT2Ct7lcagQ2RvCUIwN7hT2V7sBIzvk0XfUxHqTeDOp0JdFm3gf7aQiM3CMOGgRQVfBASfjs0ztg4Tmilxvh7hFshpNpVcbeH8IoY4KiFYRCBahCtaL8DEYJx31W+pfxorNIZTYYu78OBjOkXWUGbUEz/+tw5YbTbnkJ974= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081512344953.56180268773346; Fri, 11 Oct 2019 10:32:03 -0700 (PDT) Received: from localhost ([::1]:54694 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyli-0002Ly-8y for importer@patchew.org; Fri, 11 Oct 2019 13:31:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41483) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxln-0007G5-Vz for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxll-0002cq-RZ for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:59 -0400 Received: from relay.sw.ru ([185.231.240.75]:49832) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxlj-0002cf-VN; Fri, 11 Oct 2019 12:27:56 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR7-0003XG-49; Fri, 11 Oct 2019 19:06:37 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 112/126] qcow2: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:38 +0300 Message-Id: <20191011160552.22907-113-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/qcow2-bitmap.c | 9 ++-- block/qcow2.c | 98 +++++++++++++++++++------------------------- 2 files changed, 48 insertions(+), 59 deletions(-) diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c index b2487101ed..b060911faa 100644 --- a/block/qcow2-bitmap.c +++ b/block/qcow2-bitmap.c @@ -1447,6 +1447,7 @@ fail: =20 void qcow2_store_persistent_dirty_bitmaps(BlockDriverState *bs, Error **er= rp) { + ERRP_AUTO_PROPAGATE(); BdrvDirtyBitmap *bitmap; BDRVQcow2State *s =3D bs->opaque; uint32_t new_nb_bitmaps =3D s->nb_bitmaps; @@ -1593,12 +1594,11 @@ fail: =20 int qcow2_reopen_bitmaps_ro(BlockDriverState *bs, Error **errp) { + ERRP_AUTO_PROPAGATE(); BdrvDirtyBitmap *bitmap; - Error *local_err =3D NULL; =20 - qcow2_store_persistent_dirty_bitmaps(bs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + qcow2_store_persistent_dirty_bitmaps(bs, errp); + if (*errp) { return -EINVAL; } =20 @@ -1618,6 +1618,7 @@ bool qcow2_can_store_new_dirty_bitmap(BlockDriverStat= e *bs, uint32_t granularity, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVQcow2State *s =3D bs->opaque; bool found; Qcow2BitmapList *bm_list; diff --git a/block/qcow2.c b/block/qcow2.c index 4d16393e61..7555e526af 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -923,6 +923,7 @@ static int qcow2_update_options_prepare(BlockDriverStat= e *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVQcow2State *s =3D bs->opaque; QemuOpts *opts =3D NULL; const char *opt_overlap_check, *opt_overlap_check_template; @@ -931,25 +932,22 @@ static int qcow2_update_options_prepare(BlockDriverSt= ate *bs, int i; const char *encryptfmt; QDict *encryptopts =3D NULL; - Error *local_err =3D NULL; int ret; =20 qdict_extract_subqdict(options, &encryptopts, "encrypt."); encryptfmt =3D qdict_get_try_str(encryptopts, "format"); =20 opts =3D qemu_opts_create(&qcow2_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } =20 /* get L2 table/refcount block cache size from command line options */ read_cache_sizes(bs, opts, &l2_cache_size, &l2_cache_entry_size, - &refcount_cache_size, &local_err); - if (local_err) { - error_propagate(errp, local_err); + &refcount_cache_size, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -1207,11 +1205,11 @@ static int qcow2_update_options(BlockDriverState *b= s, QDict *options, static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVQcow2State *s =3D bs->opaque; unsigned int len, i; int ret =3D 0; QCowHeader header; - Error *local_err =3D NULL; uint64_t ext_end; uint64_t l1_vm_state_index; bool update_header =3D false; @@ -1486,17 +1484,15 @@ static int coroutine_fn qcow2_do_open(BlockDriverSt= ate *bs, QDict *options, =20 /* read qcow2 extensions */ if (qcow2_read_extensions(bs, header.header_length, ext_end, NULL, - flags, &update_header, &local_err)) { - error_propagate(errp, local_err); + flags, &update_header, errp)) { ret =3D -EINVAL; goto fail; } =20 /* Open external data file */ s->data_file =3D bdrv_open_child(NULL, options, "data-file", bs, &chil= d_file, - true, &local_err); - if (local_err) { - error_propagate(errp, local_err); + true, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -1657,12 +1653,11 @@ static int coroutine_fn qcow2_do_open(BlockDriverSt= ate *bs, QDict *options, =20 if (!(bdrv_get_flags(bs) & BDRV_O_INACTIVE)) { /* It's case 1, 2 or 3.2. Or 3.1 which is BUG in management layer.= */ - bool header_updated =3D qcow2_load_dirty_bitmaps(bs, &local_err); + bool header_updated =3D qcow2_load_dirty_bitmaps(bs, errp); =20 update_header =3D update_header && !header_updated; } - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -2424,11 +2419,11 @@ static void qcow2_close(BlockDriverState *bs) static void coroutine_fn qcow2_co_invalidate_cache(BlockDriverState *bs, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVQcow2State *s =3D bs->opaque; int flags =3D s->flags; QCryptoBlock *crypto =3D NULL; QDict *options; - Error *local_err =3D NULL; int ret; =20 /* @@ -2446,11 +2441,11 @@ static void coroutine_fn qcow2_co_invalidate_cache(= BlockDriverState *bs, =20 flags &=3D ~BDRV_O_INACTIVE; qemu_co_mutex_lock(&s->lock); - ret =3D qcow2_do_open(bs, options, flags, &local_err); + ret =3D qcow2_do_open(bs, options, flags, errp); qemu_co_mutex_unlock(&s->lock); qobject_unref(options); - if (local_err) { - error_propagate_prepend(errp, local_err, + if (*errp) { + error_prepend(errp, "Could not reopen qcow2 layer: "); bs->drv =3D NULL; return; @@ -3036,6 +3031,7 @@ static uint64_t qcow2_opt_get_refcount_bits_del(QemuO= pts *opts, int version, static int coroutine_fn qcow2_co_create(BlockdevCreateOptions *create_options, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptionsQcow2 *qcow2_opts; QDict *options; =20 @@ -3059,7 +3055,6 @@ qcow2_co_create(BlockdevCreateOptions *create_options= , Error **errp) int version; int refcount_order; uint64_t* refcount_table; - Error *local_err =3D NULL; int ret; =20 assert(create_options->driver =3D=3D BLOCKDEV_DRIVER_QCOW2); @@ -3258,9 +3253,8 @@ qcow2_co_create(BlockdevCreateOptions *create_options= , Error **errp) } blk =3D blk_new_open(NULL, NULL, options, BDRV_O_RDWR | BDRV_O_RESIZE | BDRV_O_NO_FLUSH, - &local_err); + errp); if (blk =3D=3D NULL) { - error_propagate(errp, local_err); ret =3D -EIO; goto out; } @@ -3339,9 +3333,8 @@ qcow2_co_create(BlockdevCreateOptions *create_options= , Error **errp) } blk =3D blk_new_open(NULL, NULL, options, BDRV_O_RDWR | BDRV_O_NO_BACKING | BDRV_O_NO_IO, - &local_err); + errp); if (blk =3D=3D NULL) { - error_propagate(errp, local_err); ret =3D -EIO; goto out; } @@ -3357,12 +3350,12 @@ out: static int coroutine_fn qcow2_co_create_opts(const char *filename, QemuOpt= s *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptions *create_options =3D NULL; QDict *qdict; Visitor *v; BlockDriverState *bs =3D NULL; BlockDriverState *data_bs =3D NULL; - Error *local_err =3D NULL; const char *val; int ret; =20 @@ -3457,11 +3450,10 @@ static int coroutine_fn qcow2_co_create_opts(const = char *filename, QemuOpts *opt goto finish; } =20 - visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err); + visit_type_BlockdevCreateOptions(v, NULL, &create_options, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto finish; } @@ -3740,6 +3732,7 @@ fail: static int coroutine_fn qcow2_co_truncate(BlockDriverState *bs, int64_t of= fset, PreallocMode prealloc, Error **e= rrp) { + ERRP_AUTO_PROPAGATE(); BDRVQcow2State *s =3D bs->opaque; uint64_t old_length; int64_t new_l1_size; @@ -3824,12 +3817,10 @@ static int coroutine_fn qcow2_co_truncate(BlockDriv= erState *bs, int64_t offset, goto fail; } if ((last_cluster + 1) * s->cluster_size < old_file_size) { - Error *local_err =3D NULL; - bdrv_co_truncate(bs->file, (last_cluster + 1) * s->cluster_siz= e, - PREALLOC_MODE_OFF, &local_err); - if (local_err) { - warn_reportf_err(local_err, + PREALLOC_MODE_OFF, errp); + if (*errp) { + warn_reportf_err(*errp, "Failed to truncate the tail of the image= : "); } } @@ -4405,7 +4396,7 @@ static bool qcow2_measure_luks_headerlen(QemuOpts *op= ts, size_t *len, static BlockMeasureInfo *qcow2_measure(QemuOpts *opts, BlockDriverState *i= n_bs, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); BlockMeasureInfo *info; uint64_t required =3D 0; /* bytes that contribute to required size */ uint64_t virtual_size; /* disk size as seen by guest */ @@ -4420,26 +4411,26 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *op= ts, BlockDriverState *in_bs, bool has_luks; =20 /* Parse image creation options */ - cluster_size =3D qcow2_opt_get_cluster_size_del(opts, &local_err); - if (local_err) { + cluster_size =3D qcow2_opt_get_cluster_size_del(opts, errp); + if (*errp) { goto err; } =20 - version =3D qcow2_opt_get_version_del(opts, &local_err); - if (local_err) { + version =3D qcow2_opt_get_version_del(opts, errp); + if (*errp) { goto err; } =20 - refcount_bits =3D qcow2_opt_get_refcount_bits_del(opts, version, &loca= l_err); - if (local_err) { + refcount_bits =3D qcow2_opt_get_refcount_bits_del(opts, version, errp); + if (*errp) { goto err; } =20 optstr =3D qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC); prealloc =3D qapi_enum_parse(&PreallocMode_lookup, optstr, - PREALLOC_MODE_OFF, &local_err); + PREALLOC_MODE_OFF, errp); g_free(optstr); - if (local_err) { + if (*errp) { goto err; } =20 @@ -4454,7 +4445,7 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts= , BlockDriverState *in_bs, if (has_luks) { size_t headerlen; =20 - if (!qcow2_measure_luks_headerlen(opts, &headerlen, &local_err)) { + if (!qcow2_measure_luks_headerlen(opts, &headerlen, errp)) { goto err; } =20 @@ -4468,7 +4459,7 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts= , BlockDriverState *in_bs, l2_tables =3D DIV_ROUND_UP(virtual_size / cluster_size, cluster_size / sizeof(uint64_t)); if (l2_tables * sizeof(uint64_t) > QCOW_MAX_L1_SIZE) { - error_setg(&local_err, "The image size is too large " + error_setg(errp, "The image size is too large " "(try using a larger cluster size)"); goto err; } @@ -4477,7 +4468,7 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts= , BlockDriverState *in_bs, if (in_bs) { int64_t ssize =3D bdrv_getlength(in_bs); if (ssize < 0) { - error_setg_errno(&local_err, -ssize, + error_setg_errno(errp, -ssize, "Unable to get image virtual_size"); goto err; } @@ -4502,7 +4493,7 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts= , BlockDriverState *in_bs, ssize - offset, &pnum, NULL, NULL); if (ret < 0) { - error_setg_errno(&local_err, -ret, + error_setg_errno(errp, -ret, "Unable to get block status"); goto err; } @@ -4541,7 +4532,6 @@ static BlockMeasureInfo *qcow2_measure(QemuOpts *opts= , BlockDriverState *in_bs, return info; =20 err: - error_propagate(errp, local_err); return NULL; } =20 @@ -4557,15 +4547,14 @@ static int qcow2_get_info(BlockDriverState *bs, Blo= ckDriverInfo *bdi) static ImageInfoSpecific *qcow2_get_specific_info(BlockDriverState *bs, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVQcow2State *s =3D bs->opaque; ImageInfoSpecific *spec_info; QCryptoBlockInfo *encrypt_info =3D NULL; - Error *local_err =3D NULL; =20 if (s->crypto !=3D NULL) { - encrypt_info =3D qcrypto_block_get_info(s->crypto, &local_err); - if (local_err) { - error_propagate(errp, local_err); + encrypt_info =3D qcrypto_block_get_info(s->crypto, errp); + if (*errp) { return NULL; } } @@ -4582,9 +4571,8 @@ static ImageInfoSpecific *qcow2_get_specific_info(Blo= ckDriverState *bs, }; } else if (s->qcow_version =3D=3D 3) { Qcow2BitmapInfoList *bitmaps; - bitmaps =3D qcow2_get_bitmap_info_list(bs, &local_err); - if (local_err) { - error_propagate(errp, local_err); + bitmaps =3D qcow2_get_bitmap_info_list(bs, errp); + if (*errp) { qapi_free_ImageInfoSpecific(spec_info); return NULL; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814922; cv=none; d=zoho.com; s=zohoarc; b=IHPHX8ejlJfZTKbEStNAuMP+AFDzH73dnwqueiiBeG2UP1E/j/v/DwoW9EFEROIV6UFinZN0niOUah+3GVkPijXe9A+2Tjw4CyRATU9XTK/dZoa40Z+d9LG46lh1IlrZRmFDbs5UEM7N4ykr91rnvKN4/ODZpPaeUf7ppWvEA78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814922; h=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=IOzsS7PDsCySptOpT162A8qnWBTcSrtVof1LCTGaRdc=; b=GDT1CjEuaF00BSTCteVD3BOC3TbnEAuOmzj+iKc82aVikGrdSdObz5vA1fI3VKTlUgBNYqATtKSuLSmSoC8FMjbmvuKAhpy/LRMwTA7zXh5RtdnUETUXZejO2Aj5lk4dFR78CFlRIxIy8Fzw1Hh5E0T9ABBSBqzxn4YZM3E9EqI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814922794490.45117733138625; Fri, 11 Oct 2019 10:28:42 -0700 (PDT) Received: from localhost ([::1]:54662 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyiS-0006oZ-Aw for importer@patchew.org; Fri, 11 Oct 2019 13:28:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41263) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxlA-0006jV-8D for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxl6-0002J0-Hc for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:19 -0400 Received: from relay.sw.ru ([185.231.240.75]:49774) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxl4-0002GX-LT; Fri, 11 Oct 2019 12:27:14 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR7-0003XG-GU; Fri, 11 Oct 2019 19:06:37 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 113/126] qcow: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:39 +0300 Message-Id: <20191011160552.22907-114-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/qcow.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/block/qcow.c b/block/qcow.c index 5bdf72ba33..c58d3e36be 100644 --- a/block/qcow.c +++ b/block/qcow.c @@ -117,11 +117,11 @@ static QemuOptsList qcow_runtime_opts =3D { static int qcow_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVQcowState *s =3D bs->opaque; unsigned int len, i, shift; int ret; QCowHeader header; - Error *local_err =3D NULL; QCryptoBlockOpenOptions *crypto_opts =3D NULL; unsigned int cflags =3D 0; QDict *encryptopts =3D NULL; @@ -314,9 +314,8 @@ static int qcow_open(BlockDriverState *bs, QDict *optio= ns, int flags, error_setg(&s->migration_blocker, "The qcow format used by node '%s' " "does not support live migration", bdrv_get_device_or_node_name(bs)); - ret =3D migrate_add_blocker(s->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ret =3D migrate_add_blocker(s->migration_blocker, errp); + if (*errp) { error_free(s->migration_blocker); goto fail; } @@ -942,12 +941,12 @@ exit: static int coroutine_fn qcow_co_create_opts(const char *filename, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptions *create_options =3D NULL; BlockDriverState *bs =3D NULL; QDict *qdict; Visitor *v; const char *val; - Error *local_err =3D NULL; int ret; =20 static const QDictRenames opt_renames[] =3D { @@ -977,9 +976,8 @@ static int coroutine_fn qcow_co_create_opts(const char = *filename, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_create_file(filename, opts, &local_err); + ret =3D bdrv_create_file(filename, opts, errp); if (ret < 0) { - error_propagate(errp, local_err); goto fail; } =20 @@ -1000,11 +998,10 @@ static int coroutine_fn qcow_co_create_opts(const ch= ar *filename, goto fail; } =20 - visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err); + visit_type_BlockdevCreateOptions(v, NULL, &create_options, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto fail; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570818012; cv=none; d=zoho.com; s=zohoarc; b=YA7xVURS8TxgD7zK3YfP+hlVKQkrl3LHYoMbwbMqI/zqpDD4sVHWlD+LtrBIpVBFJbbVQvMwrSyQNrw8eRvgTtP1Y0TksfKYVQIYzYweNLWu7DRzq21TIPmH4zM8qlRVNRAPDhk8oZdeUdvsZVzt+lTVW+pdUXuRUv36R5a2Vyw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570818012; h=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=rKB7o9hjbMUHsXjPtAojfqcNINfyYuPT/2CmuuhUJqg=; b=J+k7Gw0+XWkrq8X1txegE2/+OW5GSj6LvDpbQKkZpgk5OxaUG7YLncWiTPTkGn880aR67UAmTK7hOiA07zJAEQzt23tmxwU98FlrwL5Gxu5WSMgCEzVxj6vt7NjD0KYNo6m3RdY7yNmNIeRfjoSP8y5ZfIGli53g9tWpubxEEUI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570818012215931.8560135355507; Fri, 11 Oct 2019 11:20:12 -0700 (PDT) Received: from localhost ([::1]:55316 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzWM-0007ya-In for importer@patchew.org; Fri, 11 Oct 2019 14:20:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41664) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxmU-0007sV-PU for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxmS-000372-CQ for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:42 -0400 Received: from relay.sw.ru ([185.231.240.75]:50000) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxmS-00032N-58; Fri, 11 Oct 2019 12:28:40 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR7-0003XG-Lb; Fri, 11 Oct 2019 19:06:37 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 114/126] blkdebug: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:40 +0300 Message-Id: <20191011160552.22907-115-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/blkdebug.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/block/blkdebug.c b/block/blkdebug.c index 5ae96c52b0..7c3fc222f3 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -164,6 +164,7 @@ struct add_rule_data { =20 static int add_rule(void *opaque, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct add_rule_data *d =3D opaque; BDRVBlkdebugState *s =3D d->s; const char* event_name; @@ -171,7 +172,6 @@ static int add_rule(void *opaque, QemuOpts *opts, Error= **errp) struct BlkdebugRule *rule; int64_t sector; BlkdebugIOType iotype; - Error *local_error =3D NULL; =20 /* Find the right event for the rule */ event_name =3D qemu_opt_get(opts, "event"); @@ -205,9 +205,8 @@ static int add_rule(void *opaque, QemuOpts *opts, Error= **errp) =20 iotype =3D qapi_enum_parse(&BlkdebugIOType_lookup, qemu_opt_get(opts, "iotype"), - BLKDEBUG_IO_TYPE__MAX, &local_error); - if (local_error) { - error_propagate(errp, local_error); + BLKDEBUG_IO_TYPE__MAX, errp); + if (*errp) { return -1; } if (iotype !=3D BLKDEBUG_IO_TYPE__MAX) { @@ -259,10 +258,10 @@ static void remove_rule(BlkdebugRule *rule) static int read_config(BDRVBlkdebugState *s, const char *filename, QDict *options, Error **errp) { + ERRP_AUTO_PROPAGATE(); FILE *f =3D NULL; int ret; struct add_rule_data d; - Error *local_err =3D NULL; =20 if (filename) { f =3D fopen(filename, "r"); @@ -278,26 +277,23 @@ static int read_config(BDRVBlkdebugState *s, const ch= ar *filename, } } =20 - qemu_config_parse_qdict(options, config_groups, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_config_parse_qdict(options, config_groups, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } =20 d.s =3D s; d.action =3D ACTION_INJECT_ERROR; - qemu_opts_foreach(&inject_error_opts, add_rule, &d, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_foreach(&inject_error_opts, add_rule, &d, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } =20 d.action =3D ACTION_SET_STATE; - qemu_opts_foreach(&set_state_opts, add_rule, &d, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_foreach(&set_state_opts, add_rule, &d, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -395,16 +391,15 @@ static QemuOptsList runtime_opts =3D { static int blkdebug_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVBlkdebugState *s =3D bs->opaque; QemuOpts *opts; - Error *local_err =3D NULL; int ret; uint64_t align; =20 opts =3D qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto out; } @@ -421,10 +416,9 @@ static int blkdebug_open(BlockDriverState *bs, QDict *= options, int flags, =20 /* Open the image file */ bs->file =3D bdrv_open_child(qemu_opt_get(opts, "x-image"), options, "= image", - bs, &child_file, false, &local_err); - if (local_err) { + bs, &child_file, false, errp); + if (*errp) { ret =3D -EINVAL; - error_propagate(errp, local_err); goto out; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570817128; cv=none; d=zoho.com; s=zohoarc; b=fxZOVxTdquDdDImzqAxC31p6+F5vBVQVAodXgQiKSY/nl+riA87SwaAIm2cd3dK/d34l76SWlTAn42NRwXhxlVMLVsdTdh/GquJEz7Qkut0KOBMzR+TBvTAddTbEC1mMTLxe14aih86u9iSz42rKNNyEJzBF+TaYy04FMqzYlF8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570817128; h=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=2Ivl1QaO8wuhUwDHV+VzpKtJWcIsH/0z/zIiPFA8RxY=; b=lsNLmUR8ntrto7734MaIg2e0BhVNaERrRuSmbR7+0kx0l33g2KEsO21o5P/3UytWbqduIVqlUR/FgQy8EICXKbdex2oe4FfgU14pcRvRfBxjW0P+va9MhQk02VcE/AO62cB15+OnkZe7shEEPE95DSO1XeGIIHjJDtsfH+LxvHQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570817128101758.6381649581222; Fri, 11 Oct 2019 11:05:28 -0700 (PDT) Received: from localhost ([::1]:55110 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzI6-0007Xg-N6 for importer@patchew.org; Fri, 11 Oct 2019 14:05:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40341) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxgW-0008RC-L7 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxgV-0007xq-9l for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:32 -0400 Received: from relay.sw.ru ([185.231.240.75]:49626) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxgV-0007xf-2k; Fri, 11 Oct 2019 12:22:31 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR7-0003XG-TB; Fri, 11 Oct 2019 19:06:37 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 115/126] vpc: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:41 +0300 Message-Id: <20191011160552.22907-116-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/vpc.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/block/vpc.c b/block/vpc.c index 5cd3890780..c685a9ae41 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -213,12 +213,12 @@ static void vpc_parse_options(BlockDriverState *bs, Q= emuOpts *opts, static int vpc_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVVPCState *s =3D bs->opaque; int i; VHDFooter *footer; VHDDynDiskHeader *dyndisk_header; QemuOpts *opts =3D NULL; - Error *local_err =3D NULL; bool use_chs; uint8_t buf[HEADER_SIZE]; uint32_t checksum; @@ -235,16 +235,14 @@ static int vpc_open(BlockDriverState *bs, QDict *opti= ons, int flags, } =20 opts =3D qemu_opts_create(&vpc_runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } =20 - vpc_parse_options(bs, opts, &local_err); - if (local_err) { - error_propagate(errp, local_err); + vpc_parse_options(bs, opts, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -448,9 +446,8 @@ static int vpc_open(BlockDriverState *bs, QDict *option= s, int flags, error_setg(&s->migration_blocker, "The vpc format used by node '%s' " "does not support live migration", bdrv_get_device_or_node_name(bs)); - ret =3D migrate_add_blocker(s->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ret =3D migrate_add_blocker(s->migration_blocker, errp); + if (*errp) { error_free(s->migration_blocker); goto fail; } @@ -971,6 +968,7 @@ static int calculate_rounded_image_size(BlockdevCreateO= ptionsVpc *vpc_opts, static int coroutine_fn vpc_co_create(BlockdevCreateOptions *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptionsVpc *vpc_opts; BlockBackend *blk =3D NULL; BlockDriverState *bs =3D NULL; @@ -1092,11 +1090,11 @@ out: static int coroutine_fn vpc_co_create_opts(const char *filename, QemuOpts *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockdevCreateOptions *create_options =3D NULL; QDict *qdict; Visitor *v; BlockDriverState *bs =3D NULL; - Error *local_err =3D NULL; int ret; =20 static const QDictRenames opt_renames[] =3D { @@ -1113,9 +1111,8 @@ static int coroutine_fn vpc_co_create_opts(const char= *filename, } =20 /* Create and open the file (protocol layer) */ - ret =3D bdrv_create_file(filename, opts, &local_err); + ret =3D bdrv_create_file(filename, opts, errp); if (ret < 0) { - error_propagate(errp, local_err); goto fail; } =20 @@ -1136,11 +1133,10 @@ static int coroutine_fn vpc_co_create_opts(const ch= ar *filename, goto fail; } =20 - visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err); + visit_type_BlockdevCreateOptions(v, NULL, &create_options, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { ret =3D -EINVAL; goto fail; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570818105; cv=none; d=zoho.com; s=zohoarc; b=TJBPCRZb6nPoXjZeBP7hUL2ZJug4iKpLXMP+W04ZGKR+90uttE1m35oD98unzS8+1G5qW69Gy/4VjgvOZutmNU9eGj+gxBo8SLgDPKaOci2mbmeCqkD3jZeQjmpdnDf1b34Fv01fZi5maH4Fm7b6Q6jvUzlLD9JU0H6jvbdiJrk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570818105; h=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=KOyV/eL+/diXm1yMcpR3F/CdLVTTB6w90U7aXDCnJXw=; b=Ksu9ILdmEXXMwrbBow4QZYgDYJVxXmxyLD69AZiBKzLJOjEwlKQOgpSqaDWab0O3HXhH+ZWNj31lUUFhVGStnABg8UlsfJYAGbT0N8JXN93lTqinDeewB+w+XOCRgM/9gbKCaeBJ+uDXqjorDYXFSyhInFfIZs1CdKgqvL64DyM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570818105784379.77971456492116; Fri, 11 Oct 2019 11:21:45 -0700 (PDT) Received: from localhost ([::1]:55345 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzXs-0002Be-FP for importer@patchew.org; Fri, 11 Oct 2019 14:21:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40408) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxgh-0000D6-F1 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxgg-00081t-3W for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:43 -0400 Received: from relay.sw.ru ([185.231.240.75]:49636) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxgf-00081S-Sg; Fri, 11 Oct 2019 12:22:42 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR8-0003XG-33; Fri, 11 Oct 2019 19:06:38 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 116/126] vvfat: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:42 +0300 Message-Id: <20191011160552.22907-117-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, armbru@redhat.com, Max Reitz , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/vvfat.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/block/vvfat.c b/block/vvfat.c index 019b8f1341..34cbed71b7 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -1149,12 +1149,12 @@ static void vvfat_parse_filename(const char *filena= me, QDict *options, static int vvfat_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVVVFATState *s =3D bs->opaque; int cyls, heads, secs; bool floppy; const char *dirname, *label; QemuOpts *opts; - Error *local_err =3D NULL; int ret; =20 #ifdef DEBUG @@ -1162,9 +1162,8 @@ static int vvfat_open(BlockDriverState *bs, QDict *op= tions, int flags, #endif =20 opts =3D qemu_opts_create(&runtime_opts, NULL, 0, &error_abort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { ret =3D -EINVAL; goto fail; } @@ -1282,9 +1281,8 @@ static int vvfat_open(BlockDriverState *bs, QDict *op= tions, int flags, "The vvfat (rw) format used by node '%s' " "does not support live migration", bdrv_get_device_or_node_name(bs)); - ret =3D migrate_add_blocker(s->migration_blocker, &local_err); - if (local_err) { - error_propagate(errp, local_err); + ret =3D migrate_add_blocker(s->migration_blocker, errp); + if (*errp) { error_free(s->migration_blocker); goto fail; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570819011; cv=none; d=zoho.com; s=zohoarc; b=girCPiZRIlKJ9/njg0ZK42HPACWUHKjQDtfrA7flGWWcvhG6BiXYTg5o4foJXHHqohjBoz3BC8wgJG79mIXV1B5guwK8sDm8MS4TKr7Pu5OVAZCA5964nHweA6GzpxvQ7RIdM759S7uvMNz3cvzC6ChlFSu59jxlrbJC76BkOcg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570819011; h=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=CEmqy1tm/MCnoZWDUQUA8ubgxFux7hgftmBD3DR8CVY=; b=FtcNu+7Zits0c0Vsqvs8LwQzAvlUUnTwgHskTOex/3NlmPAnvHAoXO+Gh5uHa4BuOFSx0yuKr81pWTvn0NypJlJ7ZeF2840PP4UERyabkjqW+qatgYG/a1QyzOedPqEyLbfjl4b3YXX6EokwgbW4LyGh3WpuxQ0HJ2RRUnBvrkI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570819011881774.7516195011493; Fri, 11 Oct 2019 11:36:51 -0700 (PDT) Received: from localhost ([::1]:55622 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzmU-0002fZ-J6 for importer@patchew.org; Fri, 11 Oct 2019 14:36:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41401) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxlX-0006wp-BR for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxlV-0002ag-JA for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:27:43 -0400 Received: from relay.sw.ru ([185.231.240.75]:49804) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxlV-0002aU-Bu; Fri, 11 Oct 2019 12:27:41 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR8-0003XG-Au; Fri, 11 Oct 2019 19:06:38 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 117/126] Replication: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:43 +0300 Message-Id: <20191011160552.22907-118-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, Wen Congyang , Xie Changlong , armbru@redhat.com, Greg Kurz , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/replication.c | 40 ++++++++++++++++++---------------------- replication.c | 28 ++++++++++++---------------- 2 files changed, 30 insertions(+), 38 deletions(-) diff --git a/block/replication.c b/block/replication.c index 936b2f8b5a..f5e7c5a8ec 100644 --- a/block/replication.c +++ b/block/replication.c @@ -83,9 +83,9 @@ static ReplicationOps replication_ops =3D { static int replication_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; BDRVReplicationState *s =3D bs->opaque; - Error *local_err =3D NULL; QemuOpts *opts =3D NULL; const char *mode; const char *top_id; @@ -98,14 +98,14 @@ static int replication_open(BlockDriverState *bs, QDict= *options, =20 ret =3D -EINVAL; opts =3D qemu_opts_create(&replication_runtime_opts, NULL, 0, &error_a= bort); - qemu_opts_absorb_qdict(opts, options, &local_err); - if (local_err) { + qemu_opts_absorb_qdict(opts, options, errp); + if (*errp) { goto fail; } =20 mode =3D qemu_opt_get(opts, REPLICATION_MODE); if (!mode) { - error_setg(&local_err, "Missing the option mode"); + error_setg(errp, "Missing the option mode"); goto fail; } =20 @@ -113,7 +113,8 @@ static int replication_open(BlockDriverState *bs, QDict= *options, s->mode =3D REPLICATION_MODE_PRIMARY; top_id =3D qemu_opt_get(opts, REPLICATION_TOP_ID); if (top_id) { - error_setg(&local_err, "The primary side does not support opti= on top-id"); + error_setg(errp, + "The primary side does not support option top-id"); goto fail; } } else if (!strcmp(mode, "secondary")) { @@ -121,11 +122,11 @@ static int replication_open(BlockDriverState *bs, QDi= ct *options, top_id =3D qemu_opt_get(opts, REPLICATION_TOP_ID); s->top_id =3D g_strdup(top_id); if (!s->top_id) { - error_setg(&local_err, "Missing the option top-id"); + error_setg(errp, "Missing the option top-id"); goto fail; } } else { - error_setg(&local_err, + error_setg(errp, "The option mode's value should be primary or secondary= "); goto fail; } @@ -136,7 +137,6 @@ static int replication_open(BlockDriverState *bs, QDict= *options, =20 fail: qemu_opts_del(opts); - error_propagate(errp, local_err); =20 return ret; } @@ -314,7 +314,7 @@ static bool replication_recurse_is_first_non_filter(Blo= ckDriverState *bs, =20 static void secondary_do_checkpoint(BDRVReplicationState *s, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); int ret; =20 if (!s->backup_job) { @@ -322,9 +322,8 @@ static void secondary_do_checkpoint(BDRVReplicationStat= e *s, Error **errp) return; } =20 - backup_do_checkpoint(s->backup_job, &local_err); - if (local_err) { - error_propagate(errp, local_err); + backup_do_checkpoint(s->backup_job, errp); + if (*errp) { return; } =20 @@ -361,9 +360,9 @@ static void secondary_do_checkpoint(BDRVReplicationStat= e *s, Error **errp) static void reopen_backing_file(BlockDriverState *bs, bool writable, Error **errp) { + ERRP_AUTO_PROPAGATE(); BDRVReplicationState *s =3D bs->opaque; BlockReopenQueue *reopen_queue =3D NULL; - Error *local_err =3D NULL; =20 if (writable) { s->orig_hidden_read_only =3D bdrv_is_read_only(s->hidden_disk->bs); @@ -388,8 +387,7 @@ static void reopen_backing_file(BlockDriverState *bs, b= ool writable, } =20 if (reopen_queue) { - bdrv_reopen_multiple(reopen_queue, &local_err); - error_propagate(errp, local_err); + bdrv_reopen_multiple(reopen_queue, errp); } =20 bdrv_subtree_drained_end(s->hidden_disk->bs); @@ -445,12 +443,12 @@ static bool check_top_bs(BlockDriverState *top_bs, Bl= ockDriverState *bs) static void replication_start(ReplicationState *rs, ReplicationMode mode, Error **errp) { + ERRP_AUTO_PROPAGATE(); BlockDriverState *bs =3D rs->opaque; BDRVReplicationState *s; BlockDriverState *top_bs; int64_t active_length, hidden_length, disk_length; AioContext *aio_context; - Error *local_err =3D NULL; =20 aio_context =3D bdrv_get_aio_context(bs); aio_context_acquire(aio_context); @@ -519,9 +517,8 @@ static void replication_start(ReplicationState *rs, Rep= licationMode mode, } =20 /* reopen the backing file in r/w mode */ - reopen_backing_file(bs, true, &local_err); - if (local_err) { - error_propagate(errp, local_err); + reopen_backing_file(bs, true, errp); + if (*errp) { aio_context_release(aio_context); return; } @@ -546,9 +543,8 @@ static void replication_start(ReplicationState *rs, Rep= licationMode mode, 0, MIRROR_SYNC_MODE_NONE, NULL, 0, false, BLOCKDEV_ON_ERROR_REPORT, BLOCKDEV_ON_ERROR_REPORT, JOB_INTERNAL, - backup_job_completed, bs, NULL, &local_err= ); - if (local_err) { - error_propagate(errp, local_err); + backup_job_completed, bs, NULL, errp); + if (*errp) { backup_job_cleanup(bs); aio_context_release(aio_context); return; diff --git a/replication.c b/replication.c index be3a42f9c9..2e5ea7f537 100644 --- a/replication.c +++ b/replication.c @@ -44,15 +44,14 @@ void replication_remove(ReplicationState *rs) */ void replication_start_all(ReplicationMode mode, Error **errp) { + ERRP_AUTO_PROPAGATE(); ReplicationState *rs, *next; - Error *local_err =3D NULL; =20 QLIST_FOREACH_SAFE(rs, &replication_states, node, next) { if (rs->ops && rs->ops->start) { - rs->ops->start(rs, mode, &local_err); + rs->ops->start(rs, mode, errp); } - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } } @@ -60,15 +59,14 @@ void replication_start_all(ReplicationMode mode, Error = **errp) =20 void replication_do_checkpoint_all(Error **errp) { + ERRP_AUTO_PROPAGATE(); ReplicationState *rs, *next; - Error *local_err =3D NULL; =20 QLIST_FOREACH_SAFE(rs, &replication_states, node, next) { if (rs->ops && rs->ops->checkpoint) { - rs->ops->checkpoint(rs, &local_err); + rs->ops->checkpoint(rs, errp); } - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } } @@ -76,15 +74,14 @@ void replication_do_checkpoint_all(Error **errp) =20 void replication_get_error_all(Error **errp) { + ERRP_AUTO_PROPAGATE(); ReplicationState *rs, *next; - Error *local_err =3D NULL; =20 QLIST_FOREACH_SAFE(rs, &replication_states, node, next) { if (rs->ops && rs->ops->get_error) { - rs->ops->get_error(rs, &local_err); + rs->ops->get_error(rs, errp); } - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } } @@ -92,15 +89,14 @@ void replication_get_error_all(Error **errp) =20 void replication_stop_all(bool failover, Error **errp) { + ERRP_AUTO_PROPAGATE(); ReplicationState *rs, *next; - Error *local_err =3D NULL; =20 QLIST_FOREACH_SAFE(rs, &replication_states, node, next) { if (rs->ops && rs->ops->stop) { - rs->ops->stop(rs, failover, &local_err); + rs->ops->stop(rs, failover, errp); } - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814593; cv=none; d=zoho.com; s=zohoarc; b=fe8VknwSk5KY46RVylwyM588aiPiGYH1baXlC/zfO162wARlyWx4Qk0E7xbjB1AABQA8etCOskj265ey6iB7I1JpSW6xD06M3XQ/TtKl83gtjq6pelzpk5KBgNcKlrNhKffZKCloZzqAA7YeuK4mSHfu2g1dgIXKjRltzwmruLw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814593; h=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=rjhXVDhzu6nidxdcaKlbkiGLyboRihvYwRSO6imF27Q=; b=gcb9Rkq6Oy6WNe/l2exUs1vBxCVWspaKJqgqExL76/kxITo+z8r45q8d6Mo3xsizSjpM4FESJIVxPpEmoLO/0MGxkv6ebKxYxWYYvyHrMmxpD8Gb4m7SvutDK/6xfrNxWK5Ra+Zg7idlCBAzCKXWZJr6aLD1falqI1hhgT5XIxY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814593566124.34967353846366; Fri, 11 Oct 2019 10:23:13 -0700 (PDT) Received: from localhost ([::1]:54594 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIydB-0007TC-VE for importer@patchew.org; Fri, 11 Oct 2019 13:23:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40655) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxhU-0001If-JD for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxhT-0008RP-Fe for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:32 -0400 Received: from relay.sw.ru ([185.231.240.75]:49726) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxhT-0008R0-8c for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:31 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR8-0003XG-Fc; Fri, 11 Oct 2019 19:06:38 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 118/126] PVRDMA: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:44 +0300 Message-Id: <20191011160552.22907-119-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Yuval Shaia , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/rdma/vmw/pvrdma_main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/rdma/vmw/pvrdma_main.c b/hw/rdma/vmw/pvrdma_main.c index 3e36e13013..fd1a6ef099 100644 --- a/hw/rdma/vmw/pvrdma_main.c +++ b/hw/rdma/vmw/pvrdma_main.c @@ -592,6 +592,7 @@ static void pvrdma_shutdown_notifier(Notifier *n, void = *opaque) =20 static void pvrdma_realize(PCIDevice *pdev, Error **errp) { + ERRP_AUTO_PROPAGATE(); int rc =3D 0; PVRDMADev *dev =3D PVRDMA_DEV(pdev); Object *memdev_root; --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570817505; cv=none; d=zoho.com; s=zohoarc; b=eGio+Q94fWF81cTu4UqLqMUWc8Pky25xRp6+kqoTthduST2XR4lQ7pl2f6YDmy+SE0o+Xs0BFtVL4nwbsXI+DAFx8QoVaw/LukyTQcFmL2HuG60OZ40GyMkzFzCYEpOwP3I7mgceRV19+BCdUnEzmc1SS7uPV3wYd14rk676/f8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570817505; h=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=ZzUpBJL3lFtug5sEbem6Jv1h1PhQ8Wu5GML7/IlSxsk=; b=ij2pzxalbB2RuT8qE/FJFHHezE69gDmTuRasoR3NelUp+33CpIC3RW64jYbCdTq7EcjrTnulmcmFYnCnva60YuVOyZYHg4Xh4NUk7Mf10phuxsesYlknXHABXOw+AdS500Pu2DNDAxYO/G5AOyIb0PQgKxvjV6CdOkUjtwFN6X8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570817505220888.2196239444197; Fri, 11 Oct 2019 11:11:45 -0700 (PDT) Received: from localhost ([::1]:55198 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzOB-0007eD-VR for importer@patchew.org; Fri, 11 Oct 2019 14:11:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40602) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxhG-00010I-Da for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxhF-0008Mb-10 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:18 -0400 Received: from relay.sw.ru ([185.231.240.75]:49696) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxhE-0008MF-Qa for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:16 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR8-0003XG-Kt; Fri, 11 Oct 2019 19:06:38 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 119/126] hw/core/bus.c: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:45 +0300 Message-Id: <20191011160552.22907-120-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/core/bus.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/hw/core/bus.c b/hw/core/bus.c index 7f3d2a3dbd..0a1e508963 100644 --- a/hw/core/bus.c +++ b/hw/core/bus.c @@ -146,14 +146,14 @@ static bool bus_get_realized(Object *obj, Error **err= p) =20 static void bus_set_realized(Object *obj, bool value, Error **errp) { + ERRP_AUTO_PROPAGATE(); BusState *bus =3D BUS(obj); BusClass *bc =3D BUS_GET_CLASS(bus); BusChild *kid; - Error *local_err =3D NULL; =20 if (value && !bus->realized) { if (bc->realize) { - bc->realize(bus, &local_err); + bc->realize(bus, errp); } =20 /* TODO: recursive realization */ @@ -161,18 +161,17 @@ static void bus_set_realized(Object *obj, bool value,= Error **errp) QTAILQ_FOREACH(kid, &bus->children, sibling) { DeviceState *dev =3D kid->child; object_property_set_bool(OBJECT(dev), false, "realized", - &local_err); - if (local_err !=3D NULL) { + errp); + if (*errp) { break; } } - if (bc->unrealize && local_err =3D=3D NULL) { - bc->unrealize(bus, &local_err); + if (bc->unrealize && *errp =3D=3D NULL) { + bc->unrealize(bus, errp); } } =20 - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570818115; cv=none; d=zoho.com; s=zohoarc; b=LZzvpIWbR08VTWRPf9O0MFw0l1rTBpSVbFXgDntrHnPdwv40hRqvtCnJCftG79vBdEfV9yR/DJ3XM+RjTW0x+v+VyfdWi9xpmyPUEDOsEt5DPOSm0Wpuyfyc3nolTSjb7qaHCFeEVbLwESO8ZkJZMBwZDaEVh0X4nW+/mgYjG8s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570818115; h=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=ygHVOju6Vx6fWXISewDzl3KSQdLvcIfyEV3NTjNifXM=; b=hDKeGyuITCq04z8RRN7VrkhwMXkgHi3eNrWoh1WDXDZdaK154zm92nblXBISrembsucWjpO18R803Am9gwZFiRkEntubeQHY7OIKA+hXvnvYw321tlV63AXbngryC74HOrKFqU5zOJmsvXVLm4IAk6Y3Sc7JgFPoijpI6e6Ciwc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570818115059670.2321269355409; Fri, 11 Oct 2019 11:21:55 -0700 (PDT) Received: from localhost ([::1]:55346 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzY1-0002bw-TT for importer@patchew.org; Fri, 11 Oct 2019 14:21:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41681) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxmX-0007u9-T7 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxmW-00038l-Nq for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:45 -0400 Received: from relay.sw.ru ([185.231.240.75]:50008) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxmV-00038R-SS for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:44 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR8-0003XG-VV; Fri, 11 Oct 2019 19:06:39 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 120/126] hw/cpu/core.c: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:46 +0300 Message-Id: <20191011160552.22907-121-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/cpu/core.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/hw/cpu/core.c b/hw/cpu/core.c index 9874c5c870..9620bd7939 100644 --- a/hw/cpu/core.c +++ b/hw/cpu/core.c @@ -27,13 +27,12 @@ static void core_prop_get_core_id(Object *obj, Visitor = *v, const char *name, static void core_prop_set_core_id(Object *obj, Visitor *v, const char *nam= e, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUCore *core =3D CPU_CORE(obj); - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } =20 @@ -57,13 +56,12 @@ static void core_prop_get_nr_threads(Object *obj, Visit= or *v, const char *name, static void core_prop_set_nr_threads(Object *obj, Visitor *v, const char *= name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUCore *core =3D CPU_CORE(obj); - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570814387; cv=none; d=zoho.com; s=zohoarc; b=fy/ogQ+LLLZZNDuvtVxW0+pDrnVt7KcOAd4J3kcVTO8SAAqHj4nmmp3GvSsSq4za/fTYm4QblalKTg3gimdLTV7PRn3Mcqs+VXY0NempnGREaKXs2UECicXJ9C0g/Nw/QJz6XB+KYFLbqYNgA6jrlxbbh/9lRERXl7gjJQ9QRBk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570814387; h=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=lg1oifeZ2SHPXyOFDWHcoXHpNXy07Zc6Tb0tRhKL4oU=; b=Wbh+aBiimyg/ndcAKRX8FifSWuwsB8IsRURro6y9iY3BZyEW2NQUoizGh5tc/UaNX4zQNeUfNPp6z+tRTmc7cH4Plq6ihL/7HhuHyECDXxhHTb0Qd0pIsUw6J4BMHFjStY8Kf7eS8Q9JT7q3xDo8goGELod4kM5yB8+0IkIw+DI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570814387030652.7639629182502; Fri, 11 Oct 2019 10:19:47 -0700 (PDT) Received: from localhost ([::1]:54544 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyZt-0002re-0r for importer@patchew.org; Fri, 11 Oct 2019 13:19:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40441) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxgl-0000Ju-9O for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxgj-00083D-UE for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:47 -0400 Received: from relay.sw.ru ([185.231.240.75]:49644) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxgj-00082L-My for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:45 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR9-0003XG-75; Fri, 11 Oct 2019 19:06:39 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 121/126] hw/sd/ssi-sd.c: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:47 +0300 Message-Id: <20191011160552.22907-122-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- hw/sd/ssi-sd.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index 91db069212..f42204d649 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -241,10 +241,10 @@ static const VMStateDescription vmstate_ssi_sd =3D { =20 static void ssi_sd_realize(SSISlave *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); ssi_sd_state *s =3D FROM_SSI_SLAVE(ssi_sd_state, d); DeviceState *carddev; DriveInfo *dinfo; - Error *err =3D NULL; =20 qbus_create_inplace(&s->sdbus, sizeof(s->sdbus), TYPE_SD_BUS, DEVICE(d), "sd-bus"); @@ -254,12 +254,14 @@ static void ssi_sd_realize(SSISlave *d, Error **errp) dinfo =3D drive_get_next(IF_SD); carddev =3D qdev_create(BUS(&s->sdbus), TYPE_SD_CARD); if (dinfo) { - qdev_prop_set_drive(carddev, "drive", blk_by_legacy_dinfo(dinfo), = &err); + qdev_prop_set_drive(carddev, "drive", blk_by_legacy_dinfo(dinfo), + errp); } - object_property_set_bool(OBJECT(carddev), true, "spi", &err); - object_property_set_bool(OBJECT(carddev), true, "realized", &err); - if (err) { - error_setg(errp, "failed to init SD card: %s", error_get_pretty(er= r)); + object_property_set_bool(OBJECT(carddev), true, "spi", errp); + object_property_set_bool(OBJECT(carddev), true, "realized", errp); + if (*errp) { + error_setg(errp, "failed to init SD card: %s", + error_get_pretty(*errp)); return; } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570818245; cv=none; d=zoho.com; s=zohoarc; b=U/PdflSUmS6zCC5hQPUFD9xTRqOsxw89rSS21aD4lbc50AkW9bi/MMJ4JZSwtvrOL9LpIYIPvd27ptodPCL/yuZjuKzBok8VQfF621+NnfWdcJC2M0pQg+b5qvsbNpT1W21rql0NPBfZYNOy0R0eLzyy6nSyXP8cDbOz+GBjMcs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570818245; h=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=hEg2N4Z3c8xxUCWulPOwFv/LAVJFeb8TNU1pQvhBUvM=; b=SE1BV8WUxTfU0jnczH2wYHhMedu+8wLq1UvkHStopGGuIYOfjAcZQbdKofi9+rdf+x/R2bV3vC+ky4hWmBpTCqlMzuAzHEcAwSZPNQ3/3VNqrgokcbkpd9YxF70xZUiSbgFuujjl+J5CdmCfpTCVQ6J4kw/JjrIG6tjKfxfm768= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570818245675190.6862993955259; Fri, 11 Oct 2019 11:24:05 -0700 (PDT) Received: from localhost ([::1]:55392 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIza8-0005RD-H2 for importer@patchew.org; Fri, 11 Oct 2019 14:24:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40488) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxgu-0000Um-8F for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxgs-00086y-O6 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:56 -0400 Received: from relay.sw.ru ([185.231.240.75]:49656) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxgs-00086p-H3 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:22:54 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR9-0003XG-CQ; Fri, 11 Oct 2019 19:06:39 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 122/126] iothread.c: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:48 +0300 Message-Id: <20191011160552.22907-123-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- iothread.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/iothread.c b/iothread.c index 7130be58e3..726b60df53 100644 --- a/iothread.c +++ b/iothread.c @@ -163,15 +163,14 @@ static void iothread_init_gcontext(IOThread *iothread) =20 static void iothread_complete(UserCreatable *obj, Error **errp) { - Error *local_error =3D NULL; + ERRP_AUTO_PROPAGATE(); IOThread *iothread =3D IOTHREAD(obj); char *name, *thread_name; =20 iothread->stopping =3D false; iothread->running =3D true; - iothread->ctx =3D aio_context_new(&local_error); + iothread->ctx =3D aio_context_new(errp); if (!iothread->ctx) { - error_propagate(errp, local_error); return; } =20 @@ -185,9 +184,8 @@ static void iothread_complete(UserCreatable *obj, Error= **errp) iothread->poll_max_ns, iothread->poll_grow, iothread->poll_shrink, - &local_error); - if (local_error) { - error_propagate(errp, local_error); + errp); + if (*errp) { aio_context_unref(iothread->ctx); iothread->ctx =3D NULL; return; @@ -237,21 +235,21 @@ static void iothread_get_poll_param(Object *obj, Visi= tor *v, static void iothread_set_poll_param(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); IOThread *iothread =3D IOTHREAD(obj); PollParamInfo *info =3D opaque; int64_t *field =3D (void *)iothread + info->offset; - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int64(v, name, &value, &local_err); - if (local_err) { - goto out; + visit_type_int64(v, name, &value, errp); + if (*errp) { + return; } =20 if (value < 0) { - error_setg(&local_err, "%s value must be in range [0, %"PRId64"]", + error_setg(errp, "%s value must be in range [0, %"PRId64"]", info->name, INT64_MAX); - goto out; + return; } =20 *field =3D value; @@ -261,11 +259,8 @@ static void iothread_set_poll_param(Object *obj, Visit= or *v, iothread->poll_max_ns, iothread->poll_grow, iothread->poll_shrink, - &local_err); + errp); } - -out: - error_propagate(errp, local_err); } =20 static void iothread_class_init(ObjectClass *klass, void *class_data) --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570818523; cv=none; d=zoho.com; s=zohoarc; b=fVF+QEYVu1S9KbSmYITZb/WsshAsB7K/TiXVYD1jWcPgt5S9qJobwoZ0oku4Ywp20mK+c098sNkrc6yMV3EWMb+JlJXrb1TYa6wMab+9xZU5pSSmSbkC+MsAmltXyoDB+3JM0rGI5OEeHYkRG0RIQAxK84Ccyn3hSJ7gF4PQKfE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570818523; h=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=aDGYs2Gs1S2qozs6rzchXxmKfiYx3nkzGP3KfdPCqWE=; b=H+6+LnhDog/Pv6BL8jyif0DmmQwbJ/4sUsYv8tcfxvzRpyspbRmv87UVQ6nYineBXpx2Cl1S4jkxBeiz8GPJNg0zcenn8mM9lEEoJOSbtGjPlr712463MmyMfGKBK6lnIh68ovcAg7i3f8gar+zdijec2e5XutchYjKioTJf06g= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570818523090465.1329055680212; Fri, 11 Oct 2019 11:28:43 -0700 (PDT) Received: from localhost ([::1]:55462 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIzeb-0002Y6-HZ for importer@patchew.org; Fri, 11 Oct 2019 14:28:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40588) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxhD-0000wW-V8 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxhB-0008Lt-Lb for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:15 -0400 Received: from relay.sw.ru ([185.231.240.75]:49690) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxhB-0008LB-8W for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:13 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR9-0003XG-I5; Fri, 11 Oct 2019 19:06:39 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 123/126] memory_mapping.c: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:49 +0300 Message-Id: <20191011160552.22907-124-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- memory_mapping.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/memory_mapping.c b/memory_mapping.c index 18d0b8067c..d95df2484b 100644 --- a/memory_mapping.c +++ b/memory_mapping.c @@ -288,6 +288,7 @@ void qemu_get_guest_memory_mapping(MemoryMappingList *l= ist, const GuestPhysBlockList *guest_phys_bl= ocks, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cpu, *first_paging_enabled_cpu; GuestPhysBlock *block; ram_addr_t offset, length; @@ -296,10 +297,8 @@ void qemu_get_guest_memory_mapping(MemoryMappingList *= list, if (first_paging_enabled_cpu) { for (cpu =3D first_paging_enabled_cpu; cpu !=3D NULL; cpu =3D CPU_NEXT(cpu)) { - Error *err =3D NULL; - cpu_get_memory_mapping(cpu, list, &err); - if (err) { - error_propagate(errp, err); + cpu_get_memory_mapping(cpu, list, errp); + if (*errp) { return; } } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570816027; cv=none; d=zoho.com; s=zohoarc; b=K5np0M6raGc1VgcK1E60O5+D6E61/3TOKZ2yazZYntgBzEgW2mUNS+zuE/LIfJC2vL6pbenMcgspbeQIb2gqf35kSofCGeT50kvb4oxlt3lACFvbnTQf0cEw9iquqUmrN7hJDGb03o+eATmMkVtqZiGuJz5kmAKbJ4z65XobL7Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570816027; h=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=50DVGxxZ3SygwjA/z6Q4JRqcx1hOzVZHnf1v8ZWKFJ4=; b=Gl3PBjo1mT1wIdyJ/S4VyuImw6d/ZTW+12cR6Nxm2+6TIblw7PTDkeCAYv3FIL3zyiiyPZAA+htGtlWg7/86JB8Lc3FMs1c4UdOxcbzdh+4Hx2U/fsap7fQSwoHgu8JKUc4xttClu9FRyeb8ZcMyX205IrhjBTPuHDznUVofaYg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570816027017911.1075924791024; Fri, 11 Oct 2019 10:47:07 -0700 (PDT) Received: from localhost ([::1]:54886 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIz0L-0004Yu-Vu for importer@patchew.org; Fri, 11 Oct 2019 13:47:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41585) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxmD-0007bS-BX for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxmC-0002qs-3r for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:25 -0400 Received: from relay.sw.ru ([185.231.240.75]:49974) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxmB-0002qI-Sr for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:24 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR9-0003XG-MP; Fri, 11 Oct 2019 19:06:39 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 124/126] target/tilegx/cpu.c: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:50 +0300 Message-Id: <20191011160552.22907-125-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- target/tilegx/cpu.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/target/tilegx/cpu.c b/target/tilegx/cpu.c index 2b2a7ccc31..79bfe27856 100644 --- a/target/tilegx/cpu.c +++ b/target/tilegx/cpu.c @@ -81,13 +81,12 @@ static void tilegx_cpu_reset(CPUState *s) =20 static void tilegx_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); TileGXCPUClass *tcc =3D TILEGX_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815453; cv=none; d=zoho.com; s=zohoarc; b=RyAeLUHjnI23W//9EWN6tdDPPzFGZtcJmrjnP9dkfAZ1HuBugMhiAyokqvCQVLIk1yTaWpuKSP44UN4GkIUueec/ISE9NDObvsLRYVJuKr7uKR1+dPRPwt+FfmTvaGXoKJfo+7HaMomlmjUh1hQQ+gl/604YCdbGwoVvHQlych4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815453; h=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=rsVm+DQy2DUG9HBUv3rSB1qeNKf3qejodCdbrNgcz9A=; b=ogcS6Tb4UeyF4kJCArqAVcXMhfc396/Qe+rbvVbgM7L/rTWDJHmq2GO7ZCBGtPViz643lO4brSR2bqA7B7YHFRlhedBQjmBNWCmSsYMOfizuxwd4cRs/Xw/HK1DZ08N5SOBZFoKwh1DcgrznJkT9V7lKqXLVbx7W8kYbIcr9kLc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157081545325879.0708357990776; Fri, 11 Oct 2019 10:37:33 -0700 (PDT) Received: from localhost ([::1]:54760 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyr4-0001ER-Ap for importer@patchew.org; Fri, 11 Oct 2019 13:37:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41604) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxmI-0007jg-JH for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxmH-0002tX-6e for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:30 -0400 Received: from relay.sw.ru ([185.231.240.75]:49982) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxmG-0002tD-W2 for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:28:29 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxR9-0003XG-PN; Fri, 11 Oct 2019 19:06:39 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 125/126] tests/test-image-locking.c: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:51 +0300 Message-Id: <20191011160552.22907-126-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- tests/test-image-locking.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/test-image-locking.c b/tests/test-image-locking.c index ba057bd66c..4c996bdf55 100644 --- a/tests/test-image-locking.c +++ b/tests/test-image-locking.c @@ -35,20 +35,19 @@ static BlockBackend *open_image(const char *path, uint64_t perm, uint64_t shared_perm, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); BlockBackend *blk; QDict *options =3D qdict_new(); =20 qdict_put_str(options, "driver", "raw"); - blk =3D blk_new_open(path, NULL, options, BDRV_O_RDWR, &local_err); + blk =3D blk_new_open(path, NULL, options, BDRV_O_RDWR, errp); if (blk) { - g_assert_null(local_err); + g_assert_null(*errp); if (blk_set_perm(blk, perm, shared_perm, errp)) { blk_unref(blk); blk =3D NULL; } } else { - error_propagate(errp, local_err); } return blk; } --=20 2.21.0 From nobody Sun May 19 22:19:05 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570815304; cv=none; d=zoho.com; s=zohoarc; b=gi7HP6eucTEyVkT2S/Om63VLKokBQk2P79T48QWT3TTzFIWMMMoixov/JGSoCfMI0dwrn+y3eXmONSU+5dcKUZUsx8QRAOxRCE1+zqnWPjUzV7pgUppEV7oE0aCyLlhUXQdWHC57fFPn/fRLUJKYGgTh3HzX9rNwPVNsske1C5A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570815304; h=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=+jtOKeu+GKa6t3g82sotbd0Y1d3OYbad4nF+A++pb1E=; b=Sl9uNUa9Ei4clfOy6KqxsJWzoe3BjiVRfwKuKn60rxxQGWta8pSfU7vDit3Lgu58ttqmLQu+F8D2kaxr/dNVn1zPI4WsIxBQxGTR36FXatwsSwCmvz7QBR86bmOkTu7kFcBdIAQtz6bEIDXBSKQapBKUV+IdXBKrR4q99arAJHk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1570815304768982.180719706778; Fri, 11 Oct 2019 10:35:04 -0700 (PDT) Received: from localhost ([::1]:54728 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIyoh-0006Rz-BP for importer@patchew.org; Fri, 11 Oct 2019 13:35:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40634) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxhP-0001Bo-Gw for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxhO-0008Pg-4G for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:27 -0400 Received: from relay.sw.ru ([185.231.240.75]:49718) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxhM-0008Oh-Md for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:23:26 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxRA-0003XG-22; Fri, 11 Oct 2019 19:06:40 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 126/126] util/qemu-config.c: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:05:52 +0300 Message-Id: <20191011160552.22907-127-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Kevin Wolf , vsementsov@virtuozzo.com, armbru@redhat.com, Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- util/qemu-config.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/util/qemu-config.c b/util/qemu-config.c index 772f5a219e..13e2f797ba 100644 --- a/util/qemu-config.c +++ b/util/qemu-config.c @@ -478,10 +478,10 @@ int qemu_read_config_file(const char *filename) static void config_parse_qdict_section(QDict *options, QemuOptsList *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); QemuOpts *subopts; QDict *subqdict; QList *list =3D NULL; - Error *local_err =3D NULL; size_t orig_size, enum_size; char *prefix; =20 @@ -493,15 +493,13 @@ static void config_parse_qdict_section(QDict *options= , QemuOptsList *opts, goto out; } =20 - subopts =3D qemu_opts_create(opts, NULL, 0, &local_err); - if (local_err) { - error_propagate(errp, local_err); + subopts =3D qemu_opts_create(opts, NULL, 0, errp); + if (*errp) { goto out; } =20 - qemu_opts_absorb_qdict(subopts, subqdict, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(subopts, subqdict, errp); + if (*errp) { goto out; } =20 @@ -538,16 +536,14 @@ static void config_parse_qdict_section(QDict *options= , QemuOptsList *opts, } =20 opt_name =3D g_strdup_printf("%s.%u", opts->name, i++); - subopts =3D qemu_opts_create(opts, opt_name, 1, &local_err); + subopts =3D qemu_opts_create(opts, opt_name, 1, errp); g_free(opt_name); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { goto out; } =20 - qemu_opts_absorb_qdict(subopts, section, &local_err); - if (local_err) { - error_propagate(errp, local_err); + qemu_opts_absorb_qdict(subopts, section, errp); + if (*errp) { qemu_opts_del(subopts); goto out; } @@ -569,13 +565,12 @@ out: void qemu_config_parse_qdict(QDict *options, QemuOptsList **lists, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i; - Error *local_err =3D NULL; =20 for (i =3D 0; lists[i]; i++) { - config_parse_qdict_section(options, lists[i], &local_err); - if (local_err) { - error_propagate(errp, local_err); + config_parse_qdict_section(options, lists[i], errp); + if (*errp) { return; } } --=20 2.21.0