From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 77295 invoked by alias); 4 May 2018 16:23:13 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 77244 invoked by uid 89); 4 May 2018 16:23:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.0 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=viewing, ver, Visit, regional X-HELO: EUR01-HE1-obe.outbound.protection.outlook.com Received: from mail-he1eur01on0044.outbound.protection.outlook.com (HELO EUR01-HE1-obe.outbound.protection.outlook.com) (104.47.0.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 04 May 2018 16:23:08 +0000 Received: from DB6PR0802MB2504.eurprd08.prod.outlook.com (10.172.251.138) by DB6PR0802MB2326.eurprd08.prod.outlook.com (10.172.228.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.715.20; Fri, 4 May 2018 16:23:05 +0000 Received: from DB6PR0802MB2504.eurprd08.prod.outlook.com ([fe80::50a4:6d4f:2378:5e0e]) by DB6PR0802MB2504.eurprd08.prod.outlook.com ([fe80::50a4:6d4f:2378:5e0e%17]) with mapi id 15.20.0715.024; Fri, 4 May 2018 16:23:04 +0000 From: Bin Cheng To: "gcc-patches@gcc.gnu.org" CC: nd Subject: [PATCH GCC][4/6]Support regional coalesce and live range computation Date: Fri, 04 May 2018 16:23:00 -0000 Message-ID: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Bin.Cheng@arm.com; x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DB6PR0802MB2326;7:WuwZIKY7PXwQy9MyK5uYSftgf/UsmXXuuOPhBl/xRJWd6MkkstJ0RSm6fUuapE5wIMfu7J6YUH+G6ryqtx3OSV12czclM+sNhCpSdVY8ad9hfYLtSCnhK90WXktrRRcvbmqWYXX4KGTFBb5inLMtEnk1jUbHLERjuvOWuCZUqBNPvVBWvantvZpzhLoA4fhpioApK11dYB+fN2Pp2fJrsQplDWWRJFMH66YRvhFJAvumHhVqSq8AigTJbYgQfEtP x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(48565401081)(2017052603328)(7153060)(49563074)(7193020);SRVR:DB6PR0802MB2326; x-ms-traffictypediagnostic: DB6PR0802MB2326: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(102415395)(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123562045)(20161123560045)(20161123558120)(6072148)(201708071742011);SRVR:DB6PR0802MB2326;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0802MB2326; x-forefront-prvs: 06628F7CA4 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(396003)(376002)(346002)(39860400002)(39380400002)(189003)(199004)(377424004)(105586002)(7736002)(14454004)(316002)(7696005)(6506007)(99286004)(102836004)(8936002)(5660300001)(74316002)(476003)(59450400001)(53936002)(486006)(66066001)(3846002)(26005)(86362001)(4326008)(81156014)(81166006)(6116002)(5250100002)(55016002)(2900100001)(2906002)(97736004)(68736007)(33656002)(8676002)(6436002)(72206003)(106356001)(9686003)(5640700003)(305945005)(3660700001)(2501003)(3280700002)(2351001)(99936001)(6916009)(25786009)(478600001);DIR:OUT;SFP:1101;SCL:1;SRVR:DB6PR0802MB2326;H:DB6PR0802MB2504.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: eCQvVSPPhYcXdEDeiUUuXUgUa/N4q/bo/uKfDh18THV0efp/vu9HrtIT47hDXZ6n2fcoRKG2Rku2G9LHUBRT0qLDFLv+MA2RHLVR5NiVpyGG+xxNOKx5Y2HShBmDSHh6WXeBH7tZYaWQUucyHzrjWd0W1S0b0p0Lb7qYKihBQabo3dJWbpkM+s6L3/brvVKs spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/mixed; boundary="_002_DB6PR0802MB250419B22C2EABF9A56798F5E7860DB6PR0802MB2504_" MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 93dd4188-9d4b-41cc-e5a2-08d5b1db506b X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 93dd4188-9d4b-41cc-e5a2-08d5b1db506b X-MS-Exchange-CrossTenant-originalarrivaltime: 04 May 2018 16:23:04.7058 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2326 X-IsSubscribed: yes X-SW-Source: 2018-05/txt/msg00223.txt.bz2 --_002_DB6PR0802MB250419B22C2EABF9A56798F5E7860DB6PR0802MB2504_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-length: 1599 Hi, Following Jeff's suggestion, I am now using existing tree-ssa-live.c and tree-ssa-coalesce.c to compute register pressure, rather than inventing another live range solver. The major change is to record region's basic blocks in var_map and use that information in computation, rather than FOR_EACH_BB_FN. For now only loop and function type regions are supported. The default one is function type region which is used in out-of-ssa. Loop type region will be used in next patch to compute information for a loop. Bootstrap and test on x86_64 and AArch64 ongoing. Any comments? Thanks, bin 2018-04-27 Bin Cheng * tree-outof-ssa.c (remove_ssa_form): Update use. * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support regional coalesce. (coalesce_with_default): Update comment. (create_outofssa_var_map): Support regional coalesce. Rename to... (create_var_map): ...this. (coalesce_partitions): Support regional coalesce. (gimple_can_coalesce_p, compute_optimized_partition_bases): Ditto. (coalesce_ssa_name): Ditto. * tree-ssa-coalesce.h (coalesce_ssa_name, gimple_can_coalesce_p): Add parameter in declarations. * tree-ssa-live.c (init_var_map, delete_var_map): Support regional coalesce. (new_tree_live_info, loe_visit_block, set_var_live_on_entry): Ditto. (calculate_live_on_exit, verify_live_on_entry): Ditto. * tree-ssa-live.h (enum region_type): New. (struct _var_map): New fields. (init_var_map): Add parameter in declaration. (function_region_p, region_contains_p): New. * tree-ssa-uncprop.c (uncprop_into_successor_phis): Update uses.= --_002_DB6PR0802MB250419B22C2EABF9A56798F5E7860DB6PR0802MB2504_ Content-Type: text/x-patch; name="0004-liverange-support-region-20180427.patch" Content-Description: 0004-liverange-support-region-20180427.patch Content-Disposition: attachment; filename="0004-liverange-support-region-20180427.patch"; size=22019; creation-date="Fri, 04 May 2018 16:14:17 GMT"; modification-date="Fri, 04 May 2018 16:14:17 GMT" Content-Transfer-Encoding: base64 Content-length: 29850 RnJvbSA2YjdiODBlYjQwYzBiZDA4YzI1YzE0YjNmN2MzMzkzNzk0MWJkZmFh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCaW4gQ2hlbmcgPGJp bmNoZTAxQGUxMDg0NTEtbGluLmNhbWJyaWRnZS5hcm0uY29tPgpEYXRlOiBG cmksIDQgTWF5IDIwMTggMDk6Mzk6MTcgKzAxMDAKU3ViamVjdDogW1BBVENI IDQvNl0gbGl2ZXJhbmdlLXN1cHBvcnQtcmVnaW9uLTIwMTgwNDI3CgotLS0K IGdjYy90cmVlLW91dG9mLXNzYS5jICAgIHwgIDIgKy0KIGdjYy90cmVlLXNz YS1jb2FsZXNjZS5jIHwgNzcgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0KIGdjYy90cmVlLXNzYS1jb2FsZXNjZS5o IHwgIDQgKy0tCiBnY2MvdHJlZS1zc2EtbGl2ZS5jICAgICB8IDgwICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0K IGdjYy90cmVlLXNzYS1saXZlLmggICAgIHwgNTEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQogZ2NjL3RyZWUtc3NhLXVuY3Byb3AuYyAgfCAg NSArKy0tCiA2IGZpbGVzIGNoYW5nZWQsIDE2MyBpbnNlcnRpb25zKCspLCA1 NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvdHJlZS1vdXRvZi1z c2EuYyBiL2djYy90cmVlLW91dG9mLXNzYS5jCmluZGV4IDU5YmRjZDYuLjgx ZWRiYzUgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLW91dG9mLXNzYS5jCisrKyBi L2djYy90cmVlLW91dG9mLXNzYS5jCkBAIC05NDUsNyArOTQ1LDcgQEAgcmVt b3ZlX3NzYV9mb3JtIChib29sIHBlcmZvcm1fdGVyLCBzdHJ1Y3Qgc3NhZXhw YW5kICpzYSkKICAgYml0bWFwIHZhbHVlcyA9IE5VTEw7CiAgIHZhcl9tYXAg bWFwOwogCi0gIG1hcCA9IGNvYWxlc2NlX3NzYV9uYW1lICgpOworICBtYXAg PSBjb2FsZXNjZV9zc2FfbmFtZSAoTlVMTCwgZmxhZ190cmVlX2NvYWxlc2Nl X3ZhcnMpOwogCiAgIC8qIFJldHVybiB0byB2aWV3aW5nIHRoZSB2YXJpYWJs ZSBsaXN0IGFzIGp1c3QgYWxsIHJlZmVyZW5jZSB2YXJpYWJsZXMgYWZ0ZXIK ICAgICAgY29hbGVzY2luZyBoYXMgYmVlbiBwZXJmb3JtZWQuICAqLwpkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWNvYWxlc2NlLmMgYi9nY2MvdHJlZS1z c2EtY29hbGVzY2UuYwppbmRleCA1Y2MwYWNhLi43MjY5ZWIxIDEwMDY0NAot LS0gYS9nY2MvdHJlZS1zc2EtY29hbGVzY2UuYworKysgYi9nY2MvdHJlZS1z c2EtY29hbGVzY2UuYwpAQCAtODY5LDcgKzg2OSw3IEBAIGJ1aWxkX3NzYV9j b25mbGljdF9ncmFwaCAodHJlZV9saXZlX2luZm9fcCBsaXZlaW5mbykKICAg ICAgY29hbGVzY2UgdmFyaWFibGVzIGZyb20gZGlmZmVyZW50IGJhc2UgdmFy aWFibGVzLCBpbmNsdWRpbmcKICAgICAgZGlmZmVyZW50IHBhcmFtZXRlcnMs IHNvIHdlIGhhdmUgdG8gbWFrZSBzdXJlIGRlZmF1bHQgZGVmcyBsaXZlCiAg ICAgIGF0IHRoZSBlbnRyeSBibG9jayBjb25mbGljdCB3aXRoIGVhY2ggb3Ro ZXIuICAqLwotICBpZiAoZmxhZ190cmVlX2NvYWxlc2NlX3ZhcnMpCisgIGlm IChsaXZlaW5mby0+bWFwLT5jb2FsZXNjZV92YXJzX3ApCiAgICAgZW50cnkg PSBzaW5nbGVfc3VjYyAoRU5UUllfQkxPQ0tfUFRSX0ZPUl9GTiAoY2Z1bikp OwogICBlbHNlCiAgICAgZW50cnkgPSBOVUxMOwpAQCAtODc5LDcgKzg3OSw3 IEBAIGJ1aWxkX3NzYV9jb25mbGljdF9ncmFwaCAodHJlZV9saXZlX2luZm9f cCBsaXZlaW5mbykKIAogICBsaXZlID0gbmV3X2xpdmVfdHJhY2sgKG1hcCk7 CiAKLSAgRk9SX0VBQ0hfQkJfRk4gKGJiLCBjZnVuKQorICBmb3IgKHVuc2ln bmVkIGkgPSAwOyBsaXZlaW5mby0+bWFwLT52ZWNfYmJzLT5pdGVyYXRlIChp LCAmYmIpOyArK2kpCiAgICAgewogICAgICAgLyogU3RhcnQgd2l0aCBsaXZl IG9uIGV4aXQgdGVtcG9yYXJpZXMuICAqLwogICAgICAgbGl2ZV90cmFja19p bml0IChsaXZlLCBsaXZlX29uX2V4aXQgKGxpdmVpbmZvLCBiYikpOwpAQCAt OTQ0LDYgKzk0NCw4IEBAIGJ1aWxkX3NzYV9jb25mbGljdF9ncmFwaCAodHJl ZV9saXZlX2luZm9fcCBsaXZlaW5mbykKIAl7CiAJICBncGhpICpwaGkgPSBn c2kucGhpICgpOwogCSAgdHJlZSByZXN1bHQgPSBQSElfUkVTVUxUIChwaGkp OworCSAgaWYgKHZpcnR1YWxfb3BlcmFuZF9wIChyZXN1bHQpKQorCSAgICBj b250aW51ZTsKIAkgIGlmIChsaXZlX3RyYWNrX2xpdmVfcCAobGl2ZSwgcmVz dWx0KSkKIAkgICAgbGl2ZV90cmFja19wcm9jZXNzX2RlZiAobGl2ZSwgcmVz dWx0LCBncmFwaCk7CiAJfQpAQCAtMTA3MSwxNCArMTA3MywxOCBAQCBjb2Fs ZXNjZV93aXRoX2RlZmF1bHQgKHRyZWUgdmFyLCBjb2FsZXNjZV9saXN0ICpj bCwgYml0bWFwIHVzZWRfaW5fY29weSkKICAgYWRkX2Nvc3Rfb25lX2NvYWxl c2NlIChjbCwgU1NBX05BTUVfVkVSU0lPTiAoc3NhKSwgU1NBX05BTUVfVkVS U0lPTiAodmFyKSk7CiAgIGJpdG1hcF9zZXRfYml0ICh1c2VkX2luX2NvcHks IFNTQV9OQU1FX1ZFUlNJT04gKHZhcikpOwogICAvKiBEZWZhdWx0IGRlZnMg d2lsbCBoYXZlIHRoZWlyIHVzZWRfaW5fY29weSBiaXRzIHNldCBhdCB0aGUg ZW5kIG9mCi0gICAgIGNyZWF0ZV9vdXRvZnNzYV92YXJfbWFwLiAgKi8KKyAg ICAgY3JlYXRlX3Zhcl9tYXAuICAqLwogfQogCi0vKiBUaGlzIGZ1bmN0aW9u IGNyZWF0ZXMgYSB2YXJfbWFwIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBh cyB3ZWxsIGFzIGNyZWF0aW5nCi0gICBhIGNvYWxlc2NlIGxpc3QgZm9yIHVz ZSBsYXRlciBpbiB0aGUgb3V0IG9mIHNzYSBwcm9jZXNzLiAgKi8KKy8qIFRo aXMgZnVuY3Rpb24gY3JlYXRlcyBhIHZhcl9tYXAgZm9yIGEgcmVnaW9uIGlu ZGljYXRlZCBieSBCQlMgaW4gdGhlIGN1cnJlbnQKKyAgIGZ1bmN0aW9uIGFz IHdlbGwgYXMgY3JlYXRpbmcgYSBjb2FsZXNjZSBsaXN0IGZvciB1c2UgbGF0 ZXIgaW4gdGhlIG91dCBvZiBzc2EKKyAgIHByb2Nlc3MuICBSZWdpb24gaXMg YSBsb29wIGlmIExPT1AgaXMgbm90IE5VTEwsIG90aGVyd2lzZSB0aGUgZnVu Y3Rpb24uCisgICBDT0FMRVNDRV9WQVJTX1AgaXMgdHJ1ZSBpZiB3ZSBjb2Fs ZXNjZSB2ZXJzaW9uIG9mIGRpZmZlcmVudCB1c2VyLWRlZmluZWQKKyAgIHZh cmlhYmxlcy4gICovCiAKIHN0YXRpYyB2YXJfbWFwCi1jcmVhdGVfb3V0b2Zz c2FfdmFyX21hcCAoY29hbGVzY2VfbGlzdCAqY2wsIGJpdG1hcCB1c2VkX2lu X2NvcHkpCitjcmVhdGVfdmFyX21hcCAoc3RydWN0IGxvb3AgKmxvb3AsIGNv YWxlc2NlX2xpc3QgKmNsLCBiaXRtYXAgdXNlZF9pbl9jb3B5LAorCQlib29s IGNvYWxlc2NlX3ZhcnNfcCkKIHsKICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3Ig Z3NpOwogICBiYXNpY19ibG9jayBiYjsKQEAgLTEwOTEsMTEgKzEwOTcsMTEg QEAgY3JlYXRlX291dG9mc3NhX3Zhcl9tYXAgKGNvYWxlc2NlX2xpc3QgKmNs LCBiaXRtYXAgdXNlZF9pbl9jb3B5KQogCiAgIGZvcl9hbGxfcGFybXMgKGNy ZWF0ZV9kZWZhdWx0X2RlZiwgTlVMTCk7CiAKLSAgbWFwID0gaW5pdF92YXJf bWFwIChudW1fc3NhX25hbWVzKTsKKyAgbWFwID0gaW5pdF92YXJfbWFwIChs b29wLCBudW1fc3NhX25hbWVzLCBjb2FsZXNjZV92YXJzX3ApOwogCiAgIGZv cl9hbGxfcGFybXMgKHJlZ2lzdGVyX2RlZmF1bHRfZGVmLCBOVUxMKTsKIAot ICBGT1JfRUFDSF9CQl9GTiAoYmIsIGNmdW4pCisgIGZvciAodW5zaWduZWQg aiA9IDA7IG1hcC0+dmVjX2Jicy0+aXRlcmF0ZSAoaiwgJmJiKTsgKytqKQog ICAgIHsKICAgICAgIHRyZWUgYXJnOwogCkBAIC0xMTEwLDYgKzExMTYsOCBA QCBjcmVhdGVfb3V0b2Zzc2FfdmFyX21hcCAoY29hbGVzY2VfbGlzdCAqY2ws IGJpdG1hcCB1c2VkX2luX2NvcHkpCiAJICBib29sIHNhd19jb3B5ID0gZmFs c2U7CiAKIAkgIHJlcyA9IGdpbXBsZV9waGlfcmVzdWx0IChwaGkpOworCSAg aWYgKHZpcnR1YWxfb3BlcmFuZF9wIChyZXMpKQorCSAgICBjb250aW51ZTsK IAkgIHZlciA9IFNTQV9OQU1FX1ZFUlNJT04gKHJlcyk7CiAKIAkgIC8qIFJl Z2lzdGVyIHNzYV9uYW1lcyBhbmQgY29hbGVzY2VzIGJldHdlZW4gdGhlIGFy Z3MgYW5kIHRoZSByZXN1bHQKQEAgLTExMjEsNyArMTEyOSw3IEBAIGNyZWF0 ZV9vdXRvZnNzYV92YXJfbWFwIChjb2FsZXNjZV9saXN0ICpjbCwgYml0bWFw IHVzZWRfaW5fY29weSkKIAkgICAgICBpZiAoVFJFRV9DT0RFIChhcmcpICE9 IFNTQV9OQU1FKQogCQljb250aW51ZTsKIAotCSAgICAgIGlmIChnaW1wbGVf Y2FuX2NvYWxlc2NlX3AgKGFyZywgcmVzKQorCSAgICAgIGlmIChnaW1wbGVf Y2FuX2NvYWxlc2NlX3AgKGFyZywgcmVzLCBjb2FsZXNjZV92YXJzX3ApCiAJ CSAgfHwgKGUtPmZsYWdzICYgRURHRV9BQk5PUk1BTCkpCiAJCXsKIAkJICBz YXdfY29weSA9IHRydWU7CkBAIC0xMTU1LDcgKzExNjMsNyBAQCBjcmVhdGVf b3V0b2Zzc2FfdmFyX21hcCAoY29hbGVzY2VfbGlzdCAqY2wsIGJpdG1hcCB1 c2VkX2luX2NvcHkpCiAJCXRyZWUgbGhzID0gZ2ltcGxlX2Fzc2lnbl9saHMg KHN0bXQpOwogCQl0cmVlIHJoczEgPSBnaW1wbGVfYXNzaWduX3JoczEgKHN0 bXQpOwogCQlpZiAoZ2ltcGxlX2Fzc2lnbl9zc2FfbmFtZV9jb3B5X3AgKHN0 bXQpCi0JCSAgICAmJiBnaW1wbGVfY2FuX2NvYWxlc2NlX3AgKGxocywgcmhz MSkpCisJCSAgICAmJiBnaW1wbGVfY2FuX2NvYWxlc2NlX3AgKGxocywgcmhz MSwgY29hbGVzY2VfdmFyc19wKSkKIAkJICB7CiAJCSAgICB2MSA9IFNTQV9O QU1FX1ZFUlNJT04gKGxocyk7CiAJCSAgICB2MiA9IFNTQV9OQU1FX1ZFUlNJ T04gKHJoczEpOwpAQCAtMTE3OSw3ICsxMTg3LDcgQEAgY3JlYXRlX291dG9m c3NhX3Zhcl9tYXAgKGNvYWxlc2NlX2xpc3QgKmNsLCBiaXRtYXAgdXNlZF9p bl9jb3B5KQogCQl0cmVlIGxocyA9IHNzYV9kZWZhdWx0X2RlZiAoY2Z1biwg cmVzKTsKIAkJZ2NjX2Fzc2VydCAobGhzKTsKIAkJaWYgKFRSRUVfQ09ERSAo cmhzMSkgPT0gU1NBX05BTUUKLQkJICAgICYmIGdpbXBsZV9jYW5fY29hbGVz Y2VfcCAobGhzLCByaHMxKSkKKwkJICAgICYmIGdpbXBsZV9jYW5fY29hbGVz Y2VfcCAobGhzLCByaHMxLCBjb2FsZXNjZV92YXJzX3ApKQogCQkgIHsKIAkJ ICAgIHYxID0gU1NBX05BTUVfVkVSU0lPTiAobGhzKTsKIAkJICAgIHYyID0g U1NBX05BTUVfVkVSU0lPTiAocmhzMSk7CkBAIC0xMjMxLDcgKzEyMzksOCBA QCBjcmVhdGVfb3V0b2Zzc2FfdmFyX21hcCAoY29hbGVzY2VfbGlzdCAqY2ws IGJpdG1hcCB1c2VkX2luX2NvcHkpCiAJCSAgICB2MSA9IFNTQV9OQU1FX1ZF UlNJT04gKG91dHB1dHNbbWF0Y2hdKTsKIAkJICAgIHYyID0gU1NBX05BTUVf VkVSU0lPTiAoaW5wdXQpOwogCi0JCSAgICBpZiAoZ2ltcGxlX2Nhbl9jb2Fs ZXNjZV9wIChvdXRwdXRzW21hdGNoXSwgaW5wdXQpKQorCQkgICAgaWYgKGdp bXBsZV9jYW5fY29hbGVzY2VfcCAob3V0cHV0c1ttYXRjaF0sIGlucHV0LAor CQkJCQkgICAgICAgY29hbGVzY2VfdmFyc19wKSkKIAkJICAgICAgewogCQkJ Y29zdCA9IGNvYWxlc2NlX2Nvc3QgKFJFR19CUl9QUk9CX0JBU0UsCiAJCQkJ CSAgICAgIG9wdGltaXplX2JiX2Zvcl9zaXplX3AgKGJiKSk7CkBAIC0xMjQ5 LDYgKzEyNTgsOSBAQCBjcmVhdGVfb3V0b2Zzc2FfdmFyX21hcCAoY29hbGVz Y2VfbGlzdCAqY2wsIGJpdG1hcCB1c2VkX2luX2NvcHkpCiAJfQogICAgIH0K IAorICBpZiAoIWZ1bmN0aW9uX3JlZ2lvbl9wIChtYXApKQorICAgIHJldHVy biBtYXA7CisKICAgLyogTm93IHByb2Nlc3MgcmVzdWx0IGRlY2xzIGFuZCBs aXZlIG9uIGVudHJ5IHZhcmlhYmxlcyBmb3IgZW50cnkgaW50bwogICAgICB0 aGUgY29hbGVzY2UgbGlzdC4gICovCiAgIGZpcnN0ID0gTlVMTF9UUkVFOwpA QCAtMTI2Nyw3ICsxMjc5LDggQEAgY3JlYXRlX291dG9mc3NhX3Zhcl9tYXAg KGNvYWxlc2NlX2xpc3QgKmNsLCBiaXRtYXAgdXNlZF9pbl9jb3B5KQogCQlm aXJzdCA9IHZhcjsKIAkgICAgICBlbHNlCiAJCXsKLQkJICBnY2NfYXNzZXJ0 IChnaW1wbGVfY2FuX2NvYWxlc2NlX3AgKHZhciwgZmlyc3QpKTsKKwkJICBn Y2NfYXNzZXJ0IChnaW1wbGVfY2FuX2NvYWxlc2NlX3AgKHZhciwgZmlyc3Qs CisJCQkJCQkgICAgIGNvYWxlc2NlX3ZhcnNfcCkpOwogCQkgIHYxID0gU1NB X05BTUVfVkVSU0lPTiAoZmlyc3QpOwogCQkgIHYyID0gU1NBX05BTUVfVkVS U0lPTiAodmFyKTsKIAkJICBjb3N0ID0gY29hbGVzY2VfY29zdF9iYiAoRVhJ VF9CTE9DS19QVFJfRk9SX0ZOIChjZnVuKSk7CkBAIC0xMzg0LDEzICsxMzk3 LDE1IEBAIGNvYWxlc2NlX3BhcnRpdGlvbnMgKHZhcl9tYXAgbWFwLCBzc2Ff Y29uZmxpY3RzICpncmFwaCwgY29hbGVzY2VfbGlzdCAqY2wsCiAJCSBnc2lf bmV4dCAoJmdzaSkpCiAJICAgICAgewogCQlncGhpICpwaGkgPSBnc2kucGhp ICgpOworCQl0cmVlIHJlcyA9IFBISV9SRVNVTFQgKHBoaSk7CisJCWlmICh2 aXJ0dWFsX29wZXJhbmRfcCAocmVzKSkKKwkJICBjb250aW51ZTsKIAkJdHJl ZSBhcmcgPSBQSElfQVJHX0RFRiAocGhpLCBlLT5kZXN0X2lkeCk7CiAJCWlm IChTU0FfTkFNRV9JU19ERUZBVUxUX0RFRiAoYXJnKQogCQkgICAgJiYgKCFT U0FfTkFNRV9WQVIgKGFyZykKIAkJCXx8IFRSRUVfQ09ERSAoU1NBX05BTUVf VkFSIChhcmcpKSAhPSBQQVJNX0RFQ0wpKQogCQkgIGNvbnRpbnVlOwogCi0J CXRyZWUgcmVzID0gUEhJX1JFU1VMVCAocGhpKTsKIAkJaW50IHYxID0gU1NB X05BTUVfVkVSU0lPTiAocmVzKTsKIAkJaW50IHYyID0gU1NBX05BTUVfVkVS U0lPTiAoYXJnKTsKIApAQCAtMTQxMSw3ICsxNDI2LDcgQEAgY29hbGVzY2Vf cGFydGl0aW9ucyAodmFyX21hcCBtYXAsIHNzYV9jb25mbGljdHMgKmdyYXBo LCBjb2FsZXNjZV9saXN0ICpjbCwKICAgICAgIHZhcjIgPSBzc2FfbmFtZSAo eSk7CiAKICAgICAgIC8qIEFzc2VydCB0aGUgY29hbGVzY2VzIGhhdmUgdGhl IHNhbWUgYmFzZSB2YXJpYWJsZS4gICovCi0gICAgICBnY2NfYXNzZXJ0IChn aW1wbGVfY2FuX2NvYWxlc2NlX3AgKHZhcjEsIHZhcjIpKTsKKyAgICAgIGdj Y19hc3NlcnQgKGdpbXBsZV9jYW5fY29hbGVzY2VfcCAodmFyMSwgdmFyMiwg bWFwLT5jb2FsZXNjZV92YXJzX3ApKTsKIAogICAgICAgaWYgKGRlYnVnKQog CWZwcmludGYgKGRlYnVnLCAiQ29hbGVzY2UgbGlzdDogIik7CkBAIC0xNDkz LDEzICsxNTA4LDE1IEBAIGR1bXBfcGFydF92YXJfbWFwIChGSUxFICpmLCBw YXJ0aXRpb24gcGFydCwgdmFyX21hcCBtYXApCiB9CiAKIC8qIEdpdmVuIFNT QV9OQU1FcyBOQU1FMSBhbmQgTkFNRTIsIHJldHVybiB0cnVlIGlmIHRoZXkg YXJlIGNhbmRpZGF0ZXMgZm9yCi0gICBjb2FsZXNjaW5nIHRvZ2V0aGVyLCBm YWxzZSBvdGhlcndpc2UuCisgICBjb2FsZXNjaW5nIHRvZ2V0aGVyLCBmYWxz ZSBvdGhlcndpc2UuICBJZiBDT0FMRVNDRV9WQVJTX1AgaXMgVFJVRSwgd2UK KyAgIHRyeSB0byBjb2FsZXNjZSB2ZXJzaW9ucyBvZiBkaWZmZXJlbnQgdXNl ci1kZWZpbmVkIHZhcmlhYmxlcy4gIE5vcm1hbGx5CisgICAtZnRyZWUtY29h bGVzY2UtdmFycyBpcyBwYXNzZWQgaW4uCiAKICAgIFRoaXMgbXVzdCBzdGF5 IGNvbnNpc3RlbnQgd2l0aCBjb21wdXRlX3NhbWViYXNlX3BhcnRpdGlvbl9i YXNlcyBhbmQgCiAgICBjb21wdXRlX29wdGltaXplZF9wYXJ0aXRpb25fYmFz ZXMuICAqLwogCiBib29sCi1naW1wbGVfY2FuX2NvYWxlc2NlX3AgKHRyZWUg bmFtZTEsIHRyZWUgbmFtZTIpCitnaW1wbGVfY2FuX2NvYWxlc2NlX3AgKHRy ZWUgbmFtZTEsIHRyZWUgbmFtZTIsIGJvb2wgY29hbGVzY2VfdmFyc19wKQog ewogICAvKiBGaXJzdCBjaGVjayB0aGUgU1NBX05BTUUncyBhc3NvY2lhdGVk IERFQ0wuICBXaXRob3V0CiAgICAgIG9wdGltaXphdGlvbiwgd2Ugb25seSB3 YW50IHRvIGNvYWxlc2NlIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBERUNMCkBA IC0xNTA4LDcgKzE1MjUsNyBAQCBnaW1wbGVfY2FuX2NvYWxlc2NlX3AgKHRy ZWUgbmFtZTEsIHRyZWUgbmFtZTIpCiAgIHRyZWUgdmFyMiA9IFNTQV9OQU1F X1ZBUiAobmFtZTIpOwogICB2YXIxID0gKHZhcjEgJiYgKCFWQVJfUCAodmFy MSkgfHwgIURFQ0xfSUdOT1JFRF9QICh2YXIxKSkpID8gdmFyMSA6IE5VTExf VFJFRTsKICAgdmFyMiA9ICh2YXIyICYmICghVkFSX1AgKHZhcjIpIHx8ICFE RUNMX0lHTk9SRURfUCAodmFyMikpKSA/IHZhcjIgOiBOVUxMX1RSRUU7Ci0g IGlmICh2YXIxICE9IHZhcjIgJiYgIWZsYWdfdHJlZV9jb2FsZXNjZV92YXJz KQorICBpZiAodmFyMSAhPSB2YXIyICYmICFjb2FsZXNjZV92YXJzX3ApCiAg ICAgcmV0dXJuIGZhbHNlOwogCiAgIC8qIE5vdyBjaGVjayB0aGUgdHlwZXMu ICBJZiB0aGUgdHlwZXMgYXJlIHRoZSBzYW1lLCB0aGVuIHdlIHNob3VsZApA QCAtMTU2NSw3ICsxNTgyLDcgQEAgZ2ltcGxlX2Nhbl9jb2FsZXNjZV9wICh0 cmVlIG5hbWUxLCB0cmVlIG5hbWUyKQogCiAgICAgIEluIHRoZSBub24tb3B0 aW1pemVkIGNhc2UsIHdlIG11c3QgZmlyc3QgdGVzdCBUWVBFX0NBTk9OSUNB TCBiZWNhdXNlCiAgICAgIHdlIHVzZSBpdCB0byBjb21wdXRlIHRoZSBwYXJ0 aXRpb25fdG9fYmFzZV9pbmRleCBvZiB0aGUgbWFwLiAgKi8KLSAgaWYgKGZs YWdfdHJlZV9jb2FsZXNjZV92YXJzKQorICBpZiAoY29hbGVzY2VfdmFyc19w KQogICAgIHsKICAgICAgIGlmICh0eXBlc19jb21wYXRpYmxlX3AgKHQxLCB0 MikpCiAJZ290byBjaGVja19tb2RlczsKQEAgLTE2MjksOCArMTY0Niw5IEBA IGNvbXB1dGVfb3B0aW1pemVkX3BhcnRpdGlvbl9iYXNlcyAodmFyX21hcCBt YXAsIGJpdG1hcCB1c2VkX2luX2NvcGllcywKICAgLyogQW5kIGFsc28gd2l0 aCBhYm5vcm1hbCBlZGdlcy4gICovCiAgIGJhc2ljX2Jsb2NrIGJiOwogICBl ZGdlIGU7CisgIHVuc2lnbmVkIGk7CiAgIGVkZ2VfaXRlcmF0b3IgZWk7Ci0g IEZPUl9FQUNIX0JCX0ZOIChiYiwgY2Z1bikKKyAgZm9yIChpID0gMDsgbWFw LT52ZWNfYmJzLT5pdGVyYXRlIChpLCAmYmIpOyArK2kpCiAgICAgewogICAg ICAgRk9SX0VBQ0hfRURHRSAoZSwgZWksIGJiLT5wcmVkcykKIAlpZiAoZS0+ ZmxhZ3MgJiBFREdFX0FCTk9STUFMKQpAQCAtMTY0MCwxNCArMTY1OCwxNSBA QCBjb21wdXRlX29wdGltaXplZF9wYXJ0aXRpb25fYmFzZXMgKHZhcl9tYXAg bWFwLCBiaXRtYXAgdXNlZF9pbl9jb3BpZXMsCiAJCSBnc2lfbmV4dCAoJmdz aSkpCiAJICAgICAgewogCQlncGhpICpwaGkgPSBnc2kucGhpICgpOworCQl0 cmVlIHJlcyA9IFBISV9SRVNVTFQgKHBoaSk7CisJCWlmICh2aXJ0dWFsX29w ZXJhbmRfcCAocmVzKSkKKwkJICBjb250aW51ZTsKIAkJdHJlZSBhcmcgPSBQ SElfQVJHX0RFRiAocGhpLCBlLT5kZXN0X2lkeCk7CiAJCWlmIChTU0FfTkFN RV9JU19ERUZBVUxUX0RFRiAoYXJnKQogCQkgICAgJiYgKCFTU0FfTkFNRV9W QVIgKGFyZykKIAkJCXx8IFRSRUVfQ09ERSAoU1NBX05BTUVfVkFSIChhcmcp KSAhPSBQQVJNX0RFQ0wpKQogCQkgIGNvbnRpbnVlOwogCi0JCXRyZWUgcmVz ID0gUEhJX1JFU1VMVCAocGhpKTsKLQogCQlpbnQgcDEgPSBwYXJ0aXRpb25f ZmluZCAodGVudGF0aXZlLCB2YXJfdG9fcGFydGl0aW9uIChtYXAsIHJlcykp OwogCQlpbnQgcDIgPSBwYXJ0aXRpb25fZmluZCAodGVudGF0aXZlLCB2YXJf dG9fcGFydGl0aW9uIChtYXAsIGFyZykpOwogCkBAIC0xNjc1LDcgKzE2OTQs NiBAQCBjb21wdXRlX29wdGltaXplZF9wYXJ0aXRpb25fYmFzZXMgKHZhcl9t YXAgbWFwLCBiaXRtYXAgdXNlZF9pbl9jb3BpZXMsCiAgICAgIGJldHdlZW4g YWxsIFNTQSB2ZXJzaW9ucyB0aGF0IGVuZGVkIHVwIGluIHRoZSBzYW1lIHBv dGVudGlhbAogICAgICBjb2FsZXNjZSBwYXJ0aXRpb24uICAqLwogICBiaXRt YXBfaXRlcmF0b3IgYmk7Ci0gIHVuc2lnbmVkIGk7CiAgIEVYRUNVVEVfSUZf U0VUX0lOX0JJVE1BUCAodXNlZF9pbl9jb3BpZXMsIDAsIGksIGJpKQogICAg IHsKICAgICAgIGludCBwaWR4ID0gdmFyX3RvX3BhcnRpdGlvbiAobWFwLCBz c2FfbmFtZSAoaSkpOwpAQCAtMTc4NSwxMCArMTgwMywxMyBAQCBjb21wdXRl X3NhbWViYXNlX3BhcnRpdGlvbl9iYXNlcyAodmFyX21hcCBtYXApCiB9CiAK IC8qIFJlZHVjZSB0aGUgbnVtYmVyIG9mIGNvcGllcyBieSBjb2FsZXNjaW5n IHZhcmlhYmxlcyBpbiB0aGUgZnVuY3Rpb24uICBSZXR1cm4KLSAgIGEgcGFy dGl0aW9uIG1hcCB3aXRoIHRoZSByZXN1bHRpbmcgY29hbGVzY2VzLiAgKi8K KyAgIGEgcGFydGl0aW9uIG1hcCB3aXRoIHRoZSByZXN1bHRpbmcgY29hbGVz Y2VzLiAgVGhlIGNvYWxlc2NlIGlzIGRvbmUgb24gYQorICAgcmVnaW9uIGJh c2lzOyBhbmQgdGhlIHJlZ2lvbiBpcyBhIGxvb3AgaWYgTE9PUCBpcyBub3Qg TlVMTCwgb3RoZXJ3aXNlIGlzIHRoZQorICAgZnVuY3Rpb24uICBDT0FMRVND RV9WQVJTX1AgaXMgdHJ1ZSBpZiB3ZSBjb2FsZXNjZSB2ZXJzaW9uIG9mIGRp ZmZlcmVudAorICAgdXNlci1kZWZpbmVkIHZhcmlhYmxlcy4gICovCiAKIGV4 dGVybiB2YXJfbWFwCi1jb2FsZXNjZV9zc2FfbmFtZSAodm9pZCkKK2NvYWxl c2NlX3NzYV9uYW1lIChzdHJ1Y3QgbG9vcCAqbG9vcCwgYm9vbCBjb2FsZXNj ZV92YXJzX3ApCiB7CiAgIHRyZWVfbGl2ZV9pbmZvX3AgbGl2ZWluZm87CiAg IHNzYV9jb25mbGljdHMgKmdyYXBoOwpAQCAtMTc5OSwxMiArMTgyMCwxMiBA QCBjb2FsZXNjZV9zc2FfbmFtZSAodm9pZCkKICAgdHJlZSBhOwogCiAgIGNs ID0gY3JlYXRlX2NvYWxlc2NlX2xpc3QgKCk7Ci0gIG1hcCA9IGNyZWF0ZV9v dXRvZnNzYV92YXJfbWFwIChjbCwgdXNlZF9pbl9jb3BpZXMpOworICBtYXAg PSBjcmVhdGVfdmFyX21hcCAobG9vcCwgY2wsIHVzZWRfaW5fY29waWVzLCBj b2FsZXNjZV92YXJzX3ApOwogCiAgIC8qIElmIHRoaXMgb3B0aW1pemF0aW9u IGlzIGRpc2FibGVkLCB3ZSBuZWVkIHRvIGNvYWxlc2NlIGFsbCB0aGUKICAg ICAgbmFtZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGUgc2FtZSBTU0FfTkFNRV9W QVIgc28gZGVidWcgaW5mbwogICAgICByZW1haW5zIHVuZGlzdHVyYmVkLiAg Ki8KLSAgaWYgKCFmbGFnX3RyZWVfY29hbGVzY2VfdmFycykKKyAgaWYgKCFt YXAtPmNvYWxlc2NlX3ZhcnNfcCkKICAgICB7CiAgICAgICBoYXNoX3RhYmxl PHNzYV9uYW1lX3Zhcl9oYXNoPiBzc2FfbmFtZV9oYXNoICgxMCk7CiAKQEAg LTE4NDUsNyArMTg2Niw3IEBAIGNvYWxlc2NlX3NzYV9uYW1lICh2b2lkKQog CiAgIHBhcnRpdGlvbl92aWV3X2JpdG1hcCAobWFwLCB1c2VkX2luX2NvcGll cyk7CiAKLSAgaWYgKGZsYWdfdHJlZV9jb2FsZXNjZV92YXJzKQorICBpZiAo bWFwLT5jb2FsZXNjZV92YXJzX3ApCiAgICAgY29tcHV0ZV9vcHRpbWl6ZWRf cGFydGl0aW9uX2Jhc2VzIChtYXAsIHVzZWRfaW5fY29waWVzLCBjbCk7CiAg IGVsc2UKICAgICBjb21wdXRlX3NhbWViYXNlX3BhcnRpdGlvbl9iYXNlcyAo bWFwKTsKZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1jb2FsZXNjZS5oIGIv Z2NjL3RyZWUtc3NhLWNvYWxlc2NlLmgKaW5kZXggODlkODQ3NC4uNjZhY2Ix OCAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtc3NhLWNvYWxlc2NlLmgKKysrIGIv Z2NjL3RyZWUtc3NhLWNvYWxlc2NlLmgKQEAgLTIwLDggKzIwLDggQEAgYWxv bmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBz ZWUKICNpZm5kZWYgR0NDX1RSRUVfU1NBX0NPQUxFU0NFX0gKICNkZWZpbmUg R0NDX1RSRUVfU1NBX0NPQUxFU0NFX0gKIAotZXh0ZXJuIHZhcl9tYXAgY29h bGVzY2Vfc3NhX25hbWUgKHZvaWQpOwotZXh0ZXJuIGJvb2wgZ2ltcGxlX2Nh bl9jb2FsZXNjZV9wICh0cmVlLCB0cmVlKTsKK2V4dGVybiB2YXJfbWFwIGNv YWxlc2NlX3NzYV9uYW1lIChzdHJ1Y3QgbG9vcCosIGJvb2wpOworZXh0ZXJu IGJvb2wgZ2ltcGxlX2Nhbl9jb2FsZXNjZV9wICh0cmVlLCB0cmVlLCBib29s KTsKIGV4dGVybiBiaXRtYXAgZ2V0X3Bhcm1fZGVmYXVsdF9kZWZfcGFydGl0 aW9ucyAodmFyX21hcCk7CiBleHRlcm4gYml0bWFwIGdldF91bmRlZmluZWRf dmFsdWVfcGFydGl0aW9ucyAodmFyX21hcCk7CiAKZGlmZiAtLWdpdCBhL2dj Yy90cmVlLXNzYS1saXZlLmMgYi9nY2MvdHJlZS1zc2EtbGl2ZS5jCmluZGV4 IDYyMzE2YmEuLmNjYjBkOTkgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXNzYS1s aXZlLmMKKysrIGIvZ2NjL3RyZWUtc3NhLWxpdmUuYwpAQCAtNzEsMTAgKzcx LDEzIEBAIHZhcl9tYXBfYmFzZV9maW5pICh2YXJfbWFwIG1hcCkKICAgICAg IG1hcC0+bnVtX2Jhc2V2YXJzID0gMDsKICAgICB9CiB9Ci0vKiBDcmVhdGUg YSB2YXJpYWJsZSBwYXJ0aXRpb24gbWFwIG9mIFNJWkUsIGluaXRpYWxpemUg YW5kIHJldHVybiBpdC4gICovCisvKiBDcmVhdGUgYSB2YXJpYWJsZSBwYXJ0 aXRpb24gbWFwIG9mIFNJWkUgZm9yIHJlZ2lvbiwgaW5pdGlhbGl6ZSBhbmQg cmV0dXJuCisgICBpdC4gIFJlZ2lvbiBpcyBhIGxvb3AgaWYgTE9PUCBpcyBu b24tTlVMTCwgb3RoZXJ3aXNlIGlzIGN1cnJlbnQgZnVuY3Rpb24uCisgICBD T0FMRVNDRV9WQVJTX1AgaXMgdHJ1ZSBpZiB3ZSBjb2FsZXNjZSB2ZXJzaW9u cyBvZiBkaWZmZXJlbnQgdXNlci1kZWZpbmVkCisgICB2YXJpYWJsZXMuICAq LwogCiB2YXJfbWFwCi1pbml0X3Zhcl9tYXAgKGludCBzaXplKQoraW5pdF92 YXJfbWFwIChzdHJ1Y3QgbG9vcCAqbG9vcCwgaW50IHNpemUsIGJvb2wgY29h bGVzY2VfdmFyc19wKQogewogICB2YXJfbWFwIG1hcDsKIApAQCAtODcsNiAr OTAsMzAgQEAgaW5pdF92YXJfbWFwIChpbnQgc2l6ZSkKICAgbWFwLT5wYXJ0 aXRpb25fc2l6ZSA9IHNpemU7CiAgIG1hcC0+bnVtX2Jhc2V2YXJzID0gMDsK ICAgbWFwLT5wYXJ0aXRpb25fdG9fYmFzZV9pbmRleCA9IE5VTEw7CisgIG1h cC0+Ym1wX2JicyA9IEJJVE1BUF9BTExPQyAoTlVMTCk7CisgIG1hcC0+dmVj X2JicyA9IG5ldyB2ZWM8YmFzaWNfYmxvY2s+ICgpOworICBpZiAobG9vcCkK KyAgICB7CisgICAgICBtYXAtPnJlZ2lvbl90eXBlID0gUlRZUEVfTE9PUDsK KyAgICAgIGJhc2ljX2Jsb2NrICpiYnMgPSBnZXRfbG9vcF9ib2R5X2luX2Rv bV9vcmRlciAobG9vcCk7CisgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp IDwgbG9vcC0+bnVtX25vZGVzOyArK2kpCisJeworCSAgYml0bWFwX3NldF9i aXQgKG1hcC0+Ym1wX2JicywgYmJzW2ldLT5pbmRleCk7CisJICBtYXAtPnZl Y19iYnMtPnNhZmVfcHVzaCAoYmJzW2ldKTsKKwl9CisgICAgICBmcmVlIChi YnMpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIG1hcC0+cmVnaW9u X3R5cGUgPSBSVFlQRV9GVU5DOworICAgICAgYmFzaWNfYmxvY2sgYmI7Cisg ICAgICBGT1JfRUFDSF9CQl9GTiAoYmIsIGNmdW4pCisJeworCSAgYml0bWFw X3NldF9iaXQgKG1hcC0+Ym1wX2JicywgYmItPmluZGV4KTsKKwkgIG1hcC0+ dmVjX2Jicy0+c2FmZV9wdXNoIChiYik7CisJfQorICAgIH0KKyAgbWFwLT5j b2FsZXNjZV92YXJzX3AgPSBjb2FsZXNjZV92YXJzX3A7CiAgIHJldHVybiBt YXA7CiB9CiAKQEAgLTEwMCw2ICsxMjcsOSBAQCBkZWxldGVfdmFyX21hcCAo dmFyX21hcCBtYXApCiAgIHBhcnRpdGlvbl9kZWxldGUgKG1hcC0+dmFyX3Bh cnRpdGlvbik7CiAgIGZyZWUgKG1hcC0+cGFydGl0aW9uX3RvX3ZpZXcpOwog ICBmcmVlIChtYXAtPnZpZXdfdG9fcGFydGl0aW9uKTsKKyAgQklUTUFQX0ZS RUUgKG1hcC0+Ym1wX2Jicyk7CisgIG1hcC0+dmVjX2Jicy0+cmVsZWFzZSAo KTsKKyAgZGVsZXRlIG1hcC0+dmVjX2JiczsKICAgZnJlZSAobWFwKTsKIH0K IApAQCAtOTAxLDEzICs5MzEsMTQgQEAgbmV3X3RyZWVfbGl2ZV9pbmZvICh2 YXJfbWFwIG1hcCkKIAogICBiaXRtYXBfb2JzdGFja19pbml0aWFsaXplICgm bGl2ZS0+bGl2ZWluX29ic3RhY2spOwogICBiaXRtYXBfb2JzdGFja19pbml0 aWFsaXplICgmbGl2ZS0+bGl2ZW91dF9vYnN0YWNrKTsKLSAgbGl2ZS0+bGl2 ZWluID0gWE5FV1ZFQyAoYml0bWFwX2hlYWQsIGxhc3RfYmFzaWNfYmxvY2tf Zm9yX2ZuIChjZnVuKSk7Ci0gIEZPUl9FQUNIX0JCX0ZOIChiYiwgY2Z1bikK LSAgICBiaXRtYXBfaW5pdGlhbGl6ZSAoJmxpdmUtPmxpdmVpbltiYi0+aW5k ZXhdLCAmbGl2ZS0+bGl2ZWluX29ic3RhY2spOwogCi0gIGxpdmUtPmxpdmVv dXQgPSBYTkVXVkVDIChiaXRtYXBfaGVhZCwgbGFzdF9iYXNpY19ibG9ja19m b3JfZm4gKGNmdW4pKTsKLSAgRk9SX0VBQ0hfQkJfRk4gKGJiLCBjZnVuKQot ICAgIGJpdG1hcF9pbml0aWFsaXplICgmbGl2ZS0+bGl2ZW91dFtiYi0+aW5k ZXhdLCAmbGl2ZS0+bGl2ZW91dF9vYnN0YWNrKTsKKyAgbGl2ZS0+bGl2ZWlu ID0gWENORVdWRUMgKGJpdG1hcF9oZWFkLCBsYXN0X2Jhc2ljX2Jsb2NrX2Zv cl9mbiAoY2Z1bikpOworICBsaXZlLT5saXZlb3V0ID0gWENORVdWRUMgKGJp dG1hcF9oZWFkLCBsYXN0X2Jhc2ljX2Jsb2NrX2Zvcl9mbiAoY2Z1bikpOwor ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBtYXAtPnZlY19iYnMtPml0ZXJhdGUg KGksICZiYik7ICsraSkKKyAgICB7CisgICAgICBiaXRtYXBfaW5pdGlhbGl6 ZSAoJmxpdmUtPmxpdmVpbltiYi0+aW5kZXhdLCAmbGl2ZS0+bGl2ZWluX29i c3RhY2spOworICAgICAgYml0bWFwX2luaXRpYWxpemUgKCZsaXZlLT5saXZl b3V0W2JiLT5pbmRleF0sICZsaXZlLT5saXZlb3V0X29ic3RhY2spOworICAg IH0KIAogICBsaXZlLT53b3JrX3N0YWNrID0gWE5FV1ZFQyAoaW50LCBsYXN0 X2Jhc2ljX2Jsb2NrX2Zvcl9mbiAoY2Z1bikpOwogICBsaXZlLT5zdGFja190 b3AgPSBsaXZlLT53b3JrX3N0YWNrOwpAQCAtOTYwLDcgKzk5MSw3IEBAIGxv ZV92aXNpdF9ibG9jayAodHJlZV9saXZlX2luZm9fcCBsaXZlLCBiYXNpY19i bG9jayBiYiwgc2JpdG1hcCB2aXNpdGVkKQogICBGT1JfRUFDSF9FREdFIChl LCBlaSwgYmItPnByZWRzKQogICAgIHsKICAgICAgIHByZWRfYmIgPSBlLT5z cmM7Ci0gICAgICBpZiAocHJlZF9iYiA9PSBFTlRSWV9CTE9DS19QVFJfRk9S X0ZOIChjZnVuKSkKKyAgICAgIGlmICghcmVnaW9uX2NvbnRhaW5zX3AgKGxp dmUtPm1hcCwgcHJlZF9iYikpCiAJY29udGludWU7CiAgICAgICAvKiBWYXJp YWJsZXMgbGl2ZS1vbi1lbnRyeSBmcm9tIEJCIHRoYXQgYXJlbid0IGRlZmlu ZWQgaW4gdGhlCiAJIHByZWRlY2Vzc29yIGJsb2NrLiAgVGhpcyBzaG91bGQg YmUgdGhlIGxpdmUgb24gZW50cnkgdmFycyB0byBwcmVkLgpAQCAtOTkzLDkg KzEwMjQsMTAgQEAgbGl2ZV93b3JrbGlzdCAodHJlZV9saXZlX2luZm9fcCBs aXZlKQogCiAgIGJpdG1hcF9jbGVhciAodmlzaXRlZCk7CiAKLSAgLyogVmlz aXQgYWxsIHRoZSBibG9ja3MgaW4gcmV2ZXJzZSBvcmRlciBhbmQgcHJvcGFn YXRlIGxpdmUgb24gZW50cnkgdmFsdWVzCisgIC8qIFZpc2l0IHJlZ2lvbidz IGJsb2NrcyBpbiByZXZlcnNlIG9yZGVyIGFuZCBwcm9wYWdhdGUgbGl2ZSBv biBlbnRyeSB2YWx1ZXMKICAgICAgaW50byB0aGUgcHJlZGVjZXNzb3JzIGJs b2Nrcy4gICovCi0gIEZPUl9FQUNIX0JCX1JFVkVSU0VfRk4gKGJiLCBjZnVu KQorICBmb3IgKHVuc2lnbmVkIGkgPSBsaXZlLT5tYXAtPnZlY19iYnMtPmxl bmd0aCAoKSAtIDE7CisgICAgICAgbGl2ZS0+bWFwLT52ZWNfYmJzLT5pdGVy YXRlIChpLCAmYmIpOyAtLWkpCiAgICAgbG9lX3Zpc2l0X2Jsb2NrIChsaXZl LCBiYiwgdmlzaXRlZCk7CiAKICAgLyogUHJvY2VzcyBhbnkgYmxvY2tzIHdo aWNoIHJlcXVpcmUgZnVydGhlciBpdGVyYXRpb24uICAqLwpAQCAtMTAzMCw3 ICsxMDYyLDcgQEAgc2V0X3Zhcl9saXZlX29uX2VudHJ5ICh0cmVlIHNzYV9u YW1lLCB0cmVlX2xpdmVfaW5mb19wIGxpdmUpCiAgICAgewogICAgICAgZGVm X2JiID0gZ2ltcGxlX2JiIChzdG10KTsKICAgICAgIC8qIE1hcmsgZGVmcyBp biBsaXZlb3V0IGJpdG1hcCB0ZW1wb3JhcmlseS4gICovCi0gICAgICBpZiAo ZGVmX2JiKQorICAgICAgaWYgKGRlZl9iYiAmJiByZWdpb25fY29udGFpbnNf cCAobGl2ZS0+bWFwLCBkZWZfYmIpKQogCWJpdG1hcF9zZXRfYml0ICgmbGl2 ZS0+bGl2ZW91dFtkZWZfYmItPmluZGV4XSwgcCk7CiAgICAgfQogICBlbHNl CkBAIC0xMDU0LDExICsxMDg2LDggQEAgc2V0X3Zhcl9saXZlX29uX2VudHJ5 ICh0cmVlIHNzYV9uYW1lLCB0cmVlX2xpdmVfaW5mb19wIGxpdmUpCiAJICAg ICBkZWZpbmVkIGluIHRoYXQgYmxvY2ssIG9yIHdoZXRoZXIgaXRzIGxpdmUg b24gZW50cnkuICAqLwogCSAgaW50IGluZGV4ID0gUEhJX0FSR19JTkRFWF9G Uk9NX1VTRSAodXNlKTsKIAkgIGVkZ2UgZSA9IGdpbXBsZV9waGlfYXJnX2Vk Z2UgKGFzX2EgPGdwaGkgKj4gKHVzZV9zdG10KSwgaW5kZXgpOwotCSAgaWYg KGUtPnNyYyAhPSBFTlRSWV9CTE9DS19QVFJfRk9SX0ZOIChjZnVuKSkKLQkg ICAgewotCSAgICAgIGlmIChlLT5zcmMgIT0gZGVmX2JiKQotCQlhZGRfYmxv Y2sgPSBlLT5zcmM7Ci0JICAgIH0KKwkgIGlmIChlLT5zcmMgIT0gZGVmX2Ji ICYmIHJlZ2lvbl9jb250YWluc19wIChsaXZlLT5tYXAsIGUtPnNyYykpCisJ ICAgIGFkZF9ibG9jayA9IGUtPnNyYzsKIAl9CiAgICAgICBlbHNlIGlmIChp c19naW1wbGVfZGVidWcgKHVzZV9zdG10KSkKIAljb250aW51ZTsKQEAgLTEw NjYsNyArMTA5NSw3IEBAIHNldF92YXJfbGl2ZV9vbl9lbnRyeSAodHJlZSBz c2FfbmFtZSwgdHJlZV9saXZlX2luZm9fcCBsaXZlKQogICAgICAgICB7CiAJ ICAvKiBJZiBpdHMgbm90IGRlZmluZWQgaW4gdGhpcyBibG9jaywgaXRzIGxp dmUgb24gZW50cnkuICAqLwogCSAgYmFzaWNfYmxvY2sgdXNlX2JiID0gZ2lt cGxlX2JiICh1c2Vfc3RtdCk7Ci0JICBpZiAodXNlX2JiICE9IGRlZl9iYikK KwkgIGlmICh1c2VfYmIgIT0gZGVmX2JiICYmIHJlZ2lvbl9jb250YWluc19w IChsaXZlLT5tYXAsIHVzZV9iYikpCiAJICAgIGFkZF9ibG9jayA9IHVzZV9i YjsKIAl9CiAKQEAgLTEwOTUsNyArMTEyNCw3IEBAIGNhbGN1bGF0ZV9saXZl X29uX2V4aXQgKHRyZWVfbGl2ZV9pbmZvX3AgbGl2ZWluZm8pCiAgIGVkZ2Vf aXRlcmF0b3IgZWk7CiAKICAgLyogbGl2ZSBvbiBlbnRyeSBjYWxjdWxhdGlv bnMgdXNlZCBsaXZlb3V0IHZlY3RvcnMgZm9yIGRlZnMsIGNsZWFyIHRoZW0u ICAqLwotICBGT1JfRUFDSF9CQl9GTiAoYmIsIGNmdW4pCisgIGZvciAodW5z aWduZWQgaSA9IDA7IGxpdmVpbmZvLT5tYXAtPnZlY19iYnMtPml0ZXJhdGUg KGksICZiYik7ICsraSkKICAgICBiaXRtYXBfY2xlYXIgKCZsaXZlaW5mby0+ bGl2ZW91dFtiYi0+aW5kZXhdKTsKIAogICAvKiBTZXQgYWxsIHRoZSBsaXZl LW9uLWV4aXQgYml0cyBmb3IgdXNlcyBpbiBQSElzLiAgKi8KQEAgLTExMDgs NiArMTEzNyw4IEBAIGNhbGN1bGF0ZV9saXZlX29uX2V4aXQgKHRyZWVfbGl2 ZV9pbmZvX3AgbGl2ZWluZm8pCiAgICAgICBmb3IgKGdzaSA9IGdzaV9zdGFy dF9waGlzIChiYik7ICFnc2lfZW5kX3AgKGdzaSk7IGdzaV9uZXh0ICgmZ3Np KSkKIAl7CiAJICBncGhpICpwaGkgPSBnc2kucGhpICgpOworCSAgaWYgKHZp cnR1YWxfb3BlcmFuZF9wIChnaW1wbGVfcGhpX3Jlc3VsdCAocGhpKSkpCisJ ICAgIGNvbnRpbnVlOwogCSAgZm9yIChpID0gMDsgaSA8IGdpbXBsZV9waGlf bnVtX2FyZ3MgKHBoaSk7IGkrKykKIAkgICAgewogCSAgICAgIHRyZWUgdCA9 IFBISV9BUkdfREVGIChwaGksIGkpOwpAQCAtMTEyMCwxNCArMTE1MSwxNyBA QCBjYWxjdWxhdGVfbGl2ZV9vbl9leGl0ICh0cmVlX2xpdmVfaW5mb19wIGxp dmVpbmZvKQogCSAgICAgIGlmIChwID09IE5PX1BBUlRJVElPTikKIAkJY29u dGludWU7CiAJICAgICAgZSA9IGdpbXBsZV9waGlfYXJnX2VkZ2UgKHBoaSwg aSk7Ci0JICAgICAgaWYgKGUtPnNyYyAhPSBFTlRSWV9CTE9DS19QVFJfRk9S X0ZOIChjZnVuKSkKKwkgICAgICBpZiAocmVnaW9uX2NvbnRhaW5zX3AgKGxp dmVpbmZvLT5tYXAsIGUtPnNyYykpCiAJCWJpdG1hcF9zZXRfYml0ICgmbGl2 ZWluZm8tPmxpdmVvdXRbZS0+c3JjLT5pbmRleF0sIHApOwogCSAgICB9CiAJ fQogCisgICAgICBpZiAoIXJlZ2lvbl9jb250YWluc19wIChsaXZlaW5mby0+ bWFwLCBiYikpCisJY29udGludWU7CisKICAgICAgIC8qIEFkZCBlYWNoIHN1 Y2Nlc3NvcnMgbGl2ZSBvbiBlbnRyeSB0byB0aGlzIGJvY2sgbGl2ZSBvbiBl eGl0LiAgKi8KICAgICAgIEZPUl9FQUNIX0VER0UgKGUsIGVpLCBiYi0+c3Vj Y3MpCi0JaWYgKGUtPmRlc3QgIT0gRVhJVF9CTE9DS19QVFJfRk9SX0ZOIChj ZnVuKSkKKwlpZiAocmVnaW9uX2NvbnRhaW5zX3AgKGxpdmVpbmZvLT5tYXAs IGUtPmRlc3QpKQogCSAgYml0bWFwX2lvcl9pbnRvICgmbGl2ZWluZm8tPmxp dmVvdXRbYmItPmluZGV4XSwKIAkJCSAgIGxpdmVfb25fZW50cnkgKGxpdmVp bmZvLCBlLT5kZXN0KSk7CiAgICAgfQpAQCAtMTMxNCw3ICsxMzQ4LDcgQEAg dmVyaWZ5X2xpdmVfb25fZW50cnkgKHRyZWVfbGl2ZV9pbmZvX3AgbGl2ZSkK ICAgRk9SX0VBQ0hfRURHRSAoZSwgZWksIGJiLT5zdWNjcykKICAgICB7CiAg ICAgICBpbnQgZW50cnlfYmxvY2sgPSBlLT5kZXN0LT5pbmRleDsKLSAgICAg IGlmIChlLT5kZXN0ID09IEVYSVRfQkxPQ0tfUFRSX0ZPUl9GTiAoY2Z1bikp CisgICAgICBpZiAoIXJlZ2lvbl9jb250YWluc19wIChsaXZlLT5tYXAsIGUt PmRlc3QpKQogICAgICAgICBjb250aW51ZTsKICAgICAgIGZvciAoaSA9IDA7 IGkgPCAodW5zaWduZWQpbnVtX3Zhcl9wYXJ0aXRpb25zIChtYXApOyBpKysp CiAJewpAQCAtMTM4MCw2ICsxNDE0LDggQEAgdmVyaWZ5X2xpdmVfb25fZW50 cnkgKHRyZWVfbGl2ZV9pbmZvX3AgbGl2ZSkKIAkJICAgICBnc2lfbmV4dCAo JmdzaSkpCiAJCSAgewogCQkgICAgZ3BoaSAqcGhpID0gZ3NpLnBoaSAoKTsK KwkJICAgIGlmICh2aXJ0dWFsX29wZXJhbmRfcCAoZ2ltcGxlX3BoaV9yZXN1 bHQgKHBoaSkpKQorCQkgICAgICBjb250aW51ZTsKIAkJICAgIGZvciAoeiA9 IDA7IHogPCBnaW1wbGVfcGhpX251bV9hcmdzIChwaGkpOyB6KyspCiAJCSAg ICAgIGlmICh2YXIgPT0gZ2ltcGxlX3BoaV9hcmdfZGVmIChwaGksIHopKQog CQkJewpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWxpdmUuaCBiL2djYy90 cmVlLXNzYS1saXZlLmgKaW5kZXggNDQ4YWFmOS4uZmE2ZjY4ZCAxMDA2NDQK LS0tIGEvZ2NjL3RyZWUtc3NhLWxpdmUuaAorKysgYi9nY2MvdHJlZS1zc2Et bGl2ZS5oCkBAIC00Miw2ICs0MiwxNiBAQCBhbG9uZyB3aXRoIEdDQzsgc2Vl IHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogCiAgICBOb3RlIHRo YXQgbWVtYmVycyBvZiBhIHBhcnRpdGlvbiBNVVNUIGFsbCBoYXZlIHRoZSBz YW1lIGJhc2UgdmFyaWFibGUuICAqLwogCisvKiBUaGUgdHlwZSBvZiByZWdp b24gd2l0aGluIHdoaWNoIGxpdmUgcmFuZ2UgaXMgY29tcHV0ZWQuICBGb3Ig bm93IHdlIG9ubHkKKyAgIHN1cHBvcnQgbG9vcCBhbmQgZnVuY3Rpb24gdHlw ZSByZWdpb25zLiAgKi8KK2VudW0gcmVnaW9uX3R5cGUKK3sKKyAgUlRZUEVf QkIsCisgIFJUWVBFX0xPT1AsCisgIFJUWVBFX1NFU0UsCisgIFJUWVBFX0ZV TkMKK307CisKIHR5cGVkZWYgc3RydWN0IF92YXJfbWFwCiB7CiAgIC8qIFRo ZSBwYXJ0aXRpb24gbWFuYWdlciBvZiBhbGwgdmFyaWFibGVzLiAgKi8KQEAg LTYyLDEzICs3MiwyNyBAQCB0eXBlZGVmIHN0cnVjdCBfdmFyX21hcAogCiAg IC8qIE1hcCBvZiBwYXJ0aXRpb25zIG51bWJlcnMgdG8gYmFzZSB2YXJpYWJs ZSB0YWJsZSBpbmRleGVzLiAgKi8KICAgaW50ICpwYXJ0aXRpb25fdG9fYmFz ZV9pbmRleDsKKworICAvKiBCaXRtYXAgb2YgYmFzaWMgYmxvY2suICBJdCBk ZXNjcmliZXMgdGhlIHJlZ2lvbiB3aXRoaW4gd2hpY2ggdGhlIGFuYWx5c2lz CisgICAgIGlzIGRvbmUuICAqLworICBiaXRtYXAgYm1wX2JiczsKKworICAv KiBWZWN0b3Igb2YgYmFzaWMgYmxvY2sgaW4gdGhlIHJlZ2lvbi4gICovCisg IHZlYzxiYXNpY19ibG9jaz4gKnZlY19iYnM7CisKKyAgLyogVHlwZSBvZiBy ZWdpb24uICAqLworICBlbnVtIHJlZ2lvbl90eXBlIHJlZ2lvbl90eXBlOwor CisgIC8qIEF0dGVtcCB0byByZWR1Y2UgY29weWluZyBieSBjb2FsZXNjaW5n IHZlcnNpb25zIG9mIHVzZXIgZGVmaW5lZCB2YXJpYWJsZXMKKyAgICAgaWYg VFJVRS4gICovCisgIGJvb2wgY29hbGVzY2VfdmFyc19wOwogfSAqdmFyX21h cDsKIAogCiAvKiBWYWx1ZSB1c2VkIHRvIHJlcHJlc2VudCBubyBwYXJ0aXRp b24gbnVtYmVyLiAgKi8KICNkZWZpbmUgTk9fUEFSVElUSU9OCQktMQogCi1l eHRlcm4gdmFyX21hcCBpbml0X3Zhcl9tYXAgKGludCk7CitleHRlcm4gdmFy X21hcCBpbml0X3Zhcl9tYXAgKHN0cnVjdCBsb29wKiwgaW50LCBib29sKTsK IGV4dGVybiB2b2lkIGRlbGV0ZV92YXJfbWFwICh2YXJfbWFwKTsKIGV4dGVy biBpbnQgdmFyX3VuaW9uICh2YXJfbWFwLCB0cmVlLCB0cmVlKTsKIGV4dGVy biB2b2lkIHBhcnRpdGlvbl92aWV3X25vcm1hbCAodmFyX21hcCk7CkBAIC04 Miw2ICsxMDYsMzEgQEAgZXh0ZXJuIHZvaWQgZGVidWcgKF92YXJfbWFwICZy ZWYpOwogZXh0ZXJuIHZvaWQgZGVidWcgKF92YXJfbWFwICpwdHIpOwogCiAK Ky8qIFJldHVybiBUUlVFIGlmIHJlZ2lvbiBvZiB0aGUgTUFQIGlzIHRoZSB3 aG9sZSBmdW5jdGlvbi4gICovCisKK2lubGluZSBib29sCitmdW5jdGlvbl9y ZWdpb25fcCAodmFyX21hcCBtYXApCit7CisgIHJldHVybiBtYXAtPnJlZ2lv bl90eXBlID09IFJUWVBFX0ZVTkM7Cit9CisKKworLyogUmV0dXJuIFRSVUUg aWYgcmVnaW9uIG9mIHRoZSBNQVAgY29udGFpbnMgYmFzaWMgYmxvY2sgQkIu ICAqLworCitpbmxpbmUgYm9vbAorcmVnaW9uX2NvbnRhaW5zX3AgKHZhcl9t YXAgbWFwLCBiYXNpY19ibG9jayBiYikKK3sKKyAgaWYgKGJiID09IEVOVFJZ X0JMT0NLX1BUUl9GT1JfRk4gKGNmdW4pCisgICAgICB8fCBiYiA9PSBFWElU X0JMT0NLX1BUUl9GT1JfRk4gKGNmdW4pKQorICAgIHJldHVybiBmYWxzZTsK KworICBpZiAoZnVuY3Rpb25fcmVnaW9uX3AgKG1hcCkpCisgICAgcmV0dXJu IHRydWU7CisKKyAgcmV0dXJuIGJpdG1hcF9iaXRfcCAobWFwLT5ibXBfYmJz LCBiYi0+aW5kZXgpOworfQorCisKIC8qIFJldHVybiBudW1iZXIgb2YgcGFy dGl0aW9ucyBpbiBNQVAuICAqLwogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVk CmRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2EtdW5jcHJvcC5jIGIvZ2NjL3Ry ZWUtc3NhLXVuY3Byb3AuYwppbmRleCA3ZDg2M2E3Li44OTg2M2RlIDEwMDY0 NAotLS0gYS9nY2MvdHJlZS1zc2EtdW5jcHJvcC5jCisrKyBiL2djYy90cmVl LXNzYS11bmNwcm9wLmMKQEAgLTM3NCw3ICszNzQsNyBAQCB1bmNwcm9wX2lu dG9fc3VjY2Vzc29yX3BoaXMgKGJhc2ljX2Jsb2NrIGJiKQogCSAgICAgY29h bGVzY2VkIHdpdGggdGhlIHJlc3VsdCwgdGhlbiB0aGVyZSdzIG5vIHBvaW50 IGluCiAJICAgICB1bi1wcm9wYWdhdGluZyB0aGUgYXJndW1lbnQuICAqLwog CSAgaWYgKCFpc19naW1wbGVfbWluX2ludmFyaWFudCAoYXJnKQotCSAgICAg ICYmIGdpbXBsZV9jYW5fY29hbGVzY2VfcCAoYXJnLCByZXMpKQorCSAgICAg ICYmIGdpbXBsZV9jYW5fY29hbGVzY2VfcCAoYXJnLCByZXMsIGZsYWdfdHJl ZV9jb2FsZXNjZV92YXJzKSkKIAkgICAgY29udGludWU7CiAKIAkgIC8qIExv b2t1cCB0aGlzIGFyZ3VtZW50J3MgdmFsdWUgaW4gdGhlIGhhc2ggdGFibGUu ICAqLwpAQCAtMzkwLDcgKzM5MCw4IEBAIHVuY3Byb3BfaW50b19zdWNjZXNz b3JfcGhpcyAoYmFzaWNfYmxvY2sgYmIpCiAJCXsKIAkJICB0cmVlIGVxdWl2 ID0gKCplcXVpdmFsZW5jZXMpW2pdOwogCi0JCSAgaWYgKGdpbXBsZV9jYW5f Y29hbGVzY2VfcCAoZXF1aXYsIHJlcykpCisJCSAgaWYgKGdpbXBsZV9jYW5f Y29hbGVzY2VfcCAoZXF1aXYsIHJlcywKKwkJCQkJICAgICBmbGFnX3RyZWVf Y29hbGVzY2VfdmFycykpCiAJCSAgICB7CiAJCSAgICAgIFNFVF9QSElfQVJH X0RFRiAocGhpLCBlLT5kZXN0X2lkeCwgZXF1aXYpOwogCQkgICAgICBicmVh azsKLS0gCjEuOS4xCgo= --_002_DB6PR0802MB250419B22C2EABF9A56798F5E7860DB6PR0802MB2504_--