From nobody Mon Nov 17 14:01:17 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1604510813; cv=none; d=zohomail.com; s=zohoarc; b=aPD0Qjw9HJCwETURCCa2zL8SdGCR29FrnomqmuUwY6L53dHB88Ym+qDpgOOmlDJZzIV8VYSrKA3TqDPXv4cdS+sdXhkjFKb8ES88ELmzq5W4ZEJq4n/sJs2js62HrE9K/nDyUU9m6U63JVw8WrEeOD9lTeOa4U5L13RFcfRQRfI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604510813; 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=GSqVm/KgbrzU6qODZkZODJ8w9yZNykzM/TsBNSVpeWk=; b=nQYd1GEj0m9CPY3OHZJi+XhmnaiRdsNi+Vic05nuq2KZ3ovoOFCec0FvYBmC9lLo17c0U2L0atv8g+DVl+itFX8h0XM73Dkmc2iW35AJrGMYaUyKEt6EjQm/f8aQ66MBec8rJ5dhWNFfHzw8gdL8RDgOrplWj70ShbH4W+5V8Gc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1604510813658656.0844775155265; Wed, 4 Nov 2020 09:26:53 -0800 (PST) Received: from localhost ([::1]:50266 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kaMYe-0002S6-JQ for importer@patchew.org; Wed, 04 Nov 2020 12:26:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60806) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kaMXD-0000yB-4U for qemu-devel@nongnu.org; Wed, 04 Nov 2020 12:25:23 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:52398) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kaMXA-00089x-T0 for qemu-devel@nongnu.org; Wed, 04 Nov 2020 12:25:22 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-59-XsdCSUo2O4Wk_pKIXQigbg-1; Wed, 04 Nov 2020 12:25:17 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 04B031028D41; Wed, 4 Nov 2020 17:25:16 +0000 (UTC) Received: from localhost (ovpn-114-68.rdu2.redhat.com [10.10.114.68]) by smtp.corp.redhat.com (Postfix) with ESMTP id BD11A508E9; Wed, 4 Nov 2020 17:25:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1604510718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GSqVm/KgbrzU6qODZkZODJ8w9yZNykzM/TsBNSVpeWk=; b=Tj2A9Qj7R+JKAiUY4JgPvOnRjcqqkrIFlvmCg2PJ4LjYYz4ysBhQHm7iTidq1brwxTAkMC fJO8AIBxvuLBXHN8mWGkB4dI5/kjN235IP1X8+L6ZISicha8+51Kr952Lk8hdD1oKrwLDy Fv42g4qXsGcmUq6mskng+mDg8TnnI8Y= X-MC-Unique: XsdCSUo2O4Wk_pKIXQigbg-1 From: Eduardo Habkost To: qemu-devel@nongnu.org Subject: [PATCH 1/7] sparc: Fix property/field size mismatch for iu-version Date: Wed, 4 Nov 2020 12:25:06 -0500 Message-Id: <20201104172512.2381656-2-ehabkost@redhat.com> In-Reply-To: <20201104172512.2381656-1-ehabkost@redhat.com> References: <20201104172512.2381656-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ehabkost@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=ehabkost@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/03 00:03:41 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Igor Mammedov , Mark Cave-Ayland , "Daniel P. Berrange" , Artyom Tarasenko , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The "iu-version" property is declared as uint64_t but points to a target_ulong struct field. On the sparc 32-bit target, This makes every write of iu-version corrupt the 4 bytes after sparc_def_t.iu_version (where the fpu_version field is located). Change the type of the iu_version struct field to uint64_t, and just use DEFINE_PROP_UINT64. The only place where env.def.iu_version field is read is the env->version =3D env->def.iu_version; assignment at sparc_cpu_realizefn(). This means behavior will be kept exactly the same (except for the memory corruption bug fix). It would be nice to explicitly validate iu_version against target_ulong limits, but that would be a new feature (since the first version of this code, iu-version was parsed as 64-bit value value). It can be done later, once we have an appropriate API to define limits for integer properties. Fixes: de05005bf785 ("sparc: convert cpu features to qdev properties") Signed-off-by: Eduardo Habkost Acked-by: Mark Cave-Ayland --- Cc: Mark Cave-Ayland Cc: Artyom Tarasenko Cc: qemu-devel@nongnu.org --- target/sparc/cpu.h | 2 +- target/sparc/cpu.c | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/target/sparc/cpu.h b/target/sparc/cpu.h index b9369398f2..8ed0f4fef3 100644 --- a/target/sparc/cpu.h +++ b/target/sparc/cpu.h @@ -252,7 +252,7 @@ typedef struct trap_state { =20 struct sparc_def_t { const char *name; - target_ulong iu_version; + uint64_t iu_version; uint32_t fpu_version; uint32_t mmu_version; uint32_t mmu_bm; diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c index ec59a13eb8..5a9397f19a 100644 --- a/target/sparc/cpu.c +++ b/target/sparc/cpu.c @@ -576,7 +576,7 @@ void sparc_cpu_list(void) unsigned int i; =20 for (i =3D 0; i < ARRAY_SIZE(sparc_defs); i++) { - qemu_printf("Sparc %16s IU " TARGET_FMT_lx + qemu_printf("Sparc %16s IU %" PRIx64 " FPU %08x MMU %08x NWINS %d ", sparc_defs[i].name, sparc_defs[i].iu_version, @@ -838,8 +838,7 @@ static Property sparc_cpu_properties[] =3D { DEFINE_PROP_BIT("hypv", SPARCCPU, env.def.features, 11, false), DEFINE_PROP_BIT("cmt", SPARCCPU, env.def.features, 12, false), DEFINE_PROP_BIT("gl", SPARCCPU, env.def.features, 13, false), - DEFINE_PROP_UNSIGNED("iu-version", SPARCCPU, env.def.iu_version, 0, - prop_info_uint64, target_ulong), + DEFINE_PROP_UINT64("iu-version", SPARCCPU, env.def.iu_version, 0), DEFINE_PROP_UINT32("fpu-version", SPARCCPU, env.def.fpu_version, 0), DEFINE_PROP_UINT32("mmu-version", SPARCCPU, env.def.mmu_version, 0), DEFINE_PROP("nwindows", SPARCCPU, env.def.nwindows, --=20 2.28.0 From nobody Mon Nov 17 14:01:17 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1604510918; cv=none; d=zohomail.com; s=zohoarc; b=nR8wUN51FeHptKWKSU9ezjBnoJAqYj+J1zr3YmPukCWXEkkEkk6Z6j3nH2PMg4r9DekJbWFr/ad7oMXXOA930siC3ZI3qMK5NqdOhjh2972K+GpWIddVHKBGu1nxkJOTTQvKwenzUMI5w93XrVdlXbT8t5RwtL/oXYTNvF/U3V4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604510918; 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=bD8WHQ5vkPZgFU67Ydv6CRTwa7bMPjoclBtYbd6jK3c=; b=Q8oKqvAsggOH3C+kBdaEAj1hm2xk4zqbDB/FUOlBnQ/E5X5/vNkrY9Hw8NB7jTdBBBEioWiJ83ZdF2Jagz7O0WU3iv6i63k36G8/28O7xnq2+dA+Vjl5+YYxKI4xkDYWHNS6NMW5AsI2Z8j/dpPjAlGPi4xjqrumb/V/vf/ubLw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass 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 1604510918809275.58735986306283; Wed, 4 Nov 2020 09:28:38 -0800 (PST) Received: from localhost ([::1]:58752 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kaMaL-0005v0-OZ for importer@patchew.org; Wed, 04 Nov 2020 12:28:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60818) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kaMXE-0000z5-Vr for qemu-devel@nongnu.org; Wed, 04 Nov 2020 12:25:24 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:45215) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kaMXB-0008Ba-UW for qemu-devel@nongnu.org; Wed, 04 Nov 2020 12:25:24 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-528-eRHrlGKkOvqVzrcUNlO-EA-1; Wed, 04 Nov 2020 12:25:18 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8BBC11028D51 for ; Wed, 4 Nov 2020 17:25:17 +0000 (UTC) Received: from localhost (ovpn-114-68.rdu2.redhat.com [10.10.114.68]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4E20660BFA; Wed, 4 Nov 2020 17:25:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1604510720; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bD8WHQ5vkPZgFU67Ydv6CRTwa7bMPjoclBtYbd6jK3c=; b=PE+8dTVc7ryyWQIzjWLiFTiAwjyeR1fzbRgipif/WPj69ofteLzRUfmVs2D2DIKNXv4T7m GKLf2dBssIBWpy9jMIC0x4iQJ0fMLGd8c0UrnAxQTu5/IFUPk8h5Up1PHR4ttu91CNDPCy 4VY7pqpz9rymvFErD3luDMHk5npfBFA= X-MC-Unique: eRHrlGKkOvqVzrcUNlO-EA-1 From: Eduardo Habkost To: qemu-devel@nongnu.org Subject: [PATCH 2/7] qom: Save size of struct field in Property struct Date: Wed, 4 Nov 2020 12:25:07 -0500 Message-Id: <20201104172512.2381656-3-ehabkost@redhat.com> In-Reply-To: <20201104172512.2381656-1-ehabkost@redhat.com> References: <20201104172512.2381656-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ehabkost@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=ehabkost@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/03 22:09:52 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Igor Mammedov , "Daniel P. Berrange" , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) This will let the code that reads/writes the field ensure it will never go out of bounds. Signed-off-by: Eduardo Habkost --- Cc: Paolo Bonzini Cc: "Daniel P. Berrang=C3=A9" Cc: Eduardo Habkost Cc: qemu-devel@nongnu.org --- include/qom/field-property.h | 3 +++ include/qom/property-types.h | 1 + qom/property-types.c | 1 + 3 files changed, 5 insertions(+) diff --git a/include/qom/field-property.h b/include/qom/field-property.h index bc866e1c93..e64a2b3c07 100644 --- a/include/qom/field-property.h +++ b/include/qom/field-property.h @@ -27,7 +27,10 @@ struct Property { */ const char *qdev_prop_name; const PropertyInfo *info; + /** @offset: offset of field in object instance struct */ ptrdiff_t offset; + /** @size: size of field in object instance struct */ + size_t size; uint8_t bitnr; /** * @set_default: true if the default value should be set from @defval, diff --git a/include/qom/property-types.h b/include/qom/property-types.h index 3a36e1fec5..17bf007234 100644 --- a/include/qom/property-types.h +++ b/include/qom/property-types.h @@ -28,6 +28,7 @@ extern const PropertyInfo prop_info_link; .info =3D &(_prop), \ .offset =3D offsetof(_state, _field) \ + type_check(_type, typeof_field(_state, _field)), \ + .size =3D sizeof(typeof_field(_state, _field)), \ __VA_ARGS__ \ } =20 diff --git a/qom/property-types.c b/qom/property-types.c index f566c05ec2..856b5ae76d 100644 --- a/qom/property-types.c +++ b/qom/property-types.c @@ -485,6 +485,7 @@ static void set_prop_arraylen(Object *obj, Visitor *v, = const char *name, * being inside the device struct. */ arrayprop->offset =3D eltptr - (void *)obj; + arrayprop->size =3D prop->arrayfieldsize; assert(object_field_prop_ptr(obj, arrayprop) =3D=3D eltptr); object_property_add_field(obj, propname, arrayprop, op->allow_set); } --=20 2.28.0 From nobody Mon Nov 17 14:01:17 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1604510915; cv=none; d=zohomail.com; s=zohoarc; b=TPM+4obKW58WaUi3Kc/IoQjfmzF0yAo9KquOe5O8uJXf1FjyjbDkoH9WS9ErIkfqxa6hEktBJjIHiixsg6ADClc4B/dZywuHB6pRovLmzq2NHqMVNN0hxfkbooZpMvqZ+vt2M2FUSjpdOvuyhavv8cI6VWhN4JqwyhJEiD8NvnQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604510915; 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=/E/VfVeQ6SgwgOxmEY2GWK/9ySHK0Bx88fxijhLB0l0=; b=IAVNUv58/gy29q/OEVcj13Z9K6AI7HhwKDHW9ROIMZqD91gGNerGYa4kQ61CahksPUf2AGx6YXActW96RIVDFJAKlj0Pd8/mMGja7arCXXomEq8AHTlmPBjTiRPNkSTd5HGBgVDUVp/GKbj48NXQkJesO211GTlZR073Gji3c8Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass 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 1604510915906264.4466673631765; Wed, 4 Nov 2020 09:28:35 -0800 (PST) Received: from localhost ([::1]:58398 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kaMaI-0005mF-QK for importer@patchew.org; Wed, 04 Nov 2020 12:28:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60820) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kaMXF-0000zM-75 for qemu-devel@nongnu.org; Wed, 04 Nov 2020 12:25:25 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:49097) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kaMXC-0008CT-RF for qemu-devel@nongnu.org; Wed, 04 Nov 2020 12:25:24 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-332-l_nZfuNiNhqSezBQijiOiA-1; Wed, 04 Nov 2020 12:25:20 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 156FE18A6280 for ; Wed, 4 Nov 2020 17:25:19 +0000 (UTC) Received: from localhost (ovpn-114-68.rdu2.redhat.com [10.10.114.68]) by smtp.corp.redhat.com (Postfix) with ESMTP id A79005D98F; Wed, 4 Nov 2020 17:25:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1604510721; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/E/VfVeQ6SgwgOxmEY2GWK/9ySHK0Bx88fxijhLB0l0=; b=c2EWaOYVEsySGCUAo7q5WSULwR3iaKDeA7V5V/dOU4fbXc5b6YqEPnhcJodn54hbkRTr5B RBoKXy6cwH8TdPclRj+bV3kthoqFf6YlozpU4YYGDyviF8rWI2XfKVyTfc62MIVkYSqc8m B82Tkk53MkujCcWQOFwYlVaiwB6ufB0= X-MC-Unique: l_nZfuNiNhqSezBQijiOiA-1 From: Eduardo Habkost To: qemu-devel@nongnu.org Subject: [PATCH 3/7] qdev: Don't register unreadable legacy properties Date: Wed, 4 Nov 2020 12:25:08 -0500 Message-Id: <20201104172512.2381656-4-ehabkost@redhat.com> In-Reply-To: <20201104172512.2381656-1-ehabkost@redhat.com> References: <20201104172512.2381656-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ehabkost@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=ehabkost@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/03 22:09:52 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Igor Mammedov , "Daniel P. Berrange" , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) The existing code at qdev_class_add_legacy_property() will register a property if both .print and .get are NULL, which is useless as it will register a property that can't be read or written. The only PropertyInfo struct in the whole tree that has both .print and .get set to NULL is qdev_prop_link. This means every link property in the code had a useless "legacy-" property being registered. Fix this by only registering legacy properties if a .print method exists. Signed-off-by: Eduardo Habkost --- Cc: Paolo Bonzini Cc: "Daniel P. Berrang=C3=A9" Cc: Eduardo Habkost Cc: qemu-devel@nongnu.org --- hw/core/qdev-properties.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 5bb4ff5f46..73884a212a 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -264,13 +264,13 @@ static void qdev_class_add_legacy_property(DeviceClas= s *dc, Property *prop) g_autofree char *name =3D NULL; =20 /* Register pointer properties as legacy properties */ - if (!prop->info->print && prop->info->get) { + if (!prop->info->print) { return; } =20 name =3D g_strdup_printf("legacy-%s", prop->qdev_prop_name); object_class_property_add(OBJECT_CLASS(dc), name, "str", - prop->info->print ? qdev_get_legacy_property : prop->info->get, + qdev_get_legacy_property, NULL, NULL, prop); } =20 --=20 2.28.0 From nobody Mon Nov 17 14:01:17 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1604510766; cv=none; d=zohomail.com; s=zohoarc; b=mEKC0YI3i7HUJMdvk3PKQ2tiaa/6AcZBpLZSje6p66wmVlIX2gRlO043QgQBrF2f+oWSYgHEHOooQFuL2++Ab2ZpPNbGHPklcAqZMtoIdDEGZ100RA0K7vKfzC7jTCsm1dst1Fk02PxNwD240gFISVHK3a/AF6qo/EU3lw4Rfrc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604510766; 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=qH+Ft2xr8oMmaql/QpsL3d2WQdY3tolquMseQzbcMBo=; b=BpAY3+VCQtQvCM/FCdZO4TAR7ju940gk+Q3WR9jfMtiURHZ7xrkvSiJfXWfjwAbg1XC49387ehtzoKyrN5/8Om/wSJV+yJbKZkfte6ifW9PkpbBgwo56SJJcBRgYYU7J9XHbD6FOl2CueJ1/Xh96IcQEWBIIC2dK5yDZAwfaGJE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass 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 1604510766760467.35975449246007; Wed, 4 Nov 2020 09:26:06 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.19440.44636 (Exim 4.92) (envelope-from ) id 1kaMXW-0004yW-O1; Wed, 04 Nov 2020 17:25:42 +0000 Received: by outflank-mailman (output) from mailman id 19440.44636; Wed, 04 Nov 2020 17:25:42 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kaMXW-0004yP-Kt; Wed, 04 Nov 2020 17:25:42 +0000 Received: by outflank-mailman (input) for mailman id 19440; Wed, 04 Nov 2020 17:25:41 +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.92) (envelope-from ) id 1kaMXV-0004yK-0m for xen-devel@lists.xenproject.org; Wed, 04 Nov 2020 17:25:41 +0000 Received: from us-smtp-delivery-124.mimecast.com (unknown [63.128.21.124]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id 38d4fb6b-17e7-4f7b-aae3-b74dfee7aad7; Wed, 04 Nov 2020 17:25:36 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-206-BliftGsjOkqSm4-6LQDSYg-1; Wed, 04 Nov 2020 12:25:31 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 488668049CB; Wed, 4 Nov 2020 17:25:29 +0000 (UTC) Received: from localhost (ovpn-114-68.rdu2.redhat.com [10.10.114.68]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4A6315C5DE; Wed, 4 Nov 2020 17:25:21 +0000 (UTC) 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.92) (envelope-from ) id 1kaMXV-0004yK-0m for xen-devel@lists.xenproject.org; Wed, 04 Nov 2020 17:25:41 +0000 Received: from us-smtp-delivery-124.mimecast.com (unknown [63.128.21.124]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id 38d4fb6b-17e7-4f7b-aae3-b74dfee7aad7; Wed, 04 Nov 2020 17:25:36 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-206-BliftGsjOkqSm4-6LQDSYg-1; Wed, 04 Nov 2020 12:25:31 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 488668049CB; Wed, 4 Nov 2020 17:25:29 +0000 (UTC) Received: from localhost (ovpn-114-68.rdu2.redhat.com [10.10.114.68]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4A6315C5DE; Wed, 4 Nov 2020 17:25:21 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 38d4fb6b-17e7-4f7b-aae3-b74dfee7aad7 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1604510736; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qH+Ft2xr8oMmaql/QpsL3d2WQdY3tolquMseQzbcMBo=; b=Q6SJsWvvVfwUxbPJ+GeFpNT1OqX3Ek8gG8m/Ht3CmiDLQLp/3+MtklHRZb6U0sJOVQBGB8 udaOPbtYX1035iDVckbRvArURWgq/hT4y9g2wLOKgAQXywtHMj1T2GeSuOohlZkFG+lldH LjX9mW8VV1wm5uc+/J4q3/jNz8xq9UI= X-MC-Unique: BliftGsjOkqSm4-6LQDSYg-1 From: Eduardo Habkost To: qemu-devel@nongnu.org Cc: Igor Mammedov , "Daniel P. Berrange" , Paolo Bonzini , Stefan Berger , Stefano Stabellini , Anthony Perard , Paul Durrant , Kevin Wolf , Max Reitz , Richard Henderson , David Hildenbrand , Cornelia Huck , Thomas Huth , Halil Pasic , Christian Borntraeger , Matthew Rosato , Alex Williamson , Mark Cave-Ayland , Artyom Tarasenko , xen-devel@lists.xenproject.org, qemu-block@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 4/7] qom: Replace void* parameter with Property* on field getters/setters Date: Wed, 4 Nov 2020 12:25:09 -0500 Message-Id: <20201104172512.2381656-5-ehabkost@redhat.com> In-Reply-To: <20201104172512.2381656-1-ehabkost@redhat.com> References: <20201104172512.2381656-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ehabkost@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) All field property getters and setters must interpret the fourth argument as Property*. Change the function signature of field property getters and setters to indicate that. Signed-off-by: Eduardo Habkost Acked-by: Cornelia Huck --- Cc: Stefan Berger Cc: Stefano Stabellini Cc: Anthony Perard Cc: Paul Durrant Cc: Kevin Wolf Cc: Max Reitz Cc: Paolo Bonzini Cc: "Daniel P. Berrang=C3=A9" Cc: Eduardo Habkost Cc: Richard Henderson Cc: David Hildenbrand Cc: Cornelia Huck Cc: Thomas Huth Cc: Halil Pasic Cc: Christian Borntraeger Cc: Matthew Rosato Cc: Alex Williamson Cc: Mark Cave-Ayland Cc: Artyom Tarasenko Cc: qemu-devel@nongnu.org Cc: xen-devel@lists.xenproject.org Cc: qemu-block@nongnu.org Cc: qemu-s390x@nongnu.org --- include/qom/field-property-internal.h | 8 +- include/qom/field-property.h | 26 ++++--- backends/tpm/tpm_util.c | 11 ++- hw/block/xen-block.c | 6 +- hw/core/qdev-properties-system.c | 86 +++++++++------------- hw/s390x/css.c | 6 +- hw/s390x/s390-pci-bus.c | 6 +- hw/vfio/pci-quirks.c | 10 +-- qom/property-types.c | 102 +++++++++----------------- target/sparc/cpu.c | 4 +- 10 files changed, 105 insertions(+), 160 deletions(-) diff --git a/include/qom/field-property-internal.h b/include/qom/field-prop= erty-internal.h index 7aa27ce836..bc7d25033d 100644 --- a/include/qom/field-property-internal.h +++ b/include/qom/field-property-internal.h @@ -9,9 +9,9 @@ #define QOM_STATIC_PROPERTY_INTERNAL_H =20 void field_prop_get_enum(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp); + Property *prop, Error **errp); void field_prop_set_enum(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp); + Property *prop, Error **errp); =20 void field_prop_set_default_value_enum(ObjectProperty *op, const Property *prop); @@ -21,9 +21,9 @@ void field_prop_set_default_value_uint(ObjectProperty *op, const Property *prop); =20 void field_prop_get_int32(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp); + Property *prop, Error **errp); void field_prop_get_size32(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp); + Property *prop, Error **errp); =20 /** * object_property_add_field: Add a field property to an object instance diff --git a/include/qom/field-property.h b/include/qom/field-property.h index e64a2b3c07..438bb25896 100644 --- a/include/qom/field-property.h +++ b/include/qom/field-property.h @@ -54,6 +54,18 @@ struct Property { const char *link_type; }; =20 +/** + * typedef FieldAccessor: a field property getter or setter function + * @obj: the object instance + * @v: the visitor that contains the property data + * @name: the name of the property + * @prop: Field property definition + * @errp: pointer to error information + */ +typedef void FieldAccessor(Object *obj, Visitor *v, + const char *name, Property *prop, + Error **errp); + /** * struct PropertyInfo: information on a specific QOM property type */ @@ -71,16 +83,10 @@ struct PropertyInfo { /** @create: Optional callback for creation of property */ ObjectProperty *(*create)(ObjectClass *oc, const char *name, Property *prop); - /** - * @get: Property getter. The opaque parameter will point to - * the &Property struct for the property. - */ - ObjectPropertyAccessor *get; - /** - * @set: Property setter. The opaque parameter will point to - * the &Property struct for the property. - */ - ObjectPropertyAccessor *set; + /** @get: Property getter */ + FieldAccessor *get; + /** @set: Property setter */ + FieldAccessor *set; /** * @release: Optional release function, called when the object * is destroyed diff --git a/backends/tpm/tpm_util.c b/backends/tpm/tpm_util.c index bb1ab34a75..e8837938e5 100644 --- a/backends/tpm/tpm_util.c +++ b/backends/tpm/tpm_util.c @@ -32,10 +32,10 @@ =20 /* tpm backend property */ =20 -static void get_tpm(Object *obj, Visitor *v, const char *name, void *opaqu= e, - Error **errp) +static void get_tpm(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - TPMBackend **be =3D object_field_prop_ptr(obj, opaque); + TPMBackend **be =3D object_field_prop_ptr(obj, prop); char *p; =20 p =3D g_strdup(*be ? (*be)->id : ""); @@ -43,10 +43,9 @@ static void get_tpm(Object *obj, Visitor *v, const char = *name, void *opaque, g_free(p); } =20 -static void set_tpm(Object *obj, Visitor *v, const char *name, void *opaqu= e, - Error **errp) +static void set_tpm(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; TPMBackend *s, **be =3D object_field_prop_ptr(obj, prop); char *str; =20 diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c index 718d886e5c..c1ee634639 100644 --- a/hw/block/xen-block.c +++ b/hw/block/xen-block.c @@ -333,9 +333,8 @@ static char *disk_to_vbd_name(unsigned int disk) } =20 static void xen_block_get_vdev(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; XenBlockVdev *vdev =3D object_field_prop_ptr(obj, prop); char *str; =20 @@ -393,9 +392,8 @@ static int vbd_name_to_disk(const char *name, const cha= r **endp, } =20 static void xen_block_set_vdev(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; XenBlockVdev *vdev =3D object_field_prop_ptr(obj, prop); char *str, *p; const char *end; diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-sys= tem.c index 8da68f076c..4c649cb4b2 100644 --- a/hw/core/qdev-properties-system.c +++ b/hw/core/qdev-properties-system.c @@ -58,10 +58,9 @@ static bool check_prop_still_unset(Object *obj, const ch= ar *name, =20 /* --- drive --- */ =20 -static void get_drive(Object *obj, Visitor *v, const char *name, void *opa= que, - Error **errp) +static void get_drive(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; void **ptr =3D object_field_prop_ptr(obj, prop); const char *value; char *p; @@ -165,16 +164,16 @@ fail: g_free(str); } =20 -static void set_drive(Object *obj, Visitor *v, const char *name, void *opa= que, +static void set_drive(Object *obj, Visitor *v, const char *name, Property = *prop, Error **errp) { - set_drive_helper(obj, v, name, opaque, false, errp); + set_drive_helper(obj, v, name, prop, false, errp); } =20 static void set_drive_iothread(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - set_drive_helper(obj, v, name, opaque, true, errp); + set_drive_helper(obj, v, name, prop, true, errp); } =20 static void release_drive(Object *obj, const char *name, void *opaque) @@ -211,10 +210,10 @@ const PropertyInfo qdev_prop_drive_iothread =3D { =20 /* --- character device --- */ =20 -static void get_chr(Object *obj, Visitor *v, const char *name, void *opaqu= e, - Error **errp) +static void get_chr(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - CharBackend *be =3D object_field_prop_ptr(obj, opaque); + CharBackend *be =3D object_field_prop_ptr(obj, prop); char *p; =20 p =3D g_strdup(be->chr && be->chr->label ? be->chr->label : ""); @@ -222,10 +221,9 @@ static void get_chr(Object *obj, Visitor *v, const cha= r *name, void *opaque, g_free(p); } =20 -static void set_chr(Object *obj, Visitor *v, const char *name, void *opaqu= e, - Error **errp) +static void set_chr(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; CharBackend *be =3D object_field_prop_ptr(obj, prop); Chardev *s; char *str; @@ -282,10 +280,9 @@ const PropertyInfo qdev_prop_chr =3D { * 01:02:03:04:05:06 * 01-02-03-04-05-06 */ -static void get_mac(Object *obj, Visitor *v, const char *name, void *opaqu= e, - Error **errp) +static void get_mac(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; MACAddr *mac =3D object_field_prop_ptr(obj, prop); char buffer[2 * 6 + 5 + 1]; char *p =3D buffer; @@ -297,10 +294,9 @@ static void get_mac(Object *obj, Visitor *v, const cha= r *name, void *opaque, visit_type_str(v, name, &p, errp); } =20 -static void set_mac(Object *obj, Visitor *v, const char *name, void *opaqu= e, - Error **errp) +static void set_mac(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; MACAddr *mac =3D object_field_prop_ptr(obj, prop); int i, pos; char *str; @@ -360,9 +356,8 @@ void qdev_prop_set_macaddr(DeviceState *dev, const char= *name, =20 /* --- netdev device --- */ static void get_netdev(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; NICPeers *peers_ptr =3D object_field_prop_ptr(obj, prop); char *p =3D g_strdup(peers_ptr->ncs[0] ? peers_ptr->ncs[0]->name : ""); =20 @@ -371,9 +366,8 @@ static void get_netdev(Object *obj, Visitor *v, const c= har *name, } =20 static void set_netdev(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; NICPeers *peers_ptr =3D object_field_prop_ptr(obj, prop); NetClientState **ncs =3D peers_ptr->ncs; NetClientState *peers[MAX_QUEUE_NUM]; @@ -433,9 +427,8 @@ const PropertyInfo qdev_prop_netdev =3D { =20 /* --- audiodev --- */ static void get_audiodev(Object *obj, Visitor *v, const char* name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; QEMUSoundCard *card =3D object_field_prop_ptr(obj, prop); char *p =3D g_strdup(audio_get_id(card)); =20 @@ -444,9 +437,8 @@ static void get_audiodev(Object *obj, Visitor *v, const= char* name, } =20 static void set_audiodev(Object *obj, Visitor *v, const char* name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; QEMUSoundCard *card =3D object_field_prop_ptr(obj, prop); AudioState *state; int err =3D 0; @@ -545,10 +537,9 @@ const PropertyInfo qdev_prop_losttickpolicy =3D { /* --- blocksize --- */ =20 static void set_blocksize(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { DeviceState *dev =3D DEVICE(obj); - Property *prop =3D opaque; uint32_t *ptr =3D object_field_prop_ptr(obj, prop); uint64_t value; Error *local_err =3D NULL; @@ -634,9 +625,8 @@ const PropertyInfo qdev_prop_multifd_compression =3D { * and type is a non-negative decimal integer */ static void get_reserved_region(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; ReservedRegion *rr =3D object_field_prop_ptr(obj, prop); char buffer[64]; char *p =3D buffer; @@ -650,9 +640,8 @@ static void get_reserved_region(Object *obj, Visitor *v= , const char *name, } =20 static void set_reserved_region(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; ReservedRegion *rr =3D object_field_prop_ptr(obj, prop); Error *local_err =3D NULL; const char *endptr; @@ -712,9 +701,8 @@ const PropertyInfo qdev_prop_reserved_region =3D { * bus-local address, i.e. "$slot" or "$slot.$fn" */ static void set_pci_devfn(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; int32_t value, *ptr =3D object_field_prop_ptr(obj, prop); unsigned int slot, fn, n; char *str; @@ -774,9 +762,8 @@ const PropertyInfo qdev_prop_pci_devfn =3D { /* --- pci host address --- */ =20 static void get_pci_host_devaddr(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; PCIHostDeviceAddress *addr =3D object_field_prop_ptr(obj, prop); char buffer[] =3D "ffff:ff:ff.f"; char *p =3D buffer; @@ -800,9 +787,8 @@ static void get_pci_host_devaddr(Object *obj, Visitor *= v, const char *name, * if is not supplied, it's assumed to be 0. */ static void set_pci_host_devaddr(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; PCIHostDeviceAddress *addr =3D object_field_prop_ptr(obj, prop); char *str, *p; const char *e; @@ -889,9 +875,8 @@ const PropertyInfo qdev_prop_off_auto_pcibar =3D { /* --- PCIELinkSpeed 2_5/5/8/16 -- */ =20 static void get_prop_pcielinkspeed(Object *obj, Visitor *v, const char *na= me, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; PCIExpLinkSpeed *p =3D object_field_prop_ptr(obj, prop); int speed; =20 @@ -917,9 +902,8 @@ static void get_prop_pcielinkspeed(Object *obj, Visitor= *v, const char *name, } =20 static void set_prop_pcielinkspeed(Object *obj, Visitor *v, const char *na= me, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; PCIExpLinkSpeed *p =3D object_field_prop_ptr(obj, prop); int speed; =20 @@ -959,9 +943,8 @@ const PropertyInfo qdev_prop_pcie_link_speed =3D { /* --- PCIELinkWidth 1/2/4/8/12/16/32 -- */ =20 static void get_prop_pcielinkwidth(Object *obj, Visitor *v, const char *na= me, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; PCIExpLinkWidth *p =3D object_field_prop_ptr(obj, prop); int width; =20 @@ -996,9 +979,8 @@ static void get_prop_pcielinkwidth(Object *obj, Visitor= *v, const char *name, } =20 static void set_prop_pcielinkwidth(Object *obj, Visitor *v, const char *na= me, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; PCIExpLinkWidth *p =3D object_field_prop_ptr(obj, prop); int width; =20 @@ -1046,10 +1028,9 @@ const PropertyInfo qdev_prop_pcie_link_width =3D { =20 /* --- UUID --- */ =20 -static void get_uuid(Object *obj, Visitor *v, const char *name, void *opaq= ue, - Error **errp) +static void get_uuid(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; QemuUUID *uuid =3D object_field_prop_ptr(obj, prop); char buffer[UUID_FMT_LEN + 1]; char *p =3D buffer; @@ -1061,10 +1042,9 @@ static void get_uuid(Object *obj, Visitor *v, const = char *name, void *opaque, =20 #define UUID_VALUE_AUTO "auto" =20 -static void set_uuid(Object *obj, Visitor *v, const char *name, void *opaq= ue, - Error **errp) +static void set_uuid(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; QemuUUID *uuid =3D object_field_prop_ptr(obj, prop); char *str; =20 diff --git a/hw/s390x/css.c b/hw/s390x/css.c index fe47751df4..1400d80689 100644 --- a/hw/s390x/css.c +++ b/hw/s390x/css.c @@ -2341,9 +2341,8 @@ void css_reset(void) } =20 static void get_css_devid(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; CssDevId *dev_id =3D object_field_prop_ptr(obj, prop); char buffer[] =3D "xx.x.xxxx"; char *p =3D buffer; @@ -2370,9 +2369,8 @@ static void get_css_devid(Object *obj, Visitor *v, co= nst char *name, * parse .. and assert valid range for cssid/ssid */ static void set_css_devid(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; CssDevId *dev_id =3D object_field_prop_ptr(obj, prop); char *str; int num, n1, n2; diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 99b18d56ba..a29bba17b4 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -1320,19 +1320,17 @@ static void s390_pci_device_reset(DeviceState *dev) } =20 static void s390_pci_get_fid(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; uint32_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_uint32(v, name, ptr, errp); } =20 static void s390_pci_set_fid(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { S390PCIBusDevice *zpci =3D S390_PCI_DEVICE(obj); - Property *prop =3D opaque; uint32_t *ptr =3D object_field_prop_ptr(obj, prop); =20 if (!visit_type_uint32(v, name, ptr, errp)) { diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index fc8d63c850..34f5f5dce2 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -1485,20 +1485,18 @@ void vfio_setup_resetfn_quirk(VFIOPCIDevice *vdev) * https://lists.gnu.org/archive/html/qemu-devel/2017-08/pdfUda5iEpgOS.pdf */ static void get_nv_gpudirect_clique_id(Object *obj, Visitor *v, - const char *name, void *opaque, - Error **errp) + const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; uint8_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_uint8(v, name, ptr, errp); } =20 static void set_nv_gpudirect_clique_id(Object *obj, Visitor *v, - const char *name, void *opaque, - Error **errp) + const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; uint8_t value, *ptr =3D object_field_prop_ptr(obj, prop); =20 if (!visit_type_uint8(v, name, &value, errp)) { diff --git a/qom/property-types.c b/qom/property-types.c index 856b5ae76d..82a5932f4a 100644 --- a/qom/property-types.c +++ b/qom/property-types.c @@ -8,18 +8,16 @@ #include "qemu/uuid.h" =20 void field_prop_get_enum(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; int *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_enum(v, name, ptr, prop->info->enum_table, errp); } =20 void field_prop_set_enum(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; int *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_enum(v, name, ptr, prop->info->enum_table, errp); @@ -59,9 +57,8 @@ static void bit_prop_set(Object *obj, Property *props, bo= ol val) } =20 static void prop_get_bit(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; uint32_t *p =3D object_field_prop_ptr(obj, prop); bool value =3D (*p & qdev_get_prop_mask(prop)) !=3D 0; =20 @@ -69,9 +66,8 @@ static void prop_get_bit(Object *obj, Visitor *v, const c= har *name, } =20 static void prop_set_bit(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; bool value; =20 if (!visit_type_bool(v, name, &value, errp)) { @@ -113,9 +109,8 @@ static void bit64_prop_set(Object *obj, Property *props= , bool val) } =20 static void prop_get_bit64(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; uint64_t *p =3D object_field_prop_ptr(obj, prop); bool value =3D (*p & qdev_get_prop_mask64(prop)) !=3D 0; =20 @@ -123,9 +118,8 @@ static void prop_get_bit64(Object *obj, Visitor *v, con= st char *name, } =20 static void prop_set_bit64(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; bool value; =20 if (!visit_type_bool(v, name, &value, errp)) { @@ -144,19 +138,17 @@ const PropertyInfo prop_info_bit64 =3D { =20 /* --- bool --- */ =20 -static void get_bool(Object *obj, Visitor *v, const char *name, void *opaq= ue, - Error **errp) +static void get_bool(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; bool *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_bool(v, name, ptr, errp); } =20 -static void set_bool(Object *obj, Visitor *v, const char *name, void *opaq= ue, - Error **errp) +static void set_bool(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; bool *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_bool(v, name, ptr, errp); @@ -171,19 +163,17 @@ const PropertyInfo prop_info_bool =3D { =20 /* --- 8bit integer --- */ =20 -static void get_uint8(Object *obj, Visitor *v, const char *name, void *opa= que, - Error **errp) +static void get_uint8(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; uint8_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_uint8(v, name, ptr, errp); } =20 -static void set_uint8(Object *obj, Visitor *v, const char *name, void *opa= que, - Error **errp) +static void set_uint8(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; uint8_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_uint8(v, name, ptr, errp); @@ -211,18 +201,16 @@ const PropertyInfo prop_info_uint8 =3D { /* --- 16bit integer --- */ =20 static void get_uint16(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; uint16_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_uint16(v, name, ptr, errp); } =20 static void set_uint16(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; uint16_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_uint16(v, name, ptr, errp); @@ -238,36 +226,32 @@ const PropertyInfo prop_info_uint16 =3D { /* --- 32bit integer --- */ =20 static void get_uint32(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; uint32_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_uint32(v, name, ptr, errp); } =20 static void set_uint32(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; uint32_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_uint32(v, name, ptr, errp); } =20 void field_prop_get_int32(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; int32_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_int32(v, name, ptr, errp); } =20 -static void set_int32(Object *obj, Visitor *v, const char *name, void *opa= que, - Error **errp) +static void set_int32(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; int32_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_int32(v, name, ptr, errp); @@ -290,36 +274,32 @@ const PropertyInfo prop_info_int32 =3D { /* --- 64bit integer --- */ =20 static void get_uint64(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; uint64_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_uint64(v, name, ptr, errp); } =20 static void set_uint64(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; uint64_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_uint64(v, name, ptr, errp); } =20 static void get_int64(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; int64_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_int64(v, name, ptr, errp); } =20 static void set_int64(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; int64_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_int64(v, name, ptr, errp); @@ -348,9 +328,8 @@ static void release_string(Object *obj, const char *nam= e, void *opaque) } =20 static void get_string(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; char **ptr =3D object_field_prop_ptr(obj, prop); =20 if (!*ptr) { @@ -362,9 +341,8 @@ static void get_string(Object *obj, Visitor *v, const c= har *name, } =20 static void set_string(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; char **ptr =3D object_field_prop_ptr(obj, prop); char *str; =20 @@ -396,19 +374,17 @@ const PropertyInfo prop_info_on_off_auto =3D { /* --- 32bit unsigned int 'size' type --- */ =20 void field_prop_get_size32(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - Property *prop =3D opaque; uint32_t *ptr =3D object_field_prop_ptr(obj, prop); uint64_t value =3D *ptr; =20 visit_type_size(v, name, &value, errp); } =20 -static void set_size32(Object *obj, Visitor *v, const char *name, void *op= aque, - Error **errp) +static void set_size32(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; uint32_t *ptr =3D object_field_prop_ptr(obj, prop); uint64_t value; =20 @@ -437,14 +413,8 @@ const PropertyInfo prop_info_size32 =3D { /* --- support for array properties --- */ =20 static void set_prop_arraylen(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { - /* 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 - * array itself and dynamically add the corresponding properties. - */ - Property *prop =3D opaque; ObjectProperty *op =3D object_property_find_err(obj, name, &error_abor= t); uint32_t *alenptr =3D object_field_prop_ptr(obj, prop); void **arrayptr =3D (void *)obj + prop->arrayoffset; @@ -500,19 +470,17 @@ const PropertyInfo prop_info_arraylen =3D { =20 /* --- 64bit unsigned int 'size' type --- */ =20 -static void get_size(Object *obj, Visitor *v, const char *name, void *opaq= ue, - Error **errp) +static void get_size(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; uint64_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_size(v, name, ptr, errp); } =20 -static void set_size(Object *obj, Visitor *v, const char *name, void *opaq= ue, - Error **errp) +static void set_size(Object *obj, Visitor *v, const char *name, + Property *prop, Error **errp) { - Property *prop =3D opaque; uint64_t *ptr =3D object_field_prop_ptr(obj, prop); =20 visit_type_size(v, name, ptr, errp); diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c index 5a9397f19a..3acc99c29c 100644 --- a/target/sparc/cpu.c +++ b/target/sparc/cpu.c @@ -787,7 +787,7 @@ static void sparc_cpu_initfn(Object *obj) } =20 static void sparc_get_nwindows(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { SPARCCPU *cpu =3D SPARC_CPU(obj); int64_t value =3D cpu->env.def.nwindows; @@ -796,7 +796,7 @@ static void sparc_get_nwindows(Object *obj, Visitor *v,= const char *name, } =20 static void sparc_set_nwindows(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) + Property *prop, Error **errp) { const int64_t min =3D MIN_NWINDOWS; const int64_t max =3D MAX_NWINDOWS; --=20 2.28.0 From nobody Mon Nov 17 14:01:17 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1604510831; cv=none; d=zohomail.com; s=zohoarc; b=Ix4BaRGhYP1zE5BFMHsQCNDYWvTd/YkIX7LwRlGIE+hls8QlHGMxzvVab/pTZNJe1uTGGPnzsySB1Fdj8gBNoc1qb1EfF4YAkSW6WzWhE40bkvKyCK0Z3xRJaO1y03tubmpNeAe4SatD9DUND6OYIUmG+QcDcJC0hLOVW3Q3el0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604510831; 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=eUqT7Z0R5qCCVThtevZpaE91ROAxKpPagPd6kCVEmTs=; b=RhoNd1HYKJqLO97CkqBwSws1PNDbdkekicUpO5ehbKZNFMiiVjCJ5IzN2zFj6kpe/2jr7dUwDq9vkfjeruhUQBVSKuNkpNFCMH2hjww74eWNWf9IeXNyS1g0c2eSBwpB0vTxPWqbu1/Oqu9pg5bewzoZYVasl70TS9CVsC4ml28= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1604510831804303.3433432587774; Wed, 4 Nov 2020 09:27:11 -0800 (PST) Received: from localhost ([::1]:51800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kaMYw-00035L-Kw for importer@patchew.org; Wed, 04 Nov 2020 12:27:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60868) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kaMXQ-0001Gn-A1 for qemu-devel@nongnu.org; Wed, 04 Nov 2020 12:25:36 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:54574) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kaMXO-0008Hr-8Y for qemu-devel@nongnu.org; Wed, 04 Nov 2020 12:25:35 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-348-GF_OskxJP2Og_Or2BwSJ0w-1; Wed, 04 Nov 2020 12:25:31 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id AE9128049C3; Wed, 4 Nov 2020 17:25:30 +0000 (UTC) Received: from localhost (ovpn-114-68.rdu2.redhat.com [10.10.114.68]) by smtp.corp.redhat.com (Postfix) with ESMTP id 75CCE5B4D7; Wed, 4 Nov 2020 17:25:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1604510733; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eUqT7Z0R5qCCVThtevZpaE91ROAxKpPagPd6kCVEmTs=; b=FjLRAGWQrDzXPADRytkpEHZsRCNshw0rewks65DcucRj8u/CPTSKn1/ulZubU1dhRJJ0wc ffZMsoTyPkZDW1ROR2Ej7Xi9fwApxQAqdQrB29msdvCPt3ydpIWLsINqzBHwAp+1mPEO16 5feMno9pH1ImXYDGdOR3bUVdpv6/zSI= X-MC-Unique: GF_OskxJP2Og_Or2BwSJ0w-1 From: Eduardo Habkost To: qemu-devel@nongnu.org Subject: [PATCH 5/7] qom: Replace void* parameter with Property* on PropertyInfo.release Date: Wed, 4 Nov 2020 12:25:10 -0500 Message-Id: <20201104172512.2381656-6-ehabkost@redhat.com> In-Reply-To: <20201104172512.2381656-1-ehabkost@redhat.com> References: <20201104172512.2381656-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ehabkost@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=ehabkost@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/03 22:09:52 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Igor Mammedov , Stefan Berger , "Daniel P. Berrange" , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) The release function must interpret the third argument as Property*. Change the signature of PropertyInfo.release to indicate that. Signed-off-by: Eduardo Habkost --- Cc: Stefan Berger Cc: Paolo Bonzini Cc: "Daniel P. Berrang=C3=A9" Cc: Eduardo Habkost Cc: qemu-devel@nongnu.org --- include/qom/field-property.h | 11 ++++++++++- backends/tpm/tpm_util.c | 3 +-- hw/core/qdev-properties-system.c | 6 ++---- qom/field-property.c | 13 +++++++++++-- qom/property-types.c | 3 +-- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/include/qom/field-property.h b/include/qom/field-property.h index 438bb25896..1d3bf9699b 100644 --- a/include/qom/field-property.h +++ b/include/qom/field-property.h @@ -66,6 +66,15 @@ typedef void FieldAccessor(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp); =20 +/** + * typedef FieldRelease: + * @obj: the object instance + * @name: the name of the property + * @prop: Field property definition + */ +typedef void FieldRelease(Object *obj, const char *name, Property *prop); + + /** * struct PropertyInfo: information on a specific QOM property type */ @@ -91,7 +100,7 @@ struct PropertyInfo { * @release: Optional release function, called when the object * is destroyed */ - ObjectPropertyRelease *release; + FieldRelease *release; }; =20 /** diff --git a/backends/tpm/tpm_util.c b/backends/tpm/tpm_util.c index e8837938e5..556e21388c 100644 --- a/backends/tpm/tpm_util.c +++ b/backends/tpm/tpm_util.c @@ -63,9 +63,8 @@ static void set_tpm(Object *obj, Visitor *v, const char *= name, g_free(str); } =20 -static void release_tpm(Object *obj, const char *name, void *opaque) +static void release_tpm(Object *obj, const char *name, Property *prop) { - Property *prop =3D opaque; TPMBackend **be =3D object_field_prop_ptr(obj, prop); =20 if (*be) { diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-sys= tem.c index 4c649cb4b2..2fdd5863bb 100644 --- a/hw/core/qdev-properties-system.c +++ b/hw/core/qdev-properties-system.c @@ -176,10 +176,9 @@ static void set_drive_iothread(Object *obj, Visitor *v= , const char *name, set_drive_helper(obj, v, name, prop, true, errp); } =20 -static void release_drive(Object *obj, const char *name, void *opaque) +static void release_drive(Object *obj, const char *name, Property *prop) { DeviceState *dev =3D DEVICE(obj); - Property *prop =3D opaque; BlockBackend **ptr =3D object_field_prop_ptr(obj, prop); =20 if (*ptr) { @@ -257,9 +256,8 @@ static void set_chr(Object *obj, Visitor *v, const char= *name, g_free(str); } =20 -static void release_chr(Object *obj, const char *name, void *opaque) +static void release_chr(Object *obj, const char *name, Property *prop) { - Property *prop =3D opaque; CharBackend *be =3D object_field_prop_ptr(obj, prop); =20 qemu_chr_fe_deinit(be, false); diff --git a/qom/field-property.c b/qom/field-property.c index 25a818bb69..865d4929a3 100644 --- a/qom/field-property.c +++ b/qom/field-property.c @@ -47,6 +47,15 @@ static ObjectPropertyAccessor *field_prop_setter(const P= ropertyInfo *info) return info->set ? field_prop_set : NULL; } =20 +static void field_prop_release(Object *obj, const char *name, void *opaque) +{ + Property *prop =3D opaque; + if (prop->info->release) { + prop->info->release(obj, name, prop); + } +} + + ObjectProperty * object_property_add_field(Object *obj, const char *name, Property *prop, ObjectPropertyAllowSet allow_set) @@ -59,7 +68,7 @@ object_property_add_field(Object *obj, const char *name, = Property *prop, op =3D object_property_add(obj, name, prop->info->name, field_prop_getter(prop->info), field_prop_setter(prop->info), - prop->info->release, + field_prop_release, prop); =20 object_property_set_description(obj, name, @@ -92,7 +101,7 @@ object_class_property_add_field(ObjectClass *oc, const c= har *name, name, prop->info->name, field_prop_getter(prop->info), field_prop_setter(prop->info), - prop->info->release, + field_prop_release, prop); } if (prop->set_default) { diff --git a/qom/property-types.c b/qom/property-types.c index 82a5932f4a..0182a73e38 100644 --- a/qom/property-types.c +++ b/qom/property-types.c @@ -321,9 +321,8 @@ const PropertyInfo prop_info_int64 =3D { =20 /* --- string --- */ =20 -static void release_string(Object *obj, const char *name, void *opaque) +static void release_string(Object *obj, const char *name, Property *prop) { - Property *prop =3D opaque; g_free(*(char **)object_field_prop_ptr(obj, prop)); } =20 --=20 2.28.0 From nobody Mon Nov 17 14:01:17 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1604510767; cv=none; d=zohomail.com; s=zohoarc; b=oAQtSOHVw1jSPzjLxXqHd594AgHBb6jAqk2mYQ2QVix5/0sfseYbDfkdoAGAgc5FxYE6OsJFvnU69wT6QpEkUD/Z9Be1o1VOpv4Be2/2sTajF5F2DAq8YhKW+YzpNsRweT7yl1NQA9Xr1ejBpfFq+EBPvz6l3Ivxx3aGW25ABz8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604510767; 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=Q5BeNYOZ4RDTFOfuNV6EvBOecZflftp3s5pV01xgFqI=; b=PYPwxZcW5VYcPSBEpGpFEU/tW3RYsadUyA1yhEOUz6+v25CNt63YrpguIcgwfl7HX8abUyuvB2Km1eNz1b0Uu+veNSAstwSbqgpZA7LIIzdE12WdiexRe24972QdouSXa29jvXqutYOrt7xK+g3h29HCwYFzfhJx9XN/4DAhoK4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass 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 1604510767008638.5828692725077; Wed, 4 Nov 2020 09:26:07 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.19441.44649 (Exim 4.92) (envelope-from ) id 1kaMXc-00051B-5T; Wed, 04 Nov 2020 17:25:48 +0000 Received: by outflank-mailman (output) from mailman id 19441.44649; Wed, 04 Nov 2020 17:25:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kaMXc-000513-1m; Wed, 04 Nov 2020 17:25:48 +0000 Received: by outflank-mailman (input) for mailman id 19441; Wed, 04 Nov 2020 17:25:46 +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.92) (envelope-from ) id 1kaMXa-00050W-Fg for xen-devel@lists.xenproject.org; Wed, 04 Nov 2020 17:25:46 +0000 Received: from us-smtp-delivery-124.mimecast.com (unknown [216.205.24.124]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id dff89702-31e5-4c84-b6f6-48a8ba53bbbd; Wed, 04 Nov 2020 17:25:43 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-333-Ue3Ir6wOOOWpdg8TaOCtAA-1; Wed, 04 Nov 2020 12:25:41 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D20F411BD342; Wed, 4 Nov 2020 17:25:38 +0000 (UTC) Received: from localhost (ovpn-114-68.rdu2.redhat.com [10.10.114.68]) by smtp.corp.redhat.com (Postfix) with ESMTP id E97BE65F5E; Wed, 4 Nov 2020 17:25:31 +0000 (UTC) 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.92) (envelope-from ) id 1kaMXa-00050W-Fg for xen-devel@lists.xenproject.org; Wed, 04 Nov 2020 17:25:46 +0000 Received: from us-smtp-delivery-124.mimecast.com (unknown [216.205.24.124]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id dff89702-31e5-4c84-b6f6-48a8ba53bbbd; Wed, 04 Nov 2020 17:25:43 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-333-Ue3Ir6wOOOWpdg8TaOCtAA-1; Wed, 04 Nov 2020 12:25:41 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D20F411BD342; Wed, 4 Nov 2020 17:25:38 +0000 (UTC) Received: from localhost (ovpn-114-68.rdu2.redhat.com [10.10.114.68]) by smtp.corp.redhat.com (Postfix) with ESMTP id E97BE65F5E; Wed, 4 Nov 2020 17:25:31 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: dff89702-31e5-4c84-b6f6-48a8ba53bbbd DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1604510742; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Q5BeNYOZ4RDTFOfuNV6EvBOecZflftp3s5pV01xgFqI=; b=WhaUsOVnDkpsIxNfLQzar1rNZwy/plNMQavYBea5cAJG2vlTjKx1pG37JZzMkM93EenxBM 29d+9a5MsGnorTl3PpoiMluMO0oqIcs+c5YSDv1OV84qKxcdNBhoDObBAZHpNtEFrj5TAc WDzVjOVtrHBpb3J1PtJHYydVdXNNubs= X-MC-Unique: Ue3Ir6wOOOWpdg8TaOCtAA-1 From: Eduardo Habkost To: qemu-devel@nongnu.org Cc: Igor Mammedov , "Daniel P. Berrange" , Paolo Bonzini , Stefan Berger , Stefano Stabellini , Anthony Perard , Paul Durrant , Kevin Wolf , Max Reitz , Cornelia Huck , Thomas Huth , Halil Pasic , Christian Borntraeger , Richard Henderson , David Hildenbrand , Matthew Rosato , Alex Williamson , xen-devel@lists.xenproject.org, qemu-block@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 6/7] qom: Add FIELD_PTR, a type-safe wrapper for object_field_prop_ptr() Date: Wed, 4 Nov 2020 12:25:11 -0500 Message-Id: <20201104172512.2381656-7-ehabkost@redhat.com> In-Reply-To: <20201104172512.2381656-1-ehabkost@redhat.com> References: <20201104172512.2381656-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ehabkost@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Introduce a FIELD_PTR macro that will ensure the size of the area we are accessing has the correct size, and will return a pointer of the correct type. Signed-off-by: Eduardo Habkost Acked-by: Cornelia Huck --- Cc: Stefan Berger Cc: Stefano Stabellini Cc: Anthony Perard Cc: Paul Durrant Cc: Kevin Wolf Cc: Max Reitz Cc: Paolo Bonzini Cc: "Daniel P. Berrang=C3=A9" Cc: Eduardo Habkost Cc: Cornelia Huck Cc: Thomas Huth Cc: Halil Pasic Cc: Christian Borntraeger Cc: Richard Henderson Cc: David Hildenbrand Cc: Matthew Rosato Cc: Alex Williamson Cc: qemu-devel@nongnu.org Cc: xen-devel@lists.xenproject.org Cc: qemu-block@nongnu.org Cc: qemu-s390x@nongnu.org --- include/qom/field-property.h | 21 ++++++++++- backends/tpm/tpm_util.c | 6 ++-- hw/block/xen-block.c | 4 +-- hw/core/qdev-properties-system.c | 50 +++++++++++++------------- hw/s390x/css.c | 4 +-- hw/s390x/s390-pci-bus.c | 4 +-- hw/vfio/pci-quirks.c | 4 +-- qom/field-property.c | 3 +- qom/property-types.c | 60 +++++++++++++++++--------------- 9 files changed, 89 insertions(+), 67 deletions(-) diff --git a/include/qom/field-property.h b/include/qom/field-property.h index 1d3bf9699b..58baaca160 100644 --- a/include/qom/field-property.h +++ b/include/qom/field-property.h @@ -125,6 +125,25 @@ object_class_property_add_field(ObjectClass *oc, const= char *name, Property *prop, ObjectPropertyAllowSet allow_set); =20 -void *object_field_prop_ptr(Object *obj, Property *prop); +/** + * object_field_prop_ptr: Get pointer to property field + * @obj: the object instance + * @prop: field property definition + * @expected_size: expected size of struct field + * + * Don't use this function directly, use the FIELD_PTR() macro instead. + */ +void *object_field_prop_ptr(Object *obj, Property *prop, size_t expected_s= ize); + +/** + * FIELD_PTR: Get pointer to struct field for property + * + * This returns a pointer to type @type, pointing to the struct + * field containing the property value. + * + * @type must match the expected type for the property. + */ +#define FIELD_PTR(obj, prop, type) \ + ((type *)object_field_prop_ptr((obj), (prop), sizeof(type))) =20 #endif diff --git a/backends/tpm/tpm_util.c b/backends/tpm/tpm_util.c index 556e21388c..da80379404 100644 --- a/backends/tpm/tpm_util.c +++ b/backends/tpm/tpm_util.c @@ -35,7 +35,7 @@ static void get_tpm(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - TPMBackend **be =3D object_field_prop_ptr(obj, prop); + TPMBackend **be =3D FIELD_PTR(obj, prop, TPMBackend *); char *p; =20 p =3D g_strdup(*be ? (*be)->id : ""); @@ -46,7 +46,7 @@ static void get_tpm(Object *obj, Visitor *v, const char *= name, static void set_tpm(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - TPMBackend *s, **be =3D object_field_prop_ptr(obj, prop); + TPMBackend *s, **be =3D FIELD_PTR(obj, prop, TPMBackend *); char *str; =20 if (!visit_type_str(v, name, &str, errp)) { @@ -65,7 +65,7 @@ static void set_tpm(Object *obj, Visitor *v, const char *= name, =20 static void release_tpm(Object *obj, const char *name, Property *prop) { - TPMBackend **be =3D object_field_prop_ptr(obj, prop); + TPMBackend **be =3D FIELD_PTR(obj, prop, TPMBackend *); =20 if (*be) { tpm_backend_reset(*be); diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c index c1ee634639..390bf417ab 100644 --- a/hw/block/xen-block.c +++ b/hw/block/xen-block.c @@ -335,7 +335,7 @@ static char *disk_to_vbd_name(unsigned int disk) static void xen_block_get_vdev(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - XenBlockVdev *vdev =3D object_field_prop_ptr(obj, prop); + XenBlockVdev *vdev =3D FIELD_PTR(obj, prop, XenBlockVdev); char *str; =20 switch (vdev->type) { @@ -394,7 +394,7 @@ static int vbd_name_to_disk(const char *name, const cha= r **endp, static void xen_block_set_vdev(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - XenBlockVdev *vdev =3D object_field_prop_ptr(obj, prop); + XenBlockVdev *vdev =3D FIELD_PTR(obj, prop, XenBlockVdev); char *str, *p; const char *end; =20 diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-sys= tem.c index 2fdd5863bb..1ec64514b9 100644 --- a/hw/core/qdev-properties-system.c +++ b/hw/core/qdev-properties-system.c @@ -61,7 +61,7 @@ static bool check_prop_still_unset(Object *obj, const cha= r *name, static void get_drive(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - void **ptr =3D object_field_prop_ptr(obj, prop); + void **ptr =3D FIELD_PTR(obj, prop, void *); const char *value; char *p; =20 @@ -87,7 +87,7 @@ static void set_drive_helper(Object *obj, Visitor *v, con= st char *name, { DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - void **ptr =3D object_field_prop_ptr(obj, prop); + void **ptr =3D FIELD_PTR(obj, prop, void *); char *str; BlockBackend *blk; bool blk_created =3D false; @@ -179,7 +179,7 @@ static void set_drive_iothread(Object *obj, Visitor *v,= const char *name, static void release_drive(Object *obj, const char *name, Property *prop) { DeviceState *dev =3D DEVICE(obj); - BlockBackend **ptr =3D object_field_prop_ptr(obj, prop); + BlockBackend **ptr =3D FIELD_PTR(obj, prop, BlockBackend *); =20 if (*ptr) { AioContext *ctx =3D blk_get_aio_context(*ptr); @@ -212,7 +212,7 @@ const PropertyInfo qdev_prop_drive_iothread =3D { static void get_chr(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - CharBackend *be =3D object_field_prop_ptr(obj, prop); + CharBackend *be =3D FIELD_PTR(obj, prop, CharBackend); char *p; =20 p =3D g_strdup(be->chr && be->chr->label ? be->chr->label : ""); @@ -223,7 +223,7 @@ static void get_chr(Object *obj, Visitor *v, const char= *name, static void set_chr(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - CharBackend *be =3D object_field_prop_ptr(obj, prop); + CharBackend *be =3D FIELD_PTR(obj, prop, CharBackend); Chardev *s; char *str; =20 @@ -258,7 +258,7 @@ static void set_chr(Object *obj, Visitor *v, const char= *name, =20 static void release_chr(Object *obj, const char *name, Property *prop) { - CharBackend *be =3D object_field_prop_ptr(obj, prop); + CharBackend *be =3D FIELD_PTR(obj, prop, CharBackend); =20 qemu_chr_fe_deinit(be, false); } @@ -281,7 +281,7 @@ const PropertyInfo qdev_prop_chr =3D { static void get_mac(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - MACAddr *mac =3D object_field_prop_ptr(obj, prop); + MACAddr *mac =3D FIELD_PTR(obj, prop, MACAddr); char buffer[2 * 6 + 5 + 1]; char *p =3D buffer; =20 @@ -295,7 +295,7 @@ static void get_mac(Object *obj, Visitor *v, const char= *name, static void set_mac(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - MACAddr *mac =3D object_field_prop_ptr(obj, prop); + MACAddr *mac =3D FIELD_PTR(obj, prop, MACAddr); int i, pos; char *str; const char *p; @@ -356,7 +356,7 @@ void qdev_prop_set_macaddr(DeviceState *dev, const char= *name, static void get_netdev(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - NICPeers *peers_ptr =3D object_field_prop_ptr(obj, prop); + NICPeers *peers_ptr =3D FIELD_PTR(obj, prop, NICPeers); char *p =3D g_strdup(peers_ptr->ncs[0] ? peers_ptr->ncs[0]->name : ""); =20 visit_type_str(v, name, &p, errp); @@ -366,7 +366,7 @@ static void get_netdev(Object *obj, Visitor *v, const c= har *name, static void set_netdev(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - NICPeers *peers_ptr =3D object_field_prop_ptr(obj, prop); + NICPeers *peers_ptr =3D FIELD_PTR(obj, prop, NICPeers); NetClientState **ncs =3D peers_ptr->ncs; NetClientState *peers[MAX_QUEUE_NUM]; int queues, err =3D 0, i =3D 0; @@ -427,7 +427,7 @@ const PropertyInfo qdev_prop_netdev =3D { static void get_audiodev(Object *obj, Visitor *v, const char* name, Property *prop, Error **errp) { - QEMUSoundCard *card =3D object_field_prop_ptr(obj, prop); + QEMUSoundCard *card =3D FIELD_PTR(obj, prop, QEMUSoundCard); char *p =3D g_strdup(audio_get_id(card)); =20 visit_type_str(v, name, &p, errp); @@ -437,7 +437,7 @@ static void get_audiodev(Object *obj, Visitor *v, const= char* name, static void set_audiodev(Object *obj, Visitor *v, const char* name, Property *prop, Error **errp) { - QEMUSoundCard *card =3D object_field_prop_ptr(obj, prop); + QEMUSoundCard *card =3D FIELD_PTR(obj, prop, QEMUSoundCard); AudioState *state; int err =3D 0; char *str; @@ -538,7 +538,7 @@ static void set_blocksize(Object *obj, Visitor *v, cons= t char *name, Property *prop, Error **errp) { DeviceState *dev =3D DEVICE(obj); - uint32_t *ptr =3D object_field_prop_ptr(obj, prop); + uint32_t *ptr =3D FIELD_PTR(obj, prop, uint32_t); uint64_t value; Error *local_err =3D NULL; =20 @@ -625,7 +625,7 @@ const PropertyInfo qdev_prop_multifd_compression =3D { static void get_reserved_region(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - ReservedRegion *rr =3D object_field_prop_ptr(obj, prop); + ReservedRegion *rr =3D FIELD_PTR(obj, prop, ReservedRegion); char buffer[64]; char *p =3D buffer; int rc; @@ -640,7 +640,7 @@ static void get_reserved_region(Object *obj, Visitor *v= , const char *name, static void set_reserved_region(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - ReservedRegion *rr =3D object_field_prop_ptr(obj, prop); + ReservedRegion *rr =3D FIELD_PTR(obj, prop, ReservedRegion); Error *local_err =3D NULL; const char *endptr; char *str; @@ -701,7 +701,7 @@ const PropertyInfo qdev_prop_reserved_region =3D { static void set_pci_devfn(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - int32_t value, *ptr =3D object_field_prop_ptr(obj, prop); + int32_t value, *ptr =3D FIELD_PTR(obj, prop, int32_t); unsigned int slot, fn, n; char *str; =20 @@ -739,7 +739,7 @@ invalid: static int print_pci_devfn(Object *obj, Property *prop, char *dest, size_t len) { - int32_t *ptr =3D object_field_prop_ptr(obj, prop); + int32_t *ptr =3D FIELD_PTR(obj, prop, int32_t); =20 if (*ptr =3D=3D -1) { return snprintf(dest, len, ""); @@ -762,7 +762,7 @@ const PropertyInfo qdev_prop_pci_devfn =3D { static void get_pci_host_devaddr(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - PCIHostDeviceAddress *addr =3D object_field_prop_ptr(obj, prop); + PCIHostDeviceAddress *addr =3D FIELD_PTR(obj, prop, PCIHostDeviceAddre= ss); char buffer[] =3D "ffff:ff:ff.f"; char *p =3D buffer; int rc =3D 0; @@ -787,7 +787,7 @@ 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, Property *prop, Error **errp) { - PCIHostDeviceAddress *addr =3D object_field_prop_ptr(obj, prop); + PCIHostDeviceAddress *addr =3D FIELD_PTR(obj, prop, PCIHostDeviceAddre= ss); char *str, *p; const char *e; unsigned long val; @@ -875,7 +875,7 @@ const PropertyInfo qdev_prop_off_auto_pcibar =3D { static void get_prop_pcielinkspeed(Object *obj, Visitor *v, const char *na= me, Property *prop, Error **errp) { - PCIExpLinkSpeed *p =3D object_field_prop_ptr(obj, prop); + PCIExpLinkSpeed *p =3D FIELD_PTR(obj, prop, PCIExpLinkSpeed); int speed; =20 switch (*p) { @@ -902,7 +902,7 @@ static void get_prop_pcielinkspeed(Object *obj, Visitor= *v, const char *name, static void set_prop_pcielinkspeed(Object *obj, Visitor *v, const char *na= me, Property *prop, Error **errp) { - PCIExpLinkSpeed *p =3D object_field_prop_ptr(obj, prop); + PCIExpLinkSpeed *p =3D FIELD_PTR(obj, prop, PCIExpLinkSpeed); int speed; =20 if (!visit_type_enum(v, name, &speed, prop->info->enum_table, @@ -943,7 +943,7 @@ const PropertyInfo qdev_prop_pcie_link_speed =3D { static void get_prop_pcielinkwidth(Object *obj, Visitor *v, const char *na= me, Property *prop, Error **errp) { - PCIExpLinkWidth *p =3D object_field_prop_ptr(obj, prop); + PCIExpLinkWidth *p =3D FIELD_PTR(obj, prop, PCIExpLinkWidth); int width; =20 switch (*p) { @@ -979,7 +979,7 @@ static void get_prop_pcielinkwidth(Object *obj, Visitor= *v, const char *name, static void set_prop_pcielinkwidth(Object *obj, Visitor *v, const char *na= me, Property *prop, Error **errp) { - PCIExpLinkWidth *p =3D object_field_prop_ptr(obj, prop); + PCIExpLinkWidth *p =3D FIELD_PTR(obj, prop, PCIExpLinkWidth); int width; =20 if (!visit_type_enum(v, name, &width, prop->info->enum_table, @@ -1029,7 +1029,7 @@ const PropertyInfo qdev_prop_pcie_link_width =3D { static void get_uuid(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - QemuUUID *uuid =3D object_field_prop_ptr(obj, prop); + QemuUUID *uuid =3D FIELD_PTR(obj, prop, QemuUUID); char buffer[UUID_FMT_LEN + 1]; char *p =3D buffer; =20 @@ -1043,7 +1043,7 @@ static void get_uuid(Object *obj, Visitor *v, const c= har *name, static void set_uuid(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - QemuUUID *uuid =3D object_field_prop_ptr(obj, prop); + QemuUUID *uuid =3D FIELD_PTR(obj, prop, QemuUUID); char *str; =20 if (!visit_type_str(v, name, &str, errp)) { diff --git a/hw/s390x/css.c b/hw/s390x/css.c index 1400d80689..5a38919a05 100644 --- a/hw/s390x/css.c +++ b/hw/s390x/css.c @@ -2343,7 +2343,7 @@ void css_reset(void) static void get_css_devid(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - CssDevId *dev_id =3D object_field_prop_ptr(obj, prop); + CssDevId *dev_id =3D FIELD_PTR(obj, prop, CssDevId); char buffer[] =3D "xx.x.xxxx"; char *p =3D buffer; int r; @@ -2371,7 +2371,7 @@ static void get_css_devid(Object *obj, Visitor *v, co= nst char *name, static void set_css_devid(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - CssDevId *dev_id =3D object_field_prop_ptr(obj, prop); + CssDevId *dev_id =3D FIELD_PTR(obj, prop, CssDevId); char *str; int num, n1, n2; unsigned int cssid, ssid, devid; diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index a29bba17b4..8e38787c99 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -1322,7 +1322,7 @@ static void s390_pci_device_reset(DeviceState *dev) static void s390_pci_get_fid(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint32_t *ptr =3D object_field_prop_ptr(obj, prop); + uint32_t *ptr =3D FIELD_PTR(obj, prop, uint32_t); =20 visit_type_uint32(v, name, ptr, errp); } @@ -1331,7 +1331,7 @@ static void s390_pci_set_fid(Object *obj, Visitor *v,= const char *name, Property *prop, Error **errp) { S390PCIBusDevice *zpci =3D S390_PCI_DEVICE(obj); - uint32_t *ptr =3D object_field_prop_ptr(obj, prop); + uint32_t *ptr =3D FIELD_PTR(obj, prop, uint32_t); =20 if (!visit_type_uint32(v, name, ptr, errp)) { return; diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index 34f5f5dce2..93fb507ec4 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -1488,7 +1488,7 @@ static void get_nv_gpudirect_clique_id(Object *obj, V= isitor *v, const char *name, Property *prop, Error **errp) { - uint8_t *ptr =3D object_field_prop_ptr(obj, prop); + uint8_t *ptr =3D FIELD_PTR(obj, prop, uint8_t); =20 visit_type_uint8(v, name, ptr, errp); } @@ -1497,7 +1497,7 @@ static void set_nv_gpudirect_clique_id(Object *obj, V= isitor *v, const char *name, Property *prop, Error **errp) { - uint8_t value, *ptr =3D object_field_prop_ptr(obj, prop); + uint8_t value, *ptr =3D FIELD_PTR(obj, prop, uint8_t); =20 if (!visit_type_uint8(v, name, &value, errp)) { return; diff --git a/qom/field-property.c b/qom/field-property.c index 865d4929a3..0932a799de 100644 --- a/qom/field-property.c +++ b/qom/field-property.c @@ -5,10 +5,11 @@ #include "qom/field-property.h" #include "qom/field-property-internal.h" =20 -void *object_field_prop_ptr(Object *obj, Property *prop) +void *object_field_prop_ptr(Object *obj, Property *prop, size_t expected_s= ize) { void *ptr =3D obj; ptr +=3D prop->offset; + assert(prop->size =3D=3D expected_size); return ptr; } =20 diff --git a/qom/property-types.c b/qom/property-types.c index 0182a73e38..e01f5a9fef 100644 --- a/qom/property-types.c +++ b/qom/property-types.c @@ -10,7 +10,7 @@ void field_prop_get_enum(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - int *ptr =3D object_field_prop_ptr(obj, prop); + int *ptr =3D FIELD_PTR(obj, prop, int); =20 visit_type_enum(v, name, ptr, prop->info->enum_table, errp); } @@ -18,7 +18,7 @@ void field_prop_get_enum(Object *obj, Visitor *v, const c= har *name, void field_prop_set_enum(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - int *ptr =3D object_field_prop_ptr(obj, prop); + int *ptr =3D FIELD_PTR(obj, prop, int); =20 visit_type_enum(v, name, ptr, prop->info->enum_table, errp); } @@ -47,7 +47,7 @@ static uint32_t qdev_get_prop_mask(Property *prop) =20 static void bit_prop_set(Object *obj, Property *props, bool val) { - uint32_t *p =3D object_field_prop_ptr(obj, props); + uint32_t *p =3D FIELD_PTR(obj, props, uint32_t); uint32_t mask =3D qdev_get_prop_mask(props); if (val) { *p |=3D mask; @@ -59,7 +59,7 @@ static void bit_prop_set(Object *obj, Property *props, bo= ol val) static void prop_get_bit(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint32_t *p =3D object_field_prop_ptr(obj, prop); + uint32_t *p =3D FIELD_PTR(obj, prop, uint32_t); bool value =3D (*p & qdev_get_prop_mask(prop)) !=3D 0; =20 visit_type_bool(v, name, &value, errp); @@ -99,7 +99,7 @@ static uint64_t qdev_get_prop_mask64(Property *prop) =20 static void bit64_prop_set(Object *obj, Property *props, bool val) { - uint64_t *p =3D object_field_prop_ptr(obj, props); + uint64_t *p =3D FIELD_PTR(obj, props, uint64_t); uint64_t mask =3D qdev_get_prop_mask64(props); if (val) { *p |=3D mask; @@ -111,7 +111,7 @@ static void bit64_prop_set(Object *obj, Property *props= , bool val) static void prop_get_bit64(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint64_t *p =3D object_field_prop_ptr(obj, prop); + uint64_t *p =3D FIELD_PTR(obj, prop, uint64_t); bool value =3D (*p & qdev_get_prop_mask64(prop)) !=3D 0; =20 visit_type_bool(v, name, &value, errp); @@ -141,7 +141,7 @@ const PropertyInfo prop_info_bit64 =3D { static void get_bool(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - bool *ptr =3D object_field_prop_ptr(obj, prop); + bool *ptr =3D FIELD_PTR(obj, prop, bool); =20 visit_type_bool(v, name, ptr, errp); } @@ -149,7 +149,7 @@ static void get_bool(Object *obj, Visitor *v, const cha= r *name, static void set_bool(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - bool *ptr =3D object_field_prop_ptr(obj, prop); + bool *ptr =3D FIELD_PTR(obj, prop, bool); =20 visit_type_bool(v, name, ptr, errp); } @@ -166,7 +166,7 @@ const PropertyInfo prop_info_bool =3D { static void get_uint8(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint8_t *ptr =3D object_field_prop_ptr(obj, prop); + uint8_t *ptr =3D FIELD_PTR(obj, prop, uint8_t); =20 visit_type_uint8(v, name, ptr, errp); } @@ -174,7 +174,7 @@ static void get_uint8(Object *obj, Visitor *v, const ch= ar *name, static void set_uint8(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint8_t *ptr =3D object_field_prop_ptr(obj, prop); + uint8_t *ptr =3D FIELD_PTR(obj, prop, uint8_t); =20 visit_type_uint8(v, name, ptr, errp); } @@ -203,7 +203,7 @@ const PropertyInfo prop_info_uint8 =3D { static void get_uint16(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint16_t *ptr =3D object_field_prop_ptr(obj, prop); + uint16_t *ptr =3D FIELD_PTR(obj, prop, uint16_t); =20 visit_type_uint16(v, name, ptr, errp); } @@ -211,7 +211,7 @@ static void get_uint16(Object *obj, Visitor *v, const c= har *name, static void set_uint16(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint16_t *ptr =3D object_field_prop_ptr(obj, prop); + uint16_t *ptr =3D FIELD_PTR(obj, prop, uint16_t); =20 visit_type_uint16(v, name, ptr, errp); } @@ -228,7 +228,7 @@ const PropertyInfo prop_info_uint16 =3D { static void get_uint32(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint32_t *ptr =3D object_field_prop_ptr(obj, prop); + uint32_t *ptr =3D FIELD_PTR(obj, prop, uint32_t); =20 visit_type_uint32(v, name, ptr, errp); } @@ -236,7 +236,7 @@ static void get_uint32(Object *obj, Visitor *v, const c= har *name, static void set_uint32(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint32_t *ptr =3D object_field_prop_ptr(obj, prop); + uint32_t *ptr =3D FIELD_PTR(obj, prop, uint32_t); =20 visit_type_uint32(v, name, ptr, errp); } @@ -244,7 +244,7 @@ static void set_uint32(Object *obj, Visitor *v, const c= har *name, void field_prop_get_int32(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - int32_t *ptr =3D object_field_prop_ptr(obj, prop); + int32_t *ptr =3D FIELD_PTR(obj, prop, int32_t); =20 visit_type_int32(v, name, ptr, errp); } @@ -252,7 +252,7 @@ void field_prop_get_int32(Object *obj, Visitor *v, cons= t char *name, static void set_int32(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - int32_t *ptr =3D object_field_prop_ptr(obj, prop); + int32_t *ptr =3D FIELD_PTR(obj, prop, int32_t); =20 visit_type_int32(v, name, ptr, errp); } @@ -276,7 +276,7 @@ const PropertyInfo prop_info_int32 =3D { static void get_uint64(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint64_t *ptr =3D object_field_prop_ptr(obj, prop); + uint64_t *ptr =3D FIELD_PTR(obj, prop, uint64_t); =20 visit_type_uint64(v, name, ptr, errp); } @@ -284,7 +284,7 @@ static void get_uint64(Object *obj, Visitor *v, const c= har *name, static void set_uint64(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint64_t *ptr =3D object_field_prop_ptr(obj, prop); + uint64_t *ptr =3D FIELD_PTR(obj, prop, uint64_t); =20 visit_type_uint64(v, name, ptr, errp); } @@ -292,7 +292,7 @@ static void set_uint64(Object *obj, Visitor *v, const c= har *name, static void get_int64(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - int64_t *ptr =3D object_field_prop_ptr(obj, prop); + int64_t *ptr =3D FIELD_PTR(obj, prop, int64_t); =20 visit_type_int64(v, name, ptr, errp); } @@ -300,7 +300,7 @@ static void get_int64(Object *obj, Visitor *v, const ch= ar *name, static void set_int64(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - int64_t *ptr =3D object_field_prop_ptr(obj, prop); + int64_t *ptr =3D FIELD_PTR(obj, prop, int64_t); =20 visit_type_int64(v, name, ptr, errp); } @@ -323,13 +323,14 @@ const PropertyInfo prop_info_int64 =3D { =20 static void release_string(Object *obj, const char *name, Property *prop) { - g_free(*(char **)object_field_prop_ptr(obj, prop)); + char **ptr =3D FIELD_PTR(obj, prop, char *); + g_free(*ptr); } =20 static void get_string(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - char **ptr =3D object_field_prop_ptr(obj, prop); + char **ptr =3D FIELD_PTR(obj, prop, char *); =20 if (!*ptr) { char *str =3D (char *)""; @@ -342,7 +343,7 @@ static void get_string(Object *obj, Visitor *v, const c= har *name, static void set_string(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - char **ptr =3D object_field_prop_ptr(obj, prop); + char **ptr =3D FIELD_PTR(obj, prop, char *); char *str; =20 if (!visit_type_str(v, name, &str, errp)) { @@ -375,7 +376,7 @@ const PropertyInfo prop_info_on_off_auto =3D { void field_prop_get_size32(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint32_t *ptr =3D object_field_prop_ptr(obj, prop); + uint32_t *ptr =3D FIELD_PTR(obj, prop, uint32_t); uint64_t value =3D *ptr; =20 visit_type_size(v, name, &value, errp); @@ -384,7 +385,7 @@ void field_prop_get_size32(Object *obj, Visitor *v, con= st char *name, static void set_size32(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint32_t *ptr =3D object_field_prop_ptr(obj, prop); + uint32_t *ptr =3D FIELD_PTR(obj, prop, uint32_t); uint64_t value; =20 if (!visit_type_size(v, name, &value, errp)) { @@ -415,7 +416,7 @@ static void set_prop_arraylen(Object *obj, Visitor *v, = const char *name, Property *prop, Error **errp) { ObjectProperty *op =3D object_property_find_err(obj, name, &error_abor= t); - uint32_t *alenptr =3D object_field_prop_ptr(obj, prop); + uint32_t *alenptr =3D FIELD_PTR(obj, prop, uint32_t); void **arrayptr =3D (void *)obj + prop->arrayoffset; void *eltptr; const char *arrayname; @@ -455,7 +456,8 @@ static void set_prop_arraylen(Object *obj, Visitor *v, = const char *name, */ arrayprop->offset =3D eltptr - (void *)obj; arrayprop->size =3D prop->arrayfieldsize; - assert(object_field_prop_ptr(obj, arrayprop) =3D=3D eltptr); + assert(object_field_prop_ptr(obj, arrayprop, + prop->arrayfieldsize) =3D=3D eltptr); object_property_add_field(obj, propname, arrayprop, op->allow_set); } } @@ -472,7 +474,7 @@ const PropertyInfo prop_info_arraylen =3D { static void get_size(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint64_t *ptr =3D object_field_prop_ptr(obj, prop); + uint64_t *ptr =3D FIELD_PTR(obj, prop, uint64_t); =20 visit_type_size(v, name, ptr, errp); } @@ -480,7 +482,7 @@ static void get_size(Object *obj, Visitor *v, const cha= r *name, static void set_size(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - uint64_t *ptr =3D object_field_prop_ptr(obj, prop); + uint64_t *ptr =3D FIELD_PTR(obj, prop, uint64_t); =20 visit_type_size(v, name, ptr, errp); } --=20 2.28.0 From nobody Mon Nov 17 14:01:17 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1604510837; cv=none; d=zohomail.com; s=zohoarc; b=a898gfyU2dn7dIpxJKVZA6G+MIzw7Na1ydwj/qohpLynzylNtXzPG5HwE6PDRNGRbbCGGcMyarnBVW2CnyBjkb7SnpXYdmlbCES7mdxpgWR1NJC5sdo7gqUzmvQ7O8b1EPA/2MxX6lAM5KXR2Nixz096gd0e/HghDjy14GPFSn0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604510837; 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=kwACAshq5NS9uT54H9fF11qSNq1GFrFnRwSqIb1jpDQ=; b=Jp/aDZmVfSRnOYXjUa2W4HtoiHTyI3jXcniF5LD7Z8234Ylx2R6EI5BRxlj5iLWkHy/Z7ZnitE4JrIwGS+7Z3f2UjOV89aUfnmv28WB2uG2uZUkrNQWEWMUlH2/hZ0/j5EcfjfAH6LVxt/vU6DXGNRvZ+yW9c4GBaN+BCu3urlA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1604510837806977.3663009834492; Wed, 4 Nov 2020 09:27:17 -0800 (PST) Received: from localhost ([::1]:52464 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kaMZ2-0003Lv-IF for importer@patchew.org; Wed, 04 Nov 2020 12:27:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60964) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kaMXe-0001XU-FN for qemu-devel@nongnu.org; Wed, 04 Nov 2020 12:25:50 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:59259) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kaMXc-0008Km-Od for qemu-devel@nongnu.org; Wed, 04 Nov 2020 12:25:50 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-425-FPCIqXdGNmuW79xPauGz0Q-1; Wed, 04 Nov 2020 12:25:46 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4144911BD343; Wed, 4 Nov 2020 17:25:45 +0000 (UTC) Received: from localhost (ovpn-114-68.rdu2.redhat.com [10.10.114.68]) by smtp.corp.redhat.com (Postfix) with ESMTP id D0B8E5DA33; Wed, 4 Nov 2020 17:25:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1604510748; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kwACAshq5NS9uT54H9fF11qSNq1GFrFnRwSqIb1jpDQ=; b=W3/bvtJtb/WNWBN+WopsT6FfJJgpjFOHpsM58J/GqnOuQ3hSfMwY+Y+kCv5nM+UgbNkIBo 8Gos7E/61y9Be9UIx0EguHNseSTbWIpf624ljqU8XtfgdfUjkCaP2NWtXxrvwZfBvm2+0/ dutgqZKRfUmqqGHCZ/yHf7SWJYkuTqo= X-MC-Unique: FPCIqXdGNmuW79xPauGz0Q-1 From: Eduardo Habkost To: qemu-devel@nongnu.org Subject: [PATCH 7/7] sparc: Use FIELD_PTR at nwindows getter/setter Date: Wed, 4 Nov 2020 12:25:12 -0500 Message-Id: <20201104172512.2381656-8-ehabkost@redhat.com> In-Reply-To: <20201104172512.2381656-1-ehabkost@redhat.com> References: <20201104172512.2381656-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ehabkost@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=ehabkost@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/03 00:03:41 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Igor Mammedov , Mark Cave-Ayland , "Daniel P. Berrange" , Artyom Tarasenko , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This makes the nwindows getter and setter more consistent with the other field getters and setters (which work with any struct field). Signed-off-by: Eduardo Habkost Acked-by: Mark Cave-Ayland --- Cc: Mark Cave-Ayland Cc: Artyom Tarasenko Cc: qemu-devel@nongnu.org --- target/sparc/cpu.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c index 3acc99c29c..8bf02a4fe0 100644 --- a/target/sparc/cpu.c +++ b/target/sparc/cpu.c @@ -789,8 +789,8 @@ static void sparc_cpu_initfn(Object *obj) static void sparc_get_nwindows(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { - SPARCCPU *cpu =3D SPARC_CPU(obj); - int64_t value =3D cpu->env.def.nwindows; + uint32_t *ptr =3D FIELD_PTR(obj, prop, uint32_t); + int64_t value =3D *ptr; =20 visit_type_int(v, name, &value, errp); } @@ -798,9 +798,9 @@ static void sparc_get_nwindows(Object *obj, Visitor *v,= const char *name, static void sparc_set_nwindows(Object *obj, Visitor *v, const char *name, Property *prop, Error **errp) { + uint32_t *ptr =3D FIELD_PTR(obj, prop, uint32_t); const int64_t min =3D MIN_NWINDOWS; const int64_t max =3D MAX_NWINDOWS; - SPARCCPU *cpu =3D SPARC_CPU(obj); int64_t value; =20 if (!visit_type_int(v, name, &value, errp)) { @@ -814,7 +814,7 @@ static void sparc_set_nwindows(Object *obj, Visitor *v,= const char *name, value, min, max); return; } - cpu->env.def.nwindows =3D value; + *ptr =3D value; } =20 static PropertyInfo qdev_prop_nwindows =3D { --=20 2.28.0