From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156498911474517.26014356756525; Mon, 5 Aug 2019 00:11:54 -0700 (PDT) Received: from localhost ([::1]:51256 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9t-0004ia-EU for importer@patchew.org; Mon, 05 Aug 2019 03:11:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37203) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX98-00039y-Du for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX97-0001rT-CX for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:06 -0400 Received: from mail-eopbgr790111.outbound.protection.outlook.com ([40.107.79.111]:12064 helo=NAM03-CO1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX97-0001qn-6z for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:05 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:03 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CmeVWoRyrTS5zHlFwdWoQELBFaSnnzVMQlwBrsaptIGe7KfFX5HZyht3PRcwAWfbaiCN8AyJq7kUVPC6CqHWsHx5URPh7ghw0j7keEwV/7RflAvoBGxpQHwc7WaRZH28jumi4DkbM03CN0DXHOOa1wRSTFU6mkgfuQCnwS/cwXEVznSvG5jlry6bZhVyw08Atos0jcjSqYvwKZZULzCmMT/zYlUGFwizFU3RUqsXcXC88AyCmxpwYQk9mNzTYcmzRt0ONs5Gijpa3h+clCZ3TvjtyyKm3lYZA/+br/nseHkcs9s2wPXuXNNE+jhL3PEZaLrW+oaYvutrgIvDavHreA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8xc2Nz4P+llAvkrm00k9L/WRKVfsUvVyJ5b/Y143C/8=; b=B67/nqGX7WyPSwtHrhxmru4jLI1Qm1UOiEMoMfhEGvCqyem+t5Avk7QC6tETmG/svzJckDmPCIscfl4rwejNv8jqzGeqwmcBJKetMIKgseNHINAzO8L7HGzJQuqihhzgBoFlnzwsEMDEBUKhH5bhBarcX2a557ZbaXAY+l1vf+7bBRKTcJNAwAt5qLc8jb0E+TkVGfcPtqGA9DUFSG9R3PrlC3Ydq1Qx244O8zfIrgTIXKhYxa5H4RIb6cJsSf+Owx8N14lZTYyjXNPVxOP+7mTrLSZU+NUwVb/PSYLjwY+59UBb+UXVeY3K2TLVWn7IrtLS7MGJ30KOst8bTz4zGg== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8xc2Nz4P+llAvkrm00k9L/WRKVfsUvVyJ5b/Y143C/8=; b=EbZOk+bFBYowLEtE7xBWy3ue34T+eNWCYJAHGYiUByNE8vsZj301c/hfUZ3QAm662PSmqpz2Ch2ntVGDIcUn3KLU4TKX60Ym6tIy5ZVCKofldABMpbDFhwWP9VIJcuPT82A4MhrEr+KE0sfHWAjKPe3TEgHcVi0f+sf0p7SiTFQ= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 01/17] fuzz: Move initialization from main to qemu_init Thread-Index: AQHVS1zwoeA2FT8J9UWtfdO35keS4Q== Date: Mon, 5 Aug 2019 07:11:02 +0000 Message-ID: <20190805071038.32146-2-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 27c5d9f2-1018-46ef-74c0-08d71974134f x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1728; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: d4j2ZdRKUJbygTAKcMNh9bgPgVQgFKoWY4zPnCJZ7nx1SOHxejQE8AF0KcbHGQlCYv9/1omeXh5Cw2eRdNjKyFwF73hcYrsoxopjRIZX9MMa1NCM9XI5zmNFPVi3hr4HYkOP8elTzkbaQ9pz5eMXUEP7bK8DSTSf/r0nmi7PVKOqnLMi1Oc6xu3s5TabslGO12NCjkOtJvH7+QViXu5/cBDkGgoOowTFgbVlqAI8HiDNniwxvv2wINoN5ZCIKl3obY3Ia51JG+tBnlhMWGMbpAGnxro7hzCiFukB4JkvycvPRElZ0XEBi+3dTwKtv5Ifgk8UMuxkTQNSkvGGC4qYdcY3LB3VH2wUy1e9W76MGG2IBxdXzQkIOAdT/Z8vLhBgimKs0sYlIloXKqUOqqfCzjW6jVZWPKmaWoOq28/pR1w= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 27c5d9f2-1018-46ef-74c0-08d71974134f X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:03.0208 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.79.111 Subject: [Qemu-devel] [RFC PATCH v2 01/17] fuzz: Move initialization from main to qemu_init 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: "pbonzini@redhat.com" , "bsd@redhat.com" , "stefanha@redhat.com" , "Oleinik, Alexander" 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" Using this, we avoid needing a special case to break out of main(), early, when initializing the fuzzer, as we can just call qemu_init. There is still a #define around main(), since it otherwise conflicts with the libfuzzer main(). Signed-off-by: Alexander Oleinik --- include/sysemu/sysemu.h | 5 +++++ vl.c | 25 +++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 984c439ac9..a63d5ccce3 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -184,6 +184,8 @@ QemuOpts *qemu_get_machine_opts(void); =20 bool defaults_enabled(void); =20 +int qemu_init(int argc, char **argv, char **envp); + extern QemuOptsList qemu_legacy_drive_opts; extern QemuOptsList qemu_common_drive_opts; extern QemuOptsList qemu_drive_opts; @@ -197,4 +199,7 @@ extern QemuOptsList qemu_global_opts; extern QemuOptsList qemu_mon_opts; extern QemuOptsList qemu_semihosting_config_opts; =20 +#ifdef CONFIG_FUZZ +int real_main(int argc, char **argv, char **envp); +#endif #endif diff --git a/vl.c b/vl.c index 130a389712..914bb9b2de 100644 --- a/vl.c +++ b/vl.c @@ -130,6 +130,10 @@ int main(int argc, char **argv) #include "sysemu/iothread.h" #include "qemu/guest-random.h" =20 +#ifdef CONFIG_FUZZ +#include "tests/libqtest.h" +#endif + #define MAX_VIRTIO_CONSOLES 1 =20 static const char *data_dir[16]; @@ -2854,7 +2858,7 @@ static void user_register_global_props(void) global_init_func, NULL, NULL); } =20 -int main(int argc, char **argv, char **envp) +int qemu_init(int argc, char **argv, char **envp) { int i; int snapshot, linux_boot; @@ -4453,7 +4457,7 @@ int main(int argc, char **argv, char **envp) if (vmstate_dump_file) { /* dump and exit */ dump_vmstate_json_to_file(vmstate_dump_file); - return 0; + exit(0); } =20 if (incoming) { @@ -4470,6 +4474,23 @@ int main(int argc, char **argv, char **envp) accel_setup_post(current_machine); os_setup_post(); =20 + return 0; +} +#ifdef CONFIG_FUZZ +/* + * Without this, the compiler complains about all of the unused + * cleanup and shutdown() functions + */ +int real_main(int argc, char **argv, char **envp) +#else +int main(int argc, char **argv, char **envp) +#endif +{ + int ret =3D qemu_init(argc, argv, envp); + if (ret !=3D 0) { + return ret; + } + main_loop(); =20 gdbserver_cleanup(); --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989191187450.4283642922986; Mon, 5 Aug 2019 00:13:11 -0700 (PDT) Received: from localhost ([::1]:51284 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXB8-0008Cv-6P for importer@patchew.org; Mon, 05 Aug 2019 03:13:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37210) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX98-00039z-OD for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX97-0001rf-P8 for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:06 -0400 Received: from mail-eopbgr790111.outbound.protection.outlook.com ([40.107.79.111]:12064 helo=NAM03-CO1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX97-0001qn-JK for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:05 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:04 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YSzASds9dqhtay5brkMUvtwBCar1DoIRpLsuDLsrtttBycKluN+9k23w4ztNmDzUCxsjmSNHrgLu2JUpWBwE14UiSTQfYMRLZqP1mQWDVDucRlHemwOQm/OqWGVfj8+zBQp145AYqeVxMevekLKgM6Po3YjceU3A7xi8XQH/W5ShpTlzqdB4liPQ0j9zzAlDdvyQhFJA+UdEmaPH5TGxLlb1Vd5aHAf6gwDdZGiDgfeYQZfZRNBzaG6ii1996POfqqxdDHGlpBb09aMe+VdR2DKB7Zv+DRhQCsMU/Uz3csetnHl+7RIpGAlW+95zN+9vVte4sb1CYw5SDqvsxKGOgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0jvbPeaPw6nCitq2oGc+/NppRWhZpntgqK/cnLaFGPk=; b=VgIQ77xXNDS4TVjesIecCkFGXXTY+VyQc0EoH2Uf7uwmYO8O0Zt770p2P/kzDlO9z13cjoBF3VfXsOO2Do65+mMqMeexllPzFg/AEHd58agDihTD1Kto3rU68PcYaMT/B2/iEdGUOGT90DGLiS7fBDtIAFd6jMOqcnUhn31TBknBSg2WBWfdTdDuFLQzWgwyplVljE9T0evJM+ulnt6WRxL4leEgT7I0Rqo1zIL6j+EHGXImHq9JH/24w3Ca0fjB2PhN9pJuJUQRj3X4cPRVOCZCHhgHktBSeTX3LcQGFgwbvgCjAPEJRjsW6eMHMGm4KZqCicuzRnIbTGPYp0piow== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0jvbPeaPw6nCitq2oGc+/NppRWhZpntgqK/cnLaFGPk=; b=KEEsUv67xKp98obi5dFtDXf7pFaCnIlx8idTKeTjDmXDgA8UDZ+zCn4yDUzF6jOdivGQHYRB0naDtuHprxA4wU9TTC6qknBs9DRPpYbWaMgUd+8isj9iruRd8OmCj5OgzO/awy9w0Vv0RxNaGqI6Opj50NZbNIoze9UdqWRgSAc= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 02/17] fuzz: Add fuzzer configure options Thread-Index: AQHVS1zx9SvDhiU2WUGEo5Mghzc1qg== Date: Mon, 5 Aug 2019 07:11:03 +0000 Message-ID: <20190805071038.32146-3-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 13671440-06fd-41b2-fed0-08d7197413dc x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: sa+jA6MGhD5z5+NNhQMSP0N3Og3I6TRVSKfx+IiywtyQhfpKb0owj15RrBnli4ojez92lyaxlBDd+s09KwpX63yl30pTW/oTMnW2IpFR2j2Sa0P2qBF8lcz7d0/VjNcum1fFbpWanNRp8NPK0nLYIPUIlmlgIafDHQe7Ro+9Dv9R8dr/Or31ro0kktbxjwRgwu8+sbbsT/r01Ohr1JQ76EroFzjx4pfAaBM09hW37sdRbNuOrjBpPDPKxFX6FIX/LkPiSBhfYsZZP8/DvYqjK+sl78xZrhf9daaonrX0lYdJPFbnJ6qE6it/jYKmafAdVNSIuBNK28bVZLjcZkmnayS2voP2fMwhtxECIUJmEaTQtt+TW94qkS7dw6jSmONwtYzYCVTtYrfis2F28kVb3HNG40QKrpHw/cS1cMAPV7o= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 13671440-06fd-41b2-fed0-08d7197413dc X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:03.8554 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.79.111 Subject: [Qemu-devel] [RFC PATCH v2 02/17] fuzz: Add fuzzer configure options 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: "pbonzini@redhat.com" , "bsd@redhat.com" , "stefanha@redhat.com" , "Oleinik, Alexander" 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 adds sanitizer/fuzzer related cflags and adds tests/ to the include path. This include change is needed for qos to build, and is normally located in tests/Makefile.include, but currently the fuzzer builds from the i386-softmmu target, not anything in tests. Signed-off-by: Alexander Oleinik --- configure | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/configure b/configure index 714e7fb6a1..69ef1e7c7d 100755 --- a/configure +++ b/configure @@ -499,6 +499,7 @@ docker=3D"no" debug_mutex=3D"no" libpmem=3D"" default_devices=3D"yes" +fuzzing=3D"no" =20 # cross compilers defaults, can be overridden with --cross-cc-ARCH cross_cc_aarch64=3D"aarch64-linux-gnu-gcc" @@ -1543,6 +1544,8 @@ for opt do ;; --disable-libpmem) libpmem=3Dno ;; + --enable-fuzzing) fuzzing=3Dyes + ;; *) echo "ERROR: unknown option $opt" echo "Try '$0 --help' for more information" @@ -6481,6 +6484,7 @@ echo "docker $docker" echo "libpmem support $libpmem" echo "libudev $libudev" echo "default devices $default_devices" +echo "fuzzing support $fuzzing" =20 if test "$supported_cpu" =3D "no"; then echo @@ -7306,6 +7310,17 @@ fi if test "$sheepdog" =3D "yes" ; then echo "CONFIG_SHEEPDOG=3Dy" >> $config_host_mak fi +if test "$fuzzing" =3D "yes" ; then + QEMU_CFLAGS=3D"$QEMU_CFLAGS -fsanitize=3Dfuzzer,address -fprofile-instr= -generate" + QEMU_CFLAGS=3D"$QEMU_CFLAGS -fprofile-instr-generate -fcoverage-mapping" + QEMU_LDFLAGS=3D"$LDFLAGS -fsanitize=3Dfuzzer,address" + + # Add tests/ to include path, since this is done in tests/Makefile.inclu= de, + # and required for QOS objects to build. This can be removed if/when the + # fuzzer is compiled using rules in tests/Makefile.include + QEMU_INCLUDES=3D"-iquote \$(SRC_PATH)/tests $QEMU_INCLUDES" + echo "CONFIG_FUZZ=3Dy" >> $config_host_mak +fi =20 if test "$tcg_interpreter" =3D "yes"; then QEMU_INCLUDES=3D"-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989119346582.0093225212494; Mon, 5 Aug 2019 00:11:59 -0700 (PDT) Received: from localhost ([::1]:51260 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9w-0004rh-1P for importer@patchew.org; Mon, 05 Aug 2019 03:11:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37222) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX99-0003A0-3g for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX98-0001rp-5T for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:07 -0400 Received: from mail-eopbgr790111.outbound.protection.outlook.com ([40.107.79.111]:12064 helo=NAM03-CO1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX97-0001qn-Vu for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:06 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:04 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=npcgJ/RUhm93i56DHKA9/hUWTzxxgw/iBxk/aYEFc7RD+zX1dkiddddwHKTq0LBchNJNLC/2mcISz94O1zC+RbKU6HwikTKVQse9kDPDWH3RxdXo5zNl4i1h+bxiiSmaXzGEq81cEV24tNCFLYG+q4aPxUyvgegCR+zWKXITGP1yGojQtuuTdo1wTY00xSCXBmuHI4rzKn3IXz5LFdx/N5dwc3OcTqxMEGDv/1toy+rXEyWktRmrCtOI+Rj9KYq23eBdj6dDxpFSARCsJ0Nf4ydQGgXLQ2PLHidluEFBIgb2nhdn5OiwZdqpmifnH6TB/iA0iqg3H+8ruul0xy+wBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Vl80RK++ZNz2YyjVZRBEFHcmfv5GNUSbqDdbZzanf7I=; b=nMMfG+Hp6XrKqtptRgYCVikAz/zKbtLb+DkQAr3DYX/GLgzuKLMVwSmVvT1oiFaYZb3bGjO67VadUzMhBwLNBkflUQYX9L3hf0mquEjduJ4CBJPA6NRin80Ld4v+K80gY7uw/lffsES+qF3JY+2tiOq1f0lcdlMBK1/4wdP2yyhZQnsrx4e8ErcnSxsHgq+iSWjtKi32MX/pUAnujiyxrIQ7FsRKn+v6IyZ3pFzi8a5EzUVsSLymKH37CqZ6DjYOJ4iq7iIO4mjmK2QK5dv2oqLL6rkJBtLkiPN9gvK/X0slxtb0ggXdGSZcGYHHIMzavyLr6MduN0/UCA64utfZSA== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Vl80RK++ZNz2YyjVZRBEFHcmfv5GNUSbqDdbZzanf7I=; b=69mm2tqwovisUS2Hcg0BjuJ3df9/o8fWPD2Z96YA8HfrJFBL/GHEkN0YePAl5QpFsnZHvXI4AlXoRpUuH+g0YU7eVxAvhBAFII8pGAXxLEQiw0qHNPpE60A4KIB+EjZz3d4oS33ng8XTOZS0hJrpFFBrGBgFCisOAPmeHuJP/Sw= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 03/17] fuzz: Keep memory mapped for fork-based fuzzer Thread-Index: AQHVS1zypOwjbwYDXESTHEIrQsuo4A== Date: Mon, 5 Aug 2019 07:11:04 +0000 Message-ID: <20190805071038.32146-4-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 78941f5a-0413-4c3b-805d-08d719741465 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1247; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(4744005)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: lUz8TeIxi1tmbCMd9FnwcKd67YycGYL3ygt7/0zUmmlvQI0r4S8AS43pGVLqxcf3mXV5/so1R9lfz6PKA+uRVGspoLp4WF1kxj/fHyNuDWc6kJ2Kux3mXMgwUXuBB1KpxXSJt4j1JBHnQhRFyD7WQ0wz2sF32QXEF8+8/k2Vh0pXvOxcAUEjKR1+kCJIEyyVx5FinNZYe2rLYYeDXyAVUNVulZSwNFOg4jEFenrxtJSGhMM65QIN4pFeaJQJF3u+Ztn1lilIb2rOqm/71JBZwUdyYjcbzXn+sRbG5J8tUsxaHL0fY5tHGNWw/UJ5WmQCxUz277cyAx6DuhU5h4qYhTEx2FjLPZY9iGvlxtGXX2oeH3qu8yl5g9sZ3sPb/sbYDCSeRvq9Diho0nQ9SV84xJjbwr2+iUIlu/9GCOtpxNs= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 78941f5a-0413-4c3b-805d-08d719741465 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:04.8230 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.79.111 Subject: [Qemu-devel] [RFC PATCH v2 03/17] fuzz: Keep memory mapped for fork-based fuzzer 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: "pbonzini@redhat.com" , "bsd@redhat.com" , Richard Henderson , "stefanha@redhat.com" , "Oleinik, Alexander" 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" Otherwise, the RAM is unmapped from the child-processes, which breaks any fuzz tests relying on DMA. Signed-off-by: Alexander Oleinik Reviewed-by: Stefan Hajnoczi --- exec.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/exec.c b/exec.c index 3e78de3b8f..b3b56db8f0 100644 --- a/exec.c +++ b/exec.c @@ -2317,7 +2317,9 @@ static void ram_block_add(RAMBlock *new_block, Error = **errp, bool shared) qemu_ram_setup_dump(new_block->host, new_block->max_length); qemu_madvise(new_block->host, new_block->max_length, QEMU_MADV_HUG= EPAGE); /* MADV_DONTFORK is also needed by KVM in absence of synchronous M= MU */ +#ifndef CONFIG_FUZZ /* This conflicts with fork-based fuzzing */ qemu_madvise(new_block->host, new_block->max_length, QEMU_MADV_DON= TFORK); +#endif ram_block_notify_add(new_block->host, new_block->max_length); } } --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989297877347.5211945139116; Mon, 5 Aug 2019 00:14:57 -0700 (PDT) Received: from localhost ([::1]:51310 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXCq-000382-Sz for importer@patchew.org; Mon, 05 Aug 2019 03:14:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37241) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9A-0003An-AZ for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX99-0001tz-Ah for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:08 -0400 Received: from mail-eopbgr680091.outbound.protection.outlook.com ([40.107.68.91]:20741 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX99-0001tG-5S for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:07 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:05 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KSGZvBtD7lj3qvR4H6fZ+G7H2FFNySmmd8SlM1RCdaAnlHzVkUqFsyg81CS1pAVKT+aPRKGoRU1Jcvr6+flBpQpOQ00JuVVJ0gzn8i+niu5+Xtj0IkanRt/FSSbbbSf72EmWbDyKcjKoAk+FNXrNBc6LEWcvMbCO7sULQmTKMHF1pSRto/XvsQlIuTqTZ3quo5fbxDCIK7M/8dubgVNxM+Jyv+zk0CS1ydZRbLys2XNmP0WUYJANSxco+mwd9A6v7paqR6L019P1q//JsmX5ZJ1x8IT2DzO9BLs7hps9B1Zbn8jB0q8AjLyuolsp4MBCfZo/VR6vYn1ZKCcLT/0dYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p4GBgiG4EQNZD54QyUC/SjoQBw8MmLGO998mNRRXw9k=; b=FV7/aiYgV+Os+VFvvVpA6Oh6dat5s57ZyGTULwgBauwxIfRb4BDHNuo2/xLt3uB5wjgtMWhPSh+EkQ2BoyGkqx9vi8gsktAC715EqlhauQ5ci1v0XdFE1mvaDLG1cBddfM/C3u41715xL7FFpE5//kgct/hQ8nebJeb2VYVKGUMN5sHcd/c38CNSUkOwbcdd+/QZss2hQG4Mm16wf3Ek6XTFOhl7RgRUX8zO1GNPQFFWjP0DAMEaTRjcnzk+HVQ3Uf9ZF9c4xwl5tAYF0b32FC2Q5B213omb7ZoyRMFycpaT/b+F0Ui5oVQ8105Em3QV1IpDzBqkaMY6tijVz8MFxA== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p4GBgiG4EQNZD54QyUC/SjoQBw8MmLGO998mNRRXw9k=; b=rZxUoepwjXhe157v1S3JSFKP0iWDaRuj5Eb3bLXMuIW5j8Wv4+mA1+jOLSyfxxHHuv4KYpqk2vQa7Ts8CXSWhC+u9zqG2HstDWrnaKU8WbENAPJY0/xd8ULFRY6GpD5Kd06pmC7ZJUBqEJxYuLJRKT7k1B5Xa8VSn3Q/e8an04Q= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 04/17] fuzz: Skip modules that were already initialized Thread-Index: AQHVS1zyeePe8eajFEyVAJES1NtnGg== Date: Mon, 5 Aug 2019 07:11:05 +0000 Message-ID: <20190805071038.32146-5-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fbbc3de2-a617-4aa4-7b24-08d7197414f5 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:246; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(4744005)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: I1a8mD1LCHEWJRQjIEdvVEyX+RCczBhd2fteZpBMD98ybtoDSi8PugYsPpa83lxSstiJZ5Bo6QtvymFsoCRZogUCfverZmu1Wq+8QJz53v3mKtZzdx0VmMY9SqV+8TbQYq0rO+FyWCI+EiXHSFglCxSM8QfYT7Qz30YMXgRxoCHo4VM3Cdu9qG3Nm/n76E+VWGHAaDQFtJOYZ3YZK7D9+9xz4LR17e5l8rnMv87xQxbIk73zp4aiS7F5Y+N+vdhioJg1QgUwL9hb+eSWCSIGUiKLrQMxy6BtG9xGhkWCF47sEEz0ydmT0FmlcQUwM003yoTwkM9BU+XSSBq798EZWZmVKfgijhjpRfdePOZg1tYZ4A/28kbH3P5Sa7aiuBr6GCm6IxafLc9VOcSmLM+UKQSPMEqzlgtvFw7KuilK9rQ= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: fbbc3de2-a617-4aa4-7b24-08d7197414f5 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:05.7686 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.91 Subject: [Qemu-devel] [RFC PATCH v2 04/17] fuzz: Skip modules that were already initialized 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: "pbonzini@redhat.com" , "bsd@redhat.com" , "stefanha@redhat.com" , "Oleinik, Alexander" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alexander Oleinik Reviewed-by: Paolo Bonzini --- util/module.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/util/module.c b/util/module.c index 142db7e911..3d4380fd47 100644 --- a/util/module.c +++ b/util/module.c @@ -30,6 +30,7 @@ typedef struct ModuleEntry typedef QTAILQ_HEAD(, ModuleEntry) ModuleTypeList; =20 static ModuleTypeList init_type_list[MODULE_INIT_MAX]; +static bool modules_init_done[MODULE_INIT_MAX]; =20 static ModuleTypeList dso_init_list; =20 @@ -91,11 +92,17 @@ void module_call_init(module_init_type type) ModuleTypeList *l; ModuleEntry *e; =20 + if (modules_init_done[type]) { + return; + } + l =3D find_type(type); =20 QTAILQ_FOREACH(e, l, node) { e->init(); } + + modules_init_done[type] =3D true; } =20 #ifdef CONFIG_MODULES --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989141162522.7230150615363; Mon, 5 Aug 2019 00:12:21 -0700 (PDT) Received: from localhost ([::1]:51262 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXAK-0006Aw-61 for importer@patchew.org; Mon, 05 Aug 2019 03:12:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37252) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9B-0003CD-0i for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9A-0001uL-0u for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:08 -0400 Received: from mail-eopbgr680112.outbound.protection.outlook.com ([40.107.68.112]:40006 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX99-0001u6-Rz for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:07 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:06 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hRFQhnA58qXacpu7Dt0zgYqL41UZ8CibMBzTRO0aJBGxTc0anqypg7rodbkj9N3iAsKZP28PW818y8dwCmP/yHwCEgpXKBS1Mp5ISBlw49YWEO42mOCUR3IwUE1NXrPCpaKdmuNqHfYUclmtr16rruVCstdMUNjVd9UDwe8fPvXdq2LLJ/7uqmhsQBgscA+OTG8tgyFwv1XjfWyv7Wi0Wc0fK/bCYREYM/LEprzZaqGQyElOIS/lpXY//yuLZeCTZa/s42pUsPayPkfDYTYn1NDmLZ8l2U4635vlt+j+Ap/4PZEWh/weeFU5jdlv6WBluCHVyeaTVyL5NPn5QvXjxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CPo2jorBzNS7JLTYMOgKt5ow8GLuV+SnADTStbJ+6cw=; b=AnEDcWf8JBGgMv/fiFKIiqP0jdw1lcJrfNVV70QtP/NDy6sEJ8e9XQErnrjYk2CJIM70zxAFpx+4b2OdtfofGzzfoHifHskvtg4InrPLLQO3laXYRMJhjfLJ4uAo9Ajiv2ds9Cnx+Wau7MuWYM9xAgCNQpv42nQ+YeNT4Cmqs9kZZrIoBZSLQw6NLAKtrxUax85Ccw80ESB/ioceLvCg5dpRPKq/mtD1jmn7XXFabzF6UEPmDfbZqcJSmBHe6PH0fVE9Sqrl0LaF2O3enoZJwdfFDYvXpifcQT9vVdpDOxF3/ah5q0zcemnod7oAnUsSjEzhyhKmrPgWIbDjAyx/8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CPo2jorBzNS7JLTYMOgKt5ow8GLuV+SnADTStbJ+6cw=; b=fm4f8dFTw09fN877sJBkIo7kl/xEPWC3MnAMpHXG+wO76JaVeUHZCmRfscLfLnbi0ADYXtCdUoWtahkfBag66tATITko6mxTIyX+utNxpJXsIR+0D10Gc88uMmxtyPp6aHE0qBGq5V6fCZi3aVf/qDixlitvVAMjBXbPWuIMdPI= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 05/17] fuzz: Add direct receive function for qtest server Thread-Index: AQHVS1zz7ZEXlCSwSU2E4rI4fNWZTw== Date: Mon, 5 Aug 2019 07:11:06 +0000 Message-ID: <20190805071038.32146-6-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0560ab5d-e7f0-48de-d916-08d719741596 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1775; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: avRfaVlcf6WQYgMyo5e/Fuh0utj/tFDnHjOkHavx1fK5eIIDFvGhtXMJ2aL1NtWP+QD7oi/ZNQ99mzeSaSquogQ/nnx3BY9jbOzXplTYxaAzD9f404ZPxSAQ2CrsB1lsGncjQNn0Xv5KYWSmnzeiQsWAdpGY0Ik/tGQ4HFkkbxmIwNy7FMAfltAO6QSJJzgS/y1kzNXsvy1o4lLxTvzxpbdB4+kZL6nZ9Trso3zExY5R9JFNGEy0gb7kIWQ2BgdPoVKjeinGnKCIt9ZciYhyJx7ERURwW4VsYqjwyYeqWMH9maGKExrAzoPYM49fIBRQQrCNzfrQEtSU6I15/I+IYDJbtY2X4m9nLHrdjFEDM7yW1tVg9bapZiImF2K5/KtZSn5+KdfQ+z8duaLxsOw/phPNu6s+gFjQPOmOrwY3ryM= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 0560ab5d-e7f0-48de-d916-08d719741596 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:06.7961 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.112 Subject: [Qemu-devel] [RFC PATCH v2 05/17] fuzz: Add direct receive function for qtest server 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: Laurent Vivier , Thomas Huth , "Oleinik, Alexander" , "bsd@redhat.com" , "stefanha@redhat.com" , "pbonzini@redhat.com" 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 direct receive function qtest_server_recv is directly invoked by the qtest client, when the server and client exist within the same process. Signed-off-by: Alexander Oleinik --- include/sysemu/qtest.h | 4 ++++ qtest.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/sysemu/qtest.h b/include/sysemu/qtest.h index 5ed09c80b1..a7b7a3081e 100644 --- a/include/sysemu/qtest.h +++ b/include/sysemu/qtest.h @@ -26,4 +26,8 @@ bool qtest_driver(void); =20 void qtest_server_init(const char *qtest_chrdev, const char *qtest_log, Er= ror **errp); =20 +#ifdef CONFIG_FUZZ +void qtest_server_recv(GString *inbuf); /* Client sends commands using thi= s */ +#endif + #endif diff --git a/qtest.c b/qtest.c index c9681dbdf3..427e1e5076 100644 --- a/qtest.c +++ b/qtest.c @@ -31,6 +31,9 @@ #ifdef TARGET_PPC64 #include "hw/ppc/spapr_rtas.h" #endif +#ifdef CONFIG_FUZZ +#include "tests/libqtest.h" +#endif =20 #define MAX_IRQ 256 =20 @@ -231,10 +234,14 @@ static void GCC_FMT_ATTR(1, 2) qtest_log_send(const c= har *fmt, ...) =20 static void do_qtest_send(CharBackend *chr, const char *str, size_t len) { +#ifdef CONFIG_FUZZ + qtest_client_recv(str, len); +#else qemu_chr_fe_write_all(chr, (uint8_t *)str, len); if (qtest_log_fp && qtest_opened) { fprintf(qtest_log_fp, "%s", str); } +#endif } =20 static void qtest_send(CharBackend *chr, const char *str) @@ -760,6 +767,7 @@ void qtest_server_init(const char *qtest_chrdev, const = char *qtest_log, Error ** return; } =20 + assert(!qtest_log_fp); if (qtest_log) { if (strcmp(qtest_log, "none") !=3D 0) { qtest_log_fp =3D fopen(qtest_log, "w+"); @@ -780,3 +788,9 @@ bool qtest_driver(void) { return qtest_chr.chr !=3D NULL; } +#ifdef CONFIG_FUZZ +void qtest_server_recv(GString *inbuf) +{ + qtest_process_inbuf(NULL, inbuf); +} +#endif --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15649892234561020.282016794246; Mon, 5 Aug 2019 00:13:43 -0700 (PDT) Received: from localhost ([::1]:51288 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXBd-00017k-F8 for importer@patchew.org; Mon, 05 Aug 2019 03:13:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37264) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9B-0003Er-UP for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9B-0001uq-0X for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:09 -0400 Received: from mail-eopbgr680128.outbound.protection.outlook.com ([40.107.68.128]:48202 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9A-0001uV-Re for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:08 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:07 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aEn+A8itS6ypyTQO8KD3ytCQxMB2gYc7r5IA4tNnyvCjswhRU5UmsAWdvxcRLRh/ismUQfQsJYia0OrNOSE53PvCprSMZ3mJcrCKSSUVZQa7m7/enCZO078NUE3t049C42Ru/5Z5Zn5ymJKy1p0OiVORs7lR52UcTLP79GJ98nRDKFkh7paiyodDXHOn3DEbZVNI/VEXsZ4GbjNh8fRBhiXCYiCBOoq4+ltlgMwlvCttU2PpVO19Mi8M37dDMAY8pko7cjLoR9GezGVYgPPmKgPY5bRsFHhhQOeFWuOIKQeQQX8/Xy2Qa8ORB+Xb438JzP8Jtrtrkj4pQu/LMmYO7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FJA8k8KZN+CTSP6/8II3yoUXAHUk1/7rTwNy0gYqvBk=; b=EqJiF0eb78m+BNTVniqhw+qPkC7Q+/OOwb0DvvbgxFqoHQ5wykWoBSLAYG2hJsUTU3wyeZpK7ZxtD521aW+0LTW0S4s2rUsTLHtD71X63ycNMb+S+emWMHoqK2yuL7sAjCcfeF0T4KdA3LnIWfZjbVTz2QAh73yItB7q0HFA+GMPuacr4EuRZdd/bHUudu6JQBnYAd05K/SGK95vwNXVw7trqZvoyuIXtsZggGB+Qy8nTosk/fpnp+ofRZnmUbMxBywJEiRjsUqvFssUGtS+mIWHjlBhL43GnTqyXWMHazTvh6EZEXnSibNxO8h2t4pNXbncIASrh9489CrTAxK4Hw== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FJA8k8KZN+CTSP6/8II3yoUXAHUk1/7rTwNy0gYqvBk=; b=mWA6Rg7u83kyUgkrDRzrWYYVq7J/H2G+fEkfEK75Qjpl9mYWZ8+b1MSDssoMqQcxeU7toK2Me3EPlGDXXuLhFlwvBZi1aGSMAyIFTtDe77IlnNWL5SP5sixoHgi975QfFc9LymnB4p4DOL0/wWCPB+fXVzBAN1QKgr6nTHwh2Yg= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 06/17] fuzz: Add FUZZ_TARGET module type Thread-Index: AQHVS1zzWhY9OVnIKUuBi37gLJyZaA== Date: Mon, 5 Aug 2019 07:11:07 +0000 Message-ID: <20190805071038.32146-7-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b200421c-9218-4ea3-40d8-08d719741619 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:229; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(4744005)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(14444005)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: Bz/538wLvw51L7tXnRdLOezmub83+geLjjNAxAW3vWHgEJPNSZxzpSvrk2eGqp192ce9Pxlov0mXIJfSr84gtxqedEge9F7qV57k5+AKXSGoEfBXGSIKD/9DQOKq0A5owQGelhsxdpjTYp7Mrc0bZxTyBSNdL1i2NB4ABURRP/IewTR62NVtX33xpnmdf+jN82dyq0qjhvcWuO4gWNtJmeG2WQM3gnNYbbuU/+/CbOnKEmykNeO+6DMl08FvL4siZ63DAwz0xrv7Rno7wrIgNlvDMuYbYwEVFkU5dehouYkI+HLdyxNAAyxafgCfC/uIEIMawX3FjIElQnZiqBbetnhuGDGX3EC1v3av1g0DHU6VGTBuuI+qfGPpSFUfUuXaa85Q5hR2wnKnes/CBlhbs1j2sq5SZE0eJzIEZLmAEhY= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: b200421c-9218-4ea3-40d8-08d719741619 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:07.6407 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.128 Subject: [Qemu-devel] [RFC PATCH v2 06/17] fuzz: Add FUZZ_TARGET module type 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: "pbonzini@redhat.com" , "bsd@redhat.com" , "stefanha@redhat.com" , "Oleinik, Alexander" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alexander Oleinik Reviewed-by: Stefan Hajnoczi --- include/qemu/module.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/qemu/module.h b/include/qemu/module.h index db3065381d..cb37ef647e 100644 --- a/include/qemu/module.h +++ b/include/qemu/module.h @@ -46,6 +46,7 @@ typedef enum { MODULE_INIT_TRACE, MODULE_INIT_XEN_BACKEND, MODULE_INIT_LIBQOS, + MODULE_INIT_FUZZ_TARGET, MODULE_INIT_MAX } module_init_type; =20 @@ -56,7 +57,8 @@ typedef enum { #define xen_backend_init(function) module_init(function, \ MODULE_INIT_XEN_BACKEND) #define libqos_init(function) module_init(function, MODULE_INIT_LIBQOS) - +#define fuzz_target_init(function) module_init(function, \ + MODULE_INIT_FUZZ_TARGET) #define block_module_load_one(lib) module_load_one("block-", lib) #define ui_module_load_one(lib) module_load_one("ui-", lib) #define audio_module_load_one(lib) module_load_one("audio-", lib) --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989190562758.2086405071936; Mon, 5 Aug 2019 00:13:10 -0700 (PDT) Received: from localhost ([::1]:51282 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXB7-0008B9-KV for importer@patchew.org; Mon, 05 Aug 2019 03:13:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37286) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9D-0003Gy-1f for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9B-0001vJ-Q7 for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:10 -0400 Received: from mail-eopbgr680100.outbound.protection.outlook.com ([40.107.68.100]:57008 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9B-0001v1-KX for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:09 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:08 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gSDfuTi2n5QaEz8XMFtpFnY8eBTPdjJwRdm+BN6zFUQX9bM5v30Rbq72qhPZxuL3ntL4xLip3Za9SzUXAErbBP++u9OqNz6Ene/yj4C1WxD0F/19DXZ5CQ9dFYvcAbTJgA3rRzGsOIhu+nP3iguxEaFbHuOg1A/xiEm1STvuWYO7TGuxPb298VY2y0mASf1pk4fjcBPdrfk00nk+1mK8ddxeu+cyageYVDNMpzznDzrqFL+we8diGM8yTuotkcUt86CkZMz6/CF6MWESvuqycDE82neeVbjv6EIQjCPqcpW6m/H5UdP8gATJ3v7yuof748MZhNvPSvr41wmTYSwGCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EU7gs5QffdX7d5MJ7y1usFyd3t46hrol6CsTtt9cYoI=; b=k6AwHLj6hxxaNCeD5NPcELVamuzeJxYQGMJ6PRn8Ld77FMaOKAXvUQJnYBRFpvtE6eADR3rso6opfd1f9SpsPoMrznlLpQH4xoOcjkGWJw/W2MusDUIztpO/zgUiUOi+NV4Rih+e2vpU76KXs/fOVe5WxNjoNMmh/nuT45/ExObQ+BMma+i9uEp0V/l2RSxolvdoypT3XCpriOtIgvjVPHXMTg+TD+6phh+NbXVnJXITkqtQpvj/pkwaU7VplzVU7TXhPvFWGRyXWwlIReZwHyudYUC56uyFfq2rXtEkDTNjMZVOF6n37hjHY4XOfNpnUeHpcPrIHSzNmWuQvB25kw== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EU7gs5QffdX7d5MJ7y1usFyd3t46hrol6CsTtt9cYoI=; b=Vp5u/Oh2Ys5r8IVymozxhfoiLBRfS4YzMRzAdVTL9ES5JMrjjvXyU11zCvY1wZVhp1Jv+MD9Ajm9Me61u1fNyRMaRun5FNZuZIyMae4KP4IFs4RXOSO7W3aCXMkzObU0s/Zf5vOl4TTWrG08duGqHwOqwwzaihHnSo+5FyV+NjE= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 07/17] fuzz: Add ramfile qemu-file type Thread-Index: AQHVS1z0M6I8kPBbMEK/bIzQlgUatg== Date: Mon, 5 Aug 2019 07:11:08 +0000 Message-ID: <20190805071038.32146-8-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f9c87969-e265-4891-bda6-08d7197416ac x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:741; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(14444005)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: iwMkTOxEWy/ZADiVja8WIsf1JneZ6pPQkrVNTAh7vG9Y2Z6D8Ix+WTuccmVc595F6EP77BgClDGYrbjwXCQ7cs/+BS0dPegm64MDIYbAxm5Gm9ipXULb0r+lqVa/9M2WWAhr+f6w2oScwqftOPuArHbmTziQN03HHz1YKLUpR7QcGSkkvTLpTWadKoUlw6U4VBLc73ypJI4rlKDsZ4ccI90NaDezq6RLo8pPqTi+jD6lFSidx0MLRrizqI/bR8Qb8P6ia6vnn+/L5j0VYdsMzgV6wxLC4f7EbKVZlZG3Z5+8LbwYpCHwT0Lz40LMYvM/kwb1tFPYRsaoVptNpuNkZlzYAPTYbB19bpy3zBtXatWxiHaZl5YB8r4zcMeC7VvqD2ORYhEbW8rtxtGhlJHIIIazyf4uDnMesukTLNu/3q8= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: f9c87969-e265-4891-bda6-08d7197416ac X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:08.5513 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.100 Subject: [Qemu-devel] [RFC PATCH v2 07/17] fuzz: Add ramfile qemu-file type 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: Juan Quintela , "Dr. David Alan Gilbert" , "Oleinik, Alexander" , "bsd@redhat.com" , "stefanha@redhat.com" , "pbonzini@redhat.com" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alexander Oleinik --- migration/qemu-file.c | 84 +++++++++++++++++++++++++++++++++++++++++++ migration/qemu-file.h | 11 ++++++ 2 files changed, 95 insertions(+) diff --git a/migration/qemu-file.c b/migration/qemu-file.c index 0431585502..453e2897d5 100644 --- a/migration/qemu-file.c +++ b/migration/qemu-file.c @@ -786,3 +786,87 @@ void qemu_file_set_blocking(QEMUFile *f, bool block) f->ops->set_blocking(f->opaque, block); } } + +#ifdef CONFIG_FUZZ +#define INCREMENT 10240 +static ssize_t ram_writev_buffer(void *opaque, struct iovec *iov, int iovc= nt, + int64_t pos) +{ + ram_disk *rd =3D (ram_disk *)opaque; + gsize newsize; + ssize_t total_size =3D 0; + int i; + if (!rd->base) { + rd->base =3D g_malloc(INCREMENT); + rd->len =3D INCREMENT; + } + for (i =3D 0; i < iovcnt; i++) { + if (pos + iov[i].iov_len >=3D rd->len) { + newsize =3D ((pos + iov[i].iov_len) / INCREMENT + 1) * INCREME= NT; + rd->base =3D g_realloc(rd->base, newsize); + rd->len =3D newsize; + } + memcpy(rd->base + pos, iov[i].iov_base, iov[i].iov_len); + pos +=3D iov[i].iov_len; + total_size +=3D iov[i].iov_len; + } + return total_size; +} + +static ssize_t ram_get_buffer(void *opaque, uint8_t *buf, int64_t pos, + size_t size) +{ + ram_disk *rd =3D (ram_disk *)opaque; + if (pos + size > rd->len) { + if (rd->len - pos >=3D 0) { + memcpy(buf, rd->base + pos, rd->len - pos); + size =3D rd->len - pos; + } + } else { + memcpy(buf, rd->base + pos, size); + } + return size; +} + +static int ram_fclose(void *opaque) +{ + return 0; +} + +static const QEMUFileOps ram_read_ops =3D { + .get_buffer =3D ram_get_buffer, + .close =3D ram_fclose +}; + +static const QEMUFileOps ram_write_ops =3D { + .writev_buffer =3D ram_writev_buffer, + .close =3D ram_fclose +}; + +QEMUFile *qemu_fopen_ram(ram_disk **return_rd) +{ + ram_disk *rd =3D g_new0(ram_disk, 1); + *return_rd =3D rd; + return qemu_fopen_ops(rd, &ram_write_ops); +} + +QEMUFile *qemu_fopen_ro_ram(ram_disk* rd) +{ + return qemu_fopen_ops(rd, &ram_read_ops); +} + +void qemu_freopen_ro_ram(QEMUFile *f) +{ + void *rd =3D f->opaque; + f->bytes_xfer =3D 0; + f->xfer_limit =3D 0; + f->last_error =3D 0; + f->iovcnt =3D 0; + f->buf_index =3D 0; + f->buf_size =3D 0; + f->pos =3D 0; + f->ops =3D &ram_read_ops; + f->opaque =3D rd; + return; +} +#endif diff --git a/migration/qemu-file.h b/migration/qemu-file.h index 13baf896bd..7048674f1b 100644 --- a/migration/qemu-file.h +++ b/migration/qemu-file.h @@ -177,4 +177,15 @@ size_t ram_control_save_page(QEMUFile *f, ram_addr_t b= lock_offset, =20 void qemu_put_counted_string(QEMUFile *f, const char *name); =20 +#ifdef CONFIG_FUZZ +typedef struct ram_disk { + void *base; + gsize len; +} ram_disk; + +QEMUFile *qemu_fopen_ram(ram_disk **rd); +QEMUFile *qemu_fopen_ro_ram(ram_disk* rd); +void qemu_freopen_ro_ram(QEMUFile *f); +#endif + #endif --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156498929737662.84897513463875; Mon, 5 Aug 2019 00:14:57 -0700 (PDT) Received: from localhost ([::1]:51308 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXCq-00035t-CN for importer@patchew.org; Mon, 05 Aug 2019 03:14:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37300) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9E-0003Ki-5y for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9D-0001w0-2S for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:12 -0400 Received: from mail-eopbgr680122.outbound.protection.outlook.com ([40.107.68.122]:17806 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9C-0001vS-J2 for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:11 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:09 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IWW6OGNPIO0+NKVS51lzAbwgSc77I/lxegdFJvv6/Y3Oj1B0iyqMonWkoTK42NMH6k4Ef/7z/eZ/2/IKCz/layOtbgnAP3fUAEt9CUCzDBh/ejhZwnWbcm34BttB+d1/pJ0uIQE7Tx5f6MZDOohxlvWjiRKMpA3s3r1PzEj7SxFafZhj0t1j/ZDtt15koXYgOyv5ZvVYP090h/07hv37IFMxhu39hBILDSkjkabTSpapzQSDu/yFkdQAadDpA0vxwGUW6Hz3VUpAsyfNYNOA+9q3soSJeCkbP4b9Nbtj75JMG9f2bvxEec7BJ4B87OXi+rnNdr8p6NMFXbOYCYi5xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GsVw/QRkgEOUa3dsfzqFSCkjGmdskWC6z6uOWWu7Mxo=; b=Qb8Nx7FW3EHgwWDNjMg18abl+zAnV6cdRU69knf62S22WubHWSCm0C/qT4OUFBdZWSwENCieaqzb1K6BLrMt47JIPKEwGCAB5Pe+Z2CQIlvPuAYpEYzhp5vFjm77s2tW3+3mcc2i2hNW7SwuRInyYvC5IyTSnjhmUYiOqiJWS5a5aY0SSdjcAMrD1ANK3kehthbeYqr4WRb+kzOFY+XRNsb5jFQ6D+v/Zby568ptzuK2VfuHSWTSgUwn7lNxfzX7dYU/Mkm8hbpfu4Bl+Ssz1aAUIjLtTtq+xUZVErz6OGLs03PiL571m3JxDHXV29yAMoEMXGz7c/7mDafCV+5VlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GsVw/QRkgEOUa3dsfzqFSCkjGmdskWC6z6uOWWu7Mxo=; b=fh9mTznRqZywdCTcB+WB3Nwj7m+11cQ+afxqsFpqPMkN5qY9gab0XsOtoeLVTXXVrGQnqPbgieC8fzqTcTutgziazyZh0xV0DSuI1Jg8kh6vGiNk7jtTp6hgLV90cjDOGpOvFLePSXvw7TjoPCtZrw/IIMtsokUv6DN+gtgMAV8= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 08/17] fuzz: Export the qemu_savevm_live_state function Thread-Index: AQHVS1z0nVUDC3krhEOKfy50C1cofA== Date: Mon, 5 Aug 2019 07:11:09 +0000 Message-ID: <20190805071038.32146-9-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fe317ad5-731b-43b9-ce27-08d71974173b x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5516; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: TMnNaRDM76Ho5TlB3xHCSEWpaHg/qEU/s5Nyz8MiBCohSpi9G+TfN1/67Ru25TRYuRk52deMm9EmYnxTtLtI5qjEbgiPBXvD95k2AdW2jluGrHiwiMj4ix6L+1O6Mq+65j6EmnXDAvKwEam0Wjl7asPxfapCNpb0Qj2OgKssPuoDfxConO3vyw4c6sTfHVVIkFcJ01L2Rr3zK5lVhzkg87Lu7s8OqbPYd/TDziRdkVrlWjQjfnONPme85hBf1/bVBquDt/F/N80JF1RONbZt3HmFzyrDQbApak6OUgHUCLCt3m5oGirZ6zWSXuY0H8+9ZcRSvcGRzPKeIGr4O44eOHMhTwoFbkcZeVZ+dJSatt5k2ivZA2Iut76VYwFYbXobj5gR+7ZsRD1tnZd56hFS35YvM/KWDm4Dagkrwt+gFFg= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: fe317ad5-731b-43b9-ce27-08d71974173b X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:09.5599 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.122 Subject: [Qemu-devel] [RFC PATCH v2 08/17] fuzz: Export the qemu_savevm_live_state function 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: Juan Quintela , "Dr. David Alan Gilbert" , "Oleinik, Alexander" , "bsd@redhat.com" , "stefanha@redhat.com" , "pbonzini@redhat.com" 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" Skip the header when saving device state, as the header isn't handled by qemu_load_device_state Signed-off-by: Alexander Oleinik --- migration/savevm.c | 9 +++++++-- migration/savevm.h | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 79ed44d475..5eac36e6ca 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1405,7 +1405,7 @@ void qemu_savevm_state_cleanup(void) } } =20 -static int qemu_savevm_state(QEMUFile *f, Error **errp) +int qemu_savevm_state(QEMUFile *f, Error **errp) { int ret; MigrationState *ms =3D migrate_get_current(); @@ -1471,11 +1471,16 @@ void qemu_savevm_live_state(QEMUFile *f) int qemu_save_device_state(QEMUFile *f) { SaveStateEntry *se; - + /* + * qemu_load_device_state doesn't load the header. Either skip writing= the + * header or seek forward in the file, prior to loading device state + */ +#ifndef CONFIG_FUZZ if (!migration_in_colo_state()) { qemu_put_be32(f, QEMU_VM_FILE_MAGIC); qemu_put_be32(f, QEMU_VM_FILE_VERSION); } +#endif cpu_synchronize_all_states(); =20 QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { diff --git a/migration/savevm.h b/migration/savevm.h index 51a4b9caa8..5405215cb4 100644 --- a/migration/savevm.h +++ b/migration/savevm.h @@ -64,4 +64,6 @@ void qemu_loadvm_state_cleanup(void); int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); int qemu_load_device_state(QEMUFile *f); =20 +int qemu_savevm_state(QEMUFile *f, Error **errp); + #endif --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989193383692.1778961135584; Mon, 5 Aug 2019 00:13:13 -0700 (PDT) Received: from localhost ([::1]:51286 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXBA-0008Ny-FD for importer@patchew.org; Mon, 05 Aug 2019 03:13:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37311) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9F-0003Nm-0P for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9D-0001yI-Tp for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:12 -0400 Received: from mail-eopbgr680090.outbound.protection.outlook.com ([40.107.68.90]:17375 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9D-0001wB-OY for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:11 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:10 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fo82gVoMr5vKmmFqeSO5C1Veo/ssZOgGw82XMuV64hse3H5fy9t+PCVmIa2bcPRpCMJ2rYjSztblZL7ZJFk0r2F7TitpGlBCpAgzFigUDBMnLXMcSSEiUA2vUMpTj2x0YUTsyT1PafJ+E/qeNJAKE1EG2rK2cLjnbAP9IuhIvCnmn63S+HqLN3bTy6gHaHsIPqBdPmZT8CEbZBXAPNBNjLheERcto/LDQ3zSunyELcuSN2HArNsuzPYW/IlD1aqSiJW9TVidxHzSHinkpBqgUQNBm9uEqsTA8YwCAOnA//XR76wbuIAzI/ZKz26FgA0v3SM/NhwyOZKER8gdT0gvWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eLqZ7N6FndAlHxi1BeM4RrIT+RxS0dmwioPglks4org=; b=LB4KuvJEWcnAA24AJqyo5nTTRA7RIknUbuevgCTQcCIzUaya81VKYWJH5SYtnR3L9Lci4z+fKaGWS2T7TfFYt83Wmw75jVAiQ2bnwXcVfnrY26ff4rLNsVs94EuxjayEXgg+TXedxw3xf4JQ/z9EhLH3n4Exu9guSFfsMKpj0dBaOmqRFMX2A2HO/4dk2pxdh5PgkYe46/4LbjkaJwqsc4LdN/LLnW224Dono2fZsHkPxtTfz15qOyJLmax1br6tE3Nda0IruCOF6OYxn9HXrqbXtX2BKvMV1m/XTCKD/RqZk6eOraC6iVJYhNSHJeaTeJUKTLGu0YiAg/ddWsQ5bw== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eLqZ7N6FndAlHxi1BeM4RrIT+RxS0dmwioPglks4org=; b=5CHIpZ2ELR6WpxChPGUKHBXZ+vgsIEX0AmJR52sjUgLIZT4NTX6hP5SoIhXWYqj9VT/V6Jn4Y34HkdtbMQnbC4VpH2zemfpW9aDnn560YUi0S7hJULhp7ZHjk1z8+R/pdnbfDSY7LSyzwjfu1H9ILtcckJuh6XycTTEOznkI+6Q= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 09/17] fuzz: hardcode needed objects into i386 target Thread-Index: AQHVS1z12cNsUlJ23EmoX/Q4K+syRQ== Date: Mon, 5 Aug 2019 07:11:10 +0000 Message-ID: <20190805071038.32146-10-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 74086123-f4cf-46fd-990f-08d7197417cf x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3044; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(14444005)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: QJUdU8idhycazRExhlleSYzNoZE+PCUGnwEOmTBAQ/z6ChB4r0ccxZFw2wdQYgyRimkz+3H9IAZg0joWBwKcIuZJxEgo59ev8HoXtvnFlWo3VB534xsFxXlvwnSpTd2k0UlY/xuPe7cgjmNhd6VZWJcgWk/wJ5odldISQcDg8hoi4v65/f8UthDS1QMMNSXwr4YQ0NJQGBw68DeKlxB0GO6jAscUO8nGNISYLf3dQUQ5tkX7V+tuCk/SrG+7NZF2VmV7tmJ2SGwqJkeQuGGEbjy83nXDiALdifFn5yRyrba7ro4k4zxXB4pP5RqIt8D2/I2cCP0qQB1S6Aj8XLVVw3zfeGigoVyqhBI/U6qktbW8MQvJSVOYp7vQl1wXWD3FpwN5L8xyZKkPuWEgxcR1wuUIdWaTlbt9AkAOsQGuJV8= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 74086123-f4cf-46fd-990f-08d7197417cf X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:10.5145 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.90 Subject: [Qemu-devel] [RFC PATCH v2 09/17] fuzz: hardcode needed objects into i386 target 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: Eduardo Habkost , "Oleinik, Alexander" , "bsd@redhat.com" , "stefanha@redhat.com" , "pbonzini@redhat.com" , Richard Henderson 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" Temporary solution until there is a better build solution for fuzzers in tests/Makefile.include Signed-off-by: Alexander Oleinik --- target/i386/Makefile.objs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/target/i386/Makefile.objs b/target/i386/Makefile.objs index 48e0c28434..1b8976c0a6 100644 --- a/target/i386/Makefile.objs +++ b/target/i386/Makefile.objs @@ -18,5 +18,25 @@ endif obj-$(CONFIG_HVF) +=3D hvf/ obj-$(CONFIG_WHPX) +=3D whpx-all.o endif + +# Need to link against target, qtest and qos.. Just list everything here, = until +# I find a better way to integrate into the build system +ifeq ($(CONFIG_FUZZ),y) +obj-$(CONFIG_FUZZ) +=3D ../../accel/fuzz.o ../../tests/libqos/qos_external= .o +obj-$(CONFIG_FUZZ) +=3D ../../tests/fuzz/fuzz.o ../../tests/fuzz/fuzzer_ho= oks.o +obj-$(CONFIG_FUZZ) +=3D ../../tests/fuzz/virtio-net-fuzz.o +obj-$(CONFIG_FUZZ) +=3D ../../tests/fuzz/snapshotting.o +obj-$(CONFIG_FUZZ) +=3D ../../tests/fuzz/qtest_fuzz.o +obj-$(CONFIG_FUZZ) +=3D ../../tests/libqtest.o +obj-$(CONFIG_FUZZ) +=3D ../../tests/libqos/qgraph.o ../../tests/libqos/lib= qos.o +obj-$(CONFIG_FUZZ) +=3D ../../tests/fuzz/qos_fuzz.o ../../tests/fuzz/qos_h= elpers.o +obj-$(CONFIG_FUZZ) +=3D ../../tests/libqos/malloc.o ../../tests/libqos/pc= i-pc.o \ + ../../tests/libqos/virtio-pci.o ../../tests/libqos/malloc-pc.o \ + ../../tests/libqos/libqos-pc.o ../../tests/libqos/fw_cfg.o \ + ../../tests/libqos/e1000e.o ../../tests/libqos/pci.o \ + ../../tests/libqos/pci-pc.o ../../tests/libqos/virtio.o \ + ../../tests/libqos/virtio-net.o ../../tests/libqos/x86_64_pc-machine.o +endif + obj-$(CONFIG_SEV) +=3D sev.o obj-$(call lnot,$(CONFIG_SEV)) +=3D sev-stub.o --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156498934532962.05465458420997; Mon, 5 Aug 2019 00:15:45 -0700 (PDT) Received: from localhost ([::1]:51320 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXDc-0004Wx-Bp for importer@patchew.org; Mon, 05 Aug 2019 03:15:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37323) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9F-0003QG-Rh for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9E-000219-Nj for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:13 -0400 Received: from mail-eopbgr680135.outbound.protection.outlook.com ([40.107.68.135]:31792 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9E-0001z9-If for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:12 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:11 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kaECqEmKZlvsrH9xNjTaLSlZSL8dhPY5DgorD92ng0Ku+YI00x87U9HV/gaza6/XxI9PHK3U/aGjqWAYnHPs7ISKKzVOOSHd6+N1t0WdEJ/4jqxCdu+LDEblsTsXOTRXhSKqvvv3mG3HSfUt0uE0Irvgoi9eTNLowOXltTsS0DVXV9SNpwQZUiQjRzSYdYgiQPzK8SoyIyG1IkKZiaEt+/1dTIsZOdVS1BL9b6dUBkSgen4Ojo/HM2i1hCLnJVsu5WyTHIOE/gBRVFgMDMOgUJjsFOm9Mzgb4A1h5yzVvfV5EW1FInKJPTGgM9JDkP42ylcNX/cVScuOV1WzJ+soMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V7jLKLHckXmQgYF6EQNRxVAS8lfkJd9vH2NzKIr35sk=; b=IWQmrOnJkdqseax44xucwxiczq6qWxZJZSfnSeHyRyAeUTd0gtX+F0jUXqWCX2dg9+8k5Oe3zem4dfIgsU92/rnWcq+1b4KC4H+1fOLIaqo1XdywGm9nNNWO4c3DcC+/GmftkSjB+a6eeLhfrP7Ptcdr2R/yp2zBr9cPHaBK2UqiGNtC9OR37NDSRI4jftD+H7IpxCRX8JP1wH0326k1Of7+qPa01HTgrph3DtYsDjvJRjPrKV5f2O7AYOJ16OEWp1sUUL+ESy+1H9mre6dA4dtM+mC97OSEvyxOunCt1cAETmUkLPPlo882cRY8b8kizQhLTvPagHRv0Yxlv+r6gA== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V7jLKLHckXmQgYF6EQNRxVAS8lfkJd9vH2NzKIr35sk=; b=M6gcTPfqi5U9EaoeF8Qt9X6hZWEz+0HtUNzzVexSFjrAAgnFYVhpMKjEhjiqMlLioZVtuDLO/mHT1EtbeIYpy6es3gEn0gK8e3hVj9AA7A25pExth3NKuMTZ+4YgMCqXE4OkdCc8dY/Uht0sstRPbbSl/ia5lkqJ1bjum3mk7mw= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 10/17] fuzz: qtest client directly interacts with server Thread-Index: AQHVS1z26M08P07mFUi4Z4GHP3ay8A== Date: Mon, 5 Aug 2019 07:11:11 +0000 Message-ID: <20190805071038.32146-11-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c251b0f3-e476-4c82-9330-08d719741871 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:160; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: OHTwzZ8dzsbq5jonIOlpXUPUw0tq70NBHQF9fso2qx3Y+/ozXs/ltGNkgEOcC08iOCv/WJXrbqlsygTtSp1+i+REd9ngvZwRQ3gnG5beg6+SjifH84qUNdGu+u3PXitTWU3VnUp5c/lvvMHY+2fmXqQXus17zV5qpR0Cf4bxxg0EwpzpOIvzBk5T/W6XFAd7j/1VDI89bOiW4A2AlnjZdrFjfepKQ6y8dm4RUl92M2nVnAVB0HIgXHCgwPxPS//VhLCdi/Q9E0rnbzNsEbMmn8uVeuJT50VVrK6O9Xu+9x2P1jP13ZeIWc23bMCn3Vnbx9SkO8YTs5ULuWB5LGgdLx+ibu3Vyybc9dgLl5r3LMYgoG+n/5yjNSifBCLe3jCY3UNky/v5qVaESAqWBBOIu2KVGnw2vE8XXPU2m6c43FU= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: c251b0f3-e476-4c82-9330-08d719741871 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:11.5520 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.135 Subject: [Qemu-devel] [RFC PATCH v2 10/17] fuzz: qtest client directly interacts with server 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: Laurent Vivier , Thomas Huth , "Oleinik, Alexander" , "bsd@redhat.com" , "stefanha@redhat.com" , "pbonzini@redhat.com" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alexander Oleinik --- tests/libqtest.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++-- tests/libqtest.h | 6 +++++ 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/tests/libqtest.c b/tests/libqtest.c index 3c5c3f49d8..a9c1dc4fb6 100644 --- a/tests/libqtest.c +++ b/tests/libqtest.c @@ -30,12 +30,18 @@ #include "qapi/qmp/qjson.h" #include "qapi/qmp/qlist.h" #include "qapi/qmp/qstring.h" +#ifdef CONFIG_FUZZ +#include "sysemu/qtest.h" +#endif =20 #define MAX_IRQ 256 #define SOCKET_TIMEOUT 50 #define SOCKET_MAX_FDS 16 =20 QTestState *global_qtest; +#ifdef CONFIG_FUZZ +static GString *recv_str; +#endif =20 struct QTestState { @@ -317,6 +323,21 @@ QTestState *qtest_initf(const char *fmt, ...) return s; } =20 +#ifdef CONFIG_FUZZ +QTestState *qtest_fuzz_init(const char *extra_args, int *sock_fd) +{ + QTestState *qts; + qts =3D g_new(QTestState, 1); + qts->wstatus =3D 0; + for (int i =3D 0; i < MAX_IRQ; i++) { + qts->irq_level[i] =3D false; + } + qts->big_endian =3D qtest_query_target_endianness(qts); + + return qts; +} +#endif + QTestState *qtest_init_with_serial(const char *extra_args, int *sock_fd) { int sock_fd_init; @@ -374,14 +395,25 @@ static void socket_send(int fd, const char *buf, size= _t size) offset +=3D len; } } - +/* + * TODO: Remove the ifdefs by adding a layer of indirection and separating= the + * implemetation of sendf and init for the fuzzer and qtest client + */ static void socket_sendf(int fd, const char *fmt, va_list ap) { gchar *str =3D g_strdup_vprintf(fmt, ap); size_t size =3D strlen(str); +#ifdef CONFIG_FUZZ + /* Directly call qtest_process_inbuf in the qtest server */ + GString *gstr =3D g_string_new_len(str, size); + qtest_server_recv(gstr); =20 + g_string_free(gstr, true); + g_free(str); +#else socket_send(fd, str, size); g_free(str); +#endif } =20 static void GCC_FMT_ATTR(2, 3) qtest_sendf(QTestState *s, const char *fmt,= ...) @@ -433,6 +465,13 @@ static GString *qtest_recv_line(QTestState *s) size_t offset; char *eol; =20 +#ifdef CONFIG_FUZZ + eol =3D strchr(recv_str->str, '\n'); + offset =3D eol - recv_str->str; + line =3D g_string_new_len(recv_str->str, offset); + g_string_erase(recv_str, 0, offset + 1); + printf("<<< %s\n", line->str); +#else while ((eol =3D strchr(s->rx->str, '\n')) =3D=3D NULL) { ssize_t len; char buffer[1024]; @@ -453,7 +492,7 @@ static GString *qtest_recv_line(QTestState *s) offset =3D eol - s->rx->str; line =3D g_string_new_len(s->rx->str, offset); g_string_erase(s->rx, 0, offset + 1); - +#endif return line; } =20 @@ -797,6 +836,9 @@ char *qtest_hmp(QTestState *s, const char *fmt, ...) =20 const char *qtest_get_arch(void) { +#ifdef CONFIG_FUZZ + return TARGET_NAME; +#endif const char *qemu =3D qtest_qemu_binary(); const char *end =3D strrchr(qemu, '/'); =20 @@ -1339,3 +1381,18 @@ void qmp_assert_error_class(QDict *rsp, const char *= class) =20 qobject_unref(rsp); } +#ifdef CONFIG_FUZZ +void qtest_clear_rxbuf(QTestState *s) +{ + g_string_set_size(recv_str, 0); +} + +void qtest_client_recv(const char *str, size_t len) +{ + if (!recv_str) { + recv_str =3D g_string_new(NULL); + } + g_string_append_len(recv_str, str, len); + return; +} +#endif diff --git a/tests/libqtest.h b/tests/libqtest.h index cadf1d4a03..4e32f39be7 100644 --- a/tests/libqtest.h +++ b/tests/libqtest.h @@ -1001,4 +1001,10 @@ void qmp_assert_error_class(QDict *rsp, const char *= class); */ bool qtest_probe_child(QTestState *s); =20 +#ifdef CONFIG_FUZZ +QTestState *qtest_fuzz_init(const char *extra_args, int *sock_fd); +void qtest_clear_rxbuf(QTestState *s); +void qtest_client_recv(const char *str, size_t len); +#endif + #endif --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989489025520.9959297315154; Mon, 5 Aug 2019 00:18:09 -0700 (PDT) Received: from localhost ([::1]:51344 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXFw-00082s-0y for importer@patchew.org; Mon, 05 Aug 2019 03:18:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37337) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9H-0003WG-Pa for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9G-00021w-1F for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:15 -0400 Received: from mail-eopbgr680093.outbound.protection.outlook.com ([40.107.68.93]:54470 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9F-00021Y-R4 for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:13 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:12 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iIeMOk8x1Ks+MxZ708fMOYGdKlfuJaLQvk+ljScoXqq7mGmVTMDgrjtdALJfqpNqWiBQkDs3obALQ+T6bRPx/zh70I8uMyXAS9Q5/ZYCsgTEWOHbGCjf+H6aE+iTznj1NFAGSkTt00MvUD/xlVQHQDddck3go5J77OHRQ9GlARku/NMl5M0DMVJChpinSsQgOnL30vrH9G8wX5vZ/ntFFXFmwaVjC1SYbMa0agDQc+QJ7607ZZpYbFqMaQIn7QEGuIf++QwH+6WhwSAv3ClKiy+cchTAsWUs5pJT8vdvum7WsFduKrrmUWyoW6R9JMnwdDmVvb5MUSKybBkGlayBtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YwRJgavehGKXUt8uKVg0r+N07Q0H+kzWRsieiYbkis4=; b=FkVvBMUFLauQKCkBi3Kvh1ssNK1yGJoodRIWL5YxjCsNGGEOLcnx8t8m51NKpDV4cfGPfWl6ebnLzT/kUWBA4RGeqCpY/x5j0ckwdvKS8qKwljDsr1qMBP5OrqDiezf6n6j22dQMiaH7bBYkmmRxiWdOBd6CVY2qEKOi8FIu9QG0pCA01I3szW/B90ARW0OcWjYQVb1nidxv82HQnjXXqYSO63gEX6Adt6EZH3utgFU86uaDtQIc6KA/FHy6c1yGQ1LtB0XWh62F8HGFmtzIwL0IITYQuW4p1Hiralmyv/MBF2llL17qHZuC1pOysAlUF0c5EL7tNMUAomFnyVgQJg== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YwRJgavehGKXUt8uKVg0r+N07Q0H+kzWRsieiYbkis4=; b=3fT1Cs1zYQq9r7hXx9H8r7nMT3gieQ9rM++MB4efUbGcyqx6/k7AqEDh6Hg6M+j0FN0eHbINyTnaz3mjgAjAihP4n0wGUxL3WWB6tfzSM/Ow1sgzJRI7YNzxsxFQFR23HsKbZsutIphlTO1XdOP4Bbw38mTHRcCM+iFMONoI9Xo= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 11/17] fuzz: Move useful qos functions to separate object Thread-Index: AQHVS1z24ZEN+4y54k+XnPyH7IyGRA== Date: Mon, 5 Aug 2019 07:11:12 +0000 Message-ID: <20190805071038.32146-12-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 077aaf98-e1e0-49f3-920c-08d719741908 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4502; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(14444005)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: JrShOd2R0Z5FiWolVlbM07SZqx2EAIURhrlC63sBeimugMFD51G9dSv3UcVvsikhzqcGxuFcpoRddCaN8p1lBFcDBq4e8mDhdYm9HvT4nKFAbdVoBQvFSetdh6/vM7QSzsp7Zz/qUldCQQv+QI4KIOme8zgej6uR1DVX3OHZuU0N4x3uEi9eiQ0u9fX42v7yS5+72UQUgdakX2xCWoVgrJakPIvzQFkwVFwuiORxYepS5RoeUM0lqCt70Xl78jBMoj8S7AUOt3uXZYNb8GMy2hi7hua3oFV8bbes44hIne/ysbg77WbGUtYjc0DJCsqu6/ZGmj/xpXmH2tlRQjrHK4UigOihHa32eZ6iU257teB6Np9pDa/n4/kIdkwQaYwjD5LdF836GgYQabxJvLaIO8UIOhe6o23xLmXkAu0fW1I= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 077aaf98-e1e0-49f3-920c-08d719741908 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:12.5856 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.93 Subject: [Qemu-devel] [RFC PATCH v2 11/17] fuzz: Move useful qos functions to separate object 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: Laurent Vivier , Thomas Huth , "Oleinik, Alexander" , "bsd@redhat.com" , "stefanha@redhat.com" , "pbonzini@redhat.com" 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" These functions are used by both qos-test.c, and the fuzzer. Signed-off-by: Alexander Oleinik --- tests/libqos/qos_external.c | 149 ++++++++++++++++++++++++++++++++++++ tests/libqos/qos_external.h | 8 ++ tests/qos-test.c | 132 +------------------------------- 3 files changed, 158 insertions(+), 131 deletions(-) create mode 100644 tests/libqos/qos_external.c create mode 100644 tests/libqos/qos_external.h diff --git a/tests/libqos/qos_external.c b/tests/libqos/qos_external.c new file mode 100644 index 0000000000..987123b5cb --- /dev/null +++ b/tests/libqos/qos_external.c @@ -0,0 +1,149 @@ + +#include "qemu/osdep.h" +#include +#include "libqtest.h" +#include "qapi/qmp/qdict.h" +#include "qapi/qmp/qbool.h" +#include "qapi/qmp/qstring.h" +#include "qemu/module.h" +#include "qapi/qmp/qlist.h" +#include "libqos/malloc.h" +#include "libqos/qgraph.h" +#include "libqos/qgraph_internal.h" +#include "libqos/qos_external.h" + +void apply_to_node(const char *name, bool is_machine, bool is_abstract) +{ + char *machine_name =3D NULL; + if (is_machine) { + const char *arch =3D qtest_get_arch(); + machine_name =3D g_strconcat(arch, "/", name, NULL); + name =3D machine_name; + } + qos_graph_node_set_availability(name, true); + if (is_abstract) { + qos_delete_cmd_line(name); + } + g_free(machine_name); +} + +/** + * apply_to_qlist(): using QMP queries QEMU for a list of + * machines and devices available, and sets the respective node + * as true. If a node is found, also all its produced and contained + * child are marked available. + * + * See qos_graph_node_set_availability() for more info + */ +void apply_to_qlist(QList *list, bool is_machine) +{ + const QListEntry *p; + const char *name; + bool abstract; + QDict *minfo; + QObject *qobj; + QString *qstr; + QBool *qbool; + + for (p =3D qlist_first(list); p; p =3D qlist_next(p)) { + minfo =3D qobject_to(QDict, qlist_entry_obj(p)); + qobj =3D qdict_get(minfo, "name"); + qstr =3D qobject_to(QString, qobj); + name =3D qstring_get_str(qstr); + + qobj =3D qdict_get(minfo, "abstract"); + if (qobj) { + qbool =3D qobject_to(QBool, qobj); + abstract =3D qbool_get_bool(qbool); + } else { + abstract =3D false; + } + + apply_to_node(name, is_machine, abstract); + qobj =3D qdict_get(minfo, "alias"); + if (qobj) { + qstr =3D qobject_to(QString, qobj); + name =3D qstring_get_str(qstr); + apply_to_node(name, is_machine, abstract); + } + } +} + +QGuestAllocator *get_machine_allocator(QOSGraphObject *obj) +{ + return obj->get_driver(obj, "memory"); +} + +/** + * allocate_objects(): given an array of nodes @arg, + * walks the path invoking all constructors and + * passing the corresponding parameter in order to + * continue the objects allocation. + * Once the test is reached, return the object it consumes. + * + * Since the machine and QEDGE_CONSUMED_BY nodes allocate + * memory in the constructor, g_test_queue_destroy is used so + * that after execution they can be safely free'd. (The test's + * ->before callback is also welcome to use g_test_queue_destroy). + * + * Note: as specified in walk_path() too, @arg is an array of + * char *, where arg[0] is a pointer to the command line + * string that will be used to properly start QEMU when executing + * the test, and the remaining elements represent the actual objects + * that will be allocated. + */ +void *allocate_objects(QTestState *qts, char **path, QGuestAllocator **p_a= lloc) +{ + int current =3D 0; + QGuestAllocator *alloc; + QOSGraphObject *parent =3D NULL; + QOSGraphEdge *edge; + QOSGraphNode *node; + void *edge_arg; + void *obj; + + node =3D qos_graph_get_node(path[current]); + g_assert(node->type =3D=3D QNODE_MACHINE); + + obj =3D qos_machine_new(node, qts); + qos_object_queue_destroy(obj); + + alloc =3D get_machine_allocator(obj); + if (p_alloc) { + *p_alloc =3D alloc; + } + + for (;;) { + if (node->type !=3D QNODE_INTERFACE) { + qos_object_start_hw(obj); + parent =3D obj; + } + + /* follow edge and get object for next node constructor */ + current++; + edge =3D qos_graph_get_edge(path[current - 1], path[current]); + node =3D qos_graph_get_node(path[current]); + + if (node->type =3D=3D QNODE_TEST) { + g_assert(qos_graph_edge_get_type(edge) =3D=3D QEDGE_CONSUMED_B= Y); + return obj; + } + + switch (qos_graph_edge_get_type(edge)) { + case QEDGE_PRODUCES: + obj =3D parent->get_driver(parent, path[current]); + break; + + case QEDGE_CONSUMED_BY: + edge_arg =3D qos_graph_edge_get_arg(edge); + obj =3D qos_driver_new(node, obj, alloc, edge_arg); + qos_object_queue_destroy(obj); + break; + + case QEDGE_CONTAINS: + obj =3D parent->get_device(parent, path[current]); + break; + } + } +} + diff --git a/tests/libqos/qos_external.h b/tests/libqos/qos_external.h new file mode 100644 index 0000000000..bf3b308501 --- /dev/null +++ b/tests/libqos/qos_external.h @@ -0,0 +1,8 @@ +#ifndef QOS_EXTERNAL_H +#define QOS_EXTERNAL_H + +void apply_to_node(const char *name, bool is_machine, bool is_abstract); +void apply_to_qlist(QList *list, bool is_machine); +QGuestAllocator *get_machine_allocator(QOSGraphObject *obj); +void *allocate_objects(QTestState *qts, char **path, QGuestAllocator **p_a= lloc); +#endif diff --git a/tests/qos-test.c b/tests/qos-test.c index 3c0071b3b7..c5fa7ff586 100644 --- a/tests/qos-test.c +++ b/tests/qos-test.c @@ -27,65 +27,11 @@ #include "libqos/malloc.h" #include "libqos/qgraph.h" #include "libqos/qgraph_internal.h" +#include "libqos/qos_external.h" =20 static char *old_path; =20 -static void apply_to_node(const char *name, bool is_machine, bool is_abstr= act) -{ - char *machine_name =3D NULL; - if (is_machine) { - const char *arch =3D qtest_get_arch(); - machine_name =3D g_strconcat(arch, "/", name, NULL); - name =3D machine_name; - } - qos_graph_node_set_availability(name, true); - if (is_abstract) { - qos_delete_cmd_line(name); - } - g_free(machine_name); -} =20 -/** - * apply_to_qlist(): using QMP queries QEMU for a list of - * machines and devices available, and sets the respective node - * as true. If a node is found, also all its produced and contained - * child are marked available. - * - * See qos_graph_node_set_availability() for more info - */ -static void apply_to_qlist(QList *list, bool is_machine) -{ - const QListEntry *p; - const char *name; - bool abstract; - QDict *minfo; - QObject *qobj; - QString *qstr; - QBool *qbool; - - for (p =3D qlist_first(list); p; p =3D qlist_next(p)) { - minfo =3D qobject_to(QDict, qlist_entry_obj(p)); - qobj =3D qdict_get(minfo, "name"); - qstr =3D qobject_to(QString, qobj); - name =3D qstring_get_str(qstr); - - qobj =3D qdict_get(minfo, "abstract"); - if (qobj) { - qbool =3D qobject_to(QBool, qobj); - abstract =3D qbool_get_bool(qbool); - } else { - abstract =3D false; - } - - apply_to_node(name, is_machine, abstract); - qobj =3D qdict_get(minfo, "alias"); - if (qobj) { - qstr =3D qobject_to(QString, qobj); - name =3D qstring_get_str(qstr); - apply_to_node(name, is_machine, abstract); - } - } -} =20 /** * qos_set_machines_devices_available(): sets availability of qgraph @@ -129,10 +75,6 @@ static void qos_set_machines_devices_available(void) qobject_unref(response); } =20 -static QGuestAllocator *get_machine_allocator(QOSGraphObject *obj) -{ - return obj->get_driver(obj, "memory"); -} =20 static void restart_qemu_or_continue(char *path) { @@ -159,78 +101,6 @@ void qos_invalidate_command_line(void) old_path =3D NULL; } =20 -/** - * allocate_objects(): given an array of nodes @arg, - * walks the path invoking all constructors and - * passing the corresponding parameter in order to - * continue the objects allocation. - * Once the test is reached, return the object it consumes. - * - * Since the machine and QEDGE_CONSUMED_BY nodes allocate - * memory in the constructor, g_test_queue_destroy is used so - * that after execution they can be safely free'd. (The test's - * ->before callback is also welcome to use g_test_queue_destroy). - * - * Note: as specified in walk_path() too, @arg is an array of - * char *, where arg[0] is a pointer to the command line - * string that will be used to properly start QEMU when executing - * the test, and the remaining elements represent the actual objects - * that will be allocated. - */ -static void *allocate_objects(QTestState *qts, char **path, QGuestAllocato= r **p_alloc) -{ - int current =3D 0; - QGuestAllocator *alloc; - QOSGraphObject *parent =3D NULL; - QOSGraphEdge *edge; - QOSGraphNode *node; - void *edge_arg; - void *obj; - - node =3D qos_graph_get_node(path[current]); - g_assert(node->type =3D=3D QNODE_MACHINE); - - obj =3D qos_machine_new(node, qts); - qos_object_queue_destroy(obj); - - alloc =3D get_machine_allocator(obj); - if (p_alloc) { - *p_alloc =3D alloc; - } - - for (;;) { - if (node->type !=3D QNODE_INTERFACE) { - qos_object_start_hw(obj); - parent =3D obj; - } - - /* follow edge and get object for next node constructor */ - current++; - edge =3D qos_graph_get_edge(path[current - 1], path[current]); - node =3D qos_graph_get_node(path[current]); - - if (node->type =3D=3D QNODE_TEST) { - g_assert(qos_graph_edge_get_type(edge) =3D=3D QEDGE_CONSUMED_B= Y); - return obj; - } - - switch (qos_graph_edge_get_type(edge)) { - case QEDGE_PRODUCES: - obj =3D parent->get_driver(parent, path[current]); - break; - - case QEDGE_CONSUMED_BY: - edge_arg =3D qos_graph_edge_get_arg(edge); - obj =3D qos_driver_new(node, obj, alloc, edge_arg); - qos_object_queue_destroy(obj); - break; - - case QEDGE_CONTAINS: - obj =3D parent->get_device(parent, path[current]); - break; - } - } -} =20 /* The argument to run_one_test, which is the test function that is regist= ered * with GTest, is a vector of strings. The first item is the initial comm= and --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989413993752.2043920690046; Mon, 5 Aug 2019 00:16:53 -0700 (PDT) Received: from localhost ([::1]:51340 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXEi-0006ej-KJ for importer@patchew.org; Mon, 05 Aug 2019 03:16:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37348) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9I-0003YM-F2 for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9G-00022C-SY for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:16 -0400 Received: from mail-eopbgr680092.outbound.protection.outlook.com ([40.107.68.92]:46081 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9G-000220-NW for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:14 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:13 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DXA0OwCCJIPEABYBS2fikXs+4R0qUNP7+WgbIJh6TXL4356sxymr4G3cvCUf21Y1yTHU8Wg7Wi52oBST8jkdyqgdU3zFB4cCzcGNa8vJT/CvKEe8Ghpnm1/o9VL3sAvLFgEoEoitbds3ybQetK+jRb2VdSeWMsinAmdKz1xmYWLMV0aAiTbKa4yDf8mCSxHuFNx4cVdHpFVU6o25DihbK2h0iBAGJd4K8uLASjyMFr5dS9y2kFL5pdZv+cP6utwwsnE0o/oPLMzm23vb0VrYzrgQB1YCJvJ6ZPnDQXoDQ6RhFXrbVF4s6DAa2ENml6is1EpTkjUgIjZf3mlwyC5LpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vXjFQYVbJwrHKx6I2AQobheaBTWxLRYjjRVTe2mDSIQ=; b=i9YAT3wUSfMJwZ2DnZ+MK+cGE5c8YGjJdD1QpYhjzElHIEq7b6Ywd9VbO6LMofYyyq+i4cKGyQsPJ+Tv/imKKOa1KVk6p/Itz/67o+F+HyQzE/2bxLHziK1a5bGFl3fNw99/N44EJxj69xqhd8HlNhbWcTKwI2aWCIdP1PbtqbWXNC/WyMXIHHG68Quv0lSpc8NREtRxtixg8MEiLD7SyVyx6lZuBk3P6OjUuB2kfnYhxxJc+fm72UorSPLHg6JUgiXHsUA5pK1q8jyJ9Tro5kfdqmqrWAQ79vvAlqPkCe6iJ+dsjjNNym8ZtN9MIL76sfuG0Noa9D+L/P4CdoorPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vXjFQYVbJwrHKx6I2AQobheaBTWxLRYjjRVTe2mDSIQ=; b=3CBwMWqdkLu9RtqtX2af43gskY0jJ7g9tVxgp7Y528IXNn26Wl+bBf/jDNqMEgxHHWgyk0IK8WyLxoJvIsfTABV7tNsdnFZJEj+uzg7fTB2mxHoKpC2M7wwQ0sCcHIoemecdNQlq71HBJcrCtQ6j5kaqiMi80I8socg7QsB9uaI= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 12/17] fuzz: Add fuzzer skeleton Thread-Index: AQHVS1z31dBdM7+zmk6fOqR7q/o/8Q== Date: Mon, 5 Aug 2019 07:11:13 +0000 Message-ID: <20190805071038.32146-13-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8541545d-1566-4e8e-1808-08d71974198f x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:580; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(14444005)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: hHcc+v9kSU26ZupZBHAYBFMWhgCdZjBEGmsPmg8vwOZBNZRGWTNN/B93zFn+zOFLgT3wC2Z2h1QZdvvmZJL13tOPsFjcaXMPUSYex9G8DhXHSvWplTQT0YEFusPAZ846rmKIw0ry9bKUvXJ/BKNVTO9sOV3pRfzmLakSe0+34MrKmEJ7CCGCBg+WarONBx7WDs13F2rCPOATCsUwc5NAeBHG+2WLQGiFcTPGtE7t7CTDkq72NUZD7bbf3owwd1mVnFLa+cItm3clqqxLjGnOyolcwZQM0MUiZQMIZA8nvDnJSg7RFbh8cR5VYBD04lwq0nb6d+vF6GDu6bTNcrlf4P1XYpXgEv/BFhtQwe5Q412viKjAdqpBMsapLM65Icri9EYAy4a0as1kpECYncJHUKlH6WOTbFdcy7pDK5r7xTk= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 8541545d-1566-4e8e-1808-08d71974198f X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:13.4502 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.92 Subject: [Qemu-devel] [RFC PATCH v2 12/17] fuzz: Add fuzzer skeleton 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: "pbonzini@redhat.com" , "bsd@redhat.com" , "stefanha@redhat.com" , "Oleinik, Alexander" 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 code defines the lifecycle of the fuzzer, and provides rebooting, vmload and device_load as means of resetting state between fuzz runs Signed-off-by: Alexander Oleinik --- tests/fuzz/fuzz.c | 245 ++++++++++++++++++++++++++++++++++++++++++++++ tests/fuzz/fuzz.h | 70 +++++++++++++ 2 files changed, 315 insertions(+) create mode 100644 tests/fuzz/fuzz.c create mode 100644 tests/fuzz/fuzz.h diff --git a/tests/fuzz/fuzz.c b/tests/fuzz/fuzz.c new file mode 100644 index 0000000000..9e03e15d7b --- /dev/null +++ b/tests/fuzz/fuzz.c @@ -0,0 +1,245 @@ +#include "qemu/osdep.h" +#include "qemu-common.h" +#include "qemu/iov.h" +#include "exec/memory.h" +#include "exec/address-spaces.h" +#include "migration/qemu-file.h" + +#include "migration/qemu-file.h" +#include "migration/global_state.h" +#include "migration/savevm.h" +#include "tests/libqtest.h" +#include "migration/migration.h" +#include "fuzz.h" +#include "tests/libqos/qgraph.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +QTestState *s; + +QEMUFile *ramfile; +QEMUFile *writefile; +ram_disk *rd; + + +typedef struct FuzzTargetState { + FuzzTarget *target; + QSLIST_ENTRY(FuzzTargetState) target_list; +} FuzzTargetState; + +typedef QSLIST_HEAD(, FuzzTargetState) FuzzTargetList; + +FuzzTargetList *fuzz_target_list; + +/* Save just the VMStateDescriptors */ +void save_device_state(void) +{ + writefile =3D qemu_fopen_ram(&rd); + global_state_store(); + qemu_save_device_state(writefile); + qemu_fflush(writefile); + ramfile =3D qemu_fopen_ro_ram(rd); +} + +/* Save the entire vm state including RAM */ +void save_vm_state(void) +{ + writefile =3D qemu_fopen_ram(&rd); + vm_stop(RUN_STATE_SAVE_VM); + global_state_store(); + qemu_savevm_state(writefile, NULL); + qemu_fflush(writefile); + ramfile =3D qemu_fopen_ro_ram(rd); +} + +/* Reset state by rebooting */ +void reboot() +{ + qemu_system_reset(SHUTDOWN_CAUSE_NONE); +} + +/* Restore device state */ +void load_device_state() +{ + qemu_freopen_ro_ram(ramfile); + + int ret =3D qemu_load_device_state(ramfile); + if (ret < 0) { + printf("reset error\n"); + exit(-1); + } +} + +/* Restore full vm state */ +void load_vm_state() +{ + qemu_freopen_ro_ram(ramfile); + + vm_stop(RUN_STATE_RESTORE_VM); + + int ret =3D qemu_loadvm_state(ramfile); + if (ret < 0) { + printf("reset error\n"); + exit(-1); + } + migration_incoming_state_destroy(); + vm_start(); +} + +void qtest_setup() +{ + s =3D qtest_fuzz_init(NULL, NULL); + global_qtest =3D s; +} + +void fuzz_add_target(const char *name, const char *description, + FuzzTarget *target) +{ + + FuzzTargetState *tmp; + FuzzTargetState *target_state; + if (!fuzz_target_list) { + fuzz_target_list =3D g_new0(FuzzTargetList, 1); + } + + QSLIST_FOREACH(tmp, fuzz_target_list, target_list) { + if (g_strcmp0(tmp->target->name->str, name) =3D=3D 0) { + fprintf(stderr, "Error: Fuzz target name %s already in use\n", + name); + abort(); + } + } + target_state =3D g_new0(FuzzTargetState, 1); + target_state->target =3D g_new0(FuzzTarget, 1); + *(target_state->target) =3D *target; + target_state->target->name =3D g_string_new(name); + target_state->target->description =3D g_string_new(description); + QSLIST_INSERT_HEAD(fuzz_target_list, target_state, target_list); +} + + +static FuzzTarget *fuzz_get_target(char* name) +{ + FuzzTargetState *tmp; + if (!fuzz_target_list) { + fprintf(stderr, "Fuzz target list not initialized"); + abort(); + } + + QSLIST_FOREACH(tmp, fuzz_target_list, target_list) { + if (g_strcmp0(tmp->target->name->str, name) =3D=3D 0) { + break; + } + } + return tmp->target; +} + +FuzzTarget *fuzz_target; + + + +static void usage(void) +{ + printf("Usage: ./fuzz --FUZZ_TARGET [LIBFUZZER ARGUMENTS]\n"); + printf("where --FUZZ_TARGET is one of:\n"); + FuzzTargetState *tmp; + if (!fuzz_target_list) { + fprintf(stderr, "Fuzz target list not initialized"); + abort(); + } + QSLIST_FOREACH(tmp, fuzz_target_list, target_list) { + printf(" --%s : %s\n", tmp->target->name->str, + tmp->target->description->str); + } + exit(0); +} + +static void enum_memory(void) +{ + /* TODO: Enumerate interesting memory using memory_region_is_ram */ + return; +} + +/* Executed for each fuzzing-input */ +int LLVMFuzzerTestOneInput(const unsigned char *Data, size_t Size) +{ + /* e.g. Device bootstrapping */ + if (fuzz_target->pre_fuzz) { + fuzz_target->pre_fuzz(); + } + + if (fuzz_target->fuzz) { + fuzz_target->fuzz(Data, Size); + } + + /* e.g. Copy counter bitmap to shm*/ + if (fuzz_target->post_fuzz) { + fuzz_target->post_fuzz(); + } + + /* e.g. Reboot the machine or vmload */ + if (fuzz_target->reset) { + fuzz_target->reset(); + } + + return 0; +} + +/* Executed once, prior to fuzzing */ +int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp) +{ + + char *target_name; + + /* Initialize qgraph and modules */ + qos_graph_init(); + module_call_init(MODULE_INIT_FUZZ_TARGET); + module_call_init(MODULE_INIT_QOM); + module_call_init(MODULE_INIT_LIBQOS); + + if (*argc <=3D 1) { + usage(); + } + + + /* Identify the fuzz target */ + target_name =3D (*argv)[1]; + target_name +=3D 2; + fuzz_target =3D fuzz_get_target(target_name); + + if (!fuzz_target) { + fprintf(stderr, "Error: Fuzz fuzz_target name %s not found\n", + target_name); + usage(); + } + + if (fuzz_target->pre_main) { + fuzz_target->pre_main(); + } + + /* Run QEMU's regular vl.c:main */ + qemu_init(*(fuzz_target->main_argc), *(fuzz_target->main_argv), NULL); + + + /* Enumerate memory to identify mapped MMIO and I/O regions */ + enum_memory(); + + /* Good place to do any one-time device initialization (such as QOS in= it) */ + if (fuzz_target->pre_save_state) { + fuzz_target->pre_save_state(); + } + + /* If configured, this is where we save vm or device state to ramdisk = */ + if (fuzz_target->save_state) { + fuzz_target->save_state(); + } + + return 0; +} diff --git a/tests/fuzz/fuzz.h b/tests/fuzz/fuzz.h new file mode 100644 index 0000000000..46ec38d4ea --- /dev/null +++ b/tests/fuzz/fuzz.h @@ -0,0 +1,70 @@ +#ifndef FUZZER_H_ +#define FUZZER_H_ + +#include "qemu/osdep.h" +#include "qemu/units.h" +#include "qapi/error.h" +#include "exec/memory.h" +#include "tests/libqtest.h" +#include "migration/qemu-file.h" + +#include + + +extern QTestState *s; +extern QEMUFile *writefile; +extern QEMUFile *ramfile; +extern ram_disk *rd; + +typedef struct FuzzTarget { + GString *name; + GString *description; + void(*pre_main)(void); + void(*pre_save_state)(void); + void(*save_state)(void); + void(*reset)(void); + void(*pre_fuzz)(void); + void(*fuzz)(const unsigned char*, size_t); + void(*post_fuzz)(void); + int *main_argc; + char ***main_argv; +} FuzzTarget; + + +void save_device_state(void); +void save_vm_state(void); +void reboot(void); + +void load_device_state(void); +void load_vm_state(void); + + +void save_device_state(void); +void qtest_setup(void); +void fuzz_register_mr(const MemoryRegion *mr); + +extern FuzzTarget *fuzz_target; + +typedef struct fuzz_memory_region { + bool io; + uint64_t start; + uint64_t length; + struct fuzz_memory_region *next; +} fuzz_memory_region; + +extern fuzz_memory_region *fuzz_memory_region_head; +extern fuzz_memory_region *fuzz_memory_region_tail; + +extern uint64_t total_io_mem; +extern uint64_t total_ram_mem; + + + +void fuzz_add_target(const char *name, const char *description, FuzzTarget + *target); + +int LLVMFuzzerTestOneInput(const unsigned char *Data, size_t Size); +int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp); + +#endif + --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989418069177.7937855304358; Mon, 5 Aug 2019 00:16:58 -0700 (PDT) Received: from localhost ([::1]:51342 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXEm-0006oK-TL for importer@patchew.org; Mon, 05 Aug 2019 03:16:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37373) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9J-0003bn-GV for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9H-00022X-P1 for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:17 -0400 Received: from mail-eopbgr680101.outbound.protection.outlook.com ([40.107.68.101]:34519 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9H-00022H-IW for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:15 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:14 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lzmWmKdEByMPjJnR22GPi4BxZmvxwn+DUM1inWYH3EXFzqHHkPA1DhGpqHlakAA0YM2q6n7QVjWPv8O9DirqxbyBbOcKoLt/JugJ7vUqxSszj8Lsmhmcfix8/4s2FLsEfAwVHuN4BTV1+Z3I9MdPN4tZxWHGQ2a73F+DrXlMCKTKOBvWp5IrRYRh0Qfu/seDX7z62LU/wLPdKcQedVc96Vycai6i6ysA5O1disSPAXtOCotcIBkktCPjFrwgP9KsfXuDej1HquEamWFNebBAcUsNirTZo57x5F5tTGTL4Q4OfTrtWT4eBImAQks1d4a+odhMdk51u1qWKvx5vxQHyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HG7Ozow/ssM5Yv5IG0nkr4jt9M91oaRoTimntWMrJi4=; b=DFO4/I0g1rbbCRHrkDvSq5+aVMBZpiAXTy1rXaruyKOrRYGJc/T8qX2l6uBlhP5pAKFTzVHIXigxT3Hh30a6m9g+G/NlI1z+Sa24Rt7nFakYXFdw+v5ttlVM1VoOVyhFHwmY4gyZIhpubXH9zqmVdDZFhjp2Cv6mlqlc+evOdkP4IZ5GzKElyDzFFbc6dEIolVQ5I4eQoTwLruf77noBe/09KmnEOjrnFrQl5uyO1fPHyJjPS7ghVxWN48ZI6NfOY1VX2OT9ZX2WAgotlB7en1uOZZrcfz1VEq9lvURTiJxx4aCvsXK+Z4PJJ+2VawNqH3W8RdcoDbWuQmeQkIhs3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HG7Ozow/ssM5Yv5IG0nkr4jt9M91oaRoTimntWMrJi4=; b=7LBZvZLpYWBbl2p8r0MdB4sMbLvTdxo6LlM1tLqYDf8TgyXL8EHHtThHX8A4H7G8KRGZwKW/vHbCwun+TcQzyS7FfJtSV4jo1T2GpJBOyPa1XImTgGDvVNRAnZW7E0aXU2OqBvcXWwj1pbPfRYnTDYwYJ5lbkI4BptdS/0p9wCI= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 13/17] fuzz: Add libqos support to the fuzzer Thread-Index: AQHVS1z3x4d02ytB7ECpRSkQohtLTQ== Date: Mon, 5 Aug 2019 07:11:14 +0000 Message-ID: <20190805071038.32146-14-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6dfd2089-ff41-4e7b-2d44-08d719741a13 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1148; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(14444005)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: s+htWAEHlypk+MzlHl1IUfi+ZYZzhKcMqfW9Fy1D946k0eS1bBkyFgbiQDDvpPTJcBAiHGanuxsIRtSY/9USengWHBLh3xkuJ07SW5F7nV4hkvbsA40BbJUqRoH6aD3snN33NmKNs3ZC6BrG6lYbpa+gtdOl8rto09GuyejXDOltzmsdkd0h6R2MnQAB75SvsVEXmaxGRChXTkJIfntKaZLrZoCsILSPP1bAgSkLmbVm+Q2e/xrH1xaptiSs7uo5XQy8NcZyp+Uft4f3ODXvgIfsZzQkltyCZflHT/nmUvuAhrvH6HsZE+6oSdwxYiErCdnMcIss0HCcIVdW7l6/j44fI2ONYNMUNJrHjPnXsPx/n1+5YTBzspACaxW1dwTIlEVJUrBzDaBDULDg76EASY1OcaxYIGSCcS0ok4HTx0A= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 6dfd2089-ff41-4e7b-2d44-08d719741a13 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:14.2818 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.101 Subject: [Qemu-devel] [RFC PATCH v2 13/17] fuzz: Add libqos support to the fuzzer 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: "pbonzini@redhat.com" , "bsd@redhat.com" , "stefanha@redhat.com" , "Oleinik, Alexander" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alexander Oleinik --- tests/fuzz/qos_fuzz.c | 58 ++++++++++++ tests/fuzz/qos_fuzz.h | 23 +++++ tests/fuzz/qos_helpers.c | 190 +++++++++++++++++++++++++++++++++++++++ tests/fuzz/qos_helpers.h | 17 ++++ 4 files changed, 288 insertions(+) create mode 100644 tests/fuzz/qos_fuzz.c create mode 100644 tests/fuzz/qos_fuzz.h create mode 100644 tests/fuzz/qos_helpers.c create mode 100644 tests/fuzz/qos_helpers.h diff --git a/tests/fuzz/qos_fuzz.c b/tests/fuzz/qos_fuzz.c new file mode 100644 index 0000000000..80a22793d6 --- /dev/null +++ b/tests/fuzz/qos_fuzz.c @@ -0,0 +1,58 @@ + + +#include "qemu/osdep.h" +#include "qemu/units.h" +#include "qapi/error.h" +#include "qemu-common.h" +#include "exec/memory.h" +#include "exec/address-spaces.h" +#include "sysemu/sysemu.h" +#include "qemu/main-loop.h" + +#include "libqos/malloc.h" +#include "libqos/qgraph.h" +#include "libqos/qgraph_internal.h" + +#include "hw/virtio/virtio-net.h" +#include "hw/virtio/virtio.h" +#include "libqos/virtio-net.h" +#include "fuzz.h" +#include "qos_fuzz.h" +#include "qos_helpers.h" +#include "tests/libqos/qgraph.h" +#include "tests/libqtest.h" + + +fuzz_memory_region *fuzz_memory_region_head; +fuzz_memory_region *fuzz_memory_region_tail; + +uint64_t total_io_mem; +uint64_t total_ram_mem; + + +void fuzz_add_qos_target(const char *name, + const char *description, + const char *interface, + QOSGraphTestOptions *opts, + FuzzTarget *fuzz_opts + ) +{ + qos_add_test(name, interface, NULL, opts); + fuzz_opts->main_argc =3D &qos_argc; + fuzz_opts->main_argv =3D &qos_argv; + fuzz_add_target(name, description, fuzz_opts); +} + + +/* Do what is normally done in qos_test.c:main */ +void qos_setup(void){ + qtest_setup(); + qos_set_machines_devices_available(); + qos_graph_foreach_test_path(walk_path); + qos_build_main_args(); +} + +void qos_init_path(void) +{ + qos_obj =3D qos_allocate_objects(global_qtest, &qos_alloc); +} diff --git a/tests/fuzz/qos_fuzz.h b/tests/fuzz/qos_fuzz.h new file mode 100644 index 0000000000..68d0684a7c --- /dev/null +++ b/tests/fuzz/qos_fuzz.h @@ -0,0 +1,23 @@ +#ifndef _QOS_FUZZ_H_ +#define _QOS_FUZZ_H_ + +#include "tests/libqos/qgraph.h" + +int qos_fuzz(const unsigned char *Data, size_t Size); +void qos_setup(void); + +extern char **fuzz_path_vec; +extern int qos_argc; +extern char **qos_argv; +extern void *qos_obj; +extern QGuestAllocator *qos_alloc; + + +void fuzz_add_qos_target(const char *name, + const char *description, + const char *interface, + QOSGraphTestOptions *opts, + FuzzTarget *fuzz_opts); + +void qos_init_path(void); +#endif diff --git a/tests/fuzz/qos_helpers.c b/tests/fuzz/qos_helpers.c new file mode 100644 index 0000000000..c65f32e78b --- /dev/null +++ b/tests/fuzz/qos_helpers.c @@ -0,0 +1,190 @@ +#include "qemu/osdep.h" +#include "qemu-common.h" +#include "qos_helpers.h" +#include "fuzz.h" +#include "qapi/qmp/qlist.h" +#include "libqtest.h" +#include "sysemu/qtest.h" +#include "libqos/qgraph.h" +#include "libqos/qgraph_internal.h" +#include "libqos/qos_external.h" +#include "qapi/qapi-commands-machine.h" +#include "qapi/qapi-commands-misc.h" +#include "qapi/qapi-commands-qom.h" +#include +#include "sysemu/sysemu.h" +#include "sysemu/cpus.h" + + + +/* + * Replaced the qmp commands with direct qmp_marshal calls. + * Probably there is a better way to do this + */ +void qos_set_machines_devices_available(void) +{ + QDict *req =3D qdict_new(); + QObject *response; + QDict *args =3D qdict_new(); + QList *lst; + Error *err =3D NULL; + + qmp_marshal_query_machines(NULL, &response, &err); + assert(!err); + lst =3D qobject_to(QList, response); + apply_to_qlist(lst, true); + + qobject_unref(response); + + + qdict_put_str(req, "execute", "qom-list-types"); + qdict_put_str(args, "implements", "device"); + qdict_put_bool(args, "abstract", true); + qdict_put_obj(req, "arguments", (QObject *) args); + + qmp_marshal_qom_list_types(args, &response, &err); + assert(!err); + lst =3D qobject_to(QList, response); + apply_to_qlist(lst, false); + qobject_unref(response); + qobject_unref(req); +} + +static char **current_path; + + +void *qos_allocate_objects(QTestState *qts, QGuestAllocator **p_alloc) +{ + return allocate_objects(qts, current_path + 1, p_alloc); +} + + +char **fuzz_path_vec; +void *qos_obj; +QGuestAllocator *qos_alloc; + +int qos_argc; +char **qos_argv; + +void qos_build_main_args() +{ + char **path =3D fuzz_path_vec; + QOSGraphNode *test_node; + GString *cmd_line =3D g_string_new(path[0]); + void *test_arg; + + /* Before test */ + current_path =3D path; + test_node =3D qos_graph_get_node(path[(g_strv_length(path) - 1)]); + test_arg =3D test_node->u.test.arg; + if (test_node->u.test.before) { + test_arg =3D test_node->u.test.before(cmd_line, test_arg); + } + + /* Prepend the arguments that we need */ + g_string_prepend(cmd_line, + "qemu-system-i386 -display none -machine accel=3Dfuzz -m 16 "); + wordexp_t result; + wordexp(cmd_line->str, &result, 0); + qos_argc =3D result.we_wordc; + qos_argv =3D result.we_wordv; + + g_string_free(cmd_line, true); +} + +/* + * This function is largely a copy of qos-test.c: + * TODO: Possibly add a callback argument to walk_path to use one function + * for both fuzzing and normal testing + */ +void walk_path(QOSGraphNode *orig_path, int len) +{ + QOSGraphNode *path; + QOSGraphEdge *edge; + + /* etype set to QEDGE_CONSUMED_BY so that machine can add to the comma= nd line */ + QOSEdgeType etype =3D QEDGE_CONSUMED_BY; + + /* twice QOS_PATH_MAX_ELEMENT_SIZE since each edge can have its arg */ + char **path_vec =3D g_new0(char *, (QOS_PATH_MAX_ELEMENT_SIZE * 2)); + int path_vec_size =3D 0; + + char *after_cmd, *before_cmd, *after_device; + GString *after_device_str =3D g_string_new(""); + char *node_name =3D orig_path->name, *path_str; + + GString *cmd_line =3D g_string_new(""); + GString *cmd_line2 =3D g_string_new(""); + + path =3D qos_graph_get_node(node_name); /* root */ + node_name =3D qos_graph_edge_get_dest(path->path_edge); /* machine nam= e */ + + path_vec[path_vec_size++] =3D node_name; + path_vec[path_vec_size++] =3D qos_get_machine_type(node_name); + + for (;;) { + path =3D qos_graph_get_node(node_name); + if (!path->path_edge) { + break; + } + + node_name =3D qos_graph_edge_get_dest(path->path_edge); + + /* append node command line + previous edge command line */ + if (path->command_line && etype =3D=3D QEDGE_CONSUMED_BY) { + g_string_append(cmd_line, path->command_line); + g_string_append(cmd_line, after_device_str->str); + g_string_truncate(after_device_str, 0); + } + + path_vec[path_vec_size++] =3D qos_graph_edge_get_name(path->path_e= dge); + /* detect if edge has command line args */ + after_cmd =3D qos_graph_edge_get_after_cmd_line(path->path_edge); + after_device =3D qos_graph_edge_get_extra_device_opts(path->path_e= dge); + before_cmd =3D qos_graph_edge_get_before_cmd_line(path->path_edge); + edge =3D qos_graph_get_edge(path->name, node_name); + etype =3D qos_graph_edge_get_type(edge); + + if (before_cmd) { + g_string_append(cmd_line, before_cmd); + } + if (after_cmd) { + g_string_append(cmd_line2, after_cmd); + } + if (after_device) { + g_string_append(after_device_str, after_device); + } + } + + path_vec[path_vec_size++] =3D NULL; + g_string_append(cmd_line, after_device_str->str); + g_string_free(after_device_str, true); + + g_string_append(cmd_line, cmd_line2->str); + g_string_free(cmd_line2, true); + + /* + * here position 0 has /, position 1 has . + * The path must not have the , qtest_add_data_func adds it. + */ + path_str =3D g_strjoinv("/", path_vec + 1); + + /* Check that this is the test we care about: */ + char *test_name =3D strrchr(path_str, '/') + 1; + if (strcmp(test_name, fuzz_target->name->str) =3D=3D 0) { + /* + * put arch/machine in position 1 so run_one_test can do its work + * and add the command line at position 0. + */ + path_vec[1] =3D path_vec[0]; + path_vec[0] =3D g_string_free(cmd_line, false); + printf("path_str: %s path_vec[0]: %s [1]: %s\n", path_str, path_ve= c[0], + path_vec[1]); + + fuzz_path_vec =3D path_vec; + } else { + g_free(path_vec); + } + + g_free(path_str); +} diff --git a/tests/fuzz/qos_helpers.h b/tests/fuzz/qos_helpers.h new file mode 100644 index 0000000000..baf9b49e9c --- /dev/null +++ b/tests/fuzz/qos_helpers.h @@ -0,0 +1,17 @@ +#ifndef QOS_HELPERS_H +#define QOS_HELPERS_H + +#include "qemu/osdep.h" +#include "qapi/qmp/qdict.h" +#include "qapi/qmp/qbool.h" +#include "qapi/qmp/qstring.h" +#include "libqtest.h" +#include "qapi/qmp/qlist.h" +#include "libqos/qgraph_internal.h" + + +void qos_set_machines_devices_available(void); +void *allocate_objects(QTestState *qts, char **path, QGuestAllocator **p_a= lloc); +void walk_path(QOSGraphNode *orig_path, int len); +void qos_build_main_args(void); +#endif --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989301299263.7278852765038; Mon, 5 Aug 2019 00:15:01 -0700 (PDT) Received: from localhost ([::1]:51312 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXCu-0003KF-Al for importer@patchew.org; Mon, 05 Aug 2019 03:15:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37368) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9J-0003b5-8h for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9I-00022q-3b for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:17 -0400 Received: from mail-eopbgr680101.outbound.protection.outlook.com ([40.107.68.101]:34519 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9H-00022H-Us for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:16 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:15 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LZJPbC6ubhOYMV05sKdlI2bwQy8s4HkvAR0H5XJnFcRe8LEGSSAWGizfV2XtSRt6Pmx9VS8TsQCBFdnsReO/l3a28sOCblY+J7S6IwH/3Tf3V4IZUO6OgeJcm3XM+YwkOUrmtFdJq1TWwixU57fDqG7/a65j8tsf7r6yZIueMrV73bJT+BM8WgTNDwAKE3xw4i8qLQrtD6XbLchz1skEIbjH/Jqa3KhriKOYAISMoLSCJvM/gtBngmHjDracM6o7fOa/9THFU6bdg+Ff6ycOYMoRQiweIjGXWV9tvuf/VIAsO4hDR9xUdQieTdTiAIDmep8BgNFfF8CTZmIwS8Rhnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j64WcXAtrFzH8PuU4KljLiL2xd3ZBo7ZqZsYscC2wWg=; b=UY8rcte0OUhwN1QueCCnTJVxSqyJlFlj87TbE/WNOw1nDpHcTCAt8r3DKMYfKLX85wt7wFPxj/OaGRy5iINJ36DDP1xCFPDhkxMeyseyPsfUD/LROGYL84vGw8DcFyJ9rNjkkFnw2Hh/eyi8KZL6qLYHDFeGsLaPTEDLVdm78u3o0eWKqN8OMcVzqEiMEq6cQXyFKa1p50tc53xEDo5R7TqSTl3V4iMyVs6+zXfvrUQxQpLTpah9TEYc3ZSxL5Pjmf9hKSdk5AaY1wDJGy22GKeT4n/c2W6seGL+vQJkt3TyOfYqJEdc1PMwTU9LkwTVYTw9Y3UD6x4mmtqW2HheIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j64WcXAtrFzH8PuU4KljLiL2xd3ZBo7ZqZsYscC2wWg=; b=kFhV9qFnbVudGmWdn7OD154HCbzLMZ8pI54HsDrtF00bdPWznxMoZvsFA9BQS8VPesu4I98hCLwArFKo/MF4GoIOGO4GbVkq2GkpMhDkA75FK6OtZJK1PIKoOAk/G7TJn5duZDr/fo3aUjYb2vT5Dvkbn0yDHxgc38vwRnPFl40= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 14/17] fuzz: Add forking support to the fuzzer Thread-Index: AQHVS1z4+DrgWQpDM0G8sJ7j+7r3GA== Date: Mon, 5 Aug 2019 07:11:15 +0000 Message-ID: <20190805071038.32146-15-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9bf4c8bd-43a0-47a7-5ca5-08d719741a94 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-ms-exchange-purlcount: 2 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3044; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6306002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(966005)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(14444005)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: rJhK5zHmXDcXJ8DIfM7pIaa64qTrOrL9MKEV7mCXkCsLU3wW6npK4pa7EKYdJFNg5IBqT8H0fHHNX7g/Xbn47JPyzLCa3lmXYrKi9pYlvc65itFcrsys31HmqfFG7vjgOHz+HjksNklG/25CI3UCQI76S84yoK1sqf46QiaBqDjWHvxepF1lZ9Q7LYDT+unxgdLlaZQM0oY2s4eFtYn81+eQBxWT6SGyMO7v2/QvpKosZmNvcL+D8Cly1yA2qpWhTFw8YuulX4vRgjA6vRNemCPKKDeF2+Pzbb4D/FQwppmpNxBSY3B1JLPK6K8PNF6GM90/IhZoTM3GxqEADwk3Plk0ZqFdDK6hbv1qdf8Hj/Tz0qNO6u+ZCkZbL05wkIoxoKouZTgr+W5KTkQEudO/XitWwOAbXUS/NMHlOzk3iFo= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 9bf4c8bd-43a0-47a7-5ca5-08d719741a94 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:15.0975 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.101 Subject: [Qemu-devel] [RFC PATCH v2 14/17] fuzz: Add forking support to the fuzzer 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: "pbonzini@redhat.com" , "bsd@redhat.com" , "stefanha@redhat.com" , "Oleinik, Alexander" 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" Forking is a simple way of ensuring that state doesn't leak between runs. This patch depends on a modification to libfuzzer: https://reviews.llvm.org/D65672 Signed-off-by: Alexander Oleinik --- tests/fuzz/fuzzer_hooks.c | 62 +++++++++++++++++++++++++++++++++++++++ tests/fuzz/fuzzer_hooks.h | 21 +++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 tests/fuzz/fuzzer_hooks.c create mode 100644 tests/fuzz/fuzzer_hooks.h diff --git a/tests/fuzz/fuzzer_hooks.c b/tests/fuzz/fuzzer_hooks.c new file mode 100644 index 0000000000..87c94ef65f --- /dev/null +++ b/tests/fuzz/fuzzer_hooks.c @@ -0,0 +1,62 @@ +#include "qemu/osdep.h" +#include "qemu/units.h" +#include "qapi/error.h" +#include "qemu-common.h" +#include "fuzzer_hooks.h" + +#include +#include + + + +void *counter_shm; +size_t feature_shm_len; +uintptr_t feature_shm; +size_t offset; + +typedef struct CoverageRegion { + uint8_t *start; + size_t length; + bool store; /* Set this if it needs to be copied to the forked process= */ +} CoverageRegion; + +CoverageRegion regions[10]; +int region_index; + + +void counter_shm_init(void) +{ + LLVMFuzzerIterateFeatureRegions(&measure_shm_size); + feature_shm =3D (uintptr_t)mmap(NULL, feature_shm_len, + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); +} + +void counter_shm_store(void) +{ + offset =3D 0; + LLVMFuzzerIterateFeatureRegions(&feature_store); +} + +void counter_shm_load(void) +{ + offset =3D 0; + LLVMFuzzerIterateFeatureRegions(&feature_load); +} + +void feature_load(void *start, size_t len) +{ + memcpy(start, (void *)(feature_shm + offset), len); + offset +=3D len; +} + +void feature_store(void *start, size_t len) +{ + memcpy((void *)(feature_shm + offset), start, len); + offset +=3D len; +} + +void measure_shm_size(void *start, size_t len) +{ + feature_shm_len +=3D len; +} + diff --git a/tests/fuzz/fuzzer_hooks.h b/tests/fuzz/fuzzer_hooks.h new file mode 100644 index 0000000000..2f411193dd --- /dev/null +++ b/tests/fuzz/fuzzer_hooks.h @@ -0,0 +1,21 @@ +#ifndef FUZZER_HOOKS_H +#define FUZZER_HOOKS_H + + +/* NOTE: Pending https://reviews.llvm.org/D65672 + * Alternatively, a similar functionality can be added fairly straightforw= ardly + * with AFL deferred fork mode, albeit requiring a different fuzzer and co= mpiler + * https://github.com/mirrorer/afl/blob/master/llvm_mode/README.llvm#L82 + */ +extern void LLVMFuzzerIterateFeatureRegions(void (*CB)(void *, size_t)); + +void measure_shm_size(void *start, size_t len); + +void counter_shm_init(void); +void counter_shm_store(void); +void counter_shm_load(void); +void feature_load(void *start, size_t len); +void feature_store(void *start, size_t len); + +#endif + --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989525178547.060724249537; Mon, 5 Aug 2019 00:18:45 -0700 (PDT) Received: from localhost ([::1]:51370 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXGW-0001Mb-6v for importer@patchew.org; Mon, 05 Aug 2019 03:18:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37391) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9K-0003fv-Qb for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9J-00023N-5f for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:18 -0400 Received: from mail-eopbgr680111.outbound.protection.outlook.com ([40.107.68.111]:35968 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9I-000237-W5 for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:17 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:16 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E2qSTbqTnKc4+j4qk/PAHFXcn/9ANg+9m8/oaYAK3Kb6Fe1+jBdA56SlYtbdE04T48ZbNaaIcYmXCdIJwla64BgV7Kmu5WN/U6EWsDTORHoryXKt/JPVaFTfMf5iGAq3Yqx6UYLWLjNeD+8DfK+dMH1lOF3tcEkjF21UzbWclOs+t0H4bqLCT8zYEsT7eTXQlTfeFbigGzF4COeBR45m9d9XznJL5lJ/5zHIvrf1fTQZH927VF+fXBo1wYLjFSjaOK8aF7/KQ/QI66+UgNn4SzUPxzBPO66CxY1T0QVGEJpmTdzUR3uJHP/ZBjfmtsO7Tv0gfm2LLjGbYhGeM06/pA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6KCHVyzZSKjr2PTOKKS7t1UICzMJ9giXxQ5aY63arbw=; b=NIwQILJbK1Ce0FKEJyLBndZCXV0ib8kLS/zSZFGR8kT1FwT1X8V/pnI0/e36S5cVrjkeEgMqfTPA+JhDmVRAWm39lbfRM7oOnUvCBEn7mJNT848nkI8GGfUWN2CbL9k7g7BQVS55v+/H3zVtVYjv53F1yfpwYZmTyv1mhTHlB0n3EvlDdiyKrSvQ1+jlW03j7HUA927QGi7s5/un4Yh01JB6aay8HZjTLuAsNJ/P9puhK1pU+tGh1H7kCKwJcILf3kHzZ+K0W7eHzUnHicYfSzSuEyxEaI/hzZrdjxIgJ1WcDsP7EIQMY8Y2sOjObPoTRIAUN4PnRY4c4SrpfcbHEA== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6KCHVyzZSKjr2PTOKKS7t1UICzMJ9giXxQ5aY63arbw=; b=hfLqO8RVXmlBfyseeIrK6R1ubfANNmqb4SzDDb5QOm8InuY2OfGxSemzJnO+hZ8MZKKMRGyWH38IpuLSEp7+5lXxKOS5NUKM8fEGrndYQPArhWMTTdhjdSWbnCFUc3RuWbdyJccZFzLfqVxv4S8OqOhwslVbOWUGhAdUtLLqo4Y= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 15/17] fuzz: Add general qtest fuzz-target Thread-Index: AQHVS1z4y4A/MADulEqNBrNhzpAPuA== Date: Mon, 5 Aug 2019 07:11:15 +0000 Message-ID: <20190805071038.32146-16-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a36c1158-b428-4cac-1faf-08d719741b11 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:321; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: bMu1DKn9RyDynLN5qfmAi6jQ5U3QxKyCbQq0t7jpnUTr1Kgr4yeWwzlGyVGS3nNCm0x0ZXeUPYPkxzgU+PTNu8Kkj/1oum1+hr1n4QbJLx0zPv3tAtuBvcMGQsU33WNZYxBXO5lHo9i1D0w38YFyAc1fwbAYST2anGTA6zRYjFPW6mmLT1ZZfD9Z1ZTeeu9mvDsiX7dIjcrSGqTi3sCTWrnUyhI4Ge9+Gh+xc6wrJDgKtTVErFrVqkeV84b08Njr14qm+xy38YtWFYKFoaEKktp/ygjyx07eNjqUmE1jL159gEVCZkd2GUuRm5GjjpEMtTBCIxGapwCEcBypUJVuzEO+DP+msoRRaKXfKUxcPcqRJLgvyIC+9OHUweQF6D0Si4VuWiruFNMFBbuNrktYeUuwVXU+Fem68SQtM3ORACU= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: a36c1158-b428-4cac-1faf-08d719741b11 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:15.9341 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.111 Subject: [Qemu-devel] [RFC PATCH v2 15/17] fuzz: Add general qtest fuzz-target 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: "pbonzini@redhat.com" , "bsd@redhat.com" , "stefanha@redhat.com" , "Oleinik, Alexander" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alexander Oleinik --- tests/fuzz/qtest_fuzz.c | 260 ++++++++++++++++++++++++++++++++++++++++ tests/fuzz/qtest_fuzz.h | 37 ++++++ 2 files changed, 297 insertions(+) create mode 100644 tests/fuzz/qtest_fuzz.c create mode 100644 tests/fuzz/qtest_fuzz.h diff --git a/tests/fuzz/qtest_fuzz.c b/tests/fuzz/qtest_fuzz.c new file mode 100644 index 0000000000..a4560535e1 --- /dev/null +++ b/tests/fuzz/qtest_fuzz.c @@ -0,0 +1,260 @@ +#include "qemu/osdep.h" +#include "qemu/units.h" +#include "qapi/error.h" +#include "qemu-common.h" +#include "exec/memory.h" +#include "exec/address-spaces.h" +#include "sysemu/sysemu.h" +#include "qemu/main-loop.h" +#include +#include "qemu-common.h" +#include "fuzzer_hooks.h" + + +#include "fuzz.h" +#include "qtest_fuzz.h" +#include "tests/libqtest.h" +#include "fuzz/qos_fuzz.h" + + +/* Make sure that the io_port is mapped to some device */ +static uint16_t normalize_io_port(uint64_t addr) +{ + return addr; + addr =3D addr % total_io_mem; + fuzz_memory_region *fmr =3D fuzz_memory_region_head; + while (addr !=3D 0) { + if (!fmr->io) { + fmr =3D fmr->next; + continue; + } + if (addr <=3D fmr->length) { + addr =3D fmr->start + addr; + break; + } + addr -=3D fmr->length + 1; + fmr =3D fmr->next; + } + /* Stuff that times out or hotplugs.. */ + if (addr >=3D 0x5655 && addr <=3D 0x565b) { + return 0; + } + if (addr >=3D 0x510 && addr <=3D 0x518) { + return 0; + } + /* PCI Hotplug */ + if (addr >=3D 0xae00 && addr <=3D 0xae13) { + return 0; + } + /* CPU Hotplug */ + if (addr >=3D 0xaf00 && addr <=3D 0xaf1f) { + return 0; + } + return addr; +} + +/* Make sure that the memory address is mapped to some interesting device = */ +static uint16_t normalize_mem_addr(uint64_t addr) +{ + return addr; + addr =3D addr % total_ram_mem; + fuzz_memory_region *fmr =3D fuzz_memory_region_head; + while (addr !=3D 0) { + if (fmr->io) { + fmr =3D fmr->next; + continue; + } + if (addr <=3D fmr->length) { + return fmr->start + addr; + } + addr -=3D fmr->length + 1; + fmr =3D fmr->next; + } + return addr; +} + +static void qtest_fuzz(const unsigned char *Data, size_t Size) +{ + const unsigned char *pos =3D Data; + const unsigned char *End =3D Data + Size; + + qtest_cmd *cmd; + + while (pos < Data + Size) { + /* Translate the fuzz input to a qtest command */ + cmd =3D &commands[(*pos) % (sizeof(commands) / sizeof(qtest_cmd))]; + pos++; + + if (strcmp(cmd->name, "clock_step") =3D=3D 0) { + /* TODO: This times out */ + /* qtest_clock_step_next(s); */ + } else if (strcmp(cmd->name, "outb") =3D=3D 0) { + if (pos + sizeof(uint16_t) + sizeof(uint8_t) < End) { + uint16_t addr =3D *(int16_t *)(pos); + pos +=3D sizeof(uint16_t); + uint8_t val =3D *(uint16_t *)(pos); + pos +=3D sizeof(uint8_t); + addr =3D normalize_io_port(addr); + qtest_outb(s, addr, val); + } + } else if (strcmp(cmd->name, "outw") =3D=3D 0) { + if (pos + sizeof(uint16_t) + sizeof(uint16_t) < End) { + uint16_t addr =3D *(int16_t *)(pos); + pos +=3D sizeof(uint16_t); + uint16_t val =3D *(uint16_t *)(pos); + pos +=3D sizeof(uint16_t); + addr =3D normalize_io_port(addr); + qtest_outw(s, addr, val); + } + } else if (strcmp(cmd->name, "outl") =3D=3D 0) { + if (pos + sizeof(uint16_t) + sizeof(uint32_t) < End) { + uint16_t addr =3D *(int16_t *)(pos); + pos +=3D sizeof(uint16_t); + uint32_t val =3D *(uint32_t *)(pos); + pos +=3D sizeof(uint32_t); + addr =3D normalize_io_port(addr); + qtest_outl(s, addr, val); + } + } else if (strcmp(cmd->name, "inb") =3D=3D 0) { + if (pos + sizeof(uint16_t) < End) { + uint16_t addr =3D *(int16_t *)(pos); + pos +=3D sizeof(uint16_t); + addr =3D normalize_io_port(addr); + qtest_inb(s, addr); + } + } else if (strcmp(cmd->name, "inw") =3D=3D 0) { + if (pos + sizeof(uint16_t) < End) { + uint16_t addr =3D *(int16_t *)(pos); + pos +=3D sizeof(uint16_t); + addr =3D normalize_io_port(addr); + qtest_inw(s, addr); + } + } else if (strcmp(cmd->name, "inl") =3D=3D 0) { + if (pos + sizeof(uint16_t) < End) { + uint16_t addr =3D *(int16_t *)(pos); + pos +=3D sizeof(uint16_t); + addr =3D normalize_io_port(addr); + qtest_inl(s, addr); + } + } else if (strcmp(cmd->name, "writeb") =3D=3D 0) { + if (pos + sizeof(uint32_t) + sizeof(uint8_t) < End) { + uint32_t addr =3D *(int32_t *)(pos); + pos +=3D sizeof(uint32_t); + uint8_t val =3D *(uint8_t *)(pos); + pos +=3D sizeof(uint8_t); + addr =3D normalize_mem_addr(addr); + qtest_writeb(s, addr, val); + } + } else if (strcmp(cmd->name, "writew") =3D=3D 0) { + if (pos + sizeof(uint32_t) + sizeof(uint16_t) < End) { + uint32_t addr =3D *(int32_t *)(pos); + pos +=3D sizeof(uint32_t); + uint16_t val =3D *(uint16_t *)(pos); + pos +=3D sizeof(uint16_t); + addr =3D normalize_mem_addr(addr); + qtest_writew(s, addr, val); + } + } else if (strcmp(cmd->name, "writel") =3D=3D 0) { + if (pos + sizeof(uint32_t) + sizeof(uint32_t) < End) { + uint32_t addr =3D *(int32_t *)(pos); + pos +=3D sizeof(uint32_t); + uint32_t val =3D *(uint32_t *)(pos); + pos +=3D sizeof(uint32_t); + addr =3D normalize_mem_addr(addr); + qtest_writel(s, addr, val); + } + } else if (strcmp(cmd->name, "readb") =3D=3D 0) { + if (pos + sizeof(uint32_t) < End) { + uint32_t addr =3D *(int32_t *)(pos); + pos +=3D sizeof(uint32_t); + addr =3D normalize_mem_addr(addr); + qtest_readb(s, addr); + } + } else if (strcmp(cmd->name, "readw") =3D=3D 0) { + if (pos + sizeof(uint32_t) < End) { + uint32_t addr =3D *(int32_t *)(pos); + pos +=3D sizeof(uint32_t); + addr =3D normalize_mem_addr(addr); + qtest_readw(s, addr); } + } else if (strcmp(cmd->name, "readl") =3D=3D 0) { + if (pos + sizeof(uint32_t) < End) { + uint32_t addr =3D *(int32_t *)(pos); + pos +=3D sizeof(uint32_t); + addr =3D normalize_mem_addr(addr); + qtest_readl(s, addr); + } + } else if (strcmp(cmd->name, "write_dma") =3D=3D 0) { + if (pos + sizeof(uint32_t) + sizeof(uint16_t) < End) { + uint32_t addr =3D *(int32_t *)(pos); + pos +=3D sizeof(uint32_t); + uint32_t val =3D 0x100000; + addr =3D normalize_mem_addr(addr); + qtest_writel(s, addr, val); + } + } else if (strcmp(cmd->name, "out_dma") =3D=3D 0) { + if (pos + sizeof(uint16_t) + sizeof(uint16_t) < End) { + uint16_t addr =3D *(int16_t *)(pos); + pos +=3D sizeof(uint16_t); + uint32_t val =3D 0x100000; + addr =3D normalize_io_port(addr); + qtest_outl(s, addr, val); + } + } + /* main_loop_wait(false); */ + } +} + +static void *net_test_setup_nosocket(GString *cmd_line, void *arg) +{ + g_string_append(cmd_line, " -netdev hubport,hubid=3D0,id=3Dhs0 "); + return arg; +} + +static void fuzz_fork(const unsigned char *Data, size_t Size) +{ + if (fork() =3D=3D 0) { + qtest_fuzz(Data, Size); + counter_shm_store(); + _Exit(0); + } else { + wait(NULL); + counter_shm_load(); + } +} + +static void fork_pre_main(void) +{ + qos_setup(); + counter_shm_init(); +} + +int qtest_argc; +char **qtest_argv; +static void register_qtest_fuzz_targets(void) +{ + QOSGraphTestOptions opts =3D { + .before =3D net_test_setup_nosocket, + }; + FuzzTarget fuzz_opts =3D { + .pre_main =3D qos_setup, + .pre_save_state =3D qos_init_path, + .save_state =3D &save_vm_state, + .reset =3D &load_vm_state, + .pre_fuzz =3D NULL, + .fuzz =3D &qtest_fuzz, + .post_fuzz =3D NULL, + }; + fuzz_add_qos_target("qtest-fuzz", "fuzz qtest commands and a dma buffe= r. \ + Reset device state for each run", "e1000e", &opts, &fuzz_opts); + + fuzz_opts.pre_main =3D &fork_pre_main; + fuzz_opts.pre_fuzz =3D NULL; + fuzz_opts.fuzz =3D &fuzz_fork; + fuzz_opts.reset =3D NULL; + fuzz_add_qos_target("qtest-fork-fuzz", "fuzz qtest commands and a dma \ + buffer. Use COW/forking to reset state", "e1000e", &opts, + &fuzz_opts); + +} + +fuzz_target_init(register_qtest_fuzz_targets); diff --git a/tests/fuzz/qtest_fuzz.h b/tests/fuzz/qtest_fuzz.h new file mode 100644 index 0000000000..c4cf08f5a2 --- /dev/null +++ b/tests/fuzz/qtest_fuzz.h @@ -0,0 +1,37 @@ +#ifndef _QTEST_FUZZ_H_ +#define _QTEST_FUZZ_H_ + +typedef struct qtest_cmd { + char name[32]; + uint8_t size; +} qtest_cmd; + +typedef uint32_t addr_type; + +static qtest_cmd commands[] =3D { + {"clock_step", 0}, + {"clock_step", 0}, + {"clock_set", 1}, + {"outb", 2}, + {"outw", 2}, + {"outl", 2}, + {"inb", 1}, + {"inw", 1}, + {"inl", 1}, + {"writeb", 2}, + {"writew", 2}, + {"writel", 2}, + {"writeq", 2}, + {"readb", 1}, + {"readw", 1}, + {"readl", 1}, + {"readq", 1}, + {"read", 2}, + {"write", 3}, + {"b64read", 2}, + {"b64write", 10}, + {"memset", 3}, + {"write_dma", 2}, + {"out_dma", 2}, +}; +#endif --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156498958945755.7468143558832; Mon, 5 Aug 2019 00:19:49 -0700 (PDT) Received: from localhost ([::1]:51388 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXHY-00035L-Gq for importer@patchew.org; Mon, 05 Aug 2019 03:19:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37404) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9L-0003j3-Ld for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9K-00024i-4k for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:19 -0400 Received: from mail-eopbgr680126.outbound.protection.outlook.com ([40.107.68.126]:42366 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9J-00023d-VV for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:18 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:16 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f6OHDdtQi1XcyPSnmSrKX91MUqM+Lek66uHKT5Yn00HBkIdVzuJv8DhkX9PkW8e8XbEtyHyejydcEh2NEwrAb0clqh69sKftKPfKnim9ofdNwUwdfqEF1X4Iv1aDkElsSnrHYtPzf+hAVA9vGIjQvjo0dXulqucyZVDB5JXoimDnqfmgyne5k37e+AA/gviKGG28Y+uCGMDvalBOyblhHuXqzZ8LaFxp3R1o3I9leH5jbbcbovRfxwZSSptnCKYwgTNlbrK9rlJEixIHazs1ZIjgjwBAJsM5jCZ36lKGiEdEyNWKF6SsO4a9Rs3nazG/jDDYD9pV/BwQWQHuAYfLiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ttLRTIgv/euOvBPkVNMmoEqfHY4YVUZuGHpW4s0f4Os=; b=Vu1gsM/ff9R35xC2YQf2lOD1xDo45AVBDxpIV3ZWayCZDt/froMGWWM6fYywIZCnSKRgWCUcUSlSDmtM4Zo0f22GJnECp0jJbpt+A0q+GG6vFVBc9TLAQA370OXMdW6jCYV19FiuBzsRqntaVl4kRB1IX+yXas8fIuj4DbPGS/VzUGk/VFzOS/H6JdQAyB8Vkgy1ud5OViVfi8HCw04AwDc7VU8JGuiHGmnL7gfGa5D1hwYnRHSBP/n0Loxiffvky3/s0Ddw4sBq6aW48Qhvi5ZH32nebINWhbqA9Q0QELuqXU8X2xxRu8xsDOgI4JVGvh8FrK1Wvk92Y7KBNM0O6Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ttLRTIgv/euOvBPkVNMmoEqfHY4YVUZuGHpW4s0f4Os=; b=rDGwwnL5Kqbz+QMttSM9+kGhg+CgzQIIdHk1qtbER38oL7vGAZv3OIiRZ8spuDVQQo5l/4CMrRefRPIwsX5JTQuUI78GseKLMrbt/U3l8M8NEmMo9N2sDq/dDuLmT4ikAxq49KvHhfdcMUYans1INElWtwqJBbJqN6jWXUy/4Os= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 16/17] fuzz: Add virtio-net fuzz targets Thread-Index: AQHVS1z5z57WA2eYQ0W72mbgaHRTUg== Date: Mon, 5 Aug 2019 07:11:16 +0000 Message-ID: <20190805071038.32146-17-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0236dfc3-51f7-4d70-e2bc-08d719741b8d x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: IaAnmcMIn9cnmmnr6X0GLdnRm1aD2uRSef09nt+eK+dscoDMQieunIxGnWJ2KpnOwHYzdBC/ZxvJu/zqN6Aw8Xu7XqDMQ/niG+OP96y1EzRmmzqIEGu1eDE4TMzQphQTY20RWZij8nxqD7kdAIrFpvDdvsfhYQNAz/0sE1zDIIw4wICGXmCset5j+pCIWDFbmVNfaiXu2ba3yDVhd7LQzz0BQnAvIpbKJteUBu8ucqkljdZ2niYQLnXSy8L6S2FIBTB0PWeG6BQV/IiKEyqJV0H4AUcScYMrfecMvthg8+iNHSITxjRH2/4C193vPuLOrZc1plspkPoFebWJDPZQj/KBaypb5yTwkyKP47liPUKMNzGyvgpSLp6HEtA7U9C5JOdktxNcBAxOOgJwfsZvW/wrznBzTENXPDoyG9r0l58= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 0236dfc3-51f7-4d70-e2bc-08d719741b8d X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:16.7537 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.126 Subject: [Qemu-devel] [RFC PATCH v2 16/17] fuzz: Add virtio-net fuzz targets 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: "pbonzini@redhat.com" , "bsd@redhat.com" , "stefanha@redhat.com" , "Oleinik, Alexander" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alexander Oleinik --- tests/fuzz/virtio-net-fuzz.c | 254 +++++++++++++++++++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100644 tests/fuzz/virtio-net-fuzz.c diff --git a/tests/fuzz/virtio-net-fuzz.c b/tests/fuzz/virtio-net-fuzz.c new file mode 100644 index 0000000000..dfba2e3ca7 --- /dev/null +++ b/tests/fuzz/virtio-net-fuzz.c @@ -0,0 +1,254 @@ +#include "qemu/osdep.h" +#include "qemu/units.h" +#include "qapi/error.h" +#include "qemu-common.h" +#include "exec/memory.h" +#include "sysemu/sysemu.h" +#include "qemu/main-loop.h" + +#include "hw/virtio/virtio-net.h" +#include "hw/virtio/virtio.h" +#include "tests/libqos/virtio-net.h" +#include "fuzzer_hooks.h" +#include "snapshotting.h" + +#include "fuzz.h" +#include "qos_fuzz.h" + +#define MAX_INPUT_BUFFERS 10 + +typedef struct vq_action { + uint8_t queue; + uint8_t length; + uint8_t write; + uint8_t next; + bool kick; +} vq_action; + +static void virtio_net_ctrl_fuzz(const unsigned char *Data, size_t Size) +{ + uint64_t req_addr[10]; + int reqi =3D 0; + uint32_t free_head; + + QGuestAllocator *t_alloc =3D qos_alloc; + + QVirtioNet *net_if =3D qos_obj; + QVirtioDevice *dev =3D net_if->vdev; + QVirtQueue *q; + vq_action vqa; + int iters =3D 0; + while (true) { + if (Size < sizeof(vqa)) { + break; + } + vqa =3D *((vq_action *)Data); + Data +=3D sizeof(vqa); + Size -=3D sizeof(vqa); + + q =3D net_if->queues[2]; + + vqa.length =3D vqa.length >=3D Size ? Size : vqa.length; + + req_addr[reqi] =3D guest_alloc(t_alloc, vqa.length); + memwrite(req_addr[reqi], Data, vqa.length); + if (iters =3D=3D 0) { + free_head =3D qvirtqueue_add(q, req_addr[reqi], vqa.length, + vqa.write, vqa.next); + } else { + qvirtqueue_add(q, req_addr[reqi], vqa.length, vqa.write , vqa.= next); + } + iters++; + reqi++; + if (iters =3D=3D 10) { + break; + } + Data +=3D vqa.length; + Size -=3D vqa.length; + } + if (iters) { + qvirtqueue_kick(dev, q, free_head); + /* qtest_clock_step_next(s); */ + main_loop_wait(false); + for (int i =3D 0; i < reqi; i++) { + guest_free(t_alloc, req_addr[i]); + } + } + qtest_clear_rxbuf(s); + qos_object_queue_destroy(qos_obj); +} + +static void virtio_net_ctrl_fuzz_multi(const unsigned char *Data, size_t S= ize) +{ + uint64_t req_addr[10]; + int reqi =3D 0; + uint32_t free_head; + + QGuestAllocator *t_alloc =3D qos_alloc; + + QVirtioNet *net_if =3D qos_obj; + QVirtioDevice *dev =3D net_if->vdev; + QVirtQueue *q; + vq_action vqa; + int iters =3D 0; + while (Size >=3D sizeof(vqa)) { + vqa =3D *((vq_action *)Data); + Data +=3D sizeof(vqa); + Size -=3D sizeof(vqa); + if (vqa.kick && free_head) { + qvirtqueue_kick(dev, q, free_head); + qtest_clock_step_next(s); + main_loop_wait(false); + for (int i =3D 0; i < reqi; i++) { + guest_free(t_alloc, req_addr[i]); + } + reqi =3D 0; + } else { + q =3D net_if->queues[2]; + + vqa.length =3D vqa.length >=3D Size ? Size : vqa.length; + + req_addr[reqi] =3D guest_alloc(t_alloc, vqa.length); + memwrite(req_addr[reqi], Data, vqa.length); + if (iters =3D=3D 0) { + free_head =3D qvirtqueue_add(q, req_addr[reqi], vqa.length, + vqa.write, vqa.next); + } else { + qvirtqueue_add(q, req_addr[reqi], vqa.length, vqa.write, + vqa.next) ; + } + iters++; + reqi++; + if (iters =3D=3D 10) { + break; + } + Data +=3D vqa.length; + Size -=3D vqa.length; + } + } + qtest_clear_rxbuf(s); + qos_object_queue_destroy(qos_obj); +} + +int *sv; +static void virtio_net_tx_fuzz(const unsigned char *Data, size_t Size) +{ + uint64_t req_addr[10]; + int reqi =3D 0; + uint32_t free_head; + + QGuestAllocator *t_alloc =3D qos_alloc; + + QVirtioNet *net_if =3D qos_obj; + QVirtioDevice *dev =3D net_if->vdev; + QVirtQueue *q; + vq_action vqa; + int iters =3D 0; + while (true) { + if (Size < sizeof(vqa)) { + break; + } + vqa =3D *((vq_action *)Data); + Data +=3D sizeof(vqa); + Size -=3D sizeof(vqa); + + q =3D net_if->queues[1]; + + vqa.length =3D vqa.length >=3D Size ? Size : vqa.length; + + req_addr[reqi] =3D guest_alloc(t_alloc, vqa.length); + memwrite(req_addr[reqi], Data, vqa.length); + if (iters =3D=3D 0) { + free_head =3D qvirtqueue_add(q, req_addr[reqi], vqa.length, + vqa.write, vqa.next); + } else { + qvirtqueue_add(q, req_addr[reqi], vqa.length, vqa.write, vqa.n= ext); + } + iters++; + reqi++; + if (iters =3D=3D 10) { + break; + } + Data +=3D vqa.length; + Size -=3D vqa.length; + } + if (iters) { + qvirtqueue_kick(dev, q, free_head); + qtest_clock_step_next(s); + main_loop_wait(false); + for (int i =3D 0; i < reqi; i++) { + guest_free(t_alloc, req_addr[i]); + } + } + qtest_clear_rxbuf(s); + qos_object_queue_destroy(qos_obj); +} + +static void *virtio_net_test_setup_socket(GString *cmd_line, void *arg) +{ + if (!sv) { + sv =3D g_new(int, 2); + int ret =3D socketpair(PF_UNIX, SOCK_STREAM, 0, sv); + fcntl(sv[0], F_SETFL, O_NONBLOCK); + g_assert_cmpint(ret, !=3D, -1); + } + g_string_append_printf(cmd_line, " -netdev socket,fd=3D%d,id=3Dhs0 ", = sv[1]); + return arg; +} + +static void fuzz_fork(const unsigned char *Data, size_t Size) +{ + if (fork() =3D=3D 0) { + main_loop_wait(false); + virtio_net_ctrl_fuzz(Data, Size); + counter_shm_store(); + _Exit(0); + } else { + wait(NULL); + counter_shm_load(); + } +} + +static void fork_pre_main(void) +{ + qos_setup(); + counter_shm_init(); +} + +static void register_virtio_net_fuzz_targets(void) +{ + QOSGraphTestOptions opts =3D { + .before =3D virtio_net_test_setup_socket, + }; + FuzzTarget fuzz_opts =3D { + .pre_main =3D qos_setup, + .pre_save_state =3D NULL, + .save_state =3D NULL, + .reset =3D &reboot, + .pre_fuzz =3D &qos_init_path, + .fuzz =3D &virtio_net_ctrl_fuzz, + .post_fuzz =3D NULL, + }; + fuzz_add_qos_target("virtio-net-ctrl-fuzz", "virtio-net ctrl virtqueue= \ + fuzzer", "virtio-net", &opts, &fuzz_opts); + + fuzz_opts.fuzz =3D &virtio_net_ctrl_fuzz_multi; + fuzz_add_qos_target("virtio-net-ctrl-multi-fuzz", "virtio-net ctrl\ + virtqueue fuzzer with multiple kicks", "virtio-net", &opts, + &fuzz_opts); + + fuzz_opts.fuzz =3D &virtio_net_tx_fuzz; + fuzz_add_qos_target("virtio-net-tx-fuzz", "virtio-net tx virtqueue fuz= zer", + "virtio-net", &opts, &fuzz_opts); + + fuzz_opts.pre_main =3D &fork_pre_main; + fuzz_opts.pre_save_state =3D &qos_init_path; + fuzz_opts.reset =3D NULL; + fuzz_opts.pre_fuzz =3D NULL; + fuzz_opts.fuzz =3D &fuzz_fork; + fuzz_add_qos_target("virtio-net-fork", "virtio-net tx virtqueue", + "virtio-net", &opts, &fuzz_opts); + +} + +fuzz_target_init(register_virtio_net_fuzz_targets); --=20 2.20.1 From nobody Sat Apr 27 22:50:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=fail (Bad Signature) Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1564989418449437.36787435269946; Mon, 5 Aug 2019 00:16:58 -0700 (PDT) Received: from localhost ([::1]:51338 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huXEh-0006b2-Ob for importer@patchew.org; Mon, 05 Aug 2019 03:16:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37402) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huX9L-0003iE-FB for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1huX9K-00025D-GJ for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:19 -0400 Received: from mail-eopbgr680126.outbound.protection.outlook.com ([40.107.68.126]:42366 helo=NAM04-BN3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1huX9K-00023d-Ap for qemu-devel@nongnu.org; Mon, 05 Aug 2019 03:11:18 -0400 Received: from CY4PR03MB2872.namprd03.prod.outlook.com (10.175.118.17) by CY4PR03MB2646.namprd03.prod.outlook.com (10.173.43.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.16; Mon, 5 Aug 2019 07:11:17 +0000 Received: from CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a]) by CY4PR03MB2872.namprd03.prod.outlook.com ([fe80::6cce:cc85:9e3:d33a%4]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 07:11:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XDFu94Pcy4BQZ+6RI+fa0MWUPkhQp/pngfJn6sHd6hNWH1mJWxBl9/h/MTKP0UnsRE2C/AKuZrvyYoMgFS+aGG94xb1q6yKn0+rETZvmF1/CBP+bz8nNVkHUpys6IwIa5k1S/2IG70dg8tMOjALdU2y8i2rEU+tRPBNaeVv1HYc/bsY4NKk0H/4dV0M8ofY5rCMjGaILBiP05aeRiwlLVPpbxTmcxKGqNRgKH5QzVW65a/8G35u9Lr/4xEwDKBPxv+fj15wf8BfryG1pmGnQC/+AxMAjyf9RxEtk/YUbZurIAHS+p2ceiIfmz2xBaIOzgKas5GeBCy1f0WNs1FDTuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8l8lnhPsOGDgd7skocNOZch6EG2f6gyeDYi2ODejIW0=; b=W3dPlGtsZaLAldvxJgvwupiRowY/PxpXcMbD+2pFrVv2JWCwtLiMwzcunKQFtv1qmZ9d1zwhXts4Er9OBItUzbAW4vncwN2rqnP2OlSJEeuUBolUPpzOYCzKHQjaR1hRy7WMGvJmnszHit4VCktTnLrb/KnbNq16kURDrupYasaSDyLK01ebS/wa/LElPn+7o73Pn2AofZ72hBM6prhD07VFUQ/YPytEv56CzIKkKEBCpYVe9g+s8N4b+BbtzoWtFW734l9tesV1b9WzzPRR2T+4sitgYrlpHwhsDPmu5blDBHgLQ+spq1nSm9pp3g6ox/rPguqjzFeyfSXF3E1vJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=bu.edu;dmarc=pass action=none header.from=bu.edu;dkim=pass header.d=bu.edu;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector2-bushare-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8l8lnhPsOGDgd7skocNOZch6EG2f6gyeDYi2ODejIW0=; b=hWQo1Qb2iaL7fhkpKvhDfTNbaqlc23G0ARi6Q/WgfRUnVLM5UioBa/KxJzpywpHr267AF+NsqS0QXKV2mFgqVGeIoRlM2gNkZ77OYD/WnW4DotvUUSWG3sfs0/vQ8qj3R8TegFBQAvhhNhIEUOPFfPSFzT64mq3ZzCeYtduykcQ= From: "Oleinik, Alexander" To: "qemu-devel@nongnu.org" Thread-Topic: [RFC PATCH v2 17/17] fuzz: Add fuzz accelerator type Thread-Index: AQHVS1z5W3/msAY5EkOGLIdOZGp/TA== Date: Mon, 5 Aug 2019 07:11:17 +0000 Message-ID: <20190805071038.32146-18-alxndr@bu.edu> References: <20190805071038.32146-1-alxndr@bu.edu> In-Reply-To: <20190805071038.32146-1-alxndr@bu.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.20.1 x-originating-ip: [128.197.127.33] x-clientproxiedby: BL0PR02CA0068.namprd02.prod.outlook.com (2603:10b6:207:3d::45) To CY4PR03MB2872.namprd03.prod.outlook.com (2603:10b6:903:134::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=alxndr@bu.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 071fca2f-bf7b-4f32-e28f-08d719741c09 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CY4PR03MB2646; x-ms-traffictypediagnostic: CY4PR03MB2646: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:296; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(189003)(199004)(71200400001)(71190400001)(6916009)(186003)(2351001)(1076003)(76176011)(6436002)(53936002)(86362001)(5640700003)(52116002)(6512007)(26005)(5660300002)(102836004)(386003)(6506007)(2501003)(66066001)(75432002)(6486002)(66476007)(2906002)(88552002)(4326008)(8676002)(316002)(786003)(50226002)(54906003)(81166006)(14454004)(81156014)(68736007)(476003)(2616005)(11346002)(446003)(486006)(36756003)(66446008)(66946007)(256004)(64756008)(25786009)(99286004)(478600001)(6116002)(3846002)(7736002)(305945005)(66556008)(8936002)(42522002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2646; H:CY4PR03MB2872.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: IICle/Vs1sb/3LKzdu+yYdxNkSPuBL/HOHiZezQeANBmy58F3ydkubeNHhG3rYFzsaVmG7dRyvu84EXSH/xIgg/m7vx13xECQG8yhmlxAIF84kVJIjTYuWZMqUEYm9z9M4spDWbzr5kQfFg/CgP/04Y4XMwRtwlxa7AUxo6gGPh7wVAZ/GyGzFyChOUA/kIMwLt0zWAOHZzrBviK49FM/mDy4CU+AKQaIERFwnIhFIcXfU6k42jzqN+X5U2o/t6qWq+ZXBXoimSMVvyPGrau58aCOwOXwoUW4xLkX0uNmYQPJCq1m3MvXQNqihlzdfhdBBJ5EjZ31C5TUVLaVwz5MuXmGWkrLVLRNGbtadGyap1pK/E3s9uvT6UfVXKbxC+nDYJsfdmRQU37YsfZ/7lgsUgUDHsNjYpbIOuSK4XeG9U= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 071fca2f-bf7b-4f32-e28f-08d719741c09 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 07:11:17.5724 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: alxndr@bu.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2646 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.68.126 Subject: [Qemu-devel] [RFC PATCH v2 17/17] fuzz: Add fuzz accelerator type 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: "pbonzini@redhat.com" , "bsd@redhat.com" , "stefanha@redhat.com" , "Oleinik, Alexander" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alexander Oleinik --- accel/fuzz.c | 48 +++++++++++++++++++++++++++++++++++++++++++ include/sysemu/fuzz.h | 15 ++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 accel/fuzz.c create mode 100644 include/sysemu/fuzz.h diff --git a/accel/fuzz.c b/accel/fuzz.c new file mode 100644 index 0000000000..9af989aaa1 --- /dev/null +++ b/accel/fuzz.c @@ -0,0 +1,48 @@ +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qemu/module.h" +#include "qemu/option.h" +#include "qemu/config-file.h" +#include "sysemu/accel.h" +#include "sysemu/fuzz.h" +#include "sysemu/cpus.h" + + +static void fuzz_setup_post(MachineState *ms, AccelState *accel) +{ +} + +static int fuzz_init_accel(MachineState *ms) +{ + QemuOpts *opts =3D qemu_opts_create(qemu_find_opts("icount"), NULL, 0, + &error_abort); + qemu_opt_set(opts, "shift", "0", &error_abort); + configure_icount(opts, &error_abort); + qemu_opts_del(opts); + return 0; +} + +static void fuzz_accel_class_init(ObjectClass *oc, void *data) +{ + AccelClass *ac =3D ACCEL_CLASS(oc); + ac->name =3D "fuzz"; + ac->init_machine =3D fuzz_init_accel; + ac->setup_post =3D fuzz_setup_post; + ac->allowed =3D &fuzz_allowed; +} + +#define TYPE_FUZZ_ACCEL ACCEL_CLASS_NAME("fuzz") + +static const TypeInfo fuzz_accel_type =3D { + .name =3D TYPE_FUZZ_ACCEL, + .parent =3D TYPE_ACCEL, + .class_init =3D fuzz_accel_class_init, +}; + +static void fuzz_type_init(void) +{ + type_register_static(&fuzz_accel_type); +} + +type_init(fuzz_type_init); + diff --git a/include/sysemu/fuzz.h b/include/sysemu/fuzz.h new file mode 100644 index 0000000000..09a2a9ffdf --- /dev/null +++ b/include/sysemu/fuzz.h @@ -0,0 +1,15 @@ +#ifndef FUZZ_H +#define FUZZ_H + +bool fuzz_allowed; + +static inline bool fuzz_enabled(void) +{ + return fuzz_allowed; +} + +bool fuzz_driver(void); + +void fuzz_init(const char *fuzz_chrdev, const char *fuzz_log, Error **errp= ); + +#endif --=20 2.20.1