From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EAC67C18E5B for ; Tue, 17 Mar 2020 15:17:33 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A222320714 for ; Tue, 17 Mar 2020 15:17:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="lvrpAZDY" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A222320714 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jEDxy-0001jF-RF; Tue, 17 Mar 2020 15:17:14 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jEDxx-0001ir-0U for xen-devel@lists.xenproject.org; Tue, 17 Mar 2020 15:17:13 +0000 X-Inumbo-ID: 5d9d8b36-6862-11ea-bec1-bc764e2007e4 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (unknown [40.107.8.139]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 5d9d8b36-6862-11ea-bec1-bc764e2007e4; Tue, 17 Mar 2020 15:17:08 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CcbGzDvgmo4stBOG4bu8vBrLOBsHHyb1orhnCjgKg1wYFc0eKKlWXzkHM+aEtvZV9orOHXfSIcA+lHXOBt+4hvVWd4BA73bFBC7hXTv/GpYXi8R16vYItqlwWpUdu4QSvN9bmwhpmHBSXxzym6br5LMgSjBTW1d9zkwc1+POuOlqa6acHE2mWbHsdPRVNf353YbLHVSOZBOHwoRau9iNodXcUiImSwpRQFLZvoag1xARbQ+r57oOZxf1TAnUelxQEk2egJ0Zgl+w2DE2h8IarzUN/iUseM0g8W9R7SPNjNi2jMcd+ByriW5+M/PGRgflwfacNBu62N1hwNtlb41bpg== 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=XwTQjo26AZ7w0MXa3LZcBy1dibOpY9v7cdvOb/3d730=; b=mY6tbZaPJChnIgYPz9z2UhwqjHhPDVoDAk+iv++mOigHovD7FOF1Pqob+W80upMrhpBWcPe2Zz9CxZa34xXqe4h4PpgZ4WbkgjWP8yL/87OO+84Nwy9lUeCjle+r8sKniSI24S7h587KaG7EX9DlUKjKH71BYv/TY/kjZ+rrQZT5/CjoNeBGexUXVPAufqR5vggW0xInN3gwn7fY2rB6QYwWk/CDUg9NcgawSewG8MQ2+p1ndJNo2PicAmgEu/lizggtDS66H57OqI1ey5Yg2VRonx2DIdeVTTzDEGQx/1bHxYCnzUyskbAqw9G3VELNf+4LnpsThW5+etFlLa6Qjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XwTQjo26AZ7w0MXa3LZcBy1dibOpY9v7cdvOb/3d730=; b=lvrpAZDYBZ167kiV8jcQwrtjWROXyZZ9ivTnZVNADUjiKT2hX1jd0cTfKfppBI6I2Tv0ymcQD0XNob0s1lvM7lRzmVyaAp0/eBRt3zRgfsBbdD/lBxE/RaoplIs+zovAPBblRFueqZP7k5Vb/Q3emMvYKN7c4VDDj5VwCYJiSfw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from HE1PR0802MB2507.eurprd08.prod.outlook.com (10.175.35.136) by HE1PR0802MB2299.eurprd08.prod.outlook.com (10.172.125.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2814.22; Tue, 17 Mar 2020 15:17:05 +0000 Received: from HE1PR0802MB2507.eurprd08.prod.outlook.com ([fe80::4d32:e4e1:5b9f:240f]) by HE1PR0802MB2507.eurprd08.prod.outlook.com ([fe80::4d32:e4e1:5b9f:240f%12]) with mapi id 15.20.2814.021; Tue, 17 Mar 2020 15:17:05 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Date: Tue, 17 Mar 2020 18:16:25 +0300 Message-Id: <20200317151625.20797-10-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20200317151625.20797-1-vsementsov@virtuozzo.com> References: <20200317151625.20797-1-vsementsov@virtuozzo.com> X-ClientProxiedBy: AM0PR10CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::15) To HE1PR0802MB2507.eurprd08.prod.outlook.com (2603:10a6:3:e1::8) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.248) by AM0PR10CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2835.15 via Frontend Transport; Tue, 17 Mar 2020 15:17:04 +0000 X-Mailer: git-send-email 2.21.0 X-Originating-IP: [185.215.60.248] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a4de4470-1e7f-4b80-89eb-08d7ca864084 X-MS-TrafficTypeDiagnostic: HE1PR0802MB2299: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:111; X-Forefront-PRVS: 0345CFD558 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4636009)(346002)(366004)(39850400004)(376002)(396003)(136003)(199004)(26005)(52116002)(16526019)(86362001)(8676002)(186003)(6916009)(66476007)(7416002)(66556008)(66946007)(8936002)(6666004)(81156014)(6512007)(478600001)(69590400007)(6506007)(36756003)(81166006)(54906003)(6486002)(2906002)(30864003)(316002)(2616005)(4326008)(1076003)(956004)(5660300002); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0802MB2299; H:HE1PR0802MB2507.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: alCQNG+fBTQZPOOWGCgJ18uOgdw+aLj8/rID+FyBePMuqqWTShhzKXGXsZn0yyVJIPOe7rrhg/uiVhW5DbckipS0oNgUKRt7nvXIfAPCI/bSCnK2d2A59TVPOFSk9S3wYp1tl3D08AulTocmBGQdkEgviP0Q7lh+Sf49ijIn0rljGFXvFC7mpuMK7Tu+h8u5Ha5sNsLIPJzWp4zjwyAxU/Q3Y/vbsdJKJ3LhMz7Hh3JwpHhKd+TYLM1DqfOhF/DrHU0NS1Q2lZ8KI5ukaiwK4P6QfnW1B1TeDuZwttxsuD+YveCjX/sL+PopRrUv/WB9gZs8K9oo4PA6fAB5S0Ny/K1qBvLuYyj7VcueaYveyd8iTTg3SLZC/OVLfFbbj2p9EKKEv4JvQGkY+SKUhW03jUCjTVms6YRpOZ5KvivP0ZZF6KisKPv98uBrxGoQn1ShZoRLc3VoJDRMZul3sb/qdUroyGCHUljymqGMdeKp8OQo8Dhv/3ok37m40ZbihMRS X-MS-Exchange-AntiSpam-MessageData: PtT3V71taMn8mpJsqKU/KLjBWm8Bm8735QN190FFdtlYaPf/jQta2Bo46SH1hJLRjCxDPHoiBUe3uHXVIhLipmcsE8F0x94cOA/kuTW9NzyszuyDIRRJtLGWnDvXm7SZldJ74R7Orx0AFsqaAsfQ+g== X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4de4470-1e7f-4b80-89eb-08d7ca864084 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2020 15:17:05.6259 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7EMKphGNm8R9ervG41b3mqdED0J9ff4UHsZwsHOI8FoqXGIHWjuWEx/Sd8EKmCvROOIGfXENjR0hTP9Rt7ma6DIfW8o0oGD3ntOqTKk7KpI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2299 Subject: [Xen-devel] [PATCH v10 9/9] xen: introduce ERRP_AUTO_PROPAGATE X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, Paul Durrant , armbru@redhat.com, Greg Kurz , Stefano Stabellini , Stefan Hajnoczi , Anthony Perard , xen-devel@lists.xenproject.org, Max Reitz Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SWYgd2Ugd2FudCB0byBhZGQgc29tZSBpbmZvIHRvIGVycnAgKGJ5IGVycm9yX3ByZXBlbmQoKSBv cgplcnJvcl9hcHBlbmRfaGludCgpKSwgd2UgbXVzdCB1c2UgdGhlIEVSUlBfQVVUT19QUk9QQUdB VEUgbWFjcm8uCk90aGVyd2lzZSwgdGhpcyBpbmZvIHdpbGwgbm90IGJlIGFkZGVkIHdoZW4gZXJy cCA9PSAmZXJyb3JfZmF0YWwKKHRoZSBwcm9ncmFtIHdpbGwgZXhpdCBwcmlvciB0byB0aGUgZXJy b3JfYXBwZW5kX2hpbnQoKSBvcgplcnJvcl9wcmVwZW5kKCkgY2FsbCkuICBGaXggc3VjaCBjYXNl cy4KCklmIHdlIHdhbnQgdG8gY2hlY2sgZXJyb3IgYWZ0ZXIgZXJycC1mdW5jdGlvbiBjYWxsLCB3 ZSBuZWVkIHRvCmludHJvZHVjZSBsb2NhbF9lcnIgYW5kIHRoZW4gcHJvcGFnYXRlIGl0IHRvIGVy cnAuIEluc3RlYWQsIHVzZQpFUlJQX0FVVE9fUFJPUEFHQVRFIG1hY3JvLCBiZW5lZml0cyBhcmU6 CjEuIE5vIG5lZWQgb2YgZXhwbGljaXQgZXJyb3JfcHJvcGFnYXRlIGNhbGwKMi4gTm8gbmVlZCBv ZiBleHBsaWNpdCBsb2NhbF9lcnIgdmFyaWFibGU6IHVzZSBlcnJwIGRpcmVjdGx5CjMuIEVSUlBf QVVUT19QUk9QQUdBVEUgbGVhdmVzIGVycnAgYXMgaXMgaWYgaXQncyBub3QgTlVMTCBvcgogICAm ZXJyb3JfZmF0YWwsIHRoaXMgbWVhbnMgdGhhdCB3ZSBkb24ndCBicmVhayBlcnJvcl9hYm9ydAog ICAod2UnbGwgYWJvcnQgb24gZXJyb3Jfc2V0LCBub3Qgb24gZXJyb3JfcHJvcGFnYXRlKQoKVGhp cyBjb21taXQgaXMgZ2VuZXJhdGVkIGJ5IGNvbW1hbmQKCiAgICBzZWQgLW4gJy9eWDg2IFhlbiBD UFVzJC8sL14kL3tzL15GOiAvL3B9JyBNQUlOVEFJTkVSUyB8IFwKICAgIHhhcmdzIGdpdCBscy1m aWxlcyB8IGdyZXAgJ1wuW2hjXSQnIHwgXAogICAgeGFyZ3Mgc3BhdGNoIFwKICAgICAgICAtLXNw LWZpbGUgc2NyaXB0cy9jb2NjaW5lbGxlL2F1dG8tcHJvcGFnYXRlZC1lcnJwLmNvY2NpIFwKICAg ICAgICAtLW1hY3JvLWZpbGUgc2NyaXB0cy9jb2NjaS1tYWNyby1maWxlLmggXAogICAgICAgIC0t aW4tcGxhY2UgLS1uby1zaG93LWRpZmYgLS1tYXgtd2lkdGggODAKClJlcG9ydGVkLWJ5OiBLZXZp biBXb2xmIDxrd29sZkByZWRoYXQuY29tPgpSZXBvcnRlZC1ieTogR3JlZyBLdXJ6IDxncm91Z0Br YW9kLm9yZz4KU2lnbmVkLW9mZi1ieTogVmxhZGltaXIgU2VtZW50c292LU9naWV2c2tpeSA8dnNl bWVudHNvdkB2aXJ0dW96em8uY29tPgpSZXZpZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsQHhl bi5vcmc+Ci0tLQogaHcvYmxvY2svZGF0YXBsYW5lL3hlbi1ibG9jay5jIHwgIDE3ICsrLS0tCiBo dy9ibG9jay94ZW4tYmxvY2suYyAgICAgICAgICAgfCAxMjIgKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tCiBody9wY2ktaG9zdC94ZW5faWdkX3B0LmMgICAgICAgfCAgIDcgKy0KIGh3 L3hlbi94ZW4tYmFja2VuZC5jICAgICAgICAgICB8ICAgNyArLQogaHcveGVuL3hlbi1idXMuYyAg ICAgICAgICAgICAgIHwgIDkyICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGh3L3hlbi94ZW4t aG9zdC1wY2ktZGV2aWNlLmMgICB8ICAyNyArKysrLS0tLQogaHcveGVuL3hlbl9wdC5jICAgICAg ICAgICAgICAgIHwgIDI1ICsrKy0tLS0KIGh3L3hlbi94ZW5fcHRfY29uZmlnX2luaXQuYyAgICB8 ICAyMCArKystLS0KIDggZmlsZXMgY2hhbmdlZCwgMTM4IGluc2VydGlvbnMoKyksIDE3OSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody9ibG9jay9kYXRhcGxhbmUveGVuLWJsb2NrLmMgYi9o dy9ibG9jay9kYXRhcGxhbmUveGVuLWJsb2NrLmMKaW5kZXggMjg4YTg3YTgxNC4uM2E4NDY5ZmU4 NyAxMDA2NDQKLS0tIGEvaHcvYmxvY2svZGF0YXBsYW5lL3hlbi1ibG9jay5jCisrKyBiL2h3L2Js b2NrL2RhdGFwbGFuZS94ZW4tYmxvY2suYwpAQCAtNzM5LDggKzczOSw4IEBAIHZvaWQgeGVuX2Js b2NrX2RhdGFwbGFuZV9zdGFydChYZW5CbG9ja0RhdGFQbGFuZSAqZGF0YXBsYW5lLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwcm90b2NvbCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCiB7CisgICAgRVJSUF9BVVRPX1BS T1BBR0FURSgpOwogICAgIFhlbkRldmljZSAqeGVuZGV2ID0gZGF0YXBsYW5lLT54ZW5kZXY7Ci0g ICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IHJpbmdfc2l6ZTsK ICAgICB1bnNpZ25lZCBpbnQgaTsKIApAQCAtNzc2LDkgKzc3Niw4IEBAIHZvaWQgeGVuX2Jsb2Nr X2RhdGFwbGFuZV9zdGFydChYZW5CbG9ja0RhdGFQbGFuZSAqZGF0YXBsYW5lLAogICAgIH0KIAog ICAgIHhlbl9kZXZpY2Vfc2V0X21heF9ncmFudF9yZWZzKHhlbmRldiwgZGF0YXBsYW5lLT5ucl9y aW5nX3JlZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxfZXJyKTsK LSAgICBpZiAobG9jYWxfZXJyKSB7Ci0gICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBsb2Nh bF9lcnIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnApOworICAgIGlm ICgqZXJycCkgewogICAgICAgICBnb3RvIHN0b3A7CiAgICAgfQogCkBAIC03ODYsOSArNzg1LDgg QEAgdm9pZCB4ZW5fYmxvY2tfZGF0YXBsYW5lX3N0YXJ0KFhlbkJsb2NrRGF0YVBsYW5lICpkYXRh cGxhbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YXBsYW5lLT5yaW5nX3JlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhcGxhbmUtPm5yX3JpbmdfcmVmLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsX2Vycik7Ci0gICAgaWYg KGxvY2FsX2VycikgewotICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxfZXJyKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwKTsKKyAg ICBpZiAoKmVycnApIHsKICAgICAgICAgZ290byBzdG9wOwogICAgIH0KIApAQCAtODIxLDkgKzgx OSw4IEBAIHZvaWQgeGVuX2Jsb2NrX2RhdGFwbGFuZV9zdGFydChYZW5CbG9ja0RhdGFQbGFuZSAq ZGF0YXBsYW5lLAogICAgIGRhdGFwbGFuZS0+ZXZlbnRfY2hhbm5lbCA9CiAgICAgICAgIHhlbl9k ZXZpY2VfYmluZF9ldmVudF9jaGFubmVsKHhlbmRldiwgZXZlbnRfY2hhbm5lbCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX2Jsb2NrX2RhdGFwbGFuZV9ldmVudCwg ZGF0YXBsYW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxf ZXJyKTsKLSAgICBpZiAobG9jYWxfZXJyKSB7Ci0gICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJw LCBsb2NhbF9lcnIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJw KTsKKyAgICBpZiAoKmVycnApIHsKICAgICAgICAgZ290byBzdG9wOwogICAgIH0KIApkaWZmIC0t Z2l0IGEvaHcvYmxvY2sveGVuLWJsb2NrLmMgYi9ody9ibG9jay94ZW4tYmxvY2suYwppbmRleCA3 YjNiNmRlZTk3Li41ZDRjOTQxODFjIDEwMDY0NAotLS0gYS9ody9ibG9jay94ZW4tYmxvY2suYwor KysgYi9ody9ibG9jay94ZW4tYmxvY2suYwpAQCAtMTk1LDYgKzE5NSw3IEBAIHN0YXRpYyBjb25z dCBCbG9ja0Rldk9wcyB4ZW5fYmxvY2tfZGV2X29wcyA9IHsKIAogc3RhdGljIHZvaWQgeGVuX2Js b2NrX3JlYWxpemUoWGVuRGV2aWNlICp4ZW5kZXYsIEVycm9yICoqZXJycCkKIHsKKyAgICBFUlJQ X0FVVE9fUFJPUEFHQVRFKCk7CiAgICAgWGVuQmxvY2tEZXZpY2UgKmJsb2NrZGV2ID0gWEVOX0JM T0NLX0RFVklDRSh4ZW5kZXYpOwogICAgIFhlbkJsb2NrRGV2aWNlQ2xhc3MgKmJsb2NrZGV2X2Ns YXNzID0KICAgICAgICAgWEVOX0JMT0NLX0RFVklDRV9HRVRfQ0xBU1MoeGVuZGV2KTsKQEAgLTIw Miw3ICsyMDMsNiBAQCBzdGF0aWMgdm9pZCB4ZW5fYmxvY2tfcmVhbGl6ZShYZW5EZXZpY2UgKnhl bmRldiwgRXJyb3IgKiplcnJwKQogICAgIFhlbkJsb2NrVmRldiAqdmRldiA9ICZibG9ja2Rldi0+ cHJvcHMudmRldjsKICAgICBCbG9ja0NvbmYgKmNvbmYgPSAmYmxvY2tkZXYtPnByb3BzLmNvbmY7 CiAgICAgQmxvY2tCYWNrZW5kICpibGsgPSBjb25mLT5ibGs7Ci0gICAgRXJyb3IgKmxvY2FsX2Vy ciA9IE5VTEw7CiAKICAgICBpZiAodmRldi0+dHlwZSA9PSBYRU5fQkxPQ0tfVkRFVl9UWVBFX0lO VkFMSUQpIHsKICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAidmRldiBwcm9wZXJ0eSBub3Qgc2V0 Iik7CkBAIC0yMTIsOSArMjEyLDggQEAgc3RhdGljIHZvaWQgeGVuX2Jsb2NrX3JlYWxpemUoWGVu RGV2aWNlICp4ZW5kZXYsIEVycm9yICoqZXJycCkKICAgICB0cmFjZV94ZW5fYmxvY2tfcmVhbGl6 ZSh0eXBlLCB2ZGV2LT5kaXNrLCB2ZGV2LT5wYXJ0aXRpb24pOwogCiAgICAgaWYgKGJsb2NrZGV2 X2NsYXNzLT5yZWFsaXplKSB7Ci0gICAgICAgIGJsb2NrZGV2X2NsYXNzLT5yZWFsaXplKGJsb2Nr ZGV2LCAmbG9jYWxfZXJyKTsKLSAgICAgICAgaWYgKGxvY2FsX2VycikgewotICAgICAgICAgICAg ZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycik7CisgICAgICAgIGJsb2NrZGV2X2NsYXNz LT5yZWFsaXplKGJsb2NrZGV2LCBlcnJwKTsKKyAgICAgICAgaWYgKCplcnJwKSB7CiAgICAgICAg ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0yODQsOCArMjgzLDggQEAgc3RhdGlj IHZvaWQgeGVuX2Jsb2NrX2Zyb250ZW5kX2NoYW5nZWQoWGVuRGV2aWNlICp4ZW5kZXYsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHhlbmJ1c19zdGF0ZSBmcm9u dGVuZF9zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9y ICoqZXJycCkKIHsKKyAgICBFUlJQX0FVVE9fUFJPUEFHQVRFKCk7CiAgICAgZW51bSB4ZW5idXNf c3RhdGUgYmFja2VuZF9zdGF0ZSA9IHhlbl9kZXZpY2VfYmFja2VuZF9nZXRfc3RhdGUoeGVuZGV2 KTsKLSAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKIAogICAgIHN3aXRjaCAoZnJvbnRlbmRf c3RhdGUpIHsKICAgICBjYXNlIFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQ6CkBAIC0yOTQsMTUgKzI5 MywxMyBAQCBzdGF0aWMgdm9pZCB4ZW5fYmxvY2tfZnJvbnRlbmRfY2hhbmdlZChYZW5EZXZpY2Ug KnhlbmRldiwKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgeGVuX2Js b2NrX2Rpc2Nvbm5lY3QoeGVuZGV2LCAmbG9jYWxfZXJyKTsKLSAgICAgICAgaWYgKGxvY2FsX2Vy cikgewotICAgICAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycik7CisgICAg ICAgIHhlbl9ibG9ja19kaXNjb25uZWN0KHhlbmRldiwgZXJycCk7CisgICAgICAgIGlmICgqZXJy cCkgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICB4ZW5fYmxvY2tf Y29ubmVjdCh4ZW5kZXYsICZsb2NhbF9lcnIpOwotICAgICAgICBpZiAobG9jYWxfZXJyKSB7Ci0g ICAgICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxfZXJyKTsKKyAgICAgICAgeGVu X2Jsb2NrX2Nvbm5lY3QoeGVuZGV2LCBlcnJwKTsKKyAgICAgICAgaWYgKCplcnJwKSB7CiAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0zMTUsOSArMzEyLDggQEAgc3RhdGljIHZv aWQgeGVuX2Jsb2NrX2Zyb250ZW5kX2NoYW5nZWQoWGVuRGV2aWNlICp4ZW5kZXYsCiAKICAgICBj YXNlIFhlbmJ1c1N0YXRlQ2xvc2VkOgogICAgIGNhc2UgWGVuYnVzU3RhdGVVbmtub3duOgotICAg ICAgICB4ZW5fYmxvY2tfZGlzY29ubmVjdCh4ZW5kZXYsICZsb2NhbF9lcnIpOwotICAgICAgICBp ZiAobG9jYWxfZXJyKSB7Ci0gICAgICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxf ZXJyKTsKKyAgICAgICAgeGVuX2Jsb2NrX2Rpc2Nvbm5lY3QoeGVuZGV2LCBlcnJwKTsKKyAgICAg ICAgaWYgKCplcnJwKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC00MDQs MTAgKzQwMCwxMCBAQCBzdGF0aWMgaW50IHZiZF9uYW1lX3RvX2Rpc2soY29uc3QgY2hhciAqbmFt ZSwgY29uc3QgY2hhciAqKmVuZHAsCiBzdGF0aWMgdm9pZCB4ZW5fYmxvY2tfc2V0X3ZkZXYoT2Jq ZWN0ICpvYmosIFZpc2l0b3IgKnYsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlLCBFcnJvciAqKmVycnApCiB7CisgICAgRVJSUF9B VVRPX1BST1BBR0FURSgpOwogICAgIERldmljZVN0YXRlICpkZXYgPSBERVZJQ0Uob2JqKTsKICAg ICBQcm9wZXJ0eSAqcHJvcCA9IG9wYXF1ZTsKICAgICBYZW5CbG9ja1ZkZXYgKnZkZXYgPSBxZGV2 X2dldF9wcm9wX3B0cihkZXYsIHByb3ApOwotICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOwog ICAgIGNoYXIgKnN0ciwgKnA7CiAgICAgY29uc3QgY2hhciAqZW5kOwogCkBAIC00MTYsOSArNDEy LDggQEAgc3RhdGljIHZvaWQgeGVuX2Jsb2NrX3NldF92ZGV2KE9iamVjdCAqb2JqLCBWaXNpdG9y ICp2LCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdmlz aXRfdHlwZV9zdHIodiwgbmFtZSwgJnN0ciwgJmxvY2FsX2Vycik7Ci0gICAgaWYgKGxvY2FsX2Vy cikgewotICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxfZXJyKTsKKyAgICB2aXNp dF90eXBlX3N0cih2LCBuYW1lLCAmc3RyLCBlcnJwKTsKKyAgICBpZiAoKmVycnApIHsKICAgICAg ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjcyLDkgKzY2Nyw5IEBAIHN0YXRpYyB2b2lkIHhlbl9i bG9ja19ibG9ja2Rldl9kZWwoY29uc3QgY2hhciAqbm9kZV9uYW1lLCBFcnJvciAqKmVycnApCiBz dGF0aWMgY2hhciAqeGVuX2Jsb2NrX2Jsb2NrZGV2X2FkZChjb25zdCBjaGFyICppZCwgUURpY3Qg KnFkaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJw KQogeworICAgIEVSUlBfQVVUT19QUk9QQUdBVEUoKTsKICAgICBjb25zdCBjaGFyICpkcml2ZXIg PSBxZGljdF9nZXRfdHJ5X3N0cihxZGljdCwgImRyaXZlciIpOwogICAgIEJsb2NrZGV2T3B0aW9u cyAqb3B0aW9ucyA9IE5VTEw7Ci0gICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7CiAgICAgY2hh ciAqbm9kZV9uYW1lOwogICAgIFZpc2l0b3IgKnY7CiAKQEAgLTY4OSwxOCArNjg0LDE2IEBAIHN0 YXRpYyBjaGFyICp4ZW5fYmxvY2tfYmxvY2tkZXZfYWRkKGNvbnN0IGNoYXIgKmlkLCBRRGljdCAq cWRpY3QsCiAgICAgdHJhY2VfeGVuX2Jsb2NrX2Jsb2NrZGV2X2FkZChub2RlX25hbWUpOwogCiAg ICAgdiA9IHFvYmplY3RfaW5wdXRfdmlzaXRvcl9uZXcoUU9CSkVDVChxZGljdCkpOwotICAgIHZp c2l0X3R5cGVfQmxvY2tkZXZPcHRpb25zKHYsIE5VTEwsICZvcHRpb25zLCAmbG9jYWxfZXJyKTsK KyAgICB2aXNpdF90eXBlX0Jsb2NrZGV2T3B0aW9ucyh2LCBOVUxMLCAmb3B0aW9ucywgZXJycCk7 CiAgICAgdmlzaXRfZnJlZSh2KTsKIAotICAgIGlmIChsb2NhbF9lcnIpIHsKLSAgICAgICAgZXJy b3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycik7CisgICAgaWYgKCplcnJwKSB7CiAgICAgICAg IGdvdG8gZmFpbDsKICAgICB9CiAKLSAgICBxbXBfYmxvY2tkZXZfYWRkKG9wdGlvbnMsICZsb2Nh bF9lcnIpOworICAgIHFtcF9ibG9ja2Rldl9hZGQob3B0aW9ucywgZXJycCk7CiAKLSAgICBpZiAo bG9jYWxfZXJyKSB7Ci0gICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBsb2NhbF9lcnIpOwor ICAgIGlmICgqZXJycCkgewogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogCkBAIC03MTksMTQg KzcxMiwxMiBAQCBmYWlsOgogCiBzdGF0aWMgdm9pZCB4ZW5fYmxvY2tfZHJpdmVfZGVzdHJveShY ZW5CbG9ja0RyaXZlICpkcml2ZSwgRXJyb3IgKiplcnJwKQogeworICAgIEVSUlBfQVVUT19QUk9Q QUdBVEUoKTsKICAgICBjaGFyICpub2RlX25hbWUgPSBkcml2ZS0+bm9kZV9uYW1lOwogCiAgICAg aWYgKG5vZGVfbmFtZSkgewotICAgICAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKLQotICAg ICAgICB4ZW5fYmxvY2tfYmxvY2tkZXZfZGVsKG5vZGVfbmFtZSwgJmxvY2FsX2Vycik7Ci0gICAg ICAgIGlmIChsb2NhbF9lcnIpIHsKLSAgICAgICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBs b2NhbF9lcnIpOworICAgICAgICB4ZW5fYmxvY2tfYmxvY2tkZXZfZGVsKG5vZGVfbmFtZSwgZXJy cCk7CisgICAgICAgIGlmICgqZXJycCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9 CiAgICAgICAgIGdfZnJlZShub2RlX25hbWUpOwpAQCAtNzQwLDYgKzczMSw3IEBAIHN0YXRpYyBY ZW5CbG9ja0RyaXZlICp4ZW5fYmxvY2tfZHJpdmVfY3JlYXRlKGNvbnN0IGNoYXIgKmlkLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGV2 aWNlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR RGljdCAqb3B0cywgRXJyb3IgKiplcnJwKQogeworICAgIEVSUlBfQVVUT19QUk9QQUdBVEUoKTsK ICAgICBjb25zdCBjaGFyICpwYXJhbXMgPSBxZGljdF9nZXRfdHJ5X3N0cihvcHRzLCAicGFyYW1z Iik7CiAgICAgY29uc3QgY2hhciAqbW9kZSA9IHFkaWN0X2dldF90cnlfc3RyKG9wdHMsICJtb2Rl Iik7CiAgICAgY29uc3QgY2hhciAqZGlyZWN0X2lvX3NhZmUgPSBxZGljdF9nZXRfdHJ5X3N0cihv cHRzLCAiZGlyZWN0LWlvLXNhZmUiKTsKQEAgLTc0Nyw3ICs3MzksNiBAQCBzdGF0aWMgWGVuQmxv Y2tEcml2ZSAqeGVuX2Jsb2NrX2RyaXZlX2NyZWF0ZShjb25zdCBjaGFyICppZCwKICAgICBjaGFy ICpkcml2ZXIgPSBOVUxMOwogICAgIGNoYXIgKmZpbGVuYW1lID0gTlVMTDsKICAgICBYZW5CbG9j a0RyaXZlICpkcml2ZSA9IE5VTEw7Ci0gICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7CiAgICAg UURpY3QgKmZpbGVfbGF5ZXI7CiAgICAgUURpY3QgKmRyaXZlcl9sYXllcjsKIApAQCAtODI2LDEz ICs4MTcsMTIgQEAgc3RhdGljIFhlbkJsb2NrRHJpdmUgKnhlbl9ibG9ja19kcml2ZV9jcmVhdGUo Y29uc3QgY2hhciAqaWQsCiAKICAgICBnX2Fzc2VydCghZHJpdmUtPm5vZGVfbmFtZSk7CiAgICAg ZHJpdmUtPm5vZGVfbmFtZSA9IHhlbl9ibG9ja19ibG9ja2Rldl9hZGQoZHJpdmUtPmlkLCBkcml2 ZXJfbGF5ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmxvY2FsX2Vycik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXJycCk7CiAKICAgICBxb2JqZWN0X3VucmVmKGRyaXZlcl9sYXllcik7CiAKIGRvbmU6Ci0g ICAgaWYgKGxvY2FsX2VycikgewotICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxf ZXJyKTsKKyAgICBpZiAoKmVycnApIHsKICAgICAgICAgeGVuX2Jsb2NrX2RyaXZlX2Rlc3Ryb3ko ZHJpdmUsIE5VTEwpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC04NTcsOCArODQ3 LDggQEAgc3RhdGljIHZvaWQgeGVuX2Jsb2NrX2lvdGhyZWFkX2Rlc3Ryb3koWGVuQmxvY2tJT1Ro cmVhZCAqaW90aHJlYWQsCiBzdGF0aWMgWGVuQmxvY2tJT1RocmVhZCAqeGVuX2Jsb2NrX2lvdGhy ZWFkX2NyZWF0ZShjb25zdCBjaGFyICppZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVycm9yICoqZXJycCkKIHsKKyAgICBFUlJQX0FVVE9fUFJP UEFHQVRFKCk7CiAgICAgWGVuQmxvY2tJT1RocmVhZCAqaW90aHJlYWQgPSBnX25ldyhYZW5CbG9j a0lPVGhyZWFkLCAxKTsKLSAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKICAgICBRRGljdCAq b3B0czsKICAgICBRT2JqZWN0ICpyZXRfZGF0YTsKIApAQCAtODY3LDEzICs4NTcsMTEgQEAgc3Rh dGljIFhlbkJsb2NrSU9UaHJlYWQgKnhlbl9ibG9ja19pb3RocmVhZF9jcmVhdGUoY29uc3QgY2hh ciAqaWQsCiAgICAgb3B0cyA9IHFkaWN0X25ldygpOwogICAgIHFkaWN0X3B1dF9zdHIob3B0cywg InFvbS10eXBlIiwgVFlQRV9JT1RIUkVBRCk7CiAgICAgcWRpY3RfcHV0X3N0cihvcHRzLCAiaWQi LCBpZCk7Ci0gICAgcW1wX29iamVjdF9hZGQob3B0cywgJnJldF9kYXRhLCAmbG9jYWxfZXJyKTsK KyAgICBxbXBfb2JqZWN0X2FkZChvcHRzLCAmcmV0X2RhdGEsIGVycnApOwogICAgIHFvYmplY3Rf dW5yZWYob3B0cyk7CiAgICAgcW9iamVjdF91bnJlZihyZXRfZGF0YSk7CiAKLSAgICBpZiAobG9j YWxfZXJyKSB7Ci0gICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBsb2NhbF9lcnIpOwotCisg ICAgaWYgKCplcnJwKSB7CiAgICAgICAgIGdfZnJlZShpb3RocmVhZC0+aWQpOwogICAgICAgICBn X2ZyZWUoaW90aHJlYWQpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTg4NSw2ICs4NzMsNyBA QCBzdGF0aWMgWGVuQmxvY2tJT1RocmVhZCAqeGVuX2Jsb2NrX2lvdGhyZWFkX2NyZWF0ZShjb25z dCBjaGFyICppZCwKIHN0YXRpYyB2b2lkIHhlbl9ibG9ja19kZXZpY2VfY3JlYXRlKFhlbkJhY2tl bmRJbnN0YW5jZSAqYmFja2VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFEaWN0ICpvcHRzLCBFcnJvciAqKmVycnApCiB7CisgICAgRVJSUF9BVVRPX1BST1BBR0FURSgp OwogICAgIFhlbkJ1cyAqeGVuYnVzID0geGVuX2JhY2tlbmRfZ2V0X2J1cyhiYWNrZW5kKTsKICAg ICBjb25zdCBjaGFyICpuYW1lID0geGVuX2JhY2tlbmRfZ2V0X25hbWUoYmFja2VuZCk7CiAgICAg dW5zaWduZWQgbG9uZyBudW1iZXI7CkBAIC04OTIsNyArODgxLDYgQEAgc3RhdGljIHZvaWQgeGVu X2Jsb2NrX2RldmljZV9jcmVhdGUoWGVuQmFja2VuZEluc3RhbmNlICpiYWNrZW5kLAogICAgIFhl bkJsb2NrRHJpdmUgKmRyaXZlID0gTlVMTDsKICAgICBYZW5CbG9ja0lPVGhyZWFkICppb3RocmVh ZCA9IE5VTEw7CiAgICAgWGVuRGV2aWNlICp4ZW5kZXYgPSBOVUxMOwotICAgIEVycm9yICpsb2Nh bF9lcnIgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnR5cGU7CiAgICAgWGVuQmxvY2tEZXZpY2Ug KmJsb2NrZGV2OwogCkBAIC05MjQsNTIgKzkxMiw0OCBAQCBzdGF0aWMgdm9pZCB4ZW5fYmxvY2tf ZGV2aWNlX2NyZWF0ZShYZW5CYWNrZW5kSW5zdGFuY2UgKmJhY2tlbmQsCiAgICAgICAgIGdvdG8g ZmFpbDsKICAgICB9CiAKLSAgICBkcml2ZSA9IHhlbl9ibG9ja19kcml2ZV9jcmVhdGUodmRldiwg ZGV2aWNlX3R5cGUsIG9wdHMsICZsb2NhbF9lcnIpOworICAgIGRyaXZlID0geGVuX2Jsb2NrX2Ry aXZlX2NyZWF0ZSh2ZGV2LCBkZXZpY2VfdHlwZSwgb3B0cywgZXJycCk7CiAgICAgaWYgKCFkcml2 ZSkgewotICAgICAgICBlcnJvcl9wcm9wYWdhdGVfcHJlcGVuZChlcnJwLCBsb2NhbF9lcnIsICJm YWlsZWQgdG8gY3JlYXRlIGRyaXZlOiAiKTsKKyAgICAgICAgZXJyb3JfcHJlcGVuZChlcnJwLCAi ZmFpbGVkIHRvIGNyZWF0ZSBkcml2ZTogIik7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAK LSAgICBpb3RocmVhZCA9IHhlbl9ibG9ja19pb3RocmVhZF9jcmVhdGUodmRldiwgJmxvY2FsX2Vy cik7Ci0gICAgaWYgKGxvY2FsX2VycikgewotICAgICAgICBlcnJvcl9wcm9wYWdhdGVfcHJlcGVu ZChlcnJwLCBsb2NhbF9lcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWls ZWQgdG8gY3JlYXRlIGlvdGhyZWFkOiAiKTsKKyAgICBpb3RocmVhZCA9IHhlbl9ibG9ja19pb3Ro cmVhZF9jcmVhdGUodmRldiwgZXJycCk7CisgICAgaWYgKCplcnJwKSB7CisgICAgICAgIGVycm9y X3ByZXBlbmQoZXJycCwgImZhaWxlZCB0byBjcmVhdGUgaW90aHJlYWQ6ICIpOwogICAgICAgICBn b3RvIGZhaWw7CiAgICAgfQogCiAgICAgeGVuZGV2ID0gWEVOX0RFVklDRShxZGV2X2NyZWF0ZShC VVMoeGVuYnVzKSwgdHlwZSkpOwogICAgIGJsb2NrZGV2ID0gWEVOX0JMT0NLX0RFVklDRSh4ZW5k ZXYpOwogCi0gICAgb2JqZWN0X3Byb3BlcnR5X3NldF9zdHIoT0JKRUNUKHhlbmRldiksIHZkZXYs ICJ2ZGV2IiwgJmxvY2FsX2Vycik7Ci0gICAgaWYgKGxvY2FsX2VycikgewotICAgICAgICBlcnJv cl9wcm9wYWdhdGVfcHJlcGVuZChlcnJwLCBsb2NhbF9lcnIsICJmYWlsZWQgdG8gc2V0ICd2ZGV2 JzogIik7CisgICAgb2JqZWN0X3Byb3BlcnR5X3NldF9zdHIoT0JKRUNUKHhlbmRldiksIHZkZXYs ICJ2ZGV2IiwgZXJycCk7CisgICAgaWYgKCplcnJwKSB7CisgICAgICAgIGVycm9yX3ByZXBlbmQo ZXJycCwgImZhaWxlZCB0byBzZXQgJ3ZkZXYnOiAiKTsKICAgICAgICAgZ290byBmYWlsOwogICAg IH0KIAogICAgIG9iamVjdF9wcm9wZXJ0eV9zZXRfc3RyKE9CSkVDVCh4ZW5kZXYpLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhlbl9ibG9ja19kcml2ZV9nZXRfbm9kZV9uYW1lKGRyaXZl KSwgImRyaXZlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxfZXJyKTsKLSAg ICBpZiAobG9jYWxfZXJyKSB7Ci0gICAgICAgIGVycm9yX3Byb3BhZ2F0ZV9wcmVwZW5kKGVycnAs IGxvY2FsX2VyciwgImZhaWxlZCB0byBzZXQgJ2RyaXZlJzogIik7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXJycCk7CisgICAgaWYgKCplcnJwKSB7CisgICAgICAgIGVycm9yX3ByZXBl bmQoZXJycCwgImZhaWxlZCB0byBzZXQgJ2RyaXZlJzogIik7CiAgICAgICAgIGdvdG8gZmFpbDsK ICAgICB9CiAKICAgICBvYmplY3RfcHJvcGVydHlfc2V0X3N0cihPQkpFQ1QoeGVuZGV2KSwgaW90 aHJlYWQtPmlkLCAiaW90aHJlYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2Nh bF9lcnIpOwotICAgIGlmIChsb2NhbF9lcnIpIHsKLSAgICAgICAgZXJyb3JfcHJvcGFnYXRlX3By ZXBlbmQoZXJycCwgbG9jYWxfZXJyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi ZmFpbGVkIHRvIHNldCAnaW90aHJlYWQnOiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlcnJwKTsKKyAgICBpZiAoKmVycnApIHsKKyAgICAgICAgZXJyb3JfcHJlcGVuZChlcnJwLCAi ZmFpbGVkIHRvIHNldCAnaW90aHJlYWQnOiAiKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0K IAogICAgIGJsb2NrZGV2LT5pb3RocmVhZCA9IGlvdGhyZWFkOwogICAgIGJsb2NrZGV2LT5kcml2 ZSA9IGRyaXZlOwogCi0gICAgb2JqZWN0X3Byb3BlcnR5X3NldF9ib29sKE9CSkVDVCh4ZW5kZXYp LCB0cnVlLCAicmVhbGl6ZWQiLCAmbG9jYWxfZXJyKTsKLSAgICBpZiAobG9jYWxfZXJyKSB7Ci0g ICAgICAgIGVycm9yX3Byb3BhZ2F0ZV9wcmVwZW5kKGVycnAsIGxvY2FsX2VyciwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInJlYWxpemF0aW9uIG9mIGRldmljZSAlcyBmYWlsZWQ6 ICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOworICAgIG9iamVjdF9w cm9wZXJ0eV9zZXRfYm9vbChPQkpFQ1QoeGVuZGV2KSwgdHJ1ZSwgInJlYWxpemVkIiwgZXJycCk7 CisgICAgaWYgKCplcnJwKSB7CisgICAgICAgIGVycm9yX3ByZXBlbmQoZXJycCwgInJlYWxpemF0 aW9uIG9mIGRldmljZSAlcyBmYWlsZWQ6ICIsIHR5cGUpOwogICAgICAgICBnb3RvIGZhaWw7CiAg ICAgfQogCkBAIC05OTMsMzEgKzk3NywyOSBAQCBmYWlsOgogc3RhdGljIHZvaWQgeGVuX2Jsb2Nr X2RldmljZV9kZXN0cm95KFhlbkJhY2tlbmRJbnN0YW5jZSAqYmFja2VuZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCiB7CisgICAgRVJSUF9BVVRP X1BST1BBR0FURSgpOwogICAgIFhlbkRldmljZSAqeGVuZGV2ID0geGVuX2JhY2tlbmRfZ2V0X2Rl dmljZShiYWNrZW5kKTsKICAgICBYZW5CbG9ja0RldmljZSAqYmxvY2tkZXYgPSBYRU5fQkxPQ0tf REVWSUNFKHhlbmRldik7CiAgICAgWGVuQmxvY2tWZGV2ICp2ZGV2ID0gJmJsb2NrZGV2LT5wcm9w cy52ZGV2OwogICAgIFhlbkJsb2NrRHJpdmUgKmRyaXZlID0gYmxvY2tkZXYtPmRyaXZlOwogICAg IFhlbkJsb2NrSU9UaHJlYWQgKmlvdGhyZWFkID0gYmxvY2tkZXYtPmlvdGhyZWFkOwotICAgIEVy cm9yICpsb2NhbF9lcnIgPSBOVUxMOwogCiAgICAgdHJhY2VfeGVuX2Jsb2NrX2RldmljZV9kZXN0 cm95KHZkZXYtPm51bWJlcik7CiAKICAgICBvYmplY3RfdW5wYXJlbnQoT0JKRUNUKHhlbmRldikp OwogCiAgICAgaWYgKGlvdGhyZWFkKSB7Ci0gICAgICAgIHhlbl9ibG9ja19pb3RocmVhZF9kZXN0 cm95KGlvdGhyZWFkLCAmbG9jYWxfZXJyKTsKLSAgICAgICAgaWYgKGxvY2FsX2VycikgewotICAg ICAgICAgICAgZXJyb3JfcHJvcGFnYXRlX3ByZXBlbmQoZXJycCwgbG9jYWxfZXJyLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRlc3Ryb3kgaW90aHJlYWQ6ICIp OworICAgICAgICB4ZW5fYmxvY2tfaW90aHJlYWRfZGVzdHJveShpb3RocmVhZCwgZXJycCk7Cisg ICAgICAgIGlmICgqZXJycCkgeworICAgICAgICAgICAgZXJyb3JfcHJlcGVuZChlcnJwLCAiZmFp bGVkIHRvIGRlc3Ryb3kgaW90aHJlYWQ6ICIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg ICB9CiAgICAgfQogCiAgICAgaWYgKGRyaXZlKSB7Ci0gICAgICAgIHhlbl9ibG9ja19kcml2ZV9k ZXN0cm95KGRyaXZlLCAmbG9jYWxfZXJyKTsKLSAgICAgICAgaWYgKGxvY2FsX2VycikgewotICAg ICAgICAgICAgZXJyb3JfcHJvcGFnYXRlX3ByZXBlbmQoZXJycCwgbG9jYWxfZXJyLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRlc3Ryb3kgZHJpdmU6ICIpOwor ICAgICAgICB4ZW5fYmxvY2tfZHJpdmVfZGVzdHJveShkcml2ZSwgZXJycCk7CisgICAgICAgIGlm ICgqZXJycCkgeworICAgICAgICAgICAgZXJyb3JfcHJlcGVuZChlcnJwLCAiZmFpbGVkIHRvIGRl c3Ryb3kgZHJpdmU6ICIpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvaHcvcGNp LWhvc3QveGVuX2lnZF9wdC5jIGIvaHcvcGNpLWhvc3QveGVuX2lnZF9wdC5jCmluZGV4IGVmY2M5 MzQ3ZmYuLjI5YWRlOWNhMjUgMTAwNjQ0Ci0tLSBhL2h3L3BjaS1ob3N0L3hlbl9pZ2RfcHQuYwor KysgYi9ody9wY2ktaG9zdC94ZW5faWdkX3B0LmMKQEAgLTc5LDE3ICs3OSwxNiBAQCBzdGF0aWMg dm9pZCBob3N0X3BjaV9jb25maWdfcmVhZChpbnQgcG9zLCBpbnQgbGVuLCB1aW50MzJfdCAqdmFs LCBFcnJvciAqKmVycnApCiAKIHN0YXRpYyB2b2lkIGlnZF9wdF9pNDQwZnhfcmVhbGl6ZShQQ0lE ZXZpY2UgKnBjaV9kZXYsIEVycm9yICoqZXJycCkKIHsKKyAgICBFUlJQX0FVVE9fUFJPUEFHQVRF KCk7CiAgICAgdWludDMyX3QgdmFsID0gMDsKICAgICBzaXplX3QgaTsKICAgICBpbnQgcG9zLCBs ZW47Ci0gICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShpZ2RfaG9zdF9icmlkZ2VfaW5mb3MpOyBpKyspIHsKICAgICAgICAgcG9zID0g aWdkX2hvc3RfYnJpZGdlX2luZm9zW2ldLm9mZnNldDsKICAgICAgICAgbGVuID0gaWdkX2hvc3Rf YnJpZGdlX2luZm9zW2ldLmxlbjsKLSAgICAgICAgaG9zdF9wY2lfY29uZmlnX3JlYWQocG9zLCBs ZW4sICZ2YWwsICZsb2NhbF9lcnIpOwotICAgICAgICBpZiAobG9jYWxfZXJyKSB7Ci0gICAgICAg ICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxfZXJyKTsKKyAgICAgICAgaG9zdF9wY2lf Y29uZmlnX3JlYWQocG9zLCBsZW4sICZ2YWwsIGVycnApOworICAgICAgICBpZiAoKmVycnApIHsK ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBwY2lfZGVmYXVsdF93cml0 ZV9jb25maWcocGNpX2RldiwgcG9zLCB2YWwsIGxlbik7CmRpZmYgLS1naXQgYS9ody94ZW4veGVu LWJhY2tlbmQuYyBiL2h3L3hlbi94ZW4tYmFja2VuZC5jCmluZGV4IGRhMDY1ZjgxYjcuLjFjYzA2 OTQwNTMgMTAwNjQ0Ci0tLSBhL2h3L3hlbi94ZW4tYmFja2VuZC5jCisrKyBiL2h3L3hlbi94ZW4t YmFja2VuZC5jCkBAIC05OCw5ICs5OCw5IEBAIHN0YXRpYyB2b2lkIHhlbl9iYWNrZW5kX2xpc3Rf cmVtb3ZlKFhlbkJhY2tlbmRJbnN0YW5jZSAqYmFja2VuZCkKIHZvaWQgeGVuX2JhY2tlbmRfZGV2 aWNlX2NyZWF0ZShYZW5CdXMgKnhlbmJ1cywgY29uc3QgY2hhciAqdHlwZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBRRGljdCAqb3B0cywgRXJyb3Ig KiplcnJwKQogeworICAgIEVSUlBfQVVUT19QUk9QQUdBVEUoKTsKICAgICBjb25zdCBYZW5CYWNr ZW5kSW1wbCAqaW1wbCA9IHhlbl9iYWNrZW5kX3RhYmxlX2xvb2t1cCh0eXBlKTsKICAgICBYZW5C YWNrZW5kSW5zdGFuY2UgKmJhY2tlbmQ7Ci0gICAgRXJyb3IgKmxvY2FsX2Vycm9yID0gTlVMTDsK IAogICAgIGlmICghaW1wbCkgewogICAgICAgICByZXR1cm47CkBAIC0xMTAsOSArMTEwLDggQEAg dm9pZCB4ZW5fYmFja2VuZF9kZXZpY2VfY3JlYXRlKFhlbkJ1cyAqeGVuYnVzLCBjb25zdCBjaGFy ICp0eXBlLAogICAgIGJhY2tlbmQtPnhlbmJ1cyA9IHhlbmJ1czsKICAgICBiYWNrZW5kLT5uYW1l ID0gZ19zdHJkdXAobmFtZSk7CiAKLSAgICBpbXBsLT5jcmVhdGUoYmFja2VuZCwgb3B0cywgJmxv Y2FsX2Vycm9yKTsKLSAgICBpZiAobG9jYWxfZXJyb3IpIHsKLSAgICAgICAgZXJyb3JfcHJvcGFn YXRlKGVycnAsIGxvY2FsX2Vycm9yKTsKKyAgICBpbXBsLT5jcmVhdGUoYmFja2VuZCwgb3B0cywg ZXJycCk7CisgICAgaWYgKCplcnJwKSB7CiAgICAgICAgIGdfZnJlZShiYWNrZW5kLT5uYW1lKTsK ICAgICAgICAgZ19mcmVlKGJhY2tlbmQpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9o dy94ZW4veGVuLWJ1cy5jIGIvaHcveGVuL3hlbi1idXMuYwppbmRleCAxODIzN2IzNGVhLi45NzI1 OWM5NjRiIDEwMDY0NAotLS0gYS9ody94ZW4veGVuLWJ1cy5jCisrKyBiL2h3L3hlbi94ZW4tYnVz LmMKQEAgLTUzLDkgKzUzLDkgQEAgc3RhdGljIGNoYXIgKnhlbl9kZXZpY2VfZ2V0X2Zyb250ZW5k X3BhdGgoWGVuRGV2aWNlICp4ZW5kZXYpCiAKIHN0YXRpYyB2b2lkIHhlbl9kZXZpY2VfdW5wbHVn KFhlbkRldmljZSAqeGVuZGV2LCBFcnJvciAqKmVycnApCiB7CisgICAgRVJSUF9BVVRPX1BST1BB R0FURSgpOwogICAgIFhlbkJ1cyAqeGVuYnVzID0gWEVOX0JVUyhxZGV2X2dldF9wYXJlbnRfYnVz KERFVklDRSh4ZW5kZXYpKSk7CiAgICAgY29uc3QgY2hhciAqdHlwZSA9IG9iamVjdF9nZXRfdHlw ZW5hbWUoT0JKRUNUKHhlbmRldikpOwotICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOwogICAg IHhzX3RyYW5zYWN0aW9uX3QgdGlkOwogCiAgICAgdHJhY2VfeGVuX2RldmljZV91bnBsdWcodHlw ZSwgeGVuZGV2LT5uYW1lKTsKQEAgLTY5LDE0ICs2OSwxNCBAQCBhZ2FpbjoKICAgICB9CiAKICAg ICB4c19ub2RlX3ByaW50Zih4ZW5idXMtPnhzaCwgdGlkLCB4ZW5kZXYtPmJhY2tlbmRfcGF0aCwg Im9ubGluZSIsCi0gICAgICAgICAgICAgICAgICAgJmxvY2FsX2VyciwgIiV1IiwgMCk7Ci0gICAg aWYgKGxvY2FsX2VycikgeworICAgICAgICAgICAgICAgICAgIGVycnAsICIldSIsIDApOworICAg IGlmICgqZXJycCkgewogICAgICAgICBnb3RvIGFib3J0OwogICAgIH0KIAogICAgIHhzX25vZGVf cHJpbnRmKHhlbmJ1cy0+eHNoLCB0aWQsIHhlbmRldi0+YmFja2VuZF9wYXRoLCAic3RhdGUiLAot ICAgICAgICAgICAgICAgICAgICZsb2NhbF9lcnIsICIldSIsIFhlbmJ1c1N0YXRlQ2xvc2luZyk7 Ci0gICAgaWYgKGxvY2FsX2VycikgeworICAgICAgICAgICAgICAgICAgIGVycnAsICIldSIsIFhl bmJ1c1N0YXRlQ2xvc2luZyk7CisgICAgaWYgKCplcnJwKSB7CiAgICAgICAgIGdvdG8gYWJvcnQ7 CiAgICAgfQogCkBAIC05Niw3ICs5Niw2IEBAIGFib3J0OgogICAgICAqIGZyb20gZW5kaW5nIHRo ZSB0cmFuc2FjdGlvbi4KICAgICAgKi8KICAgICB4c190cmFuc2FjdGlvbl9lbmQoeGVuYnVzLT54 c2gsIHRpZCwgdHJ1ZSk7Ci0gICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycik7CiB9 CiAKIHN0YXRpYyB2b2lkIHhlbl9idXNfcHJpbnRfZGV2KE1vbml0b3IgKm1vbiwgRGV2aWNlU3Rh dGUgKmRldiwgaW50IGluZGVudCkKQEAgLTIwNSwxNSArMjA0LDEzIEBAIHN0YXRpYyBYZW5XYXRj aCAqd2F0Y2hfbGlzdF9hZGQoWGVuV2F0Y2hMaXN0ICp3YXRjaF9saXN0LCBjb25zdCBjaGFyICpu b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICprZXksIFhl bldhdGNoSGFuZGxlciBoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICpvcGFxdWUsIEVycm9yICoqZXJycCkKIHsKKyAgICBFUlJQX0FVVE9fUFJPUEFHQVRFKCk7 CiAgICAgWGVuV2F0Y2ggKndhdGNoID0gbmV3X3dhdGNoKG5vZGUsIGtleSwgaGFuZGxlciwgb3Bh cXVlKTsKLSAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKIAogICAgIG5vdGlmaWVyX2xpc3Rf YWRkKCZ3YXRjaF9saXN0LT5ub3RpZmllcnMsICZ3YXRjaC0+bm90aWZpZXIpOwogCi0gICAgeHNf bm9kZV93YXRjaCh3YXRjaF9saXN0LT54c2gsIG5vZGUsIGtleSwgd2F0Y2gtPnRva2VuLCAmbG9j YWxfZXJyKTsKLSAgICBpZiAobG9jYWxfZXJyKSB7Ci0gICAgICAgIGVycm9yX3Byb3BhZ2F0ZShl cnJwLCBsb2NhbF9lcnIpOwotCisgICAgeHNfbm9kZV93YXRjaCh3YXRjaF9saXN0LT54c2gsIG5v ZGUsIGtleSwgd2F0Y2gtPnRva2VuLCBlcnJwKTsKKyAgICBpZiAoKmVycnApIHsKICAgICAgICAg bm90aWZpZXJfcmVtb3ZlKCZ3YXRjaC0+bm90aWZpZXIpOwogICAgICAgICBmcmVlX3dhdGNoKHdh dGNoKTsKIApAQCAtMjU1LDExICsyNTIsMTEgQEAgc3RhdGljIHZvaWQgeGVuX2J1c19iYWNrZW5k X2NyZWF0ZShYZW5CdXMgKnhlbmJ1cywgY29uc3QgY2hhciAqdHlwZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY2hhciAqcGF0aCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJwKQogeworICAgIEVSUlBf QVVUT19QUk9QQUdBVEUoKTsKICAgICB4c190cmFuc2FjdGlvbl90IHRpZDsKICAgICBjaGFyICoq a2V5OwogICAgIFFEaWN0ICpvcHRzOwogICAgIHVuc2lnbmVkIGludCBpLCBuOwotICAgIEVycm9y ICpsb2NhbF9lcnIgPSBOVUxMOwogCiAgICAgdHJhY2VfeGVuX2J1c19iYWNrZW5kX2NyZWF0ZSh0 eXBlLCBwYXRoKTsKIApAQCAtMzE0LDEzICszMTEsMTEgQEAgYWdhaW46CiAgICAgICAgIHJldHVy bjsKICAgICB9CiAKLSAgICB4ZW5fYmFja2VuZF9kZXZpY2VfY3JlYXRlKHhlbmJ1cywgdHlwZSwg bmFtZSwgb3B0cywgJmxvY2FsX2Vycik7CisgICAgeGVuX2JhY2tlbmRfZGV2aWNlX2NyZWF0ZSh4 ZW5idXMsIHR5cGUsIG5hbWUsIG9wdHMsIGVycnApOwogICAgIHFvYmplY3RfdW5yZWYob3B0cyk7 CiAKLSAgICBpZiAobG9jYWxfZXJyKSB7Ci0gICAgICAgIGVycm9yX3Byb3BhZ2F0ZV9wcmVwZW5k KGVycnAsIGxvY2FsX2VyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxl ZCB0byBjcmVhdGUgJyVzJyBkZXZpY2UgJyVzJzogIiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZSwgbmFtZSk7CisgICAgaWYgKCplcnJwKSB7CisgICAgICAgIGVycm9yX3By ZXBlbmQoZXJycCwgImZhaWxlZCB0byBjcmVhdGUgJyVzJyBkZXZpY2UgJyVzJzogIiwgdHlwZSwg bmFtZSk7CiAgICAgfQogfQogCkBAIC02OTIsOSArNjg3LDkgQEAgc3RhdGljIHZvaWQgeGVuX2Rl dmljZV9yZW1vdmVfd2F0Y2goWGVuRGV2aWNlICp4ZW5kZXYsIFhlbldhdGNoICp3YXRjaCwKIAog c3RhdGljIHZvaWQgeGVuX2RldmljZV9iYWNrZW5kX2NyZWF0ZShYZW5EZXZpY2UgKnhlbmRldiwg RXJyb3IgKiplcnJwKQogeworICAgIEVSUlBfQVVUT19QUk9QQUdBVEUoKTsKICAgICBYZW5CdXMg KnhlbmJ1cyA9IFhFTl9CVVMocWRldl9nZXRfcGFyZW50X2J1cyhERVZJQ0UoeGVuZGV2KSkpOwog ICAgIHN0cnVjdCB4c19wZXJtaXNzaW9ucyBwZXJtc1syXTsKLSAgICBFcnJvciAqbG9jYWxfZXJy ID0gTlVMTDsKIAogICAgIHhlbmRldi0+YmFja2VuZF9wYXRoID0geGVuX2RldmljZV9nZXRfYmFj a2VuZF9wYXRoKHhlbmRldik7CiAKQEAgLTcwNiwzMCArNzAxLDI3IEBAIHN0YXRpYyB2b2lkIHhl bl9kZXZpY2VfYmFja2VuZF9jcmVhdGUoWGVuRGV2aWNlICp4ZW5kZXYsIEVycm9yICoqZXJycCkK ICAgICBnX2Fzc2VydCh4ZW5idXMtPnhzaCk7CiAKICAgICB4c19ub2RlX2NyZWF0ZSh4ZW5idXMt PnhzaCwgWEJUX05VTEwsIHhlbmRldi0+YmFja2VuZF9wYXRoLCBwZXJtcywKLSAgICAgICAgICAg ICAgICAgICBBUlJBWV9TSVpFKHBlcm1zKSwgJmxvY2FsX2Vycik7Ci0gICAgaWYgKGxvY2FsX2Vy cikgewotICAgICAgICBlcnJvcl9wcm9wYWdhdGVfcHJlcGVuZChlcnJwLCBsb2NhbF9lcnIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gY3JlYXRlIGJhY2tlbmQ6 ICIpOworICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUocGVybXMpLCBlcnJwKTsKKyAgICBp ZiAoKmVycnApIHsKKyAgICAgICAgZXJyb3JfcHJlcGVuZChlcnJwLCAiZmFpbGVkIHRvIGNyZWF0 ZSBiYWNrZW5kOiAiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHhlbmRldi0+YmFj a2VuZF9zdGF0ZV93YXRjaCA9CiAgICAgICAgIHhlbl9kZXZpY2VfYWRkX3dhdGNoKHhlbmRldiwg eGVuZGV2LT5iYWNrZW5kX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0 ZSIsIHhlbl9kZXZpY2VfYmFja2VuZF9jaGFuZ2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmbG9jYWxfZXJyKTsKLSAgICBpZiAobG9jYWxfZXJyKSB7Ci0gICAgICAgIGVycm9yX3By b3BhZ2F0ZV9wcmVwZW5kKGVycnAsIGxvY2FsX2VyciwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImZhaWxlZCB0byB3YXRjaCBiYWNrZW5kIHN0YXRlOiAiKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXJycCk7CisgICAgaWYgKCplcnJwKSB7CisgICAgICAgIGVycm9y X3ByZXBlbmQoZXJycCwgImZhaWxlZCB0byB3YXRjaCBiYWNrZW5kIHN0YXRlOiAiKTsKICAgICAg ICAgcmV0dXJuOwogICAgIH0KIAogICAgIHhlbmRldi0+YmFja2VuZF9vbmxpbmVfd2F0Y2ggPQog ICAgICAgICB4ZW5fZGV2aWNlX2FkZF93YXRjaCh4ZW5kZXYsIHhlbmRldi0+YmFja2VuZF9wYXRo LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25saW5lIiwgeGVuX2RldmljZV9iYWNr ZW5kX2NoYW5nZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbF9lcnIpOwot ICAgIGlmIChsb2NhbF9lcnIpIHsKLSAgICAgICAgZXJyb3JfcHJvcGFnYXRlX3ByZXBlbmQoZXJy cCwgbG9jYWxfZXJyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRv IHdhdGNoIGJhY2tlbmQgb25saW5lOiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXJycCk7CisgICAgaWYgKCplcnJwKSB7CisgICAgICAgIGVycm9yX3ByZXBlbmQoZXJycCwgImZh aWxlZCB0byB3YXRjaCBiYWNrZW5kIG9ubGluZTogIik7CiAgICAgICAgIHJldHVybjsKICAgICB9 CiB9CkBAIC04NjYsOSArODU4LDkgQEAgc3RhdGljIGJvb2wgeGVuX2RldmljZV9mcm9udGVuZF9l eGlzdHMoWGVuRGV2aWNlICp4ZW5kZXYpCiAKIHN0YXRpYyB2b2lkIHhlbl9kZXZpY2VfZnJvbnRl bmRfY3JlYXRlKFhlbkRldmljZSAqeGVuZGV2LCBFcnJvciAqKmVycnApCiB7CisgICAgRVJSUF9B VVRPX1BST1BBR0FURSgpOwogICAgIFhlbkJ1cyAqeGVuYnVzID0gWEVOX0JVUyhxZGV2X2dldF9w YXJlbnRfYnVzKERFVklDRSh4ZW5kZXYpKSk7CiAgICAgc3RydWN0IHhzX3Blcm1pc3Npb25zIHBl cm1zWzJdOwotICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOwogCiAgICAgeGVuZGV2LT5mcm9u dGVuZF9wYXRoID0geGVuX2RldmljZV9nZXRfZnJvbnRlbmRfcGF0aCh4ZW5kZXYpOwogCkBAIC04 ODUsMjAgKzg3NywxOCBAQCBzdGF0aWMgdm9pZCB4ZW5fZGV2aWNlX2Zyb250ZW5kX2NyZWF0ZShY ZW5EZXZpY2UgKnhlbmRldiwgRXJyb3IgKiplcnJwKQogICAgICAgICBnX2Fzc2VydCh4ZW5idXMt PnhzaCk7CiAKICAgICAgICAgeHNfbm9kZV9jcmVhdGUoeGVuYnVzLT54c2gsIFhCVF9OVUxMLCB4 ZW5kZXYtPmZyb250ZW5kX3BhdGgsIHBlcm1zLAotICAgICAgICAgICAgICAgICAgICAgICBBUlJB WV9TSVpFKHBlcm1zKSwgJmxvY2FsX2Vycik7Ci0gICAgICAgIGlmIChsb2NhbF9lcnIpIHsKLSAg ICAgICAgICAgIGVycm9yX3Byb3BhZ2F0ZV9wcmVwZW5kKGVycnAsIGxvY2FsX2VyciwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gY3JlYXRlIGZyb250ZW5k OiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgQVJSQVlfU0laRShwZXJtcyksIGVycnApOwor ICAgICAgICBpZiAoKmVycnApIHsKKyAgICAgICAgICAgIGVycm9yX3ByZXBlbmQoZXJycCwgImZh aWxlZCB0byBjcmVhdGUgZnJvbnRlbmQ6ICIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg ICB9CiAgICAgfQogCiAgICAgeGVuZGV2LT5mcm9udGVuZF9zdGF0ZV93YXRjaCA9CiAgICAgICAg IHhlbl9kZXZpY2VfYWRkX3dhdGNoKHhlbmRldiwgeGVuZGV2LT5mcm9udGVuZF9wYXRoLCAic3Rh dGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5fZGV2aWNlX2Zyb250ZW5kX2No YW5nZWQsICZsb2NhbF9lcnIpOwotICAgIGlmIChsb2NhbF9lcnIpIHsKLSAgICAgICAgZXJyb3Jf cHJvcGFnYXRlX3ByZXBlbmQoZXJycCwgbG9jYWxfZXJyLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiZmFpbGVkIHRvIHdhdGNoIGZyb250ZW5kIHN0YXRlOiAiKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeGVuX2RldmljZV9mcm9udGVuZF9jaGFuZ2VkLCBlcnJwKTsK KyAgICBpZiAoKmVycnApIHsKKyAgICAgICAgZXJyb3JfcHJlcGVuZChlcnJwLCAiZmFpbGVkIHRv IHdhdGNoIGZyb250ZW5kIHN0YXRlOiAiKTsKICAgICB9CiB9CiAKQEAgLTEyNDcsMTEgKzEyMzcs MTEgQEAgc3RhdGljIHZvaWQgeGVuX2RldmljZV9leGl0KE5vdGlmaWVyICpuLCB2b2lkICpkYXRh KQogCiBzdGF0aWMgdm9pZCB4ZW5fZGV2aWNlX3JlYWxpemUoRGV2aWNlU3RhdGUgKmRldiwgRXJy b3IgKiplcnJwKQogeworICAgIEVSUlBfQVVUT19QUk9QQUdBVEUoKTsKICAgICBYZW5EZXZpY2Ug KnhlbmRldiA9IFhFTl9ERVZJQ0UoZGV2KTsKICAgICBYZW5EZXZpY2VDbGFzcyAqeGVuZGV2X2Ns YXNzID0gWEVOX0RFVklDRV9HRVRfQ0xBU1MoeGVuZGV2KTsKICAgICBYZW5CdXMgKnhlbmJ1cyA9 IFhFTl9CVVMocWRldl9nZXRfcGFyZW50X2J1cyhERVZJQ0UoeGVuZGV2KSkpOwogICAgIGNvbnN0 IGNoYXIgKnR5cGUgPSBvYmplY3RfZ2V0X3R5cGVuYW1lKE9CSkVDVCh4ZW5kZXYpKTsKLSAgICBF cnJvciAqbG9jYWxfZXJyID0gTlVMTDsKIAogICAgIGlmICh4ZW5kZXYtPmZyb250ZW5kX2lkID09 IERPTUlEX0lOVkFMSUQpIHsKICAgICAgICAgeGVuZGV2LT5mcm9udGVuZF9pZCA9IHhlbl9kb21p ZDsKQEAgLTEyNjcsMTAgKzEyNTcsOSBAQCBzdGF0aWMgdm9pZCB4ZW5fZGV2aWNlX3JlYWxpemUo RGV2aWNlU3RhdGUgKmRldiwgRXJyb3IgKiplcnJwKQogICAgICAgICBnb3RvIHVucmVhbGl6ZTsK ICAgICB9CiAKLSAgICB4ZW5kZXYtPm5hbWUgPSB4ZW5kZXZfY2xhc3MtPmdldF9uYW1lKHhlbmRl diwgJmxvY2FsX2Vycik7Ci0gICAgaWYgKGxvY2FsX2VycikgewotICAgICAgICBlcnJvcl9wcm9w YWdhdGVfcHJlcGVuZChlcnJwLCBsb2NhbF9lcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJmYWlsZWQgdG8gZ2V0IGRldmljZSBuYW1lOiAiKTsKKyAgICB4ZW5kZXYtPm5hbWUg PSB4ZW5kZXZfY2xhc3MtPmdldF9uYW1lKHhlbmRldiwgZXJycCk7CisgICAgaWYgKCplcnJwKSB7 CisgICAgICAgIGVycm9yX3ByZXBlbmQoZXJycCwgImZhaWxlZCB0byBnZXQgZGV2aWNlIG5hbWU6 ICIpOwogICAgICAgICBnb3RvIHVucmVhbGl6ZTsKICAgICB9CiAKQEAgLTEyOTMsMjIgKzEyODIs MTkgQEAgc3RhdGljIHZvaWQgeGVuX2RldmljZV9yZWFsaXplKERldmljZVN0YXRlICpkZXYsIEVy cm9yICoqZXJycCkKICAgICB4ZW5kZXYtPmZlYXR1cmVfZ3JhbnRfY29weSA9CiAgICAgICAgICh4 ZW5nbnR0YWJfZ3JhbnRfY29weSh4ZW5kZXYtPnhndGgsIDAsIE5VTEwpID09IDApOwogCi0gICAg eGVuX2RldmljZV9iYWNrZW5kX2NyZWF0ZSh4ZW5kZXYsICZsb2NhbF9lcnIpOwotICAgIGlmIChs b2NhbF9lcnIpIHsKLSAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycik7Cisg ICAgeGVuX2RldmljZV9iYWNrZW5kX2NyZWF0ZSh4ZW5kZXYsIGVycnApOworICAgIGlmICgqZXJy cCkgewogICAgICAgICBnb3RvIHVucmVhbGl6ZTsKICAgICB9CiAKLSAgICB4ZW5fZGV2aWNlX2Zy b250ZW5kX2NyZWF0ZSh4ZW5kZXYsICZsb2NhbF9lcnIpOwotICAgIGlmIChsb2NhbF9lcnIpIHsK LSAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycik7CisgICAgeGVuX2Rldmlj ZV9mcm9udGVuZF9jcmVhdGUoeGVuZGV2LCBlcnJwKTsKKyAgICBpZiAoKmVycnApIHsKICAgICAg ICAgZ290byB1bnJlYWxpemU7CiAgICAgfQogCiAgICAgaWYgKHhlbmRldl9jbGFzcy0+cmVhbGl6 ZSkgewotICAgICAgICB4ZW5kZXZfY2xhc3MtPnJlYWxpemUoeGVuZGV2LCAmbG9jYWxfZXJyKTsK LSAgICAgICAgaWYgKGxvY2FsX2VycikgewotICAgICAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVy cnAsIGxvY2FsX2Vycik7CisgICAgICAgIHhlbmRldl9jbGFzcy0+cmVhbGl6ZSh4ZW5kZXYsIGVy cnApOworICAgICAgICBpZiAoKmVycnApIHsKICAgICAgICAgICAgIGdvdG8gdW5yZWFsaXplOwog ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvaHcveGVuL3hlbi1ob3N0LXBjaS1kZXZpY2Uu YyBiL2h3L3hlbi94ZW4taG9zdC1wY2ktZGV2aWNlLmMKaW5kZXggMWI0NGRjYWZhZi4uMDIzNzlj MzQxYyAxMDA2NDQKLS0tIGEvaHcveGVuL3hlbi1ob3N0LXBjaS1kZXZpY2UuYworKysgYi9ody94 ZW4veGVuLWhvc3QtcGNpLWRldmljZS5jCkBAIC0zMzMsOCArMzMzLDggQEAgdm9pZCB4ZW5faG9z dF9wY2lfZGV2aWNlX2dldChYZW5Ib3N0UENJRGV2aWNlICpkLCB1aW50MTZfdCBkb21haW4sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgYnVzLCB1aW50OF90IGRldiwgdWlu dDhfdCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCiB7 CisgICAgRVJSUF9BVVRPX1BST1BBR0FURSgpOwogICAgIHVuc2lnbmVkIGludCB2OwotICAgIEVy cm9yICplcnIgPSBOVUxMOwogCiAgICAgZC0+Y29uZmlnX2ZkID0gLTE7CiAgICAgZC0+ZG9tYWlu ID0gZG9tYWluOwpAQCAtMzQyLDM2ICszNDIsMzYgQEAgdm9pZCB4ZW5faG9zdF9wY2lfZGV2aWNl X2dldChYZW5Ib3N0UENJRGV2aWNlICpkLCB1aW50MTZfdCBkb21haW4sCiAgICAgZC0+ZGV2ID0g ZGV2OwogICAgIGQtPmZ1bmMgPSBmdW5jOwogCi0gICAgeGVuX2hvc3RfcGNpX2NvbmZpZ19vcGVu KGQsICZlcnIpOwotICAgIGlmIChlcnIpIHsKKyAgICB4ZW5faG9zdF9wY2lfY29uZmlnX29wZW4o ZCwgZXJycCk7CisgICAgaWYgKCplcnJwKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQog Ci0gICAgeGVuX2hvc3RfcGNpX2dldF9yZXNvdXJjZShkLCAmZXJyKTsKLSAgICBpZiAoZXJyKSB7 CisgICAgeGVuX2hvc3RfcGNpX2dldF9yZXNvdXJjZShkLCBlcnJwKTsKKyAgICBpZiAoKmVycnAp IHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICB4ZW5faG9zdF9wY2lfZ2V0X2hl eF92YWx1ZShkLCAidmVuZG9yIiwgJnYsICZlcnIpOwotICAgIGlmIChlcnIpIHsKKyAgICB4ZW5f aG9zdF9wY2lfZ2V0X2hleF92YWx1ZShkLCAidmVuZG9yIiwgJnYsIGVycnApOworICAgIGlmICgq ZXJycCkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBkLT52ZW5kb3JfaWQgPSB2 OwogCi0gICAgeGVuX2hvc3RfcGNpX2dldF9oZXhfdmFsdWUoZCwgImRldmljZSIsICZ2LCAmZXJy KTsKLSAgICBpZiAoZXJyKSB7CisgICAgeGVuX2hvc3RfcGNpX2dldF9oZXhfdmFsdWUoZCwgImRl dmljZSIsICZ2LCBlcnJwKTsKKyAgICBpZiAoKmVycnApIHsKICAgICAgICAgZ290byBlcnJvcjsK ICAgICB9CiAgICAgZC0+ZGV2aWNlX2lkID0gdjsKIAotICAgIHhlbl9ob3N0X3BjaV9nZXRfZGVj X3ZhbHVlKGQsICJpcnEiLCAmdiwgJmVycik7Ci0gICAgaWYgKGVycikgeworICAgIHhlbl9ob3N0 X3BjaV9nZXRfZGVjX3ZhbHVlKGQsICJpcnEiLCAmdiwgZXJycCk7CisgICAgaWYgKCplcnJwKSB7 CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGQtPmlycSA9IHY7CiAKLSAgICB4ZW5f aG9zdF9wY2lfZ2V0X2hleF92YWx1ZShkLCAiY2xhc3MiLCAmdiwgJmVycik7Ci0gICAgaWYgKGVy cikgeworICAgIHhlbl9ob3N0X3BjaV9nZXRfaGV4X3ZhbHVlKGQsICJjbGFzcyIsICZ2LCBlcnJw KTsKKyAgICBpZiAoKmVycnApIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZC0+ Y2xhc3NfY29kZSA9IHY7CkBAIC0zODEsNyArMzgxLDYgQEAgdm9pZCB4ZW5faG9zdF9wY2lfZGV2 aWNlX2dldChYZW5Ib3N0UENJRGV2aWNlICpkLCB1aW50MTZfdCBkb21haW4sCiAgICAgcmV0dXJu OwogCiBlcnJvcjoKLSAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgZXJyKTsKIAogICAgIGlmIChk LT5jb25maWdfZmQgPj0gMCkgewogICAgICAgICBjbG9zZShkLT5jb25maWdfZmQpOwpkaWZmIC0t Z2l0IGEvaHcveGVuL3hlbl9wdC5jIGIvaHcveGVuL3hlbl9wdC5jCmluZGV4IGI5MTA4MmNiOGIu LmY1N2I4MTU4OGUgMTAwNjQ0Ci0tLSBhL2h3L3hlbi94ZW5fcHQuYworKysgYi9ody94ZW4veGVu X3B0LmMKQEAgLTc2NywxMiArNzY3LDEyIEBAIHN0YXRpYyB2b2lkIHhlbl9wdF9kZXN0cm95KFBD SURldmljZSAqZCkgewogCiBzdGF0aWMgdm9pZCB4ZW5fcHRfcmVhbGl6ZShQQ0lEZXZpY2UgKmQs IEVycm9yICoqZXJycCkKIHsKKyAgICBFUlJQX0FVVE9fUFJPUEFHQVRFKCk7CiAgICAgWGVuUENJ UGFzc3Rocm91Z2hTdGF0ZSAqcyA9IFhFTl9QVF9ERVZJQ0UoZCk7CiAgICAgaW50IGksIHJjID0g MDsKICAgICB1aW50OF90IG1hY2hpbmVfaXJxID0gMCwgc2NyYXRjaDsKICAgICB1aW50MTZfdCBj bWQgPSAwOwogICAgIGludCBwaXJxID0gWEVOX1BUX1VOQVNTSUdORURfUElSUTsKLSAgICBFcnJv ciAqZXJyID0gTlVMTDsKIAogICAgIC8qIHJlZ2lzdGVyIHJlYWwgZGV2aWNlICovCiAgICAgWEVO X1BUX0xPRyhkLCAiQXNzaWduaW5nIHJlYWwgcGh5c2ljYWwgZGV2aWNlICUwMng6JTAyeC4lZCIK QEAgLTc4MywxMCArNzgzLDkgQEAgc3RhdGljIHZvaWQgeGVuX3B0X3JlYWxpemUoUENJRGV2aWNl ICpkLCBFcnJvciAqKmVycnApCiAgICAgeGVuX2hvc3RfcGNpX2RldmljZV9nZXQoJnMtPnJlYWxf ZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmhvc3RhZGRyLmRvbWFpbiwg cy0+aG9zdGFkZHIuYnVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmhvc3RhZGRy LnNsb3QsIHMtPmhvc3RhZGRyLmZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZlcnIpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgZXJyb3JfYXBwZW5kX2hpbnQoJmVyciwg IkZhaWxlZCB0byBcIm9wZW5cIiB0aGUgcmVhbCBwY2kgZGV2aWNlIik7Ci0gICAgICAgIGVycm9y X3Byb3BhZ2F0ZShlcnJwLCBlcnIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnAp OworICAgIGlmICgqZXJycCkgeworICAgICAgICBlcnJvcl9hcHBlbmRfaGludChlcnJwLCAiRmFp bGVkIHRvIFwib3BlblwiIHRoZSByZWFsIHBjaSBkZXZpY2UiKTsKICAgICAgICAgcmV0dXJuOwog ICAgIH0KIApAQCAtODEzLDExICs4MTIsMTAgQEAgc3RhdGljIHZvaWQgeGVuX3B0X3JlYWxpemUo UENJRGV2aWNlICpkLCBFcnJvciAqKmVycnApCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg IH0KIAotICAgICAgICB4ZW5fcHRfc2V0dXBfdmdhKHMsICZzLT5yZWFsX2RldmljZSwgJmVycik7 Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIGVycm9yX2FwcGVuZF9oaW50KCZlcnIs ICJTZXR1cCBWR0EgQklPUyBvZiBwYXNzdGhyb3VnaCIKLSAgICAgICAgICAgICAgICAgICAgIiBH RlggZmFpbGVkIik7Ci0gICAgICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgZXJyKTsKKyAg ICAgICAgeGVuX3B0X3NldHVwX3ZnYShzLCAmcy0+cmVhbF9kZXZpY2UsIGVycnApOworICAgICAg ICBpZiAoKmVycnApIHsKKyAgICAgICAgICAgIGVycm9yX2FwcGVuZF9oaW50KGVycnAsICJTZXR1 cCBWR0EgQklPUyBvZiBwYXNzdGhyb3VnaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIgR0ZYIGZhaWxlZCIpOwogICAgICAgICAgICAgeGVuX2hvc3RfcGNpX2RldmljZV9wdXQoJnMt PnJlYWxfZGV2aWNlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODMwLDEw ICs4MjgsOSBAQCBzdGF0aWMgdm9pZCB4ZW5fcHRfcmVhbGl6ZShQQ0lEZXZpY2UgKmQsIEVycm9y ICoqZXJycCkKICAgICB4ZW5fcHRfcmVnaXN0ZXJfcmVnaW9ucyhzLCAmY21kKTsKIAogICAgIC8q IHJlaW5pdGlhbGl6ZSBlYWNoIGNvbmZpZyByZWdpc3RlciB0byBiZSBlbXVsYXRlZCAqLwotICAg IHhlbl9wdF9jb25maWdfaW5pdChzLCAmZXJyKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIGVy cm9yX2FwcGVuZF9oaW50KCZlcnIsICJQQ0kgQ29uZmlnIHNwYWNlIGluaXRpYWxpc2F0aW9uIGZh aWxlZCIpOwotICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgZXJyKTsKKyAgICB4ZW5fcHRf Y29uZmlnX2luaXQocywgZXJycCk7CisgICAgaWYgKCplcnJwKSB7CisgICAgICAgIGVycm9yX2Fw cGVuZF9oaW50KGVycnAsICJQQ0kgQ29uZmlnIHNwYWNlIGluaXRpYWxpc2F0aW9uIGZhaWxlZCIp OwogICAgICAgICByYyA9IC0xOwogICAgICAgICBnb3RvIGVycl9vdXQ7CiAgICAgfQpkaWZmIC0t Z2l0IGEvaHcveGVuL3hlbl9wdF9jb25maWdfaW5pdC5jIGIvaHcveGVuL3hlbl9wdF9jb25maWdf aW5pdC5jCmluZGV4IDMxZWM1YWRkMWQuLmFmM2ZiZDFiZmIgMTAwNjQ0Ci0tLSBhL2h3L3hlbi94 ZW5fcHRfY29uZmlnX2luaXQuYworKysgYi9ody94ZW4veGVuX3B0X2NvbmZpZ19pbml0LmMKQEAg LTIwMDgsOCArMjAwOCw4IEBAIHN0YXRpYyB2b2lkIHhlbl9wdF9jb25maWdfcmVnX2luaXQoWGVu UENJUGFzc3Rocm91Z2hTdGF0ZSAqcywKIAogdm9pZCB4ZW5fcHRfY29uZmlnX2luaXQoWGVuUENJ UGFzc3Rocm91Z2hTdGF0ZSAqcywgRXJyb3IgKiplcnJwKQogeworICAgIEVSUlBfQVVUT19QUk9Q QUdBVEUoKTsKICAgICBpbnQgaSwgcmM7Ci0gICAgRXJyb3IgKmVyciA9IE5VTEw7CiAKICAgICBR TElTVF9JTklUKCZzLT5yZWdfZ3Jwcyk7CiAKQEAgLTIwNTIsMTAgKzIwNTIsOSBAQCB2b2lkIHhl bl9wdF9jb25maWdfaW5pdChYZW5QQ0lQYXNzdGhyb3VnaFN0YXRlICpzLCBFcnJvciAqKmVycnAp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19n cnBfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmcmVnX2dycF9lbnRyeS0+c2l6ZSk7CiAgICAgICAgICAgICBpZiAocmMgPCAwKSB7Ci0g ICAgICAgICAgICAgICAgZXJyb3Jfc2V0ZygmZXJyLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgJWQv JXp1LCB0eXBlID0gMHgleCwiCisgICAgICAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiRmFp bGVkIHRvIGluaXRpYWxpemUgJWQvJXp1LCB0eXBlID0gMHgleCwiCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiIHJjOiAlZCIsIGksIEFSUkFZX1NJWkUoeGVuX3B0X2VtdV9yZWdfZ3Jwcyks CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5fcHRfZW11X3JlZ19ncnBzW2ldLmdycF90 eXBlLCByYyk7Ci0gICAgICAgICAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGVycik7CiAg ICAgICAgICAgICAgICAgeGVuX3B0X2NvbmZpZ19kZWxldGUocyk7CiAgICAgICAgICAgICAgICAg cmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMjA2OCwxMyArMjA2NywxNCBAQCB2b2lkIHhlbl9w dF9jb25maWdfaW5pdChYZW5QQ0lQYXNzdGhyb3VnaFN0YXRlICpzLCBFcnJvciAqKmVycnApCiAK ICAgICAgICAgICAgICAgICAvKiBpbml0aWFsaXplIGNhcGFiaWxpdHkgcmVnaXN0ZXIgKi8KICAg ICAgICAgICAgICAgICBmb3IgKGogPSAwOyByZWdzLT5zaXplICE9IDA7IGorKywgcmVncysrKSB7 Ci0gICAgICAgICAgICAgICAgICAgIHhlbl9wdF9jb25maWdfcmVnX2luaXQocywgcmVnX2dycF9l bnRyeSwgcmVncywgJmVycik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKLSAgICAg ICAgICAgICAgICAgICAgICAgIGVycm9yX2FwcGVuZF9oaW50KCZlcnIsICJGYWlsZWQgdG8gaW5p dCByZWdpc3RlciAlZCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBvZmZzZXRz IDB4JXggaW4gZ3JwX3R5cGUgPSAweCV4ICglZC8lenUpIiwgaiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVncy0+b2Zmc2V0LCB4ZW5fcHRfZW11X3JlZ19ncnBzW2ldLmdycF90 eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBBUlJBWV9TSVpFKHhlbl9w dF9lbXVfcmVnX2dycHMpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3Byb3BhZ2F0 ZShlcnJwLCBlcnIpOworICAgICAgICAgICAgICAgICAgICB4ZW5fcHRfY29uZmlnX3JlZ19pbml0 KHMsIHJlZ19ncnBfZW50cnksIHJlZ3MsIGVycnApOworICAgICAgICAgICAgICAgICAgICBpZiAo KmVycnApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2FwcGVuZF9oaW50KGVycnAs ICJGYWlsZWQgdG8gaW5pdCByZWdpc3RlciAlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIgb2Zmc2V0cyAweCV4IGluIGdycF90eXBlID0gMHgleCAoJWQvJXp1 KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVncy0+b2Zmc2V0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3B0X2VtdV9yZWdfZ3Jwc1tp XS5ncnBfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGks IEFSUkFZX1NJWkUoeGVuX3B0X2VtdV9yZWdfZ3JwcykpOwogICAgICAgICAgICAgICAgICAgICAg ICAgeGVuX3B0X2NvbmZpZ19kZWxldGUocyk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm47CiAgICAgICAgICAgICAgICAgICAgIH0KLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C4DEBC2BB1D for ; Tue, 17 Mar 2020 15:42:30 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7BDC420663 for ; Tue, 17 Mar 2020 15:42:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="lvrpAZDY" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7BDC420663 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:35024 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jEEMP-0005jY-JR for qemu-devel@archiver.kernel.org; Tue, 17 Mar 2020 11:42:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33505) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jEDxx-0003E9-1q for qemu-devel@nongnu.org; Tue, 17 Mar 2020 11:17:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jEDxt-0002eR-4W for qemu-devel@nongnu.org; Tue, 17 Mar 2020 11:17:12 -0400 Received: from mail-db3eur04on0705.outbound.protection.outlook.com ([2a01:111:f400:fe0c::705]:32769 helo=EUR04-DB3-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 1jEDxs-0002RE-NV; Tue, 17 Mar 2020 11:17:09 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CcbGzDvgmo4stBOG4bu8vBrLOBsHHyb1orhnCjgKg1wYFc0eKKlWXzkHM+aEtvZV9orOHXfSIcA+lHXOBt+4hvVWd4BA73bFBC7hXTv/GpYXi8R16vYItqlwWpUdu4QSvN9bmwhpmHBSXxzym6br5LMgSjBTW1d9zkwc1+POuOlqa6acHE2mWbHsdPRVNf353YbLHVSOZBOHwoRau9iNodXcUiImSwpRQFLZvoag1xARbQ+r57oOZxf1TAnUelxQEk2egJ0Zgl+w2DE2h8IarzUN/iUseM0g8W9R7SPNjNi2jMcd+ByriW5+M/PGRgflwfacNBu62N1hwNtlb41bpg== 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=XwTQjo26AZ7w0MXa3LZcBy1dibOpY9v7cdvOb/3d730=; b=mY6tbZaPJChnIgYPz9z2UhwqjHhPDVoDAk+iv++mOigHovD7FOF1Pqob+W80upMrhpBWcPe2Zz9CxZa34xXqe4h4PpgZ4WbkgjWP8yL/87OO+84Nwy9lUeCjle+r8sKniSI24S7h587KaG7EX9DlUKjKH71BYv/TY/kjZ+rrQZT5/CjoNeBGexUXVPAufqR5vggW0xInN3gwn7fY2rB6QYwWk/CDUg9NcgawSewG8MQ2+p1ndJNo2PicAmgEu/lizggtDS66H57OqI1ey5Yg2VRonx2DIdeVTTzDEGQx/1bHxYCnzUyskbAqw9G3VELNf+4LnpsThW5+etFlLa6Qjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XwTQjo26AZ7w0MXa3LZcBy1dibOpY9v7cdvOb/3d730=; b=lvrpAZDYBZ167kiV8jcQwrtjWROXyZZ9ivTnZVNADUjiKT2hX1jd0cTfKfppBI6I2Tv0ymcQD0XNob0s1lvM7lRzmVyaAp0/eBRt3zRgfsBbdD/lBxE/RaoplIs+zovAPBblRFueqZP7k5Vb/Q3emMvYKN7c4VDDj5VwCYJiSfw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from HE1PR0802MB2507.eurprd08.prod.outlook.com (10.175.35.136) by HE1PR0802MB2299.eurprd08.prod.outlook.com (10.172.125.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2814.22; Tue, 17 Mar 2020 15:17:05 +0000 Received: from HE1PR0802MB2507.eurprd08.prod.outlook.com ([fe80::4d32:e4e1:5b9f:240f]) by HE1PR0802MB2507.eurprd08.prod.outlook.com ([fe80::4d32:e4e1:5b9f:240f%12]) with mapi id 15.20.2814.021; Tue, 17 Mar 2020 15:17:05 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [PATCH v10 9/9] xen: introduce ERRP_AUTO_PROPAGATE Date: Tue, 17 Mar 2020 18:16:25 +0300 Message-ID: <20200317151625.20797-10-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20200317151625.20797-1-vsementsov@virtuozzo.com> References: <20200317151625.20797-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-ClientProxiedBy: AM0PR10CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::15) To HE1PR0802MB2507.eurprd08.prod.outlook.com (2603:10a6:3:e1::8) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.248) by AM0PR10CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2835.15 via Frontend Transport; Tue, 17 Mar 2020 15:17:04 +0000 X-Mailer: git-send-email 2.21.0 X-Originating-IP: [185.215.60.248] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a4de4470-1e7f-4b80-89eb-08d7ca864084 X-MS-TrafficTypeDiagnostic: HE1PR0802MB2299: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:111; X-Forefront-PRVS: 0345CFD558 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4636009)(346002)(366004)(39850400004)(376002)(396003)(136003)(199004)(26005)(52116002)(16526019)(86362001)(8676002)(186003)(6916009)(66476007)(7416002)(66556008)(66946007)(8936002)(6666004)(81156014)(6512007)(478600001)(69590400007)(6506007)(36756003)(81166006)(54906003)(6486002)(2906002)(30864003)(316002)(2616005)(4326008)(1076003)(956004)(5660300002); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0802MB2299; H:HE1PR0802MB2507.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: alCQNG+fBTQZPOOWGCgJ18uOgdw+aLj8/rID+FyBePMuqqWTShhzKXGXsZn0yyVJIPOe7rrhg/uiVhW5DbckipS0oNgUKRt7nvXIfAPCI/bSCnK2d2A59TVPOFSk9S3wYp1tl3D08AulTocmBGQdkEgviP0Q7lh+Sf49ijIn0rljGFXvFC7mpuMK7Tu+h8u5Ha5sNsLIPJzWp4zjwyAxU/Q3Y/vbsdJKJ3LhMz7Hh3JwpHhKd+TYLM1DqfOhF/DrHU0NS1Q2lZ8KI5ukaiwK4P6QfnW1B1TeDuZwttxsuD+YveCjX/sL+PopRrUv/WB9gZs8K9oo4PA6fAB5S0Ny/K1qBvLuYyj7VcueaYveyd8iTTg3SLZC/OVLfFbbj2p9EKKEv4JvQGkY+SKUhW03jUCjTVms6YRpOZ5KvivP0ZZF6KisKPv98uBrxGoQn1ShZoRLc3VoJDRMZul3sb/qdUroyGCHUljymqGMdeKp8OQo8Dhv/3ok37m40ZbihMRS X-MS-Exchange-AntiSpam-MessageData: PtT3V71taMn8mpJsqKU/KLjBWm8Bm8735QN190FFdtlYaPf/jQta2Bo46SH1hJLRjCxDPHoiBUe3uHXVIhLipmcsE8F0x94cOA/kuTW9NzyszuyDIRRJtLGWnDvXm7SZldJ74R7Orx0AFsqaAsfQ+g== X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4de4470-1e7f-4b80-89eb-08d7ca864084 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2020 15:17:05.6259 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7EMKphGNm8R9ervG41b3mqdED0J9ff4UHsZwsHOI8FoqXGIHWjuWEx/Sd8EKmCvROOIGfXENjR0hTP9Rt7ma6DIfW8o0oGD3ntOqTKk7KpI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2299 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 2a01:111:f400:fe0c::705 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , vsementsov@virtuozzo.com, qemu-block@nongnu.org, Paul Durrant , armbru@redhat.com, Greg Kurz , Stefano Stabellini , Stefan Hajnoczi , Anthony Perard , xen-devel@lists.xenproject.org, Max Reitz Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &error_fatal (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and then propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatal, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit is generated by command sed -n '/^X86 Xen CPUs$/,/^$/{s/^F: //p}' MAINTAINERS | \ xargs git ls-files | grep '\.[hc]$' | \ xargs spatch \ --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h \ --in-place --no-show-diff --max-width 80 Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Paul Durrant --- hw/block/dataplane/xen-block.c | 17 ++--- hw/block/xen-block.c | 122 ++++++++++++++------------------- hw/pci-host/xen_igd_pt.c | 7 +- hw/xen/xen-backend.c | 7 +- hw/xen/xen-bus.c | 92 +++++++++++-------------- hw/xen/xen-host-pci-device.c | 27 ++++---- hw/xen/xen_pt.c | 25 +++---- hw/xen/xen_pt_config_init.c | 20 +++--- 8 files changed, 138 insertions(+), 179 deletions(-) diff --git a/hw/block/dataplane/xen-block.c b/hw/block/dataplane/xen-block.= c index 288a87a814..3a8469fe87 100644 --- a/hw/block/dataplane/xen-block.c +++ b/hw/block/dataplane/xen-block.c @@ -739,8 +739,8 @@ void xen_block_dataplane_start(XenBlockDataPlane *datap= lane, unsigned int protocol, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenDevice *xendev =3D dataplane->xendev; - Error *local_err =3D NULL; unsigned int ring_size; unsigned int i; =20 @@ -776,9 +776,8 @@ void xen_block_dataplane_start(XenBlockDataPlane *datap= lane, } =20 xen_device_set_max_grant_refs(xendev, dataplane->nr_ring_ref, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { goto stop; } =20 @@ -786,9 +785,8 @@ void xen_block_dataplane_start(XenBlockDataPlane *datap= lane, dataplane->ring_ref, dataplane->nr_ring_ref, PROT_READ | PROT_WRITE, - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { goto stop; } =20 @@ -821,9 +819,8 @@ void xen_block_dataplane_start(XenBlockDataPlane *datap= lane, dataplane->event_channel =3D xen_device_bind_event_channel(xendev, event_channel, xen_block_dataplane_event, dataplane= , - &local_err); - if (local_err) { - error_propagate(errp, local_err); + errp); + if (*errp) { goto stop; } =20 diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c index 7b3b6dee97..5d4c94181c 100644 --- a/hw/block/xen-block.c +++ b/hw/block/xen-block.c @@ -195,6 +195,7 @@ static const BlockDevOps xen_block_dev_ops =3D { =20 static void xen_block_realize(XenDevice *xendev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBlockDevice *blockdev =3D XEN_BLOCK_DEVICE(xendev); XenBlockDeviceClass *blockdev_class =3D XEN_BLOCK_DEVICE_GET_CLASS(xendev); @@ -202,7 +203,6 @@ static void xen_block_realize(XenDevice *xendev, Error = **errp) XenBlockVdev *vdev =3D &blockdev->props.vdev; BlockConf *conf =3D &blockdev->props.conf; BlockBackend *blk =3D conf->blk; - Error *local_err =3D NULL; =20 if (vdev->type =3D=3D XEN_BLOCK_VDEV_TYPE_INVALID) { error_setg(errp, "vdev property not set"); @@ -212,9 +212,8 @@ static void xen_block_realize(XenDevice *xendev, Error = **errp) trace_xen_block_realize(type, vdev->disk, vdev->partition); =20 if (blockdev_class->realize) { - blockdev_class->realize(blockdev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + blockdev_class->realize(blockdev, errp); + if (*errp) { return; } } @@ -284,8 +283,8 @@ static void xen_block_frontend_changed(XenDevice *xende= v, enum xenbus_state frontend_state, Error **errp) { + ERRP_AUTO_PROPAGATE(); enum xenbus_state backend_state =3D xen_device_backend_get_state(xende= v); - Error *local_err =3D NULL; =20 switch (frontend_state) { case XenbusStateInitialised: @@ -294,15 +293,13 @@ static void xen_block_frontend_changed(XenDevice *xen= dev, break; } =20 - xen_block_disconnect(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_block_disconnect(xendev, errp); + if (*errp) { break; } =20 - xen_block_connect(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_block_connect(xendev, errp); + if (*errp) { break; } =20 @@ -315,9 +312,8 @@ static void xen_block_frontend_changed(XenDevice *xende= v, =20 case XenbusStateClosed: case XenbusStateUnknown: - xen_block_disconnect(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_block_disconnect(xendev, errp); + if (*errp) { break; } =20 @@ -404,10 +400,10 @@ static int vbd_name_to_disk(const char *name, const c= har **endp, static void xen_block_set_vdev(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; XenBlockVdev *vdev =3D qdev_get_prop_ptr(dev, prop); - Error *local_err =3D NULL; char *str, *p; const char *end; =20 @@ -416,9 +412,8 @@ static void xen_block_set_vdev(Object *obj, Visitor *v,= const char *name, return; } =20 - visit_type_str(v, name, &str, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &str, errp); + if (*errp) { return; } =20 @@ -672,9 +667,9 @@ static void xen_block_blockdev_del(const char *node_nam= e, Error **errp) static char *xen_block_blockdev_add(const char *id, QDict *qdict, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *driver =3D qdict_get_try_str(qdict, "driver"); BlockdevOptions *options =3D NULL; - Error *local_err =3D NULL; char *node_name; Visitor *v; =20 @@ -689,18 +684,16 @@ static char *xen_block_blockdev_add(const char *id, Q= Dict *qdict, trace_xen_block_blockdev_add(node_name); =20 v =3D qobject_input_visitor_new(QOBJECT(qdict)); - visit_type_BlockdevOptions(v, NULL, &options, &local_err); + visit_type_BlockdevOptions(v, NULL, &options, errp); visit_free(v); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { goto fail; } =20 - qmp_blockdev_add(options, &local_err); + qmp_blockdev_add(options, errp); =20 - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { goto fail; } =20 @@ -719,14 +712,12 @@ fail: =20 static void xen_block_drive_destroy(XenBlockDrive *drive, Error **errp) { + ERRP_AUTO_PROPAGATE(); char *node_name =3D drive->node_name; =20 if (node_name) { - Error *local_err =3D NULL; - - xen_block_blockdev_del(node_name, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_block_blockdev_del(node_name, errp); + if (*errp) { return; } g_free(node_name); @@ -740,6 +731,7 @@ static XenBlockDrive *xen_block_drive_create(const char= *id, const char *device_type, QDict *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); const char *params =3D qdict_get_try_str(opts, "params"); const char *mode =3D qdict_get_try_str(opts, "mode"); const char *direct_io_safe =3D qdict_get_try_str(opts, "direct-io-safe= "); @@ -747,7 +739,6 @@ static XenBlockDrive *xen_block_drive_create(const char= *id, char *driver =3D NULL; char *filename =3D NULL; XenBlockDrive *drive =3D NULL; - Error *local_err =3D NULL; QDict *file_layer; QDict *driver_layer; =20 @@ -826,13 +817,12 @@ static XenBlockDrive *xen_block_drive_create(const ch= ar *id, =20 g_assert(!drive->node_name); drive->node_name =3D xen_block_blockdev_add(drive->id, driver_layer, - &local_err); + errp); =20 qobject_unref(driver_layer); =20 done: - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { xen_block_drive_destroy(drive, NULL); return NULL; } @@ -857,8 +847,8 @@ static void xen_block_iothread_destroy(XenBlockIOThread= *iothread, static XenBlockIOThread *xen_block_iothread_create(const char *id, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBlockIOThread *iothread =3D g_new(XenBlockIOThread, 1); - Error *local_err =3D NULL; QDict *opts; QObject *ret_data; =20 @@ -867,13 +857,11 @@ static XenBlockIOThread *xen_block_iothread_create(co= nst char *id, opts =3D qdict_new(); qdict_put_str(opts, "qom-type", TYPE_IOTHREAD); qdict_put_str(opts, "id", id); - qmp_object_add(opts, &ret_data, &local_err); + qmp_object_add(opts, &ret_data, errp); qobject_unref(opts); qobject_unref(ret_data); =20 - if (local_err) { - error_propagate(errp, local_err); - + if (*errp) { g_free(iothread->id); g_free(iothread); return NULL; @@ -885,6 +873,7 @@ static XenBlockIOThread *xen_block_iothread_create(cons= t char *id, static void xen_block_device_create(XenBackendInstance *backend, QDict *opts, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBus *xenbus =3D xen_backend_get_bus(backend); const char *name =3D xen_backend_get_name(backend); unsigned long number; @@ -892,7 +881,6 @@ static void xen_block_device_create(XenBackendInstance = *backend, XenBlockDrive *drive =3D NULL; XenBlockIOThread *iothread =3D NULL; XenDevice *xendev =3D NULL; - Error *local_err =3D NULL; const char *type; XenBlockDevice *blockdev; =20 @@ -924,52 +912,48 @@ static void xen_block_device_create(XenBackendInstanc= e *backend, goto fail; } =20 - drive =3D xen_block_drive_create(vdev, device_type, opts, &local_err); + drive =3D xen_block_drive_create(vdev, device_type, opts, errp); if (!drive) { - error_propagate_prepend(errp, local_err, "failed to create drive: = "); + error_prepend(errp, "failed to create drive: "); goto fail; } =20 - iothread =3D xen_block_iothread_create(vdev, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to create iothread: "); + iothread =3D xen_block_iothread_create(vdev, errp); + if (*errp) { + error_prepend(errp, "failed to create iothread: "); goto fail; } =20 xendev =3D XEN_DEVICE(qdev_create(BUS(xenbus), type)); blockdev =3D XEN_BLOCK_DEVICE(xendev); =20 - object_property_set_str(OBJECT(xendev), vdev, "vdev", &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, "failed to set 'vdev': ")= ; + object_property_set_str(OBJECT(xendev), vdev, "vdev", errp); + if (*errp) { + error_prepend(errp, "failed to set 'vdev': "); goto fail; } =20 object_property_set_str(OBJECT(xendev), xen_block_drive_get_node_name(drive), "drive", - &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, "failed to set 'drive': "= ); + errp); + if (*errp) { + error_prepend(errp, "failed to set 'drive': "); goto fail; } =20 object_property_set_str(OBJECT(xendev), iothread->id, "iothread", - &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to set 'iothread': "); + errp); + if (*errp) { + error_prepend(errp, "failed to set 'iothread': "); goto fail; } =20 blockdev->iothread =3D iothread; blockdev->drive =3D drive; =20 - object_property_set_bool(OBJECT(xendev), true, "realized", &local_err)= ; - if (local_err) { - error_propagate_prepend(errp, local_err, - "realization of device %s failed: ", - type); + object_property_set_bool(OBJECT(xendev), true, "realized", errp); + if (*errp) { + error_prepend(errp, "realization of device %s failed: ", type); goto fail; } =20 @@ -993,31 +977,29 @@ fail: static void xen_block_device_destroy(XenBackendInstance *backend, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenDevice *xendev =3D xen_backend_get_device(backend); XenBlockDevice *blockdev =3D XEN_BLOCK_DEVICE(xendev); XenBlockVdev *vdev =3D &blockdev->props.vdev; XenBlockDrive *drive =3D blockdev->drive; XenBlockIOThread *iothread =3D blockdev->iothread; - Error *local_err =3D NULL; =20 trace_xen_block_device_destroy(vdev->number); =20 object_unparent(OBJECT(xendev)); =20 if (iothread) { - xen_block_iothread_destroy(iothread, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to destroy iothread: "); + xen_block_iothread_destroy(iothread, errp); + if (*errp) { + error_prepend(errp, "failed to destroy iothread: "); return; } } =20 if (drive) { - xen_block_drive_destroy(drive, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to destroy drive: "); + xen_block_drive_destroy(drive, errp); + if (*errp) { + error_prepend(errp, "failed to destroy drive: "); } } } diff --git a/hw/pci-host/xen_igd_pt.c b/hw/pci-host/xen_igd_pt.c index efcc9347ff..29ade9ca25 100644 --- a/hw/pci-host/xen_igd_pt.c +++ b/hw/pci-host/xen_igd_pt.c @@ -79,17 +79,16 @@ static void host_pci_config_read(int pos, int len, uint= 32_t *val, Error **errp) =20 static void igd_pt_i440fx_realize(PCIDevice *pci_dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); uint32_t val =3D 0; size_t i; int pos, len; - Error *local_err =3D NULL; =20 for (i =3D 0; i < ARRAY_SIZE(igd_host_bridge_infos); i++) { pos =3D igd_host_bridge_infos[i].offset; len =3D igd_host_bridge_infos[i].len; - host_pci_config_read(pos, len, &val, &local_err); - if (local_err) { - error_propagate(errp, local_err); + host_pci_config_read(pos, len, &val, errp); + if (*errp) { return; } pci_default_write_config(pci_dev, pos, val, len); diff --git a/hw/xen/xen-backend.c b/hw/xen/xen-backend.c index da065f81b7..1cc0694053 100644 --- a/hw/xen/xen-backend.c +++ b/hw/xen/xen-backend.c @@ -98,9 +98,9 @@ static void xen_backend_list_remove(XenBackendInstance *b= ackend) void xen_backend_device_create(XenBus *xenbus, const char *type, const char *name, QDict *opts, Error **errp= ) { + ERRP_AUTO_PROPAGATE(); const XenBackendImpl *impl =3D xen_backend_table_lookup(type); XenBackendInstance *backend; - Error *local_error =3D NULL; =20 if (!impl) { return; @@ -110,9 +110,8 @@ void xen_backend_device_create(XenBus *xenbus, const ch= ar *type, backend->xenbus =3D xenbus; backend->name =3D g_strdup(name); =20 - impl->create(backend, opts, &local_error); - if (local_error) { - error_propagate(errp, local_error); + impl->create(backend, opts, errp); + if (*errp) { g_free(backend->name); g_free(backend); return; diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c index 18237b34ea..97259c964b 100644 --- a/hw/xen/xen-bus.c +++ b/hw/xen/xen-bus.c @@ -53,9 +53,9 @@ static char *xen_device_get_frontend_path(XenDevice *xend= ev) =20 static void xen_device_unplug(XenDevice *xendev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBus *xenbus =3D XEN_BUS(qdev_get_parent_bus(DEVICE(xendev))); const char *type =3D object_get_typename(OBJECT(xendev)); - Error *local_err =3D NULL; xs_transaction_t tid; =20 trace_xen_device_unplug(type, xendev->name); @@ -69,14 +69,14 @@ again: } =20 xs_node_printf(xenbus->xsh, tid, xendev->backend_path, "online", - &local_err, "%u", 0); - if (local_err) { + errp, "%u", 0); + if (*errp) { goto abort; } =20 xs_node_printf(xenbus->xsh, tid, xendev->backend_path, "state", - &local_err, "%u", XenbusStateClosing); - if (local_err) { + errp, "%u", XenbusStateClosing); + if (*errp) { goto abort; } =20 @@ -96,7 +96,6 @@ abort: * from ending the transaction. */ xs_transaction_end(xenbus->xsh, tid, true); - error_propagate(errp, local_err); } =20 static void xen_bus_print_dev(Monitor *mon, DeviceState *dev, int indent) @@ -205,15 +204,13 @@ static XenWatch *watch_list_add(XenWatchList *watch_l= ist, const char *node, const char *key, XenWatchHandler handler, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenWatch *watch =3D new_watch(node, key, handler, opaque); - Error *local_err =3D NULL; =20 notifier_list_add(&watch_list->notifiers, &watch->notifier); =20 - xs_node_watch(watch_list->xsh, node, key, watch->token, &local_err); - if (local_err) { - error_propagate(errp, local_err); - + xs_node_watch(watch_list->xsh, node, key, watch->token, errp); + if (*errp) { notifier_remove(&watch->notifier); free_watch(watch); =20 @@ -255,11 +252,11 @@ static void xen_bus_backend_create(XenBus *xenbus, co= nst char *type, const char *name, char *path, Error **errp) { + ERRP_AUTO_PROPAGATE(); xs_transaction_t tid; char **key; QDict *opts; unsigned int i, n; - Error *local_err =3D NULL; =20 trace_xen_bus_backend_create(type, path); =20 @@ -314,13 +311,11 @@ again: return; } =20 - xen_backend_device_create(xenbus, type, name, opts, &local_err); + xen_backend_device_create(xenbus, type, name, opts, errp); qobject_unref(opts); =20 - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to create '%s' device '%s': ", - type, name); + if (*errp) { + error_prepend(errp, "failed to create '%s' device '%s': ", type, n= ame); } } =20 @@ -692,9 +687,9 @@ static void xen_device_remove_watch(XenDevice *xendev, = XenWatch *watch, =20 static void xen_device_backend_create(XenDevice *xendev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBus *xenbus =3D XEN_BUS(qdev_get_parent_bus(DEVICE(xendev))); struct xs_permissions perms[2]; - Error *local_err =3D NULL; =20 xendev->backend_path =3D xen_device_get_backend_path(xendev); =20 @@ -706,30 +701,27 @@ static void xen_device_backend_create(XenDevice *xend= ev, Error **errp) g_assert(xenbus->xsh); =20 xs_node_create(xenbus->xsh, XBT_NULL, xendev->backend_path, perms, - ARRAY_SIZE(perms), &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to create backend: "); + ARRAY_SIZE(perms), errp); + if (*errp) { + error_prepend(errp, "failed to create backend: "); return; } =20 xendev->backend_state_watch =3D xen_device_add_watch(xendev, xendev->backend_path, "state", xen_device_backend_changed, - &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to watch backend state: "); + errp); + if (*errp) { + error_prepend(errp, "failed to watch backend state: "); return; } =20 xendev->backend_online_watch =3D xen_device_add_watch(xendev, xendev->backend_path, "online", xen_device_backend_changed, - &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to watch backend online: "); + errp); + if (*errp) { + error_prepend(errp, "failed to watch backend online: "); return; } } @@ -866,9 +858,9 @@ static bool xen_device_frontend_exists(XenDevice *xende= v) =20 static void xen_device_frontend_create(XenDevice *xendev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenBus *xenbus =3D XEN_BUS(qdev_get_parent_bus(DEVICE(xendev))); struct xs_permissions perms[2]; - Error *local_err =3D NULL; =20 xendev->frontend_path =3D xen_device_get_frontend_path(xendev); =20 @@ -885,20 +877,18 @@ static void xen_device_frontend_create(XenDevice *xen= dev, Error **errp) g_assert(xenbus->xsh); =20 xs_node_create(xenbus->xsh, XBT_NULL, xendev->frontend_path, perms= , - ARRAY_SIZE(perms), &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to create frontend: "); + ARRAY_SIZE(perms), errp); + if (*errp) { + error_prepend(errp, "failed to create frontend: "); return; } } =20 xendev->frontend_state_watch =3D xen_device_add_watch(xendev, xendev->frontend_path, "state", - xen_device_frontend_changed, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to watch frontend state: "); + xen_device_frontend_changed, errp); + if (*errp) { + error_prepend(errp, "failed to watch frontend state: "); } } =20 @@ -1247,11 +1237,11 @@ static void xen_device_exit(Notifier *n, void *data= ) =20 static void xen_device_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenDevice *xendev =3D XEN_DEVICE(dev); XenDeviceClass *xendev_class =3D XEN_DEVICE_GET_CLASS(xendev); XenBus *xenbus =3D XEN_BUS(qdev_get_parent_bus(DEVICE(xendev))); const char *type =3D object_get_typename(OBJECT(xendev)); - Error *local_err =3D NULL; =20 if (xendev->frontend_id =3D=3D DOMID_INVALID) { xendev->frontend_id =3D xen_domid; @@ -1267,10 +1257,9 @@ static void xen_device_realize(DeviceState *dev, Err= or **errp) goto unrealize; } =20 - xendev->name =3D xendev_class->get_name(xendev, &local_err); - if (local_err) { - error_propagate_prepend(errp, local_err, - "failed to get device name: "); + xendev->name =3D xendev_class->get_name(xendev, errp); + if (*errp) { + error_prepend(errp, "failed to get device name: "); goto unrealize; } =20 @@ -1293,22 +1282,19 @@ static void xen_device_realize(DeviceState *dev, Er= ror **errp) xendev->feature_grant_copy =3D (xengnttab_grant_copy(xendev->xgth, 0, NULL) =3D=3D 0); =20 - xen_device_backend_create(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_device_backend_create(xendev, errp); + if (*errp) { goto unrealize; } =20 - xen_device_frontend_create(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xen_device_frontend_create(xendev, errp); + if (*errp) { goto unrealize; } =20 if (xendev_class->realize) { - xendev_class->realize(xendev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + xendev_class->realize(xendev, errp); + if (*errp) { goto unrealize; } } diff --git a/hw/xen/xen-host-pci-device.c b/hw/xen/xen-host-pci-device.c index 1b44dcafaf..02379c341c 100644 --- a/hw/xen/xen-host-pci-device.c +++ b/hw/xen/xen-host-pci-device.c @@ -333,8 +333,8 @@ void xen_host_pci_device_get(XenHostPCIDevice *d, uint1= 6_t domain, uint8_t bus, uint8_t dev, uint8_t func, Error **errp) { + ERRP_AUTO_PROPAGATE(); unsigned int v; - Error *err =3D NULL; =20 d->config_fd =3D -1; d->domain =3D domain; @@ -342,36 +342,36 @@ void xen_host_pci_device_get(XenHostPCIDevice *d, uin= t16_t domain, d->dev =3D dev; d->func =3D func; =20 - xen_host_pci_config_open(d, &err); - if (err) { + xen_host_pci_config_open(d, errp); + if (*errp) { goto error; } =20 - xen_host_pci_get_resource(d, &err); - if (err) { + xen_host_pci_get_resource(d, errp); + if (*errp) { goto error; } =20 - xen_host_pci_get_hex_value(d, "vendor", &v, &err); - if (err) { + xen_host_pci_get_hex_value(d, "vendor", &v, errp); + if (*errp) { goto error; } d->vendor_id =3D v; =20 - xen_host_pci_get_hex_value(d, "device", &v, &err); - if (err) { + xen_host_pci_get_hex_value(d, "device", &v, errp); + if (*errp) { goto error; } d->device_id =3D v; =20 - xen_host_pci_get_dec_value(d, "irq", &v, &err); - if (err) { + xen_host_pci_get_dec_value(d, "irq", &v, errp); + if (*errp) { goto error; } d->irq =3D v; =20 - xen_host_pci_get_hex_value(d, "class", &v, &err); - if (err) { + xen_host_pci_get_hex_value(d, "class", &v, errp); + if (*errp) { goto error; } d->class_code =3D v; @@ -381,7 +381,6 @@ void xen_host_pci_device_get(XenHostPCIDevice *d, uint1= 6_t domain, return; =20 error: - error_propagate(errp, err); =20 if (d->config_fd >=3D 0) { close(d->config_fd); diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c index b91082cb8b..f57b81588e 100644 --- a/hw/xen/xen_pt.c +++ b/hw/xen/xen_pt.c @@ -767,12 +767,12 @@ static void xen_pt_destroy(PCIDevice *d) { =20 static void xen_pt_realize(PCIDevice *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); XenPCIPassthroughState *s =3D XEN_PT_DEVICE(d); int i, rc =3D 0; uint8_t machine_irq =3D 0, scratch; uint16_t cmd =3D 0; int pirq =3D XEN_PT_UNASSIGNED_PIRQ; - Error *err =3D NULL; =20 /* register real device */ XEN_PT_LOG(d, "Assigning real physical device %02x:%02x.%d" @@ -783,10 +783,9 @@ static void xen_pt_realize(PCIDevice *d, Error **errp) xen_host_pci_device_get(&s->real_device, s->hostaddr.domain, s->hostaddr.bus, s->hostaddr.slot, s->hostaddr.function, - &err); - if (err) { - error_append_hint(&err, "Failed to \"open\" the real pci device"); - error_propagate(errp, err); + errp); + if (*errp) { + error_append_hint(errp, "Failed to \"open\" the real pci device"); return; } =20 @@ -813,11 +812,10 @@ static void xen_pt_realize(PCIDevice *d, Error **errp= ) return; } =20 - xen_pt_setup_vga(s, &s->real_device, &err); - if (err) { - error_append_hint(&err, "Setup VGA BIOS of passthrough" - " GFX failed"); - error_propagate(errp, err); + xen_pt_setup_vga(s, &s->real_device, errp); + if (*errp) { + error_append_hint(errp, "Setup VGA BIOS of passthrough" + " GFX failed"); xen_host_pci_device_put(&s->real_device); return; } @@ -830,10 +828,9 @@ static void xen_pt_realize(PCIDevice *d, Error **errp) xen_pt_register_regions(s, &cmd); =20 /* reinitialize each config register to be emulated */ - xen_pt_config_init(s, &err); - if (err) { - error_append_hint(&err, "PCI Config space initialisation failed"); - error_propagate(errp, err); + xen_pt_config_init(s, errp); + if (*errp) { + error_append_hint(errp, "PCI Config space initialisation failed"); rc =3D -1; goto err_out; } diff --git a/hw/xen/xen_pt_config_init.c b/hw/xen/xen_pt_config_init.c index 31ec5add1d..af3fbd1bfb 100644 --- a/hw/xen/xen_pt_config_init.c +++ b/hw/xen/xen_pt_config_init.c @@ -2008,8 +2008,8 @@ static void xen_pt_config_reg_init(XenPCIPassthroughS= tate *s, =20 void xen_pt_config_init(XenPCIPassthroughState *s, Error **errp) { + ERRP_AUTO_PROPAGATE(); int i, rc; - Error *err =3D NULL; =20 QLIST_INIT(&s->reg_grps); =20 @@ -2052,10 +2052,9 @@ void xen_pt_config_init(XenPCIPassthroughState *s, E= rror **errp) reg_grp_offset, ®_grp_entry->size); if (rc < 0) { - error_setg(&err, "Failed to initialize %d/%zu, type =3D 0x= %x," + error_setg(errp, "Failed to initialize %d/%zu, type =3D 0x= %x," " rc: %d", i, ARRAY_SIZE(xen_pt_emu_reg_grps), xen_pt_emu_reg_grps[i].grp_type, rc); - error_propagate(errp, err); xen_pt_config_delete(s); return; } @@ -2068,13 +2067,14 @@ void xen_pt_config_init(XenPCIPassthroughState *s, = Error **errp) =20 /* initialize capability register */ for (j =3D 0; regs->size !=3D 0; j++, regs++) { - xen_pt_config_reg_init(s, reg_grp_entry, regs, &err); - if (err) { - error_append_hint(&err, "Failed to init register %= d" - " offsets 0x%x in grp_type =3D 0x%x (%d/%z= u)", j, - regs->offset, xen_pt_emu_reg_grps[i].grp_t= ype, - i, ARRAY_SIZE(xen_pt_emu_reg_grps)); - error_propagate(errp, err); + xen_pt_config_reg_init(s, reg_grp_entry, regs, errp); + if (*errp) { + error_append_hint(errp, "Failed to init register %= d" + " offsets 0x%x in grp_type =3D 0= x%x (%d/%zu)", + j, + regs->offset, + xen_pt_emu_reg_grps[i].grp_type, + i, ARRAY_SIZE(xen_pt_emu_reg_grp= s)); xen_pt_config_delete(s); return; } --=20 2.21.0