From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailout09.t-online.de (mailout09.t-online.de [194.25.134.84]) by sourceware.org (Postfix) with ESMTPS id 1AFE43858C62 for ; Mon, 25 Sep 2023 11:58:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1AFE43858C62 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=t-online.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=t-online.de Received: from fwd80.aul.t-online.de (fwd80.aul.t-online.de [10.223.144.106]) by mailout09.t-online.de (Postfix) with SMTP id 3C35469030 for ; Mon, 25 Sep 2023 13:57:55 +0200 (CEST) Received: from [192.168.2.101] ([79.230.174.139]) by fwd80.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1qkkDo-1fT3xY0; Mon, 25 Sep 2023 13:57:52 +0200 To: cygwin-patches@cygwin.com From: Christian Franke Subject: [PATCH] Cygwin: Add /dev/disk/by-id symlinks Message-ID: <9cf93e3b-36c8-a50c-0154-85f06da29d61@t-online.de> Date: Mon, 25 Sep 2023 13:57:51 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 SeaMonkey/2.53.16 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------8B9D5DB6BCB16229C93F0752" X-TOI-EXPURGATEID: 150726::1695643073-96FF7D42-2AAA679B/0/0 CLEAN NORMAL X-TOI-MSGID: 0d24c3c9-4ab1-4f4a-aecd-4bb8fc69f101 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------8B9D5DB6BCB16229C93F0752 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is a first attempt to partly emulate the Linux directory /dev/disk/by-id. Useful to make sure the correct device is accessed in conjunction with dd, ddrescue, fdisk, .... The additional '*-partN' links to partitions are not yet included. This only works properly if Win32 path '\\.\PhysicalDriveN' is always trivially mapped to NT path '\Device\HarddiskN\Partition0'. IOCTL_STORAGE_QUERY_PROPERTY with a handle from NtOpenFile(., READ_CONTROL,...) instead of CreateFile(., 0, ...) did not work with all drivers. With stornvme.sys, it fails with permission denied. Perhaps other permission bits are required for NtOpenFile(). Thanks for any info regarding this. Note that the BusType information is often not accurate. For example drives behind Intel RST drivers may always be listed as "raid-PRODUCT_SERIAL" even if not part of a RAID volume. The changes for the generated file devices.cc are not included in the patch. -- Regards, Christian --------------8B9D5DB6BCB16229C93F0752 Content-Type: text/plain; charset=UTF-8; name="0001-Cygwin-Add-dev-disk-by-id-symlinks.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Cygwin-Add-dev-disk-by-id-symlinks.patch" RnJvbSA4YTQ5YWUwNjdjZmQzMTg3NDZlNmZlMzMyYjg3NzUwMTE2NThkNzgwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RpYW4gRnJhbmtlIDxjaHJpc3RpYW4uZnJh bmtlQHQtb25saW5lLmRlPgpEYXRlOiBNb24sIDI1IFNlcCAyMDIzIDEzOjI0OjQwICswMjAw ClN1YmplY3Q6IFtQQVRDSF0gQ3lnd2luOiBBZGQgL2Rldi9kaXNrL2J5LWlkIHN5bWxpbmtz CgpUaGUgbmV3IGRpcmVjdG9yeSAnL2Rldi9kaXNrL2J5LWlkJyBwcm92aWRlcyBzeW1saW5r cyBmb3IgZWFjaApkaXNrIGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gSU9DVExfU1RPUkFH RV9RVUVSWV9QUk9QRVJUWToKJ0JVU1RZUEVfW1ZFTkRPUl9dUFJPRFVDVF9TRVJJQUwnIC0+ ICcuLi8uLi9zZFgnCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gRnJhbmtlIDxjaHJpc3Rp YW4uZnJhbmtlQHQtb25saW5lLmRlPgotLS0KIHdpbnN1cC9jeWd3aW4vTWFrZWZpbGUuYW0g ICAgICAgICAgICAgICB8ICAgMSArCiB3aW5zdXAvY3lnd2luL2RldmljZXMuaW4gICAgICAg ICAgICAgICAgfCAgIDQgKwogd2luc3VwL2N5Z3dpbi9kdGFibGUuY2MgICAgICAgICAgICAg ICAgIHwgICAzICsKIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXIvZGV2X2Rpc2suY2MgICAgICB8 IDM4OSArKysrKysrKysrKysrKysrKysrKysrKysKIHdpbnN1cC9jeWd3aW4vbG9jYWxfaW5j bHVkZXMvZGV2aWNlcy5oICB8ICAgNiArLQogd2luc3VwL2N5Z3dpbi9sb2NhbF9pbmNsdWRl cy9maGFuZGxlci5oIHwgIDQ1ICsrKwogd2luc3VwL2N5Z3dpbi9tb3VudC5jYyAgICAgICAg ICAgICAgICAgIHwgIDEwICsKIDcgZmlsZXMgY2hhbmdlZCwgNDU3IGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB3aW5zdXAvY3lnd2luL2ZoYW5k bGVyL2Rldl9kaXNrLmNjCgpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9NYWtlZmlsZS5h bSBiL3dpbnN1cC9jeWd3aW4vTWFrZWZpbGUuYW0KaW5kZXggNjRiMjUyYTIyLi4zNzZjNzlm YzMgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vTWFrZWZpbGUuYW0KKysrIGIvd2luc3Vw L2N5Z3dpbi9NYWtlZmlsZS5hbQpAQCAtODQsNiArODQsNyBAQCBGSEFORExFUl9GSUxFUz0g XAogCWZoYW5kbGVyL2NvbnNvbGUuY2MgXAogCWZoYW5kbGVyL2N5Z2RyaXZlLmNjIFwKIAlm aGFuZGxlci9kZXYuY2MgXAorCWZoYW5kbGVyL2Rldl9kaXNrLmNjIFwKIAlmaGFuZGxlci9k ZXZfZmQuY2MgXAogCWZoYW5kbGVyL2Rpc2tfZmlsZS5jYyBcCiAJZmhhbmRsZXIvZHNwLmNj IFwKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZGV2aWNlcy5pbiBiL3dpbnN1cC9jeWd3 aW4vZGV2aWNlcy5pbgppbmRleCAyNTQ1ZGQ4NWUuLjQ4ZDM4NDNmZSAxMDA2NDQKLS0tIGEv d2luc3VwL2N5Z3dpbi9kZXZpY2VzLmluCisrKyBiL3dpbnN1cC9jeWd3aW4vZGV2aWNlcy5p bgpAQCAtMTE1LDYgKzExNSw5IEBAIGNvbnN0IF9kZXZpY2UgZGV2X2N5Z2RyaXZlX3N0b3Jh Z2UgPQogY29uc3QgX2RldmljZSBkZXZfZnNfc3RvcmFnZSA9CiAgIHsiIiwge0ZIX0ZTfSwg IiIsIGV4aXN0c307CiAKK2NvbnN0IF9kZXZpY2UgZGV2X2Rldl9kaXNrX3N0b3JhZ2UgPQor ICB7IiIsIHtGSF9ERVZfRElTS30sICIiLCBleGlzdHN9OworCiBjb25zdCBfZGV2aWNlIGRl dl9wcm9jX3N0b3JhZ2UgPQogICB7IiIsIHtGSF9QUk9DfSwgIiIsIGV4aXN0c307CiAKQEAg LTE3Myw2ICsxNzYsNyBAQCBjb25zdCBfZGV2aWNlIGRldl9lcnJvcl9zdG9yYWdlID0KICAg IHRoZSBQT1NJWCBuYW1lc3BhY2UuICAqLwogJSUKICIvZGV2IiwgQlJBQ0soRkhfREVWKSwg IiIsIGV4aXN0cywgU19JRkRJUgorIi9kZXYvZGlzayIsIEJSQUNLKEZIX0RFVl9ESVNLKSwg IiIsIGV4aXN0cywgU19JRkRJUgogIi9kZXYvdHR5IiwgQlJBQ0soRkhfVFRZKSwgIi9kZXYv dHR5IiwgZXhpc3RzLCBTX0lGQ0hSCiAiL2Rldi9wdHklKDAtMTI3KWQiLCBCUkFDSyhGSERF VihERVZfUFRZU19NQUpPUiwgeyQxfSkpLCAiL2Rldi9wdHl7JDF9IiwgZXhpc3RzX3B0eSwg U19JRkNIUiwgPXB0eXNfZGV2CiAiOnB0eW0lKDAtMTI3KWQiLCBCUkFDSyhGSERFVihERVZf UFRZTV9NQUpPUiwgeyQxfSkpLCAiL2Rldi9wdHlteyQxfSIsIGV4aXN0c19pbnRlcm5hbCwg U19JRkNIUiwgPXB0eW1fZGV2CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2R0YWJsZS5j YyBiL3dpbnN1cC9jeWd3aW4vZHRhYmxlLmNjCmluZGV4IDIxZDUyNTM4OS4uOTUwOGYzZTBi IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2R0YWJsZS5jYworKysgYi93aW5zdXAvY3ln d2luL2R0YWJsZS5jYwpAQCAtNTg1LDYgKzU4NSw5IEBAIGZoX2FsbG9jIChwYXRoX2NvbnYm IHBjKQogCWNhc2UgRkhfREVWOgogCSAgZmggPSBjbmV3IChmaGFuZGxlcl9kZXYpOwogCSAg YnJlYWs7CisJY2FzZSBGSF9ERVZfRElTSzoKKwkgIGZoID0gY25ldyAoZmhhbmRsZXJfZGV2 X2Rpc2spOworCSAgYnJlYWs7CiAJY2FzZSBGSF9ERVZfRkQ6CiAJICBmaCA9IGNuZXcgKGZo YW5kbGVyX2Rldl9mZCk7CiAJICBicmVhazsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXIvZGV2X2Rpc2suY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyL2Rldl9kaXNr LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMTRiMGNkZjM2Ci0t LSAvZGV2L251bGwKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlci9kZXZfZGlzay5jYwpA QCAtMCwwICsxLDM4OSBAQAorLyogZmhhbmRsZXIvZGV2X2Rpc2suY2M6IGZoYW5kbGVyIGZv ciB0aGUgL2Rldi9kaXNrL2J5LWlkLy4uLiBzeW1saW5rcy4KKworVGhpcyBmaWxlIGlzIHBh cnQgb2YgQ3lnd2luLgorCitUaGlzIHNvZnR3YXJlIGlzIGEgY29weXJpZ2h0ZWQgd29yayBs aWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCitDeWd3aW4gbGljZW5zZS4gIFBsZWFz ZSBjb25zdWx0IHRoZSBmaWxlICJDWUdXSU5fTElDRU5TRSIgZm9yCitkZXRhaWxzLiAqLwor CisjaW5jbHVkZSAid2luc3VwLmgiCisjaW5jbHVkZSAicGF0aC5oIgorI2luY2x1ZGUgImZo YW5kbGVyLmgiCisjaW5jbHVkZSA8d2luaW9jdGwuaD4KKworLyogUmVwbGFjZSBub24tcHJp bnRpbmcgYW5kIHVuZXhwZWN0ZWQgY2hhcmFjdGVycywgcmVtb3ZlIHRyYWlsaW5nIHNwYWNl cywKKyAgIHJldHVybiByZW1haW5pbmcgc3RyaW5nIGxlbmd0aC4gKi8KK3N0YXRpYyBpbnQK K3Nhbml0aXplX2lkX3N0cmluZyAoY2hhciAqcykKK3sKKyAgaW50IGxhc3RzcGFjZSA9IC0x LCBpOworICBmb3IgKGkgPSAwOyBzW2ldOyBpKyspCisgICAgeworICAgICAgY2hhciBjID0g c1tpXTsKKyAgICAgIGlmIChjICE9ICcgJykKKwlsYXN0c3BhY2UgPSAtMTsKKyAgICAgIGVs c2UgaWYgKGxhc3RzcGFjZSA8IDApCisJbGFzdHNwYWNlID0gaTsKKyAgICAgIGlmICgoJzAn IDw9IGMgJiYgYyA8PSAnOScpIHx8IGMgPT0gJy4nIHx8IGMgPT0gJy0nCisJICB8fCAoJ0En IDw9IGMgJiYgYyA8PSAnWicpIHx8ICgnYScgPD0gYyAmJiBjIDw9ICd6JykpCisJY29udGlu dWU7CisgICAgICBzW2ldID0gJ18nOworICAgIH0KKyAgaWYgKGxhc3RzcGFjZSA+PSAwKQor ICAgIHNbKGkgPSBsYXN0c3BhY2UpXSA9ICdcMCc7CisgIHJldHVybiBpOworfQorCisvKiBH ZXQgSUQgc3RyaW5nIGZvciBkcml2ZSBudW1iZXIuICovCitzdGF0aWMgYm9vbAorZ2V0X2Ry aXZlX2lkX25hbWUgKHVfaW50OF90IGRyaXZlLCBjaGFyICgmIG5hbWUpW05BTUVfTUFYICsg MV0pCit7CisgIC8qIFVzaW5nIENyZWF0ZUZpbGUgKCkgYmVjYXVzZSB3aXRoIE50T3BlbkZp bGUgKC4sIFJFQURfQ09OVFJPTCwgLi4uKSB0aGUKKyAgICAgSU9DVExfU1RPUkFHRV9RVUVS WV9QUk9QRVJUWSBjYWxsIGZhaWxzIHdpdGggRVJST1JfQUNDRVNTX0RFTklFRCBmb3IKKyAg ICAgZHJpdmVzIGJlaGluZCBzb21lIGRyaXZlcnMgKG52bWVzdG9yLnN5cykuICovCisgIGNo YXIgcGF0aFs2NF07CisgIF9fc21hbGxfc3ByaW50ZiAocGF0aCwgIlxcXFwuXFxQaHlzaWNh bERyaXZlJWQiLCBkcml2ZSk7CisgIEhBTkRMRSBoID0gQ3JlYXRlRmlsZUEgKHBhdGgsIDAs IEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJVEUsCisJCQkgIG51bGxwdHIsIE9Q RU5fRVhJU1RJTkcsIDAsIG51bGxwdHIpOworICBpZiAoaCA9PSBJTlZBTElEX0hBTkRMRV9W QUxVRSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgU1RPUkFHRV9QUk9QRVJUWV9RVUVSWSBx dWVyeSA9CisgICAgeyBTdG9yYWdlRGV2aWNlUHJvcGVydHksIFByb3BlcnR5U3RhbmRhcmRR dWVyeSwgeyAwIH0gfTsKKyAgdW5pb24geworICAgIGNoYXIgcmF3WzEwMjRdOworICAgIFNU T1JBR0VfREVWSUNFX0RFU0NSSVBUT1IgZGVzYzsKKyAgfSBkZXNjX2RhdGE7CisgIERXT1JE IGJ5dGVzX3JlYWQ7CisgIEJPT0wgb2sgPSBEZXZpY2VJb0NvbnRyb2wgKGgsIElPQ1RMX1NU T1JBR0VfUVVFUllfUFJPUEVSVFksCisJCQkgICAgICZxdWVyeSwgc2l6ZW9mIChxdWVyeSks CisJCQkgICAgICZkZXNjX2RhdGEsIHNpemVvZiAoZGVzY19kYXRhKSwKKwkJCSAgICAgJmJ5 dGVzX3JlYWQsIG51bGxwdHIpOworICBDbG9zZUhhbmRsZSAoaCk7CisgIGlmICghb2spCisg ICAgeworICAgICAgZGVidWdfcHJpbnRmICgiaWdub3JpbmcgZHJpdmUgJWQ6IElPQ1RMX1NU T1JBR0VfUVVFUllfUFJPUEVSVFkgZmFpbGVkOiAldSIsCisJCSAgICBkcml2ZSwgR2V0TGFz dEVycm9yICgpKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgLyogSWdub3Jl IGRyaXZlIGlmIGluZm9ybWF0aW9uIGlzIG1pc3NpbmcsIHRvbyBzaG9ydCBvciB0b28gbG9u Zy4gKi8KKyAgaW50IHZlbmRvcl9sZW4gPSAwLCBwcm9kdWN0X2xlbiA9IDAsIHNlcmlhbF9s ZW4gPSAwOworICBpZiAoZGVzY19kYXRhLmRlc2MuVmVuZG9ySWRPZmZzZXQpCisgICAgdmVu ZG9yX2xlbiA9IHNhbml0aXplX2lkX3N0cmluZyAoZGVzY19kYXRhLnJhdyArIGRlc2NfZGF0 YS5kZXNjLlZlbmRvcklkT2Zmc2V0KTsKKyAgaWYgKGRlc2NfZGF0YS5kZXNjLlByb2R1Y3RJ ZE9mZnNldCkKKyAgICBwcm9kdWN0X2xlbiA9IHNhbml0aXplX2lkX3N0cmluZyAoZGVzY19k YXRhLnJhdyArIGRlc2NfZGF0YS5kZXNjLlByb2R1Y3RJZE9mZnNldCk7CisgIGlmIChkZXNj X2RhdGEuZGVzYy5TZXJpYWxOdW1iZXJPZmZzZXQpCisgICAgc2VyaWFsX2xlbiA9IHNhbml0 aXplX2lkX3N0cmluZyAoZGVzY19kYXRhLnJhdyArIGRlc2NfZGF0YS5kZXNjLlNlcmlhbE51 bWJlck9mZnNldCk7CisKKyAgYm9vbCB2YWxpZCA9ICg0IDw9IHZlbmRvcl9sZW4gKyBwcm9k dWN0X2xlbiAmJiA0IDw9IHNlcmlhbF9sZW4KKwkJJiYgdmVuZG9yX2xlbiArIDEgKyBwcm9k dWN0X2xlbiArIDEgKyBzZXJpYWxfbGVuIDwgKGludCkgc2l6ZW9mIChuYW1lKSk7CisgIGRl YnVnX3ByaW50ZiAoImRyaXZlICVkOiAnJXMnICclcycgJyVzJyVzIiwgZHJpdmUsCisJCSh2 ZW5kb3JfbGVuID8gZGVzY19kYXRhLnJhdyArIGRlc2NfZGF0YS5kZXNjLlZlbmRvcklkT2Zm c2V0IDogIiIpLAorCQkocHJvZHVjdF9sZW4gPyBkZXNjX2RhdGEucmF3ICsgZGVzY19kYXRh LmRlc2MuUHJvZHVjdElkT2Zmc2V0IDogIiIpLAorCQkoc2VyaWFsX2xlbiA/IGRlc2NfZGF0 YS5yYXcgKyBkZXNjX2RhdGEuZGVzYy5TZXJpYWxOdW1iZXJPZmZzZXQgOiAiIiksCisJCSh2 YWxpZCA/ICIiIDogIiAoaWdub3JlZCkiKSk7CisgIGlmICghdmFsaWQpCisgICAgcmV0dXJu IGZhbHNlOworCisgIC8qIFRyYW5zbGF0ZSBidXMgdHlwZXMuICovCisgIGNvbnN0IGNoYXIg KmJ1czsKKyAgc3dpdGNoIChkZXNjX2RhdGEuZGVzYy5CdXNUeXBlKQorICAgIHsKKyAgICAg IGNhc2UgQnVzVHlwZUF0YTogICAgIGJ1cyA9ICJhdGEtIjsgYnJlYWs7CisgICAgICBjYXNl IEJ1c1R5cGVGaWJyZTogICBidXMgPSAiZmlicmUtIjsgYnJlYWs7CisgICAgICBjYXNlIEJ1 c1R5cGVOdm1lOiAgICBidXMgPSAibnZtZS0iOyBicmVhazsKKyAgICAgIGNhc2UgQnVzVHlw ZVJBSUQ6ICAgIGJ1cyA9ICJyYWlkLSI7IGJyZWFrOworICAgICAgY2FzZSBCdXNUeXBlU2Fz OiAgICAgYnVzID0gInNhcy0iOyBicmVhazsKKyAgICAgIGNhc2UgQnVzVHlwZVNhdGE6ICAg IGJ1cyA9ICJzYXRhLSI7IGJyZWFrOworICAgICAgY2FzZSBCdXNUeXBlU2NzaTogICAgYnVz ID0gInNjc2ktIjsgYnJlYWs7CisgICAgICBjYXNlIEJ1c1R5cGVVc2I6ICAgICBidXMgPSAi dXNiLSI7IGJyZWFrOworICAgICAgY2FzZSBCdXNUeXBlVmlydHVhbDogYnVzID0gInZpcnR1 YWwtIjsgYnJlYWs7CisgICAgICBkZWZhdWx0OiBidXMgPSBudWxscHRyOyBicmVhazsKKyAg ICB9CisgIGlmIChidXMpCisgICAgc3RyY3B5IChuYW1lLCBidXMpOworICBlbHNlCisgICAg X19zbWFsbF9zcHJpbnRmIChuYW1lLCAiYnVzdHlwZTB4JTAyeC0iLCBkZXNjX2RhdGEuZGVz Yy5CdXNUeXBlKTsKKworICAvKiBDcmVhdGUgIkJVU1RZUEUtW1ZFTkRPUl9dUFJPRFVDVF9T RVJJQUwiIHN0cmluZy4gKi8KKyAgaWYgKHZlbmRvcl9sZW4pCisgICAgc3RyY2F0IChuYW1l LCBkZXNjX2RhdGEucmF3ICsgZGVzY19kYXRhLmRlc2MuVmVuZG9ySWRPZmZzZXQpOworICBp ZiAocHJvZHVjdF9sZW4pCisgICAgeworICAgICAgaWYgKHZlbmRvcl9sZW4pCisJc3RyY2F0 IChuYW1lLCAiXyIpOworICAgICAgc3RyY2F0IChuYW1lLCBkZXNjX2RhdGEucmF3ICsgZGVz Y19kYXRhLmRlc2MuUHJvZHVjdElkT2Zmc2V0KTsKKyAgICB9CisgIHN0cmNhdCAobmFtZSwg Il8iKTsKKyAgc3RyY2F0IChuYW1lLCBkZXNjX2RhdGEucmF3ICsgZGVzY19kYXRhLmRlc2Mu U2VyaWFsTnVtYmVyT2Zmc2V0KTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3N0cnVjdCBieV9p ZF9lbnRyeQoreworICBjaGFyIG5hbWVbTkFNRV9NQVggKyAxXTsKKyAgdV9pbnQ4X3QgZHJp dmU7Cit9OworCitzdGF0aWMgaW50CitieV9pZF9jb21wYXJlX25hbWUgKGNvbnN0IHZvaWQg KmEsIGNvbnN0IHZvaWQgKmIpCit7CisgIGNvbnN0IGJ5X2lkX2VudHJ5ICphcCA9IHJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgYnlfaWRfZW50cnkgKj4oYSk7CisgIGNvbnN0IGJ5X2lkX2Vu dHJ5ICpicCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYnlfaWRfZW50cnkgKj4oYik7Cisg IHJldHVybiBzdHJjbXAgKGFwLT5uYW1lLCBicC0+bmFtZSk7Cit9CisKKy8qIENyZWF0ZSBz b3J0ZWQgbmFtZSAtPiBkcml2ZSBtYXBwaW5nIHRhYmxlLiBNdXN0IGJlIGZyZWVkIGJ5IGNh bGxlci4gKi8KK3N0YXRpYyBieV9pZF9lbnRyeSAqCitnZXRfYnlfaWRfdGFibGUgKGludCAq IHJldF9zaXplID0gbnVsbHB0cikKK3sKKyAgLyogU2NhbiAxMjggZHJpdmVzIGxpa2UgZmhh bmRsZXJfZGV2OjpyZWFkZGlyICgpIGRvZXMuICovCisgIGJ5X2lkX2VudHJ5ICogdGFibGUg PSBudWxscHRyOworICBpbnQgYWxsb2Nfc2l6ZSA9IDAsIHNpemUgPSAwOworICBmb3IgKHVf aW50OF90IGRyaXZlID0gMDsgZHJpdmUgPCAxMjg7IGRyaXZlKyspCisgICAgeworICAgICAg aWYgKGFsbG9jX3NpemUgPD0gc2l6ZSkKKwl7CisJICBhbGxvY19zaXplID0gc2l6ZSArIDg7 CisJICBieV9pZF9lbnRyeSAqIHRhYmxlMiA9IHJlaW50ZXJwcmV0X2Nhc3Q8YnlfaWRfZW50 cnkgKj4oCisJICAgIHJlYWxsb2MgKHRhYmxlLCBhbGxvY19zaXplICogc2l6ZW9mICgqdGFi bGUpKQorCSAgKTsKKwkgIGlmICghdGFibGUyKQorCSAgICB7CisJICAgICAgZnJlZSAodGFi bGUpOworCSAgICAgIHJldHVybiBudWxscHRyOworCSAgICB9CisJICB0YWJsZSA9IHRhYmxl MjsKKwl9CisKKyAgICAgIGlmICghZ2V0X2RyaXZlX2lkX25hbWUgKGRyaXZlLCB0YWJsZVtz aXplXS5uYW1lKSkKKwljb250aW51ZTsKKyAgICAgIHRhYmxlW3NpemVdLmRyaXZlID0gZHJp dmU7CisgICAgICBzaXplKys7CisgICAgfQorCisgIC8qIFNvcnQgYnkgbmFtZSBhbmQgcmVt b3ZlIGR1cGxpY2F0ZXMuICovCisgIHFzb3J0ICh0YWJsZSwgc2l6ZSwgc2l6ZW9mICgqdGFi bGUpLCBieV9pZF9jb21wYXJlX25hbWUpOworICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7 IGkrKykKKyAgICB7CisgICAgICBpbnQgaiA9IGkgKyAxOworICAgICAgd2hpbGUgKGogPCBz aXplICYmICFzdHJjbXAgKHRhYmxlW2ldLm5hbWUsIHRhYmxlW2pdLm5hbWUpKQorCWorKzsK KyAgICAgIGlmIChqID09IGkgKyAxKQorCWNvbnRpbnVlOworICAgICAgLyogRHVwbGljYXRl KHMpIGZvdW5kLCByZW1vdmUgYWxsIGVudHJpZXMgd2l0aCB0aGlzIG5hbWUuICovCisgICAg ICBkZWJ1Z19wcmludGYgKCJyZW1vdmluZyBkdXBsaWNhdGVzICVkLSVkOiAnJXMnIiwgaSwg aiAtIDEsIHRhYmxlW2ldLm5hbWUpOworICAgICAgaWYgKGogPCBzaXplKQorCW1lbW1vdmUg KHRhYmxlICsgaSwgdGFibGUgKyBqLCAoc2l6ZSAtIGopICogc2l6ZW9mICgqdGFibGUpKTsK KyAgICAgIHNpemUgLT0gaiAtIGk7CisgICAgICBpLS07CisgICAgfQorCisgIC8qIE1hcmsg ZW5kIG9mIHRhYmxlIGZvciByZWFkZGlyICgpLiAqLworICB0YWJsZVtzaXplXS5uYW1lWzBd ID0gJ1wwJzsKKworICBpZiAocmV0X3NpemUpCisgICAgKnJldF9zaXplID0gc2l6ZTsKKyAg ZGVidWdfcHJpbnRmICgic2l6ZTogJWRcbiIsIHNpemUpOworICByZXR1cm4gdGFibGU7Cit9 CisKK2NvbnN0IGNoYXIgZGV2X2Rpc2tbXSA9ICIvZGV2L2Rpc2siOworY29uc3Qgc2l6ZV90 IGRldl9kaXNrX2xlbiA9IHNpemVvZiAoZGV2X2Rpc2spIC0gMTsKKworZmhhbmRsZXJfZGV2 X2Rpc2s6OmZoYW5kbGVyX2Rldl9kaXNrICgpOgorICBmaGFuZGxlcl92aXJ0dWFsICgpLAor ICBsb2MgKHVua25vd25fbG9jKSwKKyAgZHJpdmVfZnJvbV9pZCAoLTEpCit7Cit9CisKK3Zv aWQKK2ZoYW5kbGVyX2Rldl9kaXNrOjppbml0X2Rldl9kaXNrICgpCit7CisgIGlmIChsb2Mg IT0gdW5rbm93bl9sb2MpCisgICAgcmV0dXJuOworCisgIHN0YXRpYyBjb25zdCBjaGFyIGJ5 X2lkW10gPSAiL2J5LWlkIjsKKyAgY29uc3Qgc2l6ZV90IGJ5X2lkX2xlbiA9IHNpemVvZihi eV9pZCkgLSAxOworCisgIC8qIERldGVybWluZSBsb2NhdGlvbi4gKi8KKyAgY29uc3QgY2hh ciAqcGF0aCA9IGdldF9uYW1lICgpOworICBpZiAoIXBhdGhfcHJlZml4X3AgKGRldl9kaXNr LCBwYXRoLCBkZXZfZGlza19sZW4sIGZhbHNlKSkKKyAgICBsb2MgPSBpbnZhbGlkX2xvYzsg Ly8gc2hvdWxkIG5vdCBoYXBwZW4KKyAgZWxzZSBpZiAoIXBhdGhbZGV2X2Rpc2tfbGVuXSkK KyAgICBsb2MgPSBkaXNrX2RpcjsgLy8gIi9kZXYvZGlzayIKKyAgZWxzZSBpZiAoIXBhdGhf cHJlZml4X3AgKGJ5X2lkLCBwYXRoICsgZGV2X2Rpc2tfbGVuLCBieV9pZF9sZW4sIGZhbHNl KSkKKyAgICBsb2MgPSBpbnZhbGlkX2xvYzsgLy8gIi9kZXYvZGlzay9pbnZhbGlkIgorICBl bHNlIGlmICghcGF0aFtkZXZfZGlza19sZW4gKyBieV9pZF9sZW5dKQorICAgIGxvYyA9IGJ5 X2lkX2RpcjsgLy8gIi9kZXYvZGlzay9ieS1pZCIKKyAgZWxzZSBpZiAoc3RyY2hyIChwYXRo ICsgZGV2X2Rpc2tfbGVuICsgYnlfaWRfbGVuICsgMSwgJy8nKSkKKyAgICBsb2MgPSBpbnZh bGlkX2xvYzsgLy8gIi9kZXYvZGlzay9ieS1pZC9kaXIvaW52YWxpZCIKKyAgZWxzZQorICAg IGxvYyA9IGJ5X2lkX2xpbms7IC8vIHBvc3NpYmxlICIvZGV2L2Rpc2svYnktaWQvTElOSyIK KyAgZGVidWdfcHJpbnRmICgiJyVzJzogbG9jICVkIiwgcGF0aCwgKGludClsb2MpOworCisg IC8qIERvbmUgaWYgIi9kZXYvZGlzayIsICIvZGV2L2Rpc2svYnlfaWQiIG9yIGludmFsaWQu ICovCisgIGlmIChsb2MgIT0gYnlfaWRfbGluaykKKyAgICByZXR1cm47CisKKyAgLyogQ2hl Y2sgd2hldGhlciAiL2Rldi9kaXNrL2J5X2lkL0xJTksiIGV4aXN0cy4gKi8KKyAgaW50IHRh YnNpemU7CisgIGJ5X2lkX2VudHJ5ICp0YWJsZSA9IGdldF9ieV9pZF90YWJsZSAoJnRhYnNp emUpOworICBpZiAoIXRhYmxlKQorICAgIHsKKyAgICAgIGxvYyA9IGludmFsaWRfbG9jOwor ICAgICAgcmV0dXJuOworICAgIH0KKworICBieV9pZF9lbnRyeSBrZXk7CisgIHN0cmNweSAo a2V5Lm5hbWUsIHBhdGggKyBkZXZfZGlza19sZW4gKyBieV9pZF9sZW4gKyAxKTsKKyAgY29u c3Qgdm9pZCAqZm91bmQgPSBic2VhcmNoICgma2V5LCB0YWJsZSwgdGFic2l6ZSwgc2l6ZW9m ICgqdGFibGUpLAorCQkJICAgICAgIGJ5X2lkX2NvbXBhcmVfbmFtZSk7CisgIGlmIChmb3Vu ZCkKKyAgICAvKiBQcmVzZXJ2ZSBkcml2ZSBudW1iZXIgZm9yIGZpbGxidWYgKCkuICovCisg ICAgZHJpdmVfZnJvbV9pZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYnlfaWRfZW50cnkg Kj4oZm91bmQpLT5kcml2ZTsKKyAgZWxzZQorICAgIGxvYyA9IGludmFsaWRfbG9jOworICBm cmVlICh0YWJsZSk7Cit9CisKK3ZpcnR1YWxfZnR5cGVfdAorZmhhbmRsZXJfZGV2X2Rpc2s6 OmV4aXN0cyAoKQoreworICBkZWJ1Z19wcmludGYgKCJleGlzdHMgKCVzKSIsIGdldF9uYW1l ICgpKTsKKyAgZW5zdXJlX2luaXRlZCAoKTsKKyAgc3dpdGNoIChsb2MpCisgICAgeworICAg ICAgY2FzZSBkaXNrX2RpcjoKKyAgICAgIGNhc2UgYnlfaWRfZGlyOgorCXJldHVybiB2aXJ0 X2RpcmVjdG9yeTsKKyAgICAgIGNhc2UgYnlfaWRfbGluazoKKwlyZXR1cm4gdmlydF9zeW1s aW5rOworICAgICAgZGVmYXVsdDoKKwlyZXR1cm4gdmlydF9ub25lOworICAgIH0KK30KKwor aW50CitmaGFuZGxlcl9kZXZfZGlzazo6ZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpCit7Cisg IGRlYnVnX3ByaW50ZiAoImZzdGF0ICglcykiLCBnZXRfbmFtZSAoKSk7CisgIGVuc3VyZV9p bml0ZWQgKCk7CisgIGlmIChsb2MgPT0gaW52YWxpZF9sb2MpCisgICAgeworICAgICAgc2V0 X2Vycm5vIChFTk9FTlQpOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICBmaGFuZGxl cl9iYXNlOjpmc3RhdCAoYnVmKTsKKyAgYnVmLT5zdF9tb2RlID0gKGxvYyA9PSBieV9pZF9s aW5rID8gU19JRkxOSyB8IFNfSVdVU1IgfCBTX0lXR1JQIHwgU19JV09USAorCQkgIDogU19J RkRJUikgfCBTVERfUkJJVFMgfCBTVERfWEJJVFM7CisgIGJ1Zi0+c3RfaW5vID0gZ2V0X2lu byAoKTsKKyAgcmV0dXJuIDA7Cit9CisKK0RJUiAqCitmaGFuZGxlcl9kZXZfZGlzazo6b3Bl bmRpciAoaW50IGZkKQoreworICBlbnN1cmVfaW5pdGVkICgpOworICBpZiAoIShsb2MgPT0g ZGlza19kaXIgfHwgbG9jID09IGJ5X2lkX2RpcikpCisgICAgeworICAgICAgc2V0X2Vycm5v IChFTk9URElSKTsKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICBieV9pZF9l bnRyeSAqdGFibGU7CisgIGlmIChsb2MgPT0gYnlfaWRfZGlyKQorICAgIHsKKyAgICAgIHRh YmxlID0gZ2V0X2J5X2lkX3RhYmxlICgpOworICAgICAgaWYgKCF0YWJsZSkKKwl7CisJICBz ZXRfZXJybm8gKEVOT01FTSk7CisJICByZXR1cm4gbnVsbHB0cjsKKwl9CisgICAgfQorICBl bHNlCisgICAgdGFibGUgPSBudWxscHRyOworCisgIERJUiAqZGlyID0gZmhhbmRsZXJfdmly dHVhbDo6b3BlbmRpciAoZmQpOworICBpZiAoIWRpcikKKyAgICB7CisgICAgICBmcmVlICh0 YWJsZSk7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgIGRpci0+X19mbGFncyA9 IGRpcmVudF9zYXdfZG90IHwgZGlyZW50X3Nhd19kb3RfZG90OworICBkaXItPl9faGFuZGxl ID0gdGFibGU7CisgIHJldHVybiBkaXI7Cit9CisKK2ludAorZmhhbmRsZXJfZGV2X2Rpc2s6 OmNsb3NlZGlyIChESVIgKmRpcikKK3sKKyAgZnJlZSAoZGlyLT5fX2hhbmRsZSk7CisgIHJl dHVybiBmaGFuZGxlcl92aXJ0dWFsOjpjbG9zZWRpciAoZGlyKTsKK30KKworaW50CitmaGFu ZGxlcl9kZXZfZGlzazo6cmVhZGRpciAoRElSICpkaXIsIGRpcmVudCAqZGUpCit7CisgIGlu dCByZXM7CisgIGlmIChkaXItPl9fZF9wb3NpdGlvbiA8PSAxKQorICAgIHsKKyAgICAgIGRl LT5kX25hbWVbMF0gPSAnLic7CisgICAgICBkZS0+ZF9uYW1lWzFdID0gKGRpci0+X19kX3Bv c2l0aW9uID8gJy4nIDogJ1wwJyk7CisgICAgICBkZS0+ZF9uYW1lWzJdID0gJ1wwJzsKKyAg ICAgIGRlLT5kX3R5cGUgPSBEVF9ESVI7CisgICAgICBkaXItPl9fZF9wb3NpdGlvbisrOwor ICAgICAgcmVzID0gMDsKKyAgICB9CisgIGVsc2UgaWYgKGxvYyA9PSBkaXNrX2RpciAmJiBk aXItPl9fZF9wb3NpdGlvbiA9PSAyKQorICAgIHsKKyAgICAgIHN0cmNweSAoZGUtPmRfbmFt ZSwgImJ5LWlkIik7CisgICAgICBkZS0+ZF90eXBlID0gRFRfRElSOworICAgICAgZGlyLT5f X2RfcG9zaXRpb24rKzsKKyAgICAgIHJlcyA9IDA7CisgICAgfQorICBlbHNlIGlmIChsb2Mg PT0gYnlfaWRfZGlyICYmIGRpci0+X19oYW5kbGUpCisgICAgeworICAgICAgY29uc3QgYnlf aWRfZW50cnkgKnRhYmxlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBieV9pZF9lbnRyeSAq PihkaXItPl9faGFuZGxlKTsKKyAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSB0YWJsZVtkaXIt Pl9fZF9wb3NpdGlvbiAtIDJdLm5hbWU7CisgICAgICBpZiAobmFtZVswXSkKKwl7CisJICBz dHJjcHkgKGRlLT5kX25hbWUsIG5hbWUpOworCSAgZGUtPmRfdHlwZSA9IERUX0xOSzsKKwkg IGRpci0+X19kX3Bvc2l0aW9uKys7CisJICByZXMgPSAwOworCX0KKyAgICAgIGVsc2UKKwly ZXMgPSBFTk1GSUxFOworICAgIH0KKyAgZWxzZQorICAgIHJlcyA9IEVOTUZJTEU7CisKKyAg c3lzY2FsbF9wcmludGYgKCIlZCA9IHJlYWRkaXIoJXAsICVwKSAoJXMpIiwgcmVzLCBkaXIs IGRlLAorCQkgICghcmVzID8gZGUtPmRfbmFtZSA6ICIiKSk7CisgIHJldHVybiByZXM7Cit9 CisKK2Jvb2wKK2ZoYW5kbGVyX2Rldl9kaXNrOjpmaWxsX2ZpbGVidWYgKCkKK3sKKyAgZGVi dWdfcHJpbnRmICgiZmlsbF9maWxlYnVmICglcykiLCBnZXRfbmFtZSAoKSk7CisgIGVuc3Vy ZV9pbml0ZWQgKCk7CisgIGlmICghKGxvYyA9PSBieV9pZF9saW5rICYmIGRyaXZlX2Zyb21f aWQgPj0gMCkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGNoYXIgYnVmWzMyXTsKKyAgaWYg KGRyaXZlX2Zyb21faWQgKyAnYScgPD0gJ3onKQorICAgIF9fc21hbGxfc3ByaW50ZiAoYnVm LCAiLi4vLi4vc2QlYyIsIGRyaXZlX2Zyb21faWQgKyAnYScpOworICBlbHNlCisgICAgX19z bWFsbF9zcHJpbnRmIChidWYsICIuLi8uLi9zZCVjJWMiLAorCQkgICAgIGRyaXZlX2Zyb21f aWQgLyAoJ3onIC0gJ2EnICsgMSkgLSAxICsgJ2EnLAorCQkgICAgIGRyaXZlX2Zyb21faWQg JSAoJ3onIC0gJ2EnICsgMSkgKyAnYScpOworCisgIGZyZWUgKGZpbGVidWYpOworICBmaWxl YnVmID0gY3N0cmR1cCAoYnVmKTsKKyAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS93 aW5zdXAvY3lnd2luL2xvY2FsX2luY2x1ZGVzL2RldmljZXMuaCBiL3dpbnN1cC9jeWd3aW4v bG9jYWxfaW5jbHVkZXMvZGV2aWNlcy5oCmluZGV4IDEwMDM1MjYzZC4uMWUwMzVmOWQ2IDEw MDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2xvY2FsX2luY2x1ZGVzL2RldmljZXMuaAorKysg Yi93aW5zdXAvY3lnd2luL2xvY2FsX2luY2x1ZGVzL2RldmljZXMuaApAQCAtNzEsNiArNzEs NyBAQCBlbnVtIGZoX2RldmljZXMKICAgRkhfREVWICAgICA9IEZIREVWIChERVZfVklSVEZT X01BSk9SLCAxOTMpLAogICBGSF9DWUdEUklWRT0gRkhERVYgKERFVl9WSVJURlNfTUFKT1Is IDE5MiksCiAgIEZIX0RFVl9GRCAgPSBGSERFViAoREVWX1ZJUlRGU19NQUpPUiwgMTkxKSwK KyAgRkhfREVWX0RJU0s9IEZIREVWIChERVZfVklSVEZTX01BSk9SLCAxOTApLAogCiAgIEZI X1NJR05BTEZEPSBGSERFViAoREVWX1ZJUlRGU19NQUpPUiwgMTMpLAogICBGSF9USU1FUkZE ID0gRkhERVYgKERFVl9WSVJURlNfTUFKT1IsIDE0KSwKQEAgLTQxNSw2ICs0MTYsOCBAQCBl eHRlcm4gY29uc3QgX2RldmljZSBkZXZfcGlwZXJfc3RvcmFnZTsKICNkZWZpbmUgcGlwZXJf ZGV2ICgoZGV2aWNlICopICZkZXZfcGlwZXJfc3RvcmFnZSkKIGV4dGVybiBjb25zdCBfZGV2 aWNlIGRldl9waXBld19zdG9yYWdlOwogI2RlZmluZSBwaXBld19kZXYgKChkZXZpY2UgKikg JmRldl9waXBld19zdG9yYWdlKQorZXh0ZXJuIGNvbnN0IF9kZXZpY2UgZGV2X2Rldl9kaXNr X3N0b3JhZ2U7CisjZGVmaW5lIGRldl9kaXNrX2RldiAoKGRldmljZSAqKSAmZGV2X2Rldl9k aXNrX3N0b3JhZ2UpCiBleHRlcm4gY29uc3QgX2RldmljZSBkZXZfcHJvY19zdG9yYWdlOwog I2RlZmluZSBwcm9jX2RldiAoKGRldmljZSAqKSAmZGV2X3Byb2Nfc3RvcmFnZSkKIGV4dGVy biBjb25zdCBfZGV2aWNlIGRldl9kZXZfc3RvcmFnZTsKQEAgLTQzOSw3ICs0NDIsOCBAQCBl eHRlcm4gY29uc3QgX2RldmljZSBkZXZfZnNfc3RvcmFnZTsKICNkZWZpbmUgaXNwcm9jc3lz X2RldihkZXZuKSAoZGV2biA9PSBGSF9QUk9DU1lTKQogCiAjZGVmaW5lIGlzdmlydHVhbF9k ZXYoZGV2bikgXAotICAoaXNwcm9jX2RldiAoZGV2bikgfHwgZGV2biA9PSBGSF9DWUdEUklW RSB8fCBkZXZuID09IEZIX05FVERSSVZFIHx8IGRldm4gPT0gRkhfREVWX0ZEKQorICAoaXNw cm9jX2RldiAoZGV2bikgfHwgZGV2biA9PSBGSF9DWUdEUklWRSB8fCBkZXZuID09IEZIX05F VERSSVZFIFwKKyAgIHx8IGRldm4gPT0gRkhfREVWX0ZEIHx8IGRldm4gPT0gRkhfREVWX0RJ U0spCiAKICNkZWZpbmUgaXNjb25zX2RldihuKSBcCiAgICgoZGV2aWNlOjptYWpvciAoKGRl dl90KSAobikpID09IERFVl9DT05TX01BSk9SKSBcCmRpZmYgLS1naXQgYS93aW5zdXAvY3ln d2luL2xvY2FsX2luY2x1ZGVzL2ZoYW5kbGVyLmggYi93aW5zdXAvY3lnd2luL2xvY2FsX2lu Y2x1ZGVzL2ZoYW5kbGVyLmgKaW5kZXggMjEyYzIyMzQ0Li40ODZiNWY0OWQgMTAwNjQ0Ci0t LSBhL3dpbnN1cC9jeWd3aW4vbG9jYWxfaW5jbHVkZXMvZmhhbmRsZXIuaAorKysgYi93aW5z dXAvY3lnd2luL2xvY2FsX2luY2x1ZGVzL2ZoYW5kbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAg ZGV0YWlscy4gKi8KIGV4dGVybiBjb25zdCBjaGFyICp3aW5kb3dzX2RldmljZV9uYW1lc1td OwogZXh0ZXJuIHN0cnVjdCBfX2N5Z3dpbl9wZXJmaWxlICpwZXJmaWxlX3RhYmxlOwogI2Rl ZmluZSBfX2Ztb2RlICgqKHVzZXJfZGF0YS0+Zm1vZGVfcHRyKSkKK2V4dGVybiBjb25zdCBj aGFyIGRldl9kaXNrW107CitleHRlcm4gY29uc3Qgc2l6ZV90IGRldl9kaXNrX2xlbjsKIGV4 dGVybiBjb25zdCBjaGFyIHByb2NbXTsKIGV4dGVybiBjb25zdCBzaXplX3QgcHJvY19sZW47 CiBleHRlcm4gY29uc3QgY2hhciBwcm9jc3lzW107CkBAIC0zMTkwLDYgKzMxOTIsNDggQEAg Y2xhc3MgZmhhbmRsZXJfcHJvY25ldDogcHVibGljIGZoYW5kbGVyX3Byb2MKICAgfQogfTsK IAorY2xhc3MgZmhhbmRsZXJfZGV2X2Rpc2s6IHB1YmxpYyBmaGFuZGxlcl92aXJ0dWFsCit7 CisgIGVudW0gZGV2X2Rpc2tfbG9jYXRpb24geworICAgIHVua25vd25fbG9jLCBpbnZhbGlk X2xvYywgZGlza19kaXIsIGJ5X2lkX2RpciwgYnlfaWRfbGluaworICB9OworICBkZXZfZGlz a19sb2NhdGlvbiBsb2M7CisKKyAgdm9pZCBpbml0X2Rldl9kaXNrICgpOworICB2b2lkIGVu c3VyZV9pbml0ZWQgKCkKKyAgeworICAgIGlmIChsb2MgPT0gdW5rbm93bl9sb2MpCisgICAg ICBpbml0X2Rldl9kaXNrICgpOworICB9CisKKyAgaW50IGRyaXZlX2Zyb21faWQ7CisKKyBw dWJsaWM6CisgIGZoYW5kbGVyX2Rldl9kaXNrICgpOworICBmaGFuZGxlcl9kZXZfZGlzayAo dm9pZCAqKSB7fQorICB2aXJ0dWFsX2Z0eXBlX3QgZXhpc3RzKCk7CisgIERJUiAqb3BlbmRp ciAoaW50IGZkKTsKKyAgaW50IGNsb3NlZGlyIChESVIgKik7CisgIGludCByZWFkZGlyIChE SVIgKiwgZGlyZW50ICopOworICBpbnQgZnN0YXQgKHN0cnVjdCBzdGF0ICpidWYpOworICBi b29sIGZpbGxfZmlsZWJ1ZiAoKTsKKworICB2b2lkIGNvcHlfZnJvbSAoZmhhbmRsZXJfYmFz ZSAqeCkKKyAgeworICAgIHBjLmZyZWVfc3RyaW5ncyAoKTsKKyAgICAqdGhpcyA9ICpyZWlu dGVycHJldF9jYXN0PGZoYW5kbGVyX2Rldl9kaXNrICo+ICh4KTsKKyAgICBfY29weV9mcm9t X3Jlc2V0X2hlbHBlciAoKTsKKyAgfQorCisgIGZoYW5kbGVyX2Rldl9kaXNrICpjbG9uZSAo Y3lnaGVhcF90eXBlcyBtYWxsb2NfdHlwZSA9IEhFQVBfRkhBTkRMRVIpCisgIHsKKyAgICB2 b2lkICpwdHIgPSAodm9pZCAqKSBjY2FsbG9jIChtYWxsb2NfdHlwZSwgMSwgc2l6ZW9mIChm aGFuZGxlcl9kZXZfZGlzaykpOworICAgIGZoYW5kbGVyX2Rldl9kaXNrICpmaCA9IG5ldyAo cHRyKSBmaGFuZGxlcl9kZXZfZGlzayAocHRyKTsKKyAgICBmaC0+Y29weV9mcm9tICh0aGlz KTsKKyAgICByZXR1cm4gZmg7CisgIH0KK307CisKIGNsYXNzIGZoYW5kbGVyX2Rldl9mZDog cHVibGljIGZoYW5kbGVyX3ZpcnR1YWwKIHsKICBwdWJsaWM6CkBAIC0zNDE2LDYgKzM0NjAs NyBAQCB0eXBlZGVmIHVuaW9uCiAgIGNoYXIgX19kZXZfcmF3W3NpemVvZiAoZmhhbmRsZXJf ZGV2X3JhdyldOwogICBjaGFyIF9fZGV2X3RhcGVbc2l6ZW9mIChmaGFuZGxlcl9kZXZfdGFw ZSldOwogICBjaGFyIF9fZGV2X3plcm9bc2l6ZW9mIChmaGFuZGxlcl9kZXZfemVybyldOwor ICBjaGFyIF9fZGV2X2Rpc2tbc2l6ZW9mIChmaGFuZGxlcl9kZXZfZGlzayldOwogICBjaGFy IF9fZGV2X2ZkW3NpemVvZiAoZmhhbmRsZXJfZGV2X2ZkKV07CiAgIGNoYXIgX19kaXNrX2Zp bGVbc2l6ZW9mIChmaGFuZGxlcl9kaXNrX2ZpbGUpXTsKICAgY2hhciBfX2ZpZm9bc2l6ZW9m IChmaGFuZGxlcl9maWZvKV07CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL21vdW50LmNj IGIvd2luc3VwL2N5Z3dpbi9tb3VudC5jYwppbmRleCAzNmFiMDQyYTcuLjEzYWNlNjI1MCAx MDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9tb3VudC5jYworKysgYi93aW5zdXAvY3lnd2lu L21vdW50LmNjCkBAIC0zNSw2ICszNSw5IEBAIGRldGFpbHMuICovCiAgICAocGF0aFttb3Vu dF90YWJsZS0+Y3lnZHJpdmVfbGVuICsgMV0gPT0gJy8nIHx8IFwKICAgICAhcGF0aFttb3Vu dF90YWJsZS0+Y3lnZHJpdmVfbGVuICsgMV0pKQogCisjZGVmaW5lIGlzZGV2X2Rpc2socGF0 aCkgXAorICAocGF0aF9wcmVmaXhfcCAoZGV2X2Rpc2ssIChwYXRoKSwgZGV2X2Rpc2tfbGVu LCBmYWxzZSkpCisKICNkZWZpbmUgaXNwcm9jKHBhdGgpIFwKICAgKHBhdGhfcHJlZml4X3Ag KHByb2MsIChwYXRoKSwgcHJvY19sZW4sIGZhbHNlKSkKIApAQCAtNjg1LDYgKzY4OCwxMyBA QCBtb3VudF9pbmZvOjpjb252X3RvX3dpbjMyX3BhdGggKGNvbnN0IGNoYXIgKnNyY19wYXRo LCBjaGFyICpkc3QsIGRldmljZSYgZGV2LAogICAgICAgLyogR28gdGhyb3VnaCBjaHJvb3Qg Y2hlY2sgKi8KICAgICAgIGdvdG8gb3V0OwogICAgIH0KKyAgaWYgKGlzZGV2X2Rpc2sgKHNy Y19wYXRoKSkKKyAgICB7CisgICAgICBkZXYgPSAqZGV2X2Rpc2tfZGV2OworICAgICAgKmZs YWdzID0gMDsKKyAgICAgIHN0cmNweSAoZHN0LCBzcmNfcGF0aCk7CisgICAgICBnb3RvIG91 dDsKKyAgICB9CiAgIGlmIChpc3Byb2MgKHNyY19wYXRoKSkKICAgICB7CiAgICAgICBkZXYg PSAqcHJvY19kZXY7Ci0tIAoyLjM5LjAKCg== --------------8B9D5DB6BCB16229C93F0752--