From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS31976 209.132.180.0/23 X-Spam-Status: No, score=-3.9 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI,T_DKIMWL_WL_HIGH shortcircuit=no autolearn=ham autolearn_force=no version=3.4.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by dcvr.yhbt.net (Postfix) with ESMTP id 64FE41F404 for ; Wed, 12 Sep 2018 16:19:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727002AbeILVY2 (ORCPT ); Wed, 12 Sep 2018 17:24:28 -0400 Received: from mail-eopbgr680098.outbound.protection.outlook.com ([40.107.68.98]:41909 "EHLO NAM04-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726798AbeILVY1 (ORCPT ); Wed, 12 Sep 2018 17:24:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UkRDkEVr3dMnDz2NcRG16xSkheFP2oWsBw9iBkm+iSM=; b=mDNewQYQaGo9EMMht858HEMSKMEB6B2t0XzMPtIkwGxAt6/sGm0npGpXb3bY+IEjoHk44HChd3nuhEjoM/ELOQX95ZakoGvoAP3DL3hGSo5U2rdQk+hY7/g0q2+I3PshVgAN7++w/rpw+UD7OkPt2oflSfkoDjY6zP3XfImrN0c= Received: from MW2PR2101MB0970.namprd21.prod.outlook.com (52.132.146.19) by MW2PR2101MB1113.namprd21.prod.outlook.com (52.132.149.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1164.5; Wed, 12 Sep 2018 16:18:50 +0000 Received: from MW2PR2101MB0970.namprd21.prod.outlook.com ([fe80::3c7b:f2aa:d871:8ae7]) by MW2PR2101MB0970.namprd21.prod.outlook.com ([fe80::3c7b:f2aa:d871:8ae7%2]) with mapi id 15.20.1164.006; Wed, 12 Sep 2018 16:18:50 +0000 From: Ben Peart To: "git@vger.kernel.org" CC: "gitster@pobox.com" , "pclouds@gmail.com" , Ben Peart Subject: [PATCH v5 0/5] read-cache: speed up index load through parallelization Thread-Topic: [PATCH v5 0/5] read-cache: speed up index load through parallelization Thread-Index: AQHUSrRK798YJNVKUEW25bF1ne93UQ== Date: Wed, 12 Sep 2018 16:18:50 +0000 Message-ID: <20180912161832.55324-1-benpeart@microsoft.com> References: <20180823154053.20212-1-benpeart@microsoft.com> In-Reply-To: <20180823154053.20212-1-benpeart@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [70.33.148.227] x-mailer: git-send-email 2.18.0.windows.1 x-clientproxiedby: DM5PR1401CA0011.namprd14.prod.outlook.com (2603:10b6:4:4a::21) To MW2PR2101MB0970.namprd21.prod.outlook.com (2603:10b6:302:4::19) x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;MW2PR2101MB1113;6:NsDeTRz8xH1Dllek8CqgR6MjrDlSAUCE4s1CUri1Tg2NuEyrIYFIKmBrt838Jpf9qYugWBVhv9FhzB1Xq5V+VhcQDm+7P1sx0zerViXogMFdw79tU5NGveSM1MAlUsmBB+ZoyQKs7i/xm0x09LWfc+MChn3wtQXOYXsLag/czxgH04Nrr+IbBpnJgNxzfbS+6NW1pHGmvQVLSsdSMdywKEasRL+1i3Bx2IhYZ7kqhJdbgK524Al6QbwuMzWsj2+pHRHcEJ/jnRiN7WWlJqTK1L+gvGSk+f9sdek19Ft/UprNjrUKUrQR4u7aaxJcJjC5oFZa4jHjkmdFFCBCnWDdXydZG0diZKeQ51g9z3IDEnpZQBY9pszaC3o/tkANEh53fQTIW4NSlx51UAI2ctlpptA9/R/O7VBJNbXiMRKC9kvrcAzY4/hun2ACj7Y4PKC3cScagoP0mpJK4Gqb1ZsP1w==;5:XLrXq9vo2uECDNDFItndgMNgA2/j24zcpd1ykdmyOKqIxwPLjsX6NVJvzzCVaHthu/1UUsMZjgAAJSDHhH4IvsnujIyQ5SEwVDIErh9Hqk6J/IcOjNa8fUJNSdhiPk6bhgYmGGBbPIj3vr3SA0A8/2NUtP2vT6QQBMq1MtYRXNs=;7:AijEQVcb7NKh6u6oobNOyM5nmqLatSsBRzKx9xVGJNCRTJ4HTNCQ2vBQTAYHS6PuVX6/xbtJhEFjNZ7ZZbtMtakEr3nDN5BRCljquZmDumnl5eUe+yYIbNksbHeqlcX+hozjDQ9XVUO/bH0ra4q3rldIFBjrPQWSyWSvx6w+25eY+GNWoDimlZFSQWbxqGyKPqmlax8SNIpEcoBg6Zvr3QdxDGxnNqt4mG5Pg0sInrN+xGxfToxZxue+YOmM5XxH x-ms-office365-filtering-correlation-id: 6a0e288f-cbef-4f5b-87c9-08d618cb6c50 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:MW2PR2101MB1113; x-ms-traffictypediagnostic: MW2PR2101MB1113: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(166708455590820)(209352067349851); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(3231344)(944501410)(52105095)(2018427008)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201708071742011)(7699050)(76991041);SRVR:MW2PR2101MB1113;BCL:0;PCL:0;RULEID:;SRVR:MW2PR2101MB1113; x-forefront-prvs: 07935ACF08 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(39860400002)(366004)(346002)(396003)(376002)(136003)(189003)(199004)(386003)(6116002)(6916009)(99286004)(7736002)(6506007)(86612001)(5640700003)(575784001)(102836004)(81156014)(6436002)(1730700003)(81166006)(26005)(2900100001)(6346003)(305945005)(53946003)(14444005)(11346002)(1076002)(446003)(2616005)(256004)(476003)(36756003)(486006)(66066001)(10090500001)(186003)(97736004)(3846002)(76176011)(106356001)(2351001)(6512007)(316002)(4326008)(54906003)(52116002)(2906002)(53936002)(6306002)(5660300001)(107886003)(68736007)(22452003)(105586002)(39060400002)(25786009)(8676002)(50226002)(478600001)(72206003)(14454004)(966005)(6486002)(8936002)(2501003)(10290500003)(5250100002);DIR:OUT;SFP:1102;SCL:1;SRVR:MW2PR2101MB1113;H:MW2PR2101MB0970.namprd21.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ben.Peart@microsoft.com; x-microsoft-antispam-message-info: vroifS8y7CKDztg20vAqTWUUMLfuu8EHGWGpU1fEOb7HF+7nAtEpCQgkZ211Gg5fu9xAnSuhGsuJ2UhmgawiawzHEVdA15chehbjwb6LZyO/jGsaj5piSCK1fdHS6RynkXje0kzHD9gIB33er7nvzUPG2fnFII9zEdwcJ1C5TtqVRKZJB0oarNAzPwBWc15mesWmfguyqa6l/pItEtPnIBGY5SCvNMTJgtzbQX5HbIPzGfYmvkilw3pzNztBtwuEgH2+ybh2slil4rYqU7cKYrKqgNT+8ziaesNoj4en0ocpLvtucAj2pmTd/XabbymSdKUI+UZrM5y4OMk/hz9G+9UNZkVc+zkwXaZTo9CRZqE= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <3EE7A6FFBA281F4D837795E4BD149887@namprd21.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a0e288f-cbef-4f5b-87c9-08d618cb6c50 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Sep 2018 16:18:50.0554 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR2101MB1113 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org VGhpcyB2ZXJzaW9uIG9mIHRoZSBwYXRjaCBtZXJnZXMgaW4gRHV5J3Mgd29yayB0byBzcGVlZCB1 cCBpbmRleCB2NCBkZWNvZGluZy4NCkkgaGFkIHRvIG1hc3NhZ2UgaXQgYSBiaXQgdG8gZ2V0IGl0 IHRvIHdvcmsgd2l0aCB0aGUgbXVsdGktdGhyZWFkaW5nIGJ1dCBpdCBpcw0Kc3RpbGwgbGFyZ2Vs eSBoaXMgY29kZS4gSSBhbHNvIHJlc3BvbmRlZCB0byBKdW5pbydzIGZlZWRiYWNrIG9uIGluaXRp YWxpemluZw0KY29weV9sZW4gdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuDQoNCkkgYWxzbyBh ZGRlZCBhIG1pbm9yIGNsZWFudXAgcGF0Y2ggdG8gbWluaW1pemUgdGhlIGNhc3RpbmcgcmVxdWly ZWQgd2hlbg0Kd29ya2luZyB3aXRoIHRoZSBtZW1vcnkgbWFwcGVkIGluZGV4IGFuZCBvdGhlciBt aW5vciBjaGFuZ2VzIGJhc2VkIG9uIHRoZQ0KZmVlZGJhY2sgcmVjZWl2ZWQuDQoNCkJhc2UgUmVm OiBtYXN0ZXINCldlYi1EaWZmOiBodHRwczovL2dpdGh1Yi5jb20vYmVucGVhcnQvZ2l0L2NvbW1p dC9kY2Y2MjAwNWY4DQpDaGVja291dDogZ2l0IGZldGNoIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5w ZWFydC9naXQgcmVhZC1pbmRleC1tdWx0aXRocmVhZC12NSAmJiBnaXQgY2hlY2tvdXQgZGNmNjIw MDVmOA0KDQoNCiMjIyBJbnRlcmRpZmYgKHYzLi52NSk6DQoNCmRpZmYgLS1naXQgYS9yZWFkLWNh Y2hlLmMgYi9yZWFkLWNhY2hlLmMNCmluZGV4IDg1MzdhNTU3NTAuLmMwNWU4ODdmYzkgMTAwNjQ0 DQotLS0gYS9yZWFkLWNhY2hlLmMNCisrKyBiL3JlYWQtY2FjaGUuYw0KQEAgLTE2NTUsNyArMTY1 NSw3IEBAIGludCB2ZXJpZnlfaW5kZXhfY2hlY2tzdW07DQogLyogQWxsb3cgZnNjayB0byBmb3Jj ZSB2ZXJpZmljYXRpb24gb2YgdGhlIGNhY2hlIGVudHJ5IG9yZGVyLiAqLw0KIGludCB2ZXJpZnlf Y2Vfb3JkZXI7DQogDQotc3RhdGljIGludCB2ZXJpZnlfaGRyKHN0cnVjdCBjYWNoZV9oZWFkZXIg KmhkciwgdW5zaWduZWQgbG9uZyBzaXplKQ0KK3N0YXRpYyBpbnQgdmVyaWZ5X2hkcihjb25zdCBz dHJ1Y3QgY2FjaGVfaGVhZGVyICpoZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkNCiB7DQogCWdpdF9o YXNoX2N0eCBjOw0KIAl1bnNpZ25lZCBjaGFyIGhhc2hbR0lUX01BWF9SQVdTWl07DQpAQCAtMTY3 OSw3ICsxNjc5LDcgQEAgc3RhdGljIGludCB2ZXJpZnlfaGRyKHN0cnVjdCBjYWNoZV9oZWFkZXIg KmhkciwgdW5zaWduZWQgbG9uZyBzaXplKQ0KIH0NCiANCiBzdGF0aWMgaW50IHJlYWRfaW5kZXhf ZXh0ZW5zaW9uKHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLA0KLQkJCQljb25zdCBjaGFyICpl eHQsIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGxvbmcgc3opDQorCQkJCWNvbnN0IGNoYXIgKmV4dCwg Y29uc3QgY2hhciAqZGF0YSwgdW5zaWduZWQgbG9uZyBzeikNCiB7DQogCXN3aXRjaCAoQ0FDSEVf RVhUKGV4dCkpIHsNCiAJY2FzZSBDQUNIRV9FWFRfVFJFRToNCkBAIC0xNzIxLDMzICsxNzIxLDYg QEAgaW50IHJlYWRfaW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUpDQogCXJldHVybiBy ZWFkX2luZGV4X2Zyb20oaXN0YXRlLCBnZXRfaW5kZXhfZmlsZSgpLCBnZXRfZ2l0X2RpcigpKTsN CiB9DQogDQotc3RhdGljIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2FjaGVfZW50cnlfZnJvbV9vbmRp c2soc3RydWN0IG1lbV9wb29sICptZW1fcG9vbCwNCi0JCQkJCQkgICBzdHJ1Y3Qgb25kaXNrX2Nh Y2hlX2VudHJ5ICpvbmRpc2ssDQotCQkJCQkJICAgdW5zaWduZWQgaW50IGZsYWdzLA0KLQkJCQkJ CSAgIGNvbnN0IGNoYXIgKm5hbWUsDQotCQkJCQkJICAgc2l6ZV90IGxlbikNCi17DQotCXN0cnVj dCBjYWNoZV9lbnRyeSAqY2UgPSBtZW1fcG9vbF9fY2VfYWxsb2MobWVtX3Bvb2wsIGxlbik7DQot DQotCWNlLT5jZV9zdGF0X2RhdGEuc2RfY3RpbWUuc2VjID0gZ2V0X2JlMzIoJm9uZGlzay0+Y3Rp bWUuc2VjKTsNCi0JY2UtPmNlX3N0YXRfZGF0YS5zZF9tdGltZS5zZWMgPSBnZXRfYmUzMigmb25k aXNrLT5tdGltZS5zZWMpOw0KLQljZS0+Y2Vfc3RhdF9kYXRhLnNkX2N0aW1lLm5zZWMgPSBnZXRf YmUzMigmb25kaXNrLT5jdGltZS5uc2VjKTsNCi0JY2UtPmNlX3N0YXRfZGF0YS5zZF9tdGltZS5u c2VjID0gZ2V0X2JlMzIoJm9uZGlzay0+bXRpbWUubnNlYyk7DQotCWNlLT5jZV9zdGF0X2RhdGEu c2RfZGV2ICAgPSBnZXRfYmUzMigmb25kaXNrLT5kZXYpOw0KLQljZS0+Y2Vfc3RhdF9kYXRhLnNk X2lubyAgID0gZ2V0X2JlMzIoJm9uZGlzay0+aW5vKTsNCi0JY2UtPmNlX21vZGUgID0gZ2V0X2Jl MzIoJm9uZGlzay0+bW9kZSk7DQotCWNlLT5jZV9zdGF0X2RhdGEuc2RfdWlkICAgPSBnZXRfYmUz Migmb25kaXNrLT51aWQpOw0KLQljZS0+Y2Vfc3RhdF9kYXRhLnNkX2dpZCAgID0gZ2V0X2JlMzIo Jm9uZGlzay0+Z2lkKTsNCi0JY2UtPmNlX3N0YXRfZGF0YS5zZF9zaXplICA9IGdldF9iZTMyKCZv bmRpc2stPnNpemUpOw0KLQljZS0+Y2VfZmxhZ3MgPSBmbGFncyAmIH5DRV9OQU1FTUFTSzsNCi0J Y2UtPmNlX25hbWVsZW4gPSBsZW47DQotCWNlLT5pbmRleCA9IDA7DQotCWhhc2hjcHkoY2UtPm9p ZC5oYXNoLCBvbmRpc2stPnNoYTEpOw0KLQltZW1jcHkoY2UtPm5hbWUsIG5hbWUsIGxlbik7DQot CWNlLT5uYW1lW2xlbl0gPSAnXDAnOw0KLQlyZXR1cm4gY2U7DQotfQ0KLQ0KIC8qDQogICogQWRq YWNlbnQgY2FjaGUgZW50cmllcyB0ZW5kIHRvIHNoYXJlIHRoZSBsZWFkaW5nIHBhdGhzLCBzbyBp dCBtYWtlcw0KICAqIHNlbnNlIHRvIG9ubHkgc3RvcmUgdGhlIGRpZmZlcmVuY2VzIGluIGxhdGVy IGVudHJpZXMuICBJbiB0aGUgdjQNCkBAIC0xNzY4LDE1ICsxNzQxLDE4IEBAIHN0YXRpYyB1bnNp Z25lZCBsb25nIGV4cGFuZF9uYW1lX2ZpZWxkKHN0cnVjdCBzdHJidWYgKm5hbWUsIGNvbnN0IGNo YXIgKmNwXykNCiAJcmV0dXJuIChjb25zdCBjaGFyICopZXAgKyAxIC0gY3BfOw0KIH0NCiANCi1z dGF0aWMgc3RydWN0IGNhY2hlX2VudHJ5ICpjcmVhdGVfZnJvbV9kaXNrKHN0cnVjdCBtZW1fcG9v bCAqbWVtX3Bvb2wsDQorc3RhdGljIHN0cnVjdCBjYWNoZV9lbnRyeSAqY3JlYXRlX2Zyb21fZGlz ayhzdHJ1Y3QgbWVtX3Bvb2wgKmNlX21lbV9wb29sLA0KKwkJCQkJICAgIHVuc2lnbmVkIGludCB2 ZXJzaW9uLA0KIAkJCQkJICAgIHN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnkgKm9uZGlzaywNCiAJ CQkJCSAgICB1bnNpZ25lZCBsb25nICplbnRfc2l6ZSwNCi0JCQkJCSAgICBzdHJ1Y3Qgc3RyYnVm ICpwcmV2aW91c19uYW1lKQ0KKwkJCQkJICAgIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqcHJl dmlvdXNfY2UpDQogew0KIAlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOw0KIAlzaXplX3QgbGVuOw0K IAljb25zdCBjaGFyICpuYW1lOw0KIAl1bnNpZ25lZCBpbnQgZmxhZ3M7DQorCXNpemVfdCBjb3B5 X2xlbiA9IDA7DQorCWludCBleHBhbmRfbmFtZV9maWVsZCA9IHZlcnNpb24gPT0gNDsNCiANCiAJ LyogT24tZGlzayBmbGFncyBhcmUganVzdCAxNiBiaXRzICovDQogCWZsYWdzID0gZ2V0X2JlMTYo Jm9uZGlzay0+ZmxhZ3MpOw0KQEAgLTE3OTYsMjEgKzE3NzIsNTAgQEAgc3RhdGljIHN0cnVjdCBj YWNoZV9lbnRyeSAqY3JlYXRlX2Zyb21fZGlzayhzdHJ1Y3QgbWVtX3Bvb2wgKm1lbV9wb29sLA0K IAllbHNlDQogCQluYW1lID0gb25kaXNrLT5uYW1lOw0KIA0KLQlpZiAoIXByZXZpb3VzX25hbWUp IHsNCi0JCS8qIHYzIGFuZCBlYXJsaWVyICovDQorCWlmIChleHBhbmRfbmFtZV9maWVsZCkgew0K KwkJY29uc3QgdW5zaWduZWQgY2hhciAqY3AgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKW5hbWU7 DQorCQlzaXplX3Qgc3RyaXBfbGVuLCBwcmV2aW91c19sZW47DQorDQorCQlwcmV2aW91c19sZW4g PSBwcmV2aW91c19jZSA/IHByZXZpb3VzX2NlLT5jZV9uYW1lbGVuIDogMDsNCisJCXN0cmlwX2xl biA9IGRlY29kZV92YXJpbnQoJmNwKTsNCisJCWlmIChwcmV2aW91c19sZW4gPCBzdHJpcF9sZW4p IHsNCisJCQlpZiAocHJldmlvdXNfY2UpDQorCQkJCWRpZShfKCJtYWxmb3JtZWQgbmFtZSBmaWVs ZCBpbiB0aGUgaW5kZXgsIG5lYXIgcGF0aCAnJXMnIiksDQorCQkJCSAgICBwcmV2aW91c19jZS0+ bmFtZSk7DQorCQkJZWxzZQ0KKwkJCQlkaWUoXygibWFsZm9ybWVkIG5hbWUgZmllbGQgaW4gdGhl IGluZGV4IGluIHRoZSBmaXJzdCBwYXRoIikpOw0KKwkJfQ0KKwkJY29weV9sZW4gPSBwcmV2aW91 c19sZW4gLSBzdHJpcF9sZW47DQorCQluYW1lID0gKGNvbnN0IGNoYXIgKiljcDsNCisJfQ0KKw0K IAlpZiAobGVuID09IENFX05BTUVNQVNLKQ0KLQkJCWxlbiA9IHN0cmxlbihuYW1lKTsNCi0JCWNl ID0gY2FjaGVfZW50cnlfZnJvbV9vbmRpc2sobWVtX3Bvb2wsIG9uZGlzaywgZmxhZ3MsIG5hbWUs IGxlbik7DQorCQlsZW4gPSBzdHJsZW4obmFtZSkgKyBjb3B5X2xlbjsNCiANCi0JCSplbnRfc2l6 ZSA9IG9uZGlza19jZV9zaXplKGNlKTsNCi0JfSBlbHNlIHsNCi0JCXVuc2lnbmVkIGxvbmcgY29u c3VtZWQ7DQotCQljb25zdW1lZCA9IGV4cGFuZF9uYW1lX2ZpZWxkKHByZXZpb3VzX25hbWUsIG5h bWUpOw0KLQkJY2UgPSBjYWNoZV9lbnRyeV9mcm9tX29uZGlzayhtZW1fcG9vbCwgb25kaXNrLCBm bGFncywNCi0JCQkJCSAgICAgcHJldmlvdXNfbmFtZS0+YnVmLA0KLQkJCQkJICAgICBwcmV2aW91 c19uYW1lLT5sZW4pOw0KKwljZSA9IG1lbV9wb29sX19jZV9hbGxvYyhjZV9tZW1fcG9vbCwgbGVu KTsNCisNCisJY2UtPmNlX3N0YXRfZGF0YS5zZF9jdGltZS5zZWMgPSBnZXRfYmUzMigmb25kaXNr LT5jdGltZS5zZWMpOw0KKwljZS0+Y2Vfc3RhdF9kYXRhLnNkX210aW1lLnNlYyA9IGdldF9iZTMy KCZvbmRpc2stPm10aW1lLnNlYyk7DQorCWNlLT5jZV9zdGF0X2RhdGEuc2RfY3RpbWUubnNlYyA9 IGdldF9iZTMyKCZvbmRpc2stPmN0aW1lLm5zZWMpOw0KKwljZS0+Y2Vfc3RhdF9kYXRhLnNkX210 aW1lLm5zZWMgPSBnZXRfYmUzMigmb25kaXNrLT5tdGltZS5uc2VjKTsNCisJY2UtPmNlX3N0YXRf ZGF0YS5zZF9kZXYgICA9IGdldF9iZTMyKCZvbmRpc2stPmRldik7DQorCWNlLT5jZV9zdGF0X2Rh dGEuc2RfaW5vICAgPSBnZXRfYmUzMigmb25kaXNrLT5pbm8pOw0KKwljZS0+Y2VfbW9kZSAgPSBn ZXRfYmUzMigmb25kaXNrLT5tb2RlKTsNCisJY2UtPmNlX3N0YXRfZGF0YS5zZF91aWQgICA9IGdl dF9iZTMyKCZvbmRpc2stPnVpZCk7DQorCWNlLT5jZV9zdGF0X2RhdGEuc2RfZ2lkICAgPSBnZXRf YmUzMigmb25kaXNrLT5naWQpOw0KKwljZS0+Y2Vfc3RhdF9kYXRhLnNkX3NpemUgID0gZ2V0X2Jl MzIoJm9uZGlzay0+c2l6ZSk7DQorCWNlLT5jZV9mbGFncyA9IGZsYWdzICYgfkNFX05BTUVNQVNL Ow0KKwljZS0+Y2VfbmFtZWxlbiA9IGxlbjsNCisJY2UtPmluZGV4ID0gMDsNCisJaGFzaGNweShj ZS0+b2lkLmhhc2gsIG9uZGlzay0+c2hhMSk7DQogDQotCQkqZW50X3NpemUgPSAobmFtZSAtICgo Y2hhciAqKW9uZGlzaykpICsgY29uc3VtZWQ7DQorCWlmIChleHBhbmRfbmFtZV9maWVsZCkgew0K KwkJbWVtY3B5KGNlLT5uYW1lLCBwcmV2aW91c19jZS0+bmFtZSwgY29weV9sZW4pOw0KKwkJbWVt Y3B5KGNlLT5uYW1lICsgY29weV9sZW4sIG5hbWUsIGxlbiArIDEgLSBjb3B5X2xlbik7DQorCQkq ZW50X3NpemUgPSAobmFtZSAtICgoY2hhciAqKW9uZGlzaykpICsgbGVuICsgMSAtIGNvcHlfbGVu Ow0KKwl9IGVsc2Ugew0KKwkJbWVtY3B5KGNlLT5uYW1lLCBuYW1lLCBsZW4gKyAxKTsNCisJCSpl bnRfc2l6ZSA9IG9uZGlza19jZV9zaXplKGNlKTsNCiAJfQ0KIAlyZXR1cm4gY2U7DQogfQ0KQEAg LTE4OTcsNyArMTkwMiw3IEBAIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVfY2FjaGVfc2l6ZShzaXpl X3Qgb25kaXNrX3NpemUsIHVuc2lnbmVkIGludCBlbnRyaWVzKQ0KIH0NCiANCiAjaWZuZGVmIE5P X1BUSFJFQURTDQotc3RhdGljIHVuc2lnbmVkIGxvbmcgcmVhZF9lb2llX2V4dGVuc2lvbih2b2lk ICptbWFwLCBzaXplX3QgbW1hcF9zaXplKTsNCitzdGF0aWMgdW5zaWduZWQgbG9uZyByZWFkX2Vv aWVfZXh0ZW5zaW9uKGNvbnN0IGNoYXIgKm1tYXAsIHNpemVfdCBtbWFwX3NpemUpOw0KICNlbmRp Zg0KIHN0YXRpYyB2b2lkIHdyaXRlX2VvaWVfZXh0ZW5zaW9uKHN0cnVjdCBzdHJidWYgKnNiLCBn aXRfaGFzaF9jdHggKmVvaWVfY29udGV4dCwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOw0KIA0KQEAg LTE5MDcsMTQgKzE5MTIsMTQgQEAgc3RydWN0IGxvYWRfaW5kZXhfZXh0ZW5zaW9ucw0KIAlwdGhy ZWFkX3QgcHRocmVhZDsNCiAjZW5kaWYNCiAJc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGU7DQot CXZvaWQgKm1tYXA7DQorCWNvbnN0IGNoYXIgKm1tYXA7DQogCXNpemVfdCBtbWFwX3NpemU7DQog CXVuc2lnbmVkIGxvbmcgc3JjX29mZnNldDsNCiB9Ow0KIA0KLXN0YXRpYyB2b2lkICpsb2FkX2lu ZGV4X2V4dGVuc2lvbnModm9pZCAqX2RhdGEpDQorc3RhdGljIHZvaWQgKmxvYWRfaW5kZXhfZXh0 ZW5zaW9ucyh2b2lkICpkYXRhKQ0KIHsNCi0Jc3RydWN0IGxvYWRfaW5kZXhfZXh0ZW5zaW9ucyAq cCA9IF9kYXRhOw0KKwlzdHJ1Y3QgbG9hZF9pbmRleF9leHRlbnNpb25zICpwID0gZGF0YTsNCiAJ dW5zaWduZWQgbG9uZyBzcmNfb2Zmc2V0ID0gcC0+c3JjX29mZnNldDsNCiANCiAJd2hpbGUgKHNy Y19vZmZzZXQgPD0gcC0+bW1hcF9zaXplIC0gdGhlX2hhc2hfYWxnby0+cmF3c3ogLSA4KSB7DQpA QCAtMTkyNSwxMyArMTkzMCwxMiBAQCBzdGF0aWMgdm9pZCAqbG9hZF9pbmRleF9leHRlbnNpb25z KHZvaWQgKl9kYXRhKQ0KIAkJICogaW4gNC1ieXRlIG5ldHdvcmsgYnl0ZSBvcmRlci4NCiAJCSAq Lw0KIAkJdWludDMyX3QgZXh0c2l6ZTsNCi0JCW1lbWNweSgmZXh0c2l6ZSwgKGNoYXIgKilwLT5t bWFwICsgc3JjX29mZnNldCArIDQsIDQpOw0KLQkJZXh0c2l6ZSA9IG50b2hsKGV4dHNpemUpOw0K KwkJZXh0c2l6ZSA9IGdldF9iZTMyKHAtPm1tYXAgKyBzcmNfb2Zmc2V0ICsgNCk7DQogCQlpZiAo cmVhZF9pbmRleF9leHRlbnNpb24ocC0+aXN0YXRlLA0KLQkJCShjb25zdCBjaGFyICopcC0+bW1h cCArIHNyY19vZmZzZXQsDQotCQkJKGNoYXIgKilwLT5tbWFwICsgc3JjX29mZnNldCArIDgsDQor CQkJcC0+bW1hcCArIHNyY19vZmZzZXQsDQorCQkJcC0+bW1hcCArIHNyY19vZmZzZXQgKyA4LA0K IAkJCWV4dHNpemUpIDwgMCkgew0KLQkJCW11bm1hcChwLT5tbWFwLCBwLT5tbWFwX3NpemUpOw0K KwkJCW11bm1hcCgodm9pZCAqKXAtPm1tYXAsIHAtPm1tYXBfc2l6ZSk7DQogCQkJZGllKCJpbmRl eCBmaWxlIGNvcnJ1cHQiKTsNCiAJCX0NCiAJCXNyY19vZmZzZXQgKz0gODsNCkBAIC0xOTQ2LDgg KzE5NTAsOCBAQCBzdGF0aWMgdm9pZCAqbG9hZF9pbmRleF9leHRlbnNpb25zKHZvaWQgKl9kYXRh KQ0KICAqIGZyb20gdGhlIG1lbW9yeSBtYXBwZWQgZmlsZSBhbmQgYWRkIHRoZW0gdG8gdGhlIGdp dmVuIGluZGV4Lg0KICAqLw0KIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvYWRfY2FjaGVfZW50cnlf YmxvY2soc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsDQotCQkJc3RydWN0IG1lbV9wb29sICpj ZV9tZW1fcG9vbCwgaW50IG9mZnNldCwgaW50IG5yLCB2b2lkICptbWFwLA0KLQkJCXVuc2lnbmVk IGxvbmcgc3RhcnRfb2Zmc2V0LCBzdHJ1Y3Qgc3RyYnVmICpwcmV2aW91c19uYW1lKQ0KKwkJCXN0 cnVjdCBtZW1fcG9vbCAqY2VfbWVtX3Bvb2wsIGludCBvZmZzZXQsIGludCBuciwgY29uc3QgY2hh ciAqbW1hcCwNCisJCQl1bnNpZ25lZCBsb25nIHN0YXJ0X29mZnNldCwgY29uc3Qgc3RydWN0IGNh Y2hlX2VudHJ5ICpwcmV2aW91c19jZSkNCiB7DQogCWludCBpOw0KIAl1bnNpZ25lZCBsb25nIHNy Y19vZmZzZXQgPSBzdGFydF9vZmZzZXQ7DQpAQCAtMTk1NywzNCArMTk2MSwzMSBAQCBzdGF0aWMg dW5zaWduZWQgbG9uZyBsb2FkX2NhY2hlX2VudHJ5X2Jsb2NrKHN0cnVjdCBpbmRleF9zdGF0ZSAq aXN0YXRlLA0KIAkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsNCiAJCXVuc2lnbmVkIGxvbmcgY29u c3VtZWQ7DQogDQotCQlkaXNrX2NlID0gKHN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnkgKikoKGNo YXIgKiltbWFwICsgc3JjX29mZnNldCk7DQotCQljZSA9IGNyZWF0ZV9mcm9tX2Rpc2soY2VfbWVt X3Bvb2wsIGRpc2tfY2UsICZjb25zdW1lZCwgcHJldmlvdXNfbmFtZSk7DQorCQlkaXNrX2NlID0g KHN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnkgKikobW1hcCArIHNyY19vZmZzZXQpOw0KKwkJY2Ug PSBjcmVhdGVfZnJvbV9kaXNrKGNlX21lbV9wb29sLCBpc3RhdGUtPnZlcnNpb24sIGRpc2tfY2Us ICZjb25zdW1lZCwgcHJldmlvdXNfY2UpOw0KIAkJc2V0X2luZGV4X2VudHJ5KGlzdGF0ZSwgaSwg Y2UpOw0KIA0KIAkJc3JjX29mZnNldCArPSBjb25zdW1lZDsNCisJCXByZXZpb3VzX2NlID0gY2U7 DQogCX0NCiAJcmV0dXJuIHNyY19vZmZzZXQgLSBzdGFydF9vZmZzZXQ7DQogfQ0KIA0KIHN0YXRp YyB1bnNpZ25lZCBsb25nIGxvYWRfYWxsX2NhY2hlX2VudHJpZXMoc3RydWN0IGluZGV4X3N0YXRl ICppc3RhdGUsDQotCQkJdm9pZCAqbW1hcCwgc2l6ZV90IG1tYXBfc2l6ZSwgdW5zaWduZWQgbG9u ZyBzcmNfb2Zmc2V0KQ0KKwkJCWNvbnN0IGNoYXIgKm1tYXAsIHNpemVfdCBtbWFwX3NpemUsIHVu c2lnbmVkIGxvbmcgc3JjX29mZnNldCkNCiB7DQotCXN0cnVjdCBzdHJidWYgcHJldmlvdXNfbmFt ZV9idWYgPSBTVFJCVUZfSU5JVCwgKnByZXZpb3VzX25hbWU7DQogCXVuc2lnbmVkIGxvbmcgY29u c3VtZWQ7DQogDQogCWlmIChpc3RhdGUtPnZlcnNpb24gPT0gNCkgew0KLQkJcHJldmlvdXNfbmFt ZSA9ICZwcmV2aW91c19uYW1lX2J1ZjsNCiAJCW1lbV9wb29sX2luaXQoJmlzdGF0ZS0+Y2VfbWVt X3Bvb2wsDQogCQkJCWVzdGltYXRlX2NhY2hlX3NpemVfZnJvbV9jb21wcmVzc2VkKGlzdGF0ZS0+ Y2FjaGVfbnIpKTsNCiAJfSBlbHNlIHsNCi0JCXByZXZpb3VzX25hbWUgPSBOVUxMOw0KIAkJbWVt X3Bvb2xfaW5pdCgmaXN0YXRlLT5jZV9tZW1fcG9vbCwNCiAJCQkJZXN0aW1hdGVfY2FjaGVfc2l6 ZShtbWFwX3NpemUsIGlzdGF0ZS0+Y2FjaGVfbnIpKTsNCiAJfQ0KIA0KIAljb25zdW1lZCA9IGxv YWRfY2FjaGVfZW50cnlfYmxvY2soaXN0YXRlLCBpc3RhdGUtPmNlX21lbV9wb29sLA0KLQkJCQkJ MCwgaXN0YXRlLT5jYWNoZV9uciwgbW1hcCwgc3JjX29mZnNldCwgcHJldmlvdXNfbmFtZSk7DQot CXN0cmJ1Zl9yZWxlYXNlKCZwcmV2aW91c19uYW1lX2J1Zik7DQorCQkJCQkwLCBpc3RhdGUtPmNh Y2hlX25yLCBtbWFwLCBzcmNfb2Zmc2V0LCBOVUxMKTsNCiAJcmV0dXJuIGNvbnN1bWVkOw0KIH0N CiANCkBAIC0xOTkzLDcgKzE5OTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb2FkX2FsbF9j YWNoZV9lbnRyaWVzKHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLA0KIC8qDQogICogTW9zdGx5 IHJhbmRvbWx5IGNob3NlbiBtYXhpbXVtIHRocmVhZCBjb3VudHM6IHdlDQogICogY2FwIHRoZSBw YXJhbGxlbGlzbSB0byBvbmxpbmVfY3B1cygpIHRocmVhZHMsIGFuZCB3ZSB3YW50DQotICogdG8g aGF2ZSBhdCBsZWFzdCAxMDAwMDAgY2FjaGUgZW50cmllcyBwZXIgdGhyZWFkIGZvciBpdCB0bw0K KyAqIHRvIGhhdmUgYXQgbGVhc3QgMTAwMDAgY2FjaGUgZW50cmllcyBwZXIgdGhyZWFkIGZvciBp dCB0bw0KICAqIGJlIHdvcnRoIHN0YXJ0aW5nIGEgdGhyZWFkLg0KICAqLw0KICNkZWZpbmUgVEhS RUFEX0NPU1QJCSgxMDAwMCkNCkBAIC0yMDA0LDEwICsyMDA1LDkgQEAgc3RydWN0IGxvYWRfY2Fj aGVfZW50cmllc190aHJlYWRfZGF0YQ0KIAlzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZTsNCiAJ c3RydWN0IG1lbV9wb29sICpjZV9tZW1fcG9vbDsNCiAJaW50IG9mZnNldCwgbnI7DQotCXZvaWQg Km1tYXA7DQorCWNvbnN0IGNoYXIgKm1tYXA7DQogCXVuc2lnbmVkIGxvbmcgc3RhcnRfb2Zmc2V0 Ow0KLQlzdHJ1Y3Qgc3RyYnVmIHByZXZpb3VzX25hbWVfYnVmOw0KLQlzdHJ1Y3Qgc3RyYnVmICpw cmV2aW91c19uYW1lOw0KKwlzdHJ1Y3QgY2FjaGVfZW50cnkgKnByZXZpb3VzX2NlOw0KIAl1bnNp Z25lZCBsb25nIGNvbnN1bWVkOwkvKiByZXR1cm4gIyBvZiBieXRlcyBpbiBpbmRleCBmaWxlIHBy b2Nlc3NlZCAqLw0KIH07DQogDQpAQCAtMjAyMCwxMiArMjAyMCwxMiBAQCBzdGF0aWMgdm9pZCAq bG9hZF9jYWNoZV9lbnRyaWVzX3RocmVhZCh2b2lkICpfZGF0YSkNCiAJc3RydWN0IGxvYWRfY2Fj aGVfZW50cmllc190aHJlYWRfZGF0YSAqcCA9IF9kYXRhOw0KIA0KIAlwLT5jb25zdW1lZCArPSBs b2FkX2NhY2hlX2VudHJ5X2Jsb2NrKHAtPmlzdGF0ZSwgcC0+Y2VfbWVtX3Bvb2wsDQotCQlwLT5v ZmZzZXQsIHAtPm5yLCBwLT5tbWFwLCBwLT5zdGFydF9vZmZzZXQsIHAtPnByZXZpb3VzX25hbWUp Ow0KKwkJcC0+b2Zmc2V0LCBwLT5uciwgcC0+bW1hcCwgcC0+c3RhcnRfb2Zmc2V0LCBwLT5wcmV2 aW91c19jZSk7DQogCXJldHVybiBOVUxMOw0KIH0NCiANCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBs b2FkX2NhY2hlX2VudHJpZXNfdGhyZWFkZWQoaW50IG5yX3RocmVhZHMsIHN0cnVjdCBpbmRleF9z dGF0ZSAqaXN0YXRlLA0KLQkJCXZvaWQgKm1tYXAsIHNpemVfdCBtbWFwX3NpemUsIHVuc2lnbmVk IGxvbmcgc3JjX29mZnNldCkNCisJCQljb25zdCBjaGFyICptbWFwLCBzaXplX3QgbW1hcF9zaXpl LCB1bnNpZ25lZCBsb25nIHNyY19vZmZzZXQpDQogew0KIAlzdHJ1Y3Qgc3RyYnVmIHByZXZpb3Vz X25hbWVfYnVmID0gU1RSQlVGX0lOSVQsICpwcmV2aW91c19uYW1lOw0KIAlzdHJ1Y3QgbG9hZF9j YWNoZV9lbnRyaWVzX3RocmVhZF9kYXRhICpkYXRhOw0KQEAgLTIwNjcsMjAgKzIwNjcsMjMgQEAg c3RhdGljIHVuc2lnbmVkIGxvbmcgbG9hZF9jYWNoZV9lbnRyaWVzX3RocmVhZGVkKGludCBucl90 aHJlYWRzLCBzdHJ1Y3QgaW5kZXhfc3QNCiAJCQlwLT5pc3RhdGUgPSBpc3RhdGU7DQogCQkJcC0+ b2Zmc2V0ID0gaTsNCiAJCQlwLT5uciA9IGNlX3Blcl90aHJlYWQgPCBpc3RhdGUtPmNhY2hlX25y IC0gaSA/IGNlX3Blcl90aHJlYWQgOiBpc3RhdGUtPmNhY2hlX25yIC0gaTsNCisJCQlwLT5tbWFw ID0gbW1hcDsNCisJCQlwLT5zdGFydF9vZmZzZXQgPSBzcmNfb2Zmc2V0Ow0KIA0KIAkJCS8qIGNy ZWF0ZSBhIG1lbV9wb29sIGZvciBlYWNoIHRocmVhZCAqLw0KLQkJCWlmIChpc3RhdGUtPnZlcnNp b24gPT0gNCkNCisJCQlpZiAoaXN0YXRlLT52ZXJzaW9uID09IDQpIHsNCiAJCQkJbWVtX3Bvb2xf aW5pdCgmcC0+Y2VfbWVtX3Bvb2wsDQogCQkJCQllc3RpbWF0ZV9jYWNoZV9zaXplX2Zyb21fY29t cHJlc3NlZChwLT5ucikpOw0KLQkJCWVsc2UNCisNCisJCQkJLyogY3JlYXRlIGEgcHJldmlvdXMg Y2UgZW50cnkgZm9yIHRoaXMgYmxvY2sgb2YgY2FjaGUgZW50cmllcyAqLw0KKwkJCQlpZiAocHJl dmlvdXNfbmFtZS0+bGVuKSB7DQorCQkJCQlwLT5wcmV2aW91c19jZSA9IG1lbV9wb29sX19jZV9h bGxvYyhwLT5jZV9tZW1fcG9vbCwgcHJldmlvdXNfbmFtZS0+bGVuKTsNCisJCQkJCXAtPnByZXZp b3VzX2NlLT5jZV9uYW1lbGVuID0gcHJldmlvdXNfbmFtZS0+bGVuOw0KKwkJCQkJbWVtY3B5KHAt PnByZXZpb3VzX2NlLT5uYW1lLCBwcmV2aW91c19uYW1lLT5idWYsIHByZXZpb3VzX25hbWUtPmxl bik7DQorCQkJCX0NCisJCQl9IGVsc2Ugew0KIAkJCQltZW1fcG9vbF9pbml0KCZwLT5jZV9tZW1f cG9vbCwNCiAJCQkJCWVzdGltYXRlX2NhY2hlX3NpemUobW1hcF9zaXplLCBwLT5ucikpOw0KLQ0K LQkJCXAtPm1tYXAgPSBtbWFwOw0KLQkJCXAtPnN0YXJ0X29mZnNldCA9IHNyY19vZmZzZXQ7DQot CQkJaWYgKHByZXZpb3VzX25hbWUpIHsNCi0JCQkJc3RyYnVmX2FkZGJ1ZigmcC0+cHJldmlvdXNf bmFtZV9idWYsIHByZXZpb3VzX25hbWUpOw0KLQkJCQlwLT5wcmV2aW91c19uYW1lID0gJnAtPnBy ZXZpb3VzX25hbWVfYnVmOw0KIAkJCX0NCiANCiAJCQlpZiAocHRocmVhZF9jcmVhdGUoJnAtPnB0 aHJlYWQsIE5VTEwsIGxvYWRfY2FjaGVfZW50cmllc190aHJlYWQsIHApKQ0KQEAgLTIwOTEsNyAr MjA5NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvYWRfY2FjaGVfZW50cmllc190aHJlYWRl ZChpbnQgbnJfdGhyZWFkcywgc3RydWN0IGluZGV4X3N0DQogCQkJCWJyZWFrOw0KIAkJfQ0KIA0K LQkJb25kaXNrID0gKHN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnkgKikoKGNoYXIgKiltbWFwICsg c3JjX29mZnNldCk7DQorCQlvbmRpc2sgPSAoc3RydWN0IG9uZGlza19jYWNoZV9lbnRyeSAqKSht bWFwICsgc3JjX29mZnNldCk7DQogDQogCQkvKiBPbi1kaXNrIGZsYWdzIGFyZSBqdXN0IDE2IGJp dHMgKi8NCiAJCWZsYWdzID0gZ2V0X2JlMTYoJm9uZGlzay0+ZmxhZ3MpOw0KQEAgLTIxMDMsNyAr MjEwNiw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvYWRfY2FjaGVfZW50cmllc190aHJlYWRl ZChpbnQgbnJfdGhyZWFkcywgc3RydWN0IGluZGV4X3N0DQogCQl9IGVsc2UNCiAJCQluYW1lID0g b25kaXNrLT5uYW1lOw0KIA0KLQkJaWYgKCFwcmV2aW91c19uYW1lKSB7DQorCQlpZiAoaXN0YXRl LT52ZXJzaW9uICE9IDQpIHsNCiAJCQlzaXplX3QgbGVuOw0KIA0KIAkJCS8qIHYzIGFuZCBlYXJs aWVyICovDQpAQCAtMjEyMiw3ICsyMTI1LDYgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9hZF9j YWNoZV9lbnRyaWVzX3RocmVhZGVkKGludCBucl90aHJlYWRzLCBzdHJ1Y3QgaW5kZXhfc3QNCiAJ CWlmIChwdGhyZWFkX2pvaW4ocC0+cHRocmVhZCwgTlVMTCkpDQogCQkJZGllKCJ1bmFibGUgdG8g am9pbiBsb2FkX2NhY2hlX2VudHJpZXNfdGhyZWFkIik7DQogCQltZW1fcG9vbF9jb21iaW5lKGlz dGF0ZS0+Y2VfbWVtX3Bvb2wsIHAtPmNlX21lbV9wb29sKTsNCi0JCXN0cmJ1Zl9yZWxlYXNlKCZw LT5wcmV2aW91c19uYW1lX2J1Zik7DQogCQljb25zdW1lZCArPSBwLT5jb25zdW1lZDsNCiAJfQ0K IA0KQEAgLTIxNDAsOCArMjE0Miw4IEBAIGludCBkb19yZWFkX2luZGV4KHN0cnVjdCBpbmRleF9z dGF0ZSAqaXN0YXRlLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgbXVzdF9leGlzdCkNCiAJaW50IGZk Ow0KIAlzdHJ1Y3Qgc3RhdCBzdDsNCiAJdW5zaWduZWQgbG9uZyBzcmNfb2Zmc2V0Ow0KLQlzdHJ1 Y3QgY2FjaGVfaGVhZGVyICpoZHI7DQotCXZvaWQgKm1tYXA7DQorCWNvbnN0IHN0cnVjdCBjYWNo ZV9oZWFkZXIgKmhkcjsNCisJY29uc3QgY2hhciAqbW1hcDsNCiAJc2l6ZV90IG1tYXBfc2l6ZTsN CiAJc3RydWN0IGxvYWRfaW5kZXhfZXh0ZW5zaW9ucyBwID0geyAwIH07DQogCXVuc2lnbmVkIGxv bmcgZXh0ZW5zaW9uX29mZnNldCA9IDA7DQpAQCAtMjE3Myw3ICsyMTc1LDcgQEAgaW50IGRvX3Jl YWRfaW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsIGNvbnN0IGNoYXIgKnBhdGgsIGlu dCBtdXN0X2V4aXN0KQ0KIAkJZGllX2Vycm5vKCJ1bmFibGUgdG8gbWFwIGluZGV4IGZpbGUiKTsN CiAJY2xvc2UoZmQpOw0KIA0KLQloZHIgPSBtbWFwOw0KKwloZHIgPSAoY29uc3Qgc3RydWN0IGNh Y2hlX2hlYWRlciAqKW1tYXA7DQogCWlmICh2ZXJpZnlfaGRyKGhkciwgbW1hcF9zaXplKSA8IDAp DQogCQlnb3RvIHVubWFwOw0KIA0KQEAgLTIyMzMsMTEgKzIyMzUsMTEgQEAgaW50IGRvX3JlYWRf aW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBt dXN0X2V4aXN0KQ0KIAkJcC5zcmNfb2Zmc2V0ID0gc3JjX29mZnNldDsNCiAJCWxvYWRfaW5kZXhf ZXh0ZW5zaW9ucygmcCk7DQogCX0NCi0JbXVubWFwKG1tYXAsIG1tYXBfc2l6ZSk7DQorCW11bm1h cCgodm9pZCAqKW1tYXAsIG1tYXBfc2l6ZSk7DQogCXJldHVybiBpc3RhdGUtPmNhY2hlX25yOw0K IA0KIHVubWFwOg0KLQltdW5tYXAobW1hcCwgbW1hcF9zaXplKTsNCisJbXVubWFwKCh2b2lkICop bW1hcCwgbW1hcF9zaXplKTsNCiAJZGllKCJpbmRleCBmaWxlIGNvcnJ1cHQiKTsNCiB9DQogDQpA QCAtMzI1NiwxMSArMzI1OCwxMSBAQCBpbnQgc2hvdWxkX3ZhbGlkYXRlX2NhY2hlX2VudHJpZXMo dm9pZCkNCiAJcmV0dXJuIHZhbGlkYXRlX2luZGV4X2NhY2hlX2VudHJpZXM7DQogfQ0KIA0KLSNk ZWZpbmUgRU9JRV9TSVpFIDI0IC8qIDw0LWJ5dGUgb2Zmc2V0PiArIDwyMC1ieXRlIGhhc2g+ICov DQorI2RlZmluZSBFT0lFX1NJWkUgKDQgKyBHSVRfU0hBMV9SQVdTWikgLyogPDQtYnl0ZSBvZmZz ZXQ+ICsgPDIwLWJ5dGUgaGFzaD4gKi8NCiAjZGVmaW5lIEVPSUVfU0laRV9XSVRIX0hFQURFUiAo NCArIDQgKyBFT0lFX1NJWkUpIC8qIDw0LWJ5dGUgc2lnbmF0dXJlPiArIDw0LWJ5dGUgbGVuZ3Ro PiArIEVPSUVfU0laRSAqLw0KIA0KICNpZm5kZWYgTk9fUFRIUkVBRFMNCi1zdGF0aWMgdW5zaWdu ZWQgbG9uZyByZWFkX2VvaWVfZXh0ZW5zaW9uKHZvaWQgKm1tYXAsIHNpemVfdCBtbWFwX3NpemUp DQorc3RhdGljIHVuc2lnbmVkIGxvbmcgcmVhZF9lb2llX2V4dGVuc2lvbihjb25zdCBjaGFyICpt bWFwLCBzaXplX3QgbW1hcF9zaXplKQ0KIHsNCiAJLyoNCiAJICogVGhlIGVuZCBvZiBpbmRleCBl bnRyaWVzIChFT0lFKSBleHRlbnNpb24gaXMgZ3VhcmFudGVlZCB0byBiZSBsYXN0DQpAQCAtMzI3 MSwxNCArMzI3MywxOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyByZWFkX2VvaWVfZXh0ZW5zaW9u KHZvaWQgKm1tYXAsIHNpemVfdCBtbWFwX3NpemUpDQogCSAqIDw0LWJ5dGUgb2Zmc2V0Pg0KIAkg KiA8MjAtYnl0ZSBoYXNoPg0KIAkgKi8NCi0JY29uc3QgY2hhciAqaW5kZXgsICplb2llID0gKGNv bnN0IGNoYXIgKiltbWFwICsgbW1hcF9zaXplIC0gR0lUX1NIQTFfUkFXU1ogLSBFT0lFX1NJWkVf V0lUSF9IRUFERVI7DQorCWNvbnN0IGNoYXIgKmluZGV4LCAqZW9pZTsNCiAJdWludDMyX3QgZXh0 c2l6ZTsNCiAJdW5zaWduZWQgbG9uZyBvZmZzZXQsIHNyY19vZmZzZXQ7DQogCXVuc2lnbmVkIGNo YXIgaGFzaFtHSVRfTUFYX1JBV1NaXTsNCiAJZ2l0X2hhc2hfY3R4IGM7DQogDQorCS8qIGVuc3Vy ZSB3ZSBoYXZlIGFuIGluZGV4IGJpZyBlbm91Z2ggdG8gY29udGFpbiBhbiBFT0lFIGV4dGVuc2lv biAqLw0KKwlpZiAobW1hcF9zaXplIDwgc2l6ZW9mKHN0cnVjdCBjYWNoZV9oZWFkZXIpICsgRU9J RV9TSVpFX1dJVEhfSEVBREVSICsgdGhlX2hhc2hfYWxnby0+cmF3c3opDQorCQlyZXR1cm4gMDsN CisNCiAJLyogdmFsaWRhdGUgdGhlIGV4dGVuc2lvbiBzaWduYXR1cmUgKi8NCi0JaW5kZXggPSBl b2llOw0KKwlpbmRleCA9IGVvaWUgPSBtbWFwICsgbW1hcF9zaXplIC0gRU9JRV9TSVpFX1dJVEhf SEVBREVSIC0gdGhlX2hhc2hfYWxnby0+cmF3c3o7DQogCWlmIChDQUNIRV9FWFQoaW5kZXgpICE9 IENBQ0hFX0VYVF9FTkRPRklOREVYRU5UUklFUykNCiAJCXJldHVybiAwOw0KIAlpbmRleCArPSBz aXplb2YodWludDMyX3QpOw0KQEAgLTMyOTQsOSArMzMwMCw5IEBAIHN0YXRpYyB1bnNpZ25lZCBs b25nIHJlYWRfZW9pZV9leHRlbnNpb24odm9pZCAqbW1hcCwgc2l6ZV90IG1tYXBfc2l6ZSkNCiAJ ICogc2lnbmF0dXJlIGlzIGFmdGVyIHRoZSBpbmRleCBoZWFkZXIgYW5kIGJlZm9yZSB0aGUgZW9p ZSBleHRlbnNpb24uDQogCSAqLw0KIAlvZmZzZXQgPSBnZXRfYmUzMihpbmRleCk7DQotCWlmICgo Y29uc3QgY2hhciAqKW1tYXAgKyBvZmZzZXQgPCAoY29uc3QgY2hhciAqKW1tYXAgKyBzaXplb2Yo c3RydWN0IGNhY2hlX2hlYWRlcikpDQorCWlmIChtbWFwICsgb2Zmc2V0IDwgbW1hcCArIHNpemVv ZihzdHJ1Y3QgY2FjaGVfaGVhZGVyKSkNCiAJCXJldHVybiAwOw0KLQlpZiAoKGNvbnN0IGNoYXIg KiltbWFwICsgb2Zmc2V0ID49IGVvaWUpDQorCWlmIChtbWFwICsgb2Zmc2V0ID49IGVvaWUpDQog CQlyZXR1cm4gMDsNCiAJaW5kZXggKz0gc2l6ZW9mKHVpbnQzMl90KTsNCiANCkBAIC0zMzE5LDIw ICszMzI1LDE5IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHJlYWRfZW9pZV9leHRlbnNpb24odm9p ZCAqbW1hcCwgc2l6ZV90IG1tYXBfc2l6ZSkNCiAJCSAqIGluIDQtYnl0ZSBuZXR3b3JrIGJ5dGUg b3JkZXIuDQogCQkgKi8NCiAJCXVpbnQzMl90IGV4dHNpemU7DQotCQltZW1jcHkoJmV4dHNpemUs IChjaGFyICopbW1hcCArIHNyY19vZmZzZXQgKyA0LCA0KTsNCi0JCWV4dHNpemUgPSBudG9obChl eHRzaXplKTsNCisJCWV4dHNpemUgPSBnZXRfYmUzMihtbWFwICsgc3JjX29mZnNldCArIDQpOw0K IA0KIAkJLyogdmVyaWZ5IHRoZSBleHRlbnNpb24gc2l6ZSBpc24ndCBzbyBsYXJnZSBpdCB3aWxs IHdyYXAgYXJvdW5kICovDQogCQlpZiAoc3JjX29mZnNldCArIDggKyBleHRzaXplIDwgc3JjX29m ZnNldCkNCiAJCQlyZXR1cm4gMDsNCiANCi0JCXRoZV9oYXNoX2FsZ28tPnVwZGF0ZV9mbigmYywg KGNvbnN0IGNoYXIgKiltbWFwICsgc3JjX29mZnNldCwgOCk7DQorCQl0aGVfaGFzaF9hbGdvLT51 cGRhdGVfZm4oJmMsIG1tYXAgKyBzcmNfb2Zmc2V0LCA4KTsNCiANCiAJCXNyY19vZmZzZXQgKz0g ODsNCiAJCXNyY19vZmZzZXQgKz0gZXh0c2l6ZTsNCiAJfQ0KIAl0aGVfaGFzaF9hbGdvLT5maW5h bF9mbihoYXNoLCAmYyk7DQotCWlmIChoYXNoY21wKGhhc2gsICh1bnNpZ25lZCBjaGFyICopaW5k ZXgpKQ0KKwlpZiAoaGFzaGNtcChoYXNoLCAoY29uc3QgdW5zaWduZWQgY2hhciAqKWluZGV4KSkN CiAJCXJldHVybiAwOw0KIA0KIAkvKiBWYWxpZGF0ZSB0aGF0IHRoZSBleHRlbnNpb24gb2Zmc2V0 cyByZXR1cm5lZCB1cyBiYWNrIHRvIHRoZSBlb2llIGV4dGVuc2lvbi4gKi8NCmRpZmYgLS1naXQg YS90L1JFQURNRSBiL3QvUkVBRE1FDQppbmRleCA1OTAxNWY3MTUwLi42OWM2OTVhZDhlIDEwMDY0 NA0KLS0tIGEvdC9SRUFETUUNCisrKyBiL3QvUkVBRE1FDQpAQCAtMzI2LDkgKzMyNiw2IEBAIHZh bGlkIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YgdGhlIEVPSUUgZXh0ZW5zaW9uLg0KIA0KIEdJVF9U RVNUX0lOREVYX1RIUkVBRFM9PGJvb2xlYW4+IGZvcmNlcyBtdWx0aS10aHJlYWRlZCBsb2FkaW5n IG9mDQogdGhlIGluZGV4IGNhY2hlIGVudHJpZXMgYW5kIGV4dGVuc2lvbnMgZm9yIHRoZSB3aG9s ZSB0ZXN0IHN1aXRlLg0KLUN1cnJlbnRseSB0ZXN0cyAxLCA0LTkgaW4gdDE3MDAtc3BsaXQtaW5k ZXguc2ggZmFpbCBhcyB0aGV5IGhhcmQNCi1jb2RlIFNIQSB2YWx1ZXMgZm9yIHRoZSBpbmRleCB3 aGljaCBhcmUgbm8gbG9uZ2VyIHZhbGlkIGR1ZSB0byB0aGUNCi1hZGRpdGlvbiBvZiB0aGUgRU9J RSBleHRlbnNpb24uDQogDQogTmFtaW5nIFRlc3RzDQogLS0tLS0tLS0tLS0tDQoNCg0KIyMjIFBh dGNoZXMNCg0KQmVuIFBlYXJ0ICg0KToNCiAgZW9pZTogYWRkIEVuZCBvZiBJbmRleCBFbnRyeSAo RU9JRSkgZXh0ZW5zaW9uDQogIHJlYWQtY2FjaGU6IGxvYWQgY2FjaGUgZXh0ZW5zaW9ucyBvbiBh IHdvcmtlciB0aHJlYWQNCiAgcmVhZC1jYWNoZTogbG9hZCBjYWNoZSBlbnRyaWVzIG9uIHdvcmtl ciB0aHJlYWRzDQogIHJlYWQtY2FjaGU6IGNsZWFuIHVwIGNhc3RpbmcgYW5kIGJ5dGUgZGVjb2Rp bmcNCg0KTmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eSAoMSk6DQogIHJlYWQtY2FjaGUuYzogb3B0 aW1pemUgcmVhZGluZyBpbmRleCBmb3JtYXQgdjQNCg0KIERvY3VtZW50YXRpb24vY29uZmlnLnR4 dCAgICAgICAgICAgICAgICAgfCAgIDYgKw0KIERvY3VtZW50YXRpb24vdGVjaG5pY2FsL2luZGV4 LWZvcm1hdC50eHQgfCAgMjMgKw0KIGNvbmZpZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMTggKw0KIGNvbmZpZy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKw0KIHJlYWQtY2FjaGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1Nzkg KysrKysrKysrKysrKysrKysrKy0tLS0NCiB0L1JFQURNRSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA4ICsNCiB0L3QxNzAwLXNwbGl0LWluZGV4LnNoICAgICAgICAgICAgICAg ICAgIHwgICAxICsNCiA3IGZpbGVzIGNoYW5nZWQsIDUzOCBpbnNlcnRpb25zKCspLCA5OCBkZWxl dGlvbnMoLSkNCg0KDQpiYXNlLWNvbW1pdDogMjlkOWUzZTJjNDdkZDRiNTA1M2IwYTk4Yzg5MTg3 OGQzOTg0NjNlMw0KLS0gDQoyLjE4LjAud2luZG93cy4xDQoNCg0K