From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=162.243.161.220 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793796893; b=HUd53o+AN0mIILKvtOsA5wAcRyHne6ZXW7ByS5unQ/odS9cFPivJIVKg2xB0S+q4do94 7vQOVt0go+4WFKMW8ePEdWWtQFxLIv+UKKtcJDlMApemVdZxyYQK6qBB6KvFyKFKpI/I0 inKcsyMUTVWJHMgbX7t1jNU8b0DoCMZWi3zU2PG1KUt+b2Cfr4XukF//JWjGVNh+515f+ U2QksxAcPFST4rfkld0EfE8EvCvVdUL/PrBrSlXuQjrF0mGj+LXLvTjqYUQzf1IGZNjDm B5gG7hREdmg9awR5ziZTjrxWfTMuvv2daCmrz/FcErYDLPyONoG7/wroirRD8Ao0BtQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793796893; h=DMARC-Filter:Received:X-Originating-IP:Date:X-CM-HeaderCharset:From: To:Cc:Subject:X-Priority:X-Mailer:In-Reply-To:References: X-CM-CTRLMSGS:Content-Type:MIME-Version:Message-ID:X-Coremail-Locale: X-CM-TRANSID:X-CM-SenderInfo:X-Coremail-Antispam; bh=yCpEtO5rFDUeCESbImjHbco3OM7oCr43lr9nLc5kCUw=; b=1juqlqULHEPw3dHQgYLCnKsXpcK3bLN5f7UODJJ/QGSmr0Lac2fgiRjG1ZGNN8Dk99jL FZWKbbYyae6gAl2Hs/8PXhin/7Fj0Fk0G8RO5zrMt6qrjXLduvDccZ/9MQYpLcOAwmZgC 1m8AoGfRtFq13YiKO3kQHK0HbZVKBL7UQQ4ZXfeGhrbV8zcfKAxG3fLVL540JzjCk2SuD y1lwfkharxbDxeF69w6VnzM3ckodD4k5j80fYPTDfidII5+7ek2+uqCrBTEmyB1Zg/Gg6 wSPQ+/osymkG3lcNge/YlNooeqLMGxQPmch6g0MJVpvhJCYrqikVSR7mepW9DCyOBew== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none header.from=hust.edu.cn; spf=pass smtp.mailfrom=hust.edu.cn; arc=none smtp.remote-ip=162.243.161.220 Received: from zg8tmtyylji0my4xnjeumjiw.icoremail.net (zg8tmtyylji0my4xnjeumjiw.icoremail.net [162.243.161.220]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DC4DD606A31B; Wed, 4 Nov 2026 12:54:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org DC4DD606A31B Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=hust.edu.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hust.edu.cn Received: from xuhx$hust.edu.cn ( [10.12.190.107] ) by ajax-webmail-app2 (Coremail) ; Wed, 4 Nov 2026 20:54:38 +0800 (GMT+08:00) Date: Wed, 4 Nov 2026 20:54:38 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: =?UTF-8?B?5b6Q5pmX57+U?= To: andersson@kernel.org, konradybcio@kernel.org Cc: linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: soc: qcom: pmic_glink_altmode: fix use-after-free on unbind (no cancel_work_sync for port work and enable_work) X-Priority: 3 X-Mailer: Coremail Webmail Server Version 2025.3-cmXT6 build 20260810(6c94e3b5) Copyright (c) 2002-2026 www.mailtech.cn hust In-Reply-To: <2026102727-data-sequel-ce41@gregkh> References: <4c7f9772.192e1.1a17d5c2ed5.Coremail.xuhx@hust.edu.cn> <2026102727-data-sequel-ce41@gregkh> X-CM-CTRLMSGS: =?B?nE5x5jiH6nJ5xwDR7hwMki1N8jM= Content-Type: multipart/mixed; boundary="----=_Part_415360_1817415288.1793796878500" X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Message-ID: <5eae64b0.1e583.1a1a6a030a4.Coremail.xuhx@hust.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID:IQEQrMBmjXYPK+tq9aZxAA--.46321W X-CM-SenderInfo: bgsqjkayqyjmo6kx23oohg3hdfq/1tbiAQMBB2rqCWyhkAAAsQ X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWkKw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= ------=_Part_415360_1817415288.1793796878500 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 cG1pY19nbGlua19hbHRtb2RlIHNjaGVkdWxlcyB0d28gd29ya3MgZnJvbSBhc3luY2hyb25vdXMg Z2xpbmsvcGRyCm5vdGlmaWNhdGlvbnMgLS0gdGhlIHBlci1wb3J0IGFsdF9wb3J0LT53b3JrIChV U0JDL0hQRCBzdGF0ZSBtYWNoaW5lOgp0eXBlY19tdXhfc2V0L3R5cGVjX3N3aXRjaF9zZXQvdHlw ZWNfcmV0aW1lcl9zZXQgd2l0aCA1LXNlY29uZCBhY2sKd2FpdHMsIHBtaWNfZ2xpbmtfYWx0bW9k ZV9yZXF1ZXN0KCkgdGFraW5nIGFsdG1vZGUtPmxvY2sgYW5kCndhaXRfZm9yX2NvbXBsZXRpb25f dGltZW91dCgmYWx0bW9kZS0+cGFuX2FjaywgNSpIWiksIGFuZApkcm1fYXV4X2hwZF9icmlkZ2Vf bm90aWZ5KCkpIGFuZCB0aGUgZ2xvYmFsIGVuYWJsZV93b3JrIChzY2hlZHVsZWQgYnkKcG1pY19n bGlua19hbHRtb2RlX3Bkcl9ub3RpZnkoKSBvbiBBRFNQIHNlcnZpY2Ugc3RhdGUgY2hhbmdlcykg LS0gYnV0CnRoZSBkcml2ZXIgaGFzIE5PIC5yZW1vdmUgYW5kIE5PIGNhbmNlbF93b3JrX3N5bmMv Zmx1c2ggYW55d2hlcmUgaW4KdGhlIGZpbGU6IGV2ZXJ5dGhpbmcgKHRoZSB0eXBlYyBtdXgvc3dp dGNoL3JldGltZXIgaGFuZGxlcywgdGhlCnBtaWNfZ2xpbmsgY2xpZW50IHJlZ2lzdHJhdGlvbiwg dGhlIHN0cnVjdCBwbWljX2dsaW5rX2FsdG1vZGUpIGlzCnJlbGVhc2VkIGJ5IGRldm0gYWN0aW9u cyBpbiByZXZlcnNlIG9yZGVyIHdoaWxlIGEgcXVldWVkIG9yIHJ1bm5pbmcKd29yayBpcyB1bnRv dWNoZWQgYnkgYW55IG9mIHRob3NlIHN0ZXBzLiAgQSBVU0JDIG5vdGlmaWNhdGlvbiBvciBhCnBk ciBzdGF0ZSB0cmFuc2l0aW9uIGluIGZsaWdodCBhdCB1bmJpbmQvcm1tb2QvQURTUC1yZXN0YXJ0 IHRpbWUKdGhlcmVmb3JlIG1ha2VzIHRoZSB3b3JrZXIgcnVuIG9uIGZyZWVkIGhhbmRsZXMsIGEg ZnJlZWQgY2xpZW50CmJpbmRpbmcgYW5kIGEgZnJlZWQgYWx0bW9kZSBzdHJ1Y3R1cmUgLS0gYW4g aW4tdHJlZSB1c2UtYWZ0ZXItZnJlZQp3aXRoIGEgd2luZG93IHN0cmV0Y2hlZCB0byBzZWNvbmRz IGJ5IHRoZSA1IHMgYWNrIHdhaXQuICBOb3RhYmx5IHRoZQpBRFNQIHJlc3RhcnQgKHBkciBkb3du LT51cCkgaXMgcHJlY2lzZWx5IHRoZSBzY2VuYXJpbyB0aGF0IHRyaWdnZXJzCnRoZSBhdXhpbGlh cnkgcmUtZW51bWVyYXRpb24vdGVhcmRvd24sIHNvIHRoZSBlbmFibGVfd29yayBpbnN0YW5jZSdz CnJlYWNoYWJpbGl0eSBpcyBhcyBoaWdoIGFzIHRoZSBwb3J0LXdvcmsgb25lLiAgVGhlcmUgaXMg YWxzbyBhCm5vbi1VQUYgZGF0YSByYWNlIHdvcnRoIGZpeGluZyBpbiB0aGUgc2FtZSBwYXNzOiB0 aGUgbm90aWZ5IGNhbGxiYWNrCihycG1zZy9yeCBjb250ZXh0KSB3cml0ZXMgYWx0X3BvcnQtPm9y aWVudGF0aW9uL3N2aWQvbW9kZS9ocGRfc3RhdGUvCm11eF9jdHJsIGFuZCB0aGUgOC1ieXRlIHRi dF9kYXRhIHN0cnVjdCBjb3B5LCB3aGlsZSB0aGUgd29ya2VyIHJlYWRzCnRoZSBzYW1lIGZpZWxk cyB3aXRoIG5vIGNvbW1vbiBsb2NrIChhbHRtb2RlLT5sb2NrIGlzIG9ubHkgdGFrZW4KaW5zaWRl IHBtaWNfZ2xpbmtfYWx0bW9kZV9yZXF1ZXN0KSAtLSBLQ1NBTi12aXNpYmxlLCB3aXRoIHRidF9k YXRhCnRlYXJhYmxlIGFuZCB3b3JzdCBjYXNlIGEgdHJhbnNpZW50IHdyb25nIG11eCBjb25maWd1 cmF0aW9uLgoKVGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uOgoKKiBUZWFyZG93biBzZXF1ZW5jZSB3 aXRoIG5vdGhpbmcgc3RvcHBpbmcgdGhlIHdvcmtzIChMaW51eCA3LjMpCiAgTm8gLnJlbW92ZSAo cG1pY19nbGlua19hbHRtb2RlLmM6NzA5LTcxMyk7IG9uIGF1eGlsaWFyeSB1bmJpbmQgLwogIHJt bW9kIHFjb21fcG1pY19nbGluayAvIEFEU1AgcmVzdGFydCByZS1lbnVtZXJhdGlvbiwgZGV2bSBy dW5zIGluCiAgcmV2ZXJzZTogZ2xpbmsgY2xpZW50IHJlbGVhc2UgKHBtaWNfZ2xpbmsuYzo2OS03 ODsgb25seSBsaXN0X2RlbCAtLQogIGRvZXMgbm90IHdhaXQgZm9yIGRyaXZlci1wcml2YXRlIHdv cmtzKSwgYXV4LWJyaWRnZSB1bnJlZ2lzdGVyCiAgKGF1eC1icmlkZ2UuYzo4MiBkZXZtIGFjdGlv biksIHRoZW4gcGVyLXBvcnQKICB0eXBlY19zd2l0Y2hfcHV0L3R5cGVjX3JldGltZXJfcHV0L3R5 cGVjX211eF9wdXQgKDo2NzItNjc3Lzo2NTctNjYyLwogIDo2NDItNjQ3KSwgdGhlbiB0aGUgZGV2 bSBremFsbG9jJ2Qgc3RydWN0IHBtaWNfZ2xpbmtfYWx0bW9kZSBnb2VzCiAgbGFzdCAoOjU4MCku CiAgTWVhbndoaWxlIGluc3RhbmNlIDEsIGFsdF9wb3J0LT53b3JrICh3b3JrZXIgOjM0OS0zOTQp OiB0b3VjaGVzIHRoZQogIHN3aXRjaCAoOjM1NSksIG11eCAoOjE5Ni8yNTQvMjkyLzMxNC8zMzYp LCByZXRpbWVyICg6MjA0LzI2Mi8zMDAvCiAgMzIyLzM0NCkgaGFuZGxlcyBhZnRlciB0aGVpciBw dXRzIC0tIFVBRjsgcG1pY19nbGlua19hbHRtb2RlX3JlcXVlc3QKICAoOjM5MyAtPiA6MTQ0LTE3 NSkgdGFrZXMgYWx0bW9kZS0+bG9jayAoOjE1NCkgYW5kIHdhaXRzIHVwIHRvIDUgcyBvbgogIHBh bl9hY2sgKDoxNjgpIC0tIHRoZSB3aW5kb3cgaXMgc2Vjb25kczsgZHJtX2F1eF9ocGRfYnJpZGdl X25vdGlmeQogICg6Mzc3KSBvbiBhIGZyZWVkIGJyaWRnZS4KICBJbnN0YW5jZSAyLCBlbmFibGVf d29yazogc2NoZWR1bGVkIGF0IDo1NjEgYnkgcGRyX25vdGlmeQogIChwbWljX2dsaW5rLmM6MjE2 LTIzMiB3YWxrcyBjbGllbnRzIGFuZCBjYWxscyBjbGllbnQtPnBkcl9ub3RpZnkKICA6MjMwIC0t IHRoZSBsYXN0IGJhdGNoIGJlZm9yZSB0aGUgY2xpZW50J3MgbGlzdF9kZWwgY2FuIHF1ZXVlIGl0 KTsKICB0aGUgd29ya2VyICg6NTQ2LTU1NCkgcnVucyBwbWljX2dsaW5rX2FsdG1vZGVfcmVxdWVz dAogIChBTFRNT0RFX1BBTl9FTiksIHRvdWNoaW5nIHRoZSBzYW1lIGxvY2svY2xpZW50L3Bhbl9h Y2sgc2V0IC0tIG5vCiAgY2FuY2VsIGFueXdoZXJlIGVpdGhlci4KCiogQ2xvc2VkLWxvb3AgZXhj bHVzaW9ucyAod2h5IG5vdGhpbmcgcHJvdGVjdHMgdGhpcyB0b2RheSkKICBUaGUgY2xpZW50IGxp c3RfZGVsIG9ubHkgc3RvcHMgbmV3IGNhbGxiYWNrcyAoc3lzdGVtX3dxIGhhcyBubwogIHJlbGF0 aW9uIHRvIHBnLT5jbGllbnRfbG9jayk7IHRoZSBkZXZtIG9yZGVyIG9ubHkgZGVjaWRlcyB3aGlj aAogIGZyZWVkIG9iamVjdCBpcyBoaXQgZmlyc3Q7IHRoZSBtdXggbGF5ZXIncyB0cnlfbW9kdWxl X2dldCBwaW5zCiAgY29kZSwgbm90IHRoZXNlIG9iamVjdHM7IHRoZSBkZXZpY2UtbW9kZWwgcmVm ZXJlbmNlIHBpbnMgdGhlCiAgcHJvdmlkZXIgZGV2aWNlIHN0cnVjdCwgbm90IHRoZSBkZXZtIGRh dGEuICBUaGUgcHJvYmUtZmFpbHVyZQogIHBhdGggaXMgc2FmZSAocmV0dXJucyBiZWZvcmUgY2xp ZW50IHJlZ2lzdHJhdGlvbiwgbm8gd29yayBldmVyCiAgc2NoZWR1bGVkKSAtLSB0aGUgZXhwb3N1 cmUgaXMgZXhhY3RseSB1bmJpbmQvcmVzdGFydCB3aXRoIGEgd29yawogIGluIGZsaWdodCwgYW5k IFVTQkMgbm90aWZpY2F0aW9ucyBhcmUgaGlnaC1mcmVxdWVuY3kgKHBsdWcvSFBELwogIElSUV9I UEQpLCB0aGUgd29ya2VyIGNhbiByZXNpZGUgdXAgdG8gNSBzLgoKKiBFdmlkZW5jZSAodmVyaWZp Y2F0aW9uOyBpbnN0cnVtZW50IGF0dGFjaGVkKQogIFF1YWxjb21tIHBtaWNfZ2xpbmsgZmlybXdh cmUvQURTUCBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSB0ZXN0IFZNLAogIHNvIHRoZSBkeW5hbWlj IHZlcmlmaWNhdGlvbiByYW4gdGhlIHN0cnVjdHVyYWwgaXNvbW9ycGggb2YgdGhpcwogIGludGVy bGVhdmUgb24gdGhlIG5hdGl2ZSB0eXBlYyBjbGFzcyBsYXllciAoa21vZC90eXBjcmFjZS5jOiBh bgogIGFueDc0MTEtc2hhcGVkIHdvcmtlciB3aXRoIHRoZSBzYW1lICJ1bmxvY2tlZCB1bnJlZ2lz dGVyIHZzIHdvcmsKICBob2xkaW5nIG9iamVjdHMiIHNoYXBlLCBkcml2ZW4gYWdhaW5zdCB0aGUg bmF0aXZlCiAgdHlwZWNfcmVnaXN0ZXIvdW5yZWdpc3RlciBwYXRocyk6CiAgICBCVUc6IEtBU0FO OiBzbGFiLXVzZS1hZnRlci1mcmVlIGluIHR5cGVjX2FsdG1vZGVfdXBkYXRlX2FjdGl2ZQogICAg ICAoMTQgcmVwb3J0cyBhY3Jvc3Mgc2l4IGFjY2VzcyBwb2ludHMgKyBzeXNmc19ub3RpZnkgKyB0 aGUgZnVsbAogICAgICBrb2JqZWN0X3VldmVudCBjaGFpbiwgdGhlbiBhIHN0cmxlbiB3aWxkLXBv aW50ZXIgT29wcykKICAgIGFsbG9jOiB0eXBlY19yZWdpc3Rlcl9hbHRtb2RlIDwtIChwcm92aWRl ciBwcm9iZSkKICAgIGZyZWU6IGtmcmVlIDwtIGRldmljZV9yZWxlYXNlIDwtIGtvYmplY3RfcHV0 IDwtIHVucmVnaXN0ZXIKICAgICAgICAgICh0aGUgYXVkaXRlZCAiaGFuZGxlIGZyZWVkIHdoaWxl IHdvcmsgcnVucyIgc2hhcGUpCiAgICB1c2U6IHRoZSBwYXJrZWQgd29yaydzIGNvbnRpbnVhdGlv bgogICAgbmF0dXJhbCAobm8gaW5zdHJ1bWVudGF0aW9uKTogYW4gT29wcyBpbiBrbGlzdF9kZWwg PC0gZGV2aWNlX2RlbAogICAgICA8LSBkZXZpY2VfdW5yZWdpc3RlciA8LSB0aGUgd29yayBmdW5j dGlvbiwgfm1pbnV0ZXMgaW50byBhCiAgICAgIGNyZWF0ZS93b3JrL3JlbW92ZSBsb29wCiAgVGhl IHBtaWNfZ2xpbmsgc2lkZSBpdHNlbGYgaXMgYSBsaW5lLWxldmVsIHNvdXJjZSBmaW5kaW5nOiB0 aGUKICBhYm92ZSBpc29tb3JwaCBleGVyY2lzZXMgdGhlIGlkZW50aWNhbCBzdHJ1Y3R1cmUgKGFz eW5jIHdvcmsgdnMKICBkZXZtLXJlbGVhc2VkIGhhbmRsZXMgYW5kIGJvZHksIG5vIHN0b3Avd2Fp dCksIGFuZCB0aGUgZHJpdmVyCiAgZmlsZSBjb250YWlucyBubyBjYW5jZWwvZmx1c2ggdG8gY29u dHJhZGljdCBpdC4KCiogU3VnZ2VzdGVkIGZpeAogIFJlZ2lzdGVyIGEgZGV2bSBhY3Rpb24gdGhh dCBjYW5jZWxzIGJvdGggd29ya3MgRklSU1QgKGkuZS4gdGhlCiAgbGFzdC1yZWdpc3RlcmVkIGRl dm0gYWN0aW9uID0gZmlyc3QgZXhlY3V0ZWQpLCBvciBpbXBsZW1lbnQKICAucmVtb3ZlOgogICAg ICBjYW5jZWxfd29ya19zeW5jKCZhbHRtb2RlLT5lbmFibGVfd29yayk7CiAgICAgIGZvciAocG9y dC4uLikgaWYgKGFsdG1vZGUtPnBvcnRzW3BvcnRdLmFsdG1vZGUpCiAgICAgICAgICAgICAgY2Fu Y2VsX3dvcmtfc3luYygmYWx0bW9kZS0+cG9ydHNbcG9ydF0ud29yayk7CiAgcGxhY2VkIGJlZm9y ZSBhbnkgcHV0LiAgRm9yIHRoZSBkYXRhIHJhY2U6IGZvbGQgdGhlIG5vdGlmeS1zaWRlCiAgZmll bGQgd3JpdGVzIGFuZCB0aGUgd29ya2VyJ3MgcmVhZHMgdW5kZXIgYWx0bW9kZS0+bG9jayAob3IK ICBzbmFwc2hvdCB0aGUgZmllbGRzIGludG8gdGhlIHdvcmspLCBhcyBhIHNlcGFyYXRlIHNtYWxs IHBhdGNoLgoKCgogIFBsZWFzZSBrZWVwIG1lIGluIENjOyBJIGFtIG5vdCBzdWJzY3JpYmVkIHRv IHRoZSBsaXN0cy4KCgpSZWdhcmRzLApIYW54aWFuZyBYdQp4dWh4QGh1c3QuZWR1LmNuCg== ------=_Part_415360_1817415288.1793796878500 Content-Type: text/plain; name=typcrace.c Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="typcrace.c" Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLyoKICogdHlwY3JhY2UuYyAtIGR5 bmFtaWMgdmVyaWZpY2F0aW9uIG1vZHVsZSBmb3IgZHJpdmVycy91c2IvdHlwZWMgYXVkaXQKICog KGRvY3MvbWFudWFsLXJldmlldy1kcml2ZXJzLXVzYi10eXBlYy0yMDI2LTExLTAyLnJvdW5kMy5t ZCkKICoKICogU3RhdGVtZW50LWZhaXRoZnVsIHJlcGxpY2FzIG9mIHRoZSBhdWRpdGVkIGRyaXZl ciBzdGF0ZSBtYWNoaW5lcyAoYW54NzQxMSwKICogc3R1c2IxNjB4KSwgZHJpdmVuIHZpYSB0aGUg ZXhwb3J0ZWQgdHlwZWMgY2xhc3MgQVBJIG9uIGEgZmFrZSB0eXBlY19wb3J0LAogKiB3aXRoIG9u ZS1zaG90IGtwcm9iZSBzdGFsbHMgbWFraW5nIHRoZSBhdWRpdGVkIGludGVybGVhdmluZ3MgZGV0 ZXJtaW5pc3RpYy4KICogS2VybmVsIHNvdXJjZSB1bm1vZGlmaWVkIChidWlsZC1rYXNhbi10eXBl Yy03LjMpLgogKgogKiB0YzAgIC0gYXVkaXQgQ2FzZSAzIGludGVybGVhdmluZyAxOiBhbng3NDEx IHdvcmsgdXNlcyBhbW9kZVtdIHBvaW50ZXIKICogICAgICAgIChjaGVjay10aGVuLXVzZSwgYW54 NzQxMS5jOjYwMi02MTMpIHdoaWxlIHJlbW92ZSBmcmVlcyB0aGUgZGV2aWNlLgogKiAgICAgICAg V29yayBpcyBwYXJrZWQgYnkgYSBrcHJvYmUgYXQgaXRzIHVzZSBwb2ludAogKiAgICAgICAgKHR5 cGVjX2FsdG1vZGVfdXBkYXRlX2FjdGl2ZSkgQUZURVIgaXQgcmVhZCBhbW9kZVtpXTsgdGhlIHJl bW92ZQogKiAgICAgICAgdGhyZWFkIHVucmVnaXN0ZXJzIChmcmVlcykgdGhlIGFsdG1vZGUgZHVy aW5nIHRoZSBwYXJrOyBvbiByZXN1bWUKICogICAgICAgIHRoZSB1c2UgZGVyZWZlcmVuY2VzIGZy ZWVkIG1lbW9yeSAtPiBLQVNBTiBVQUYuCiAqIHRjMGIgLSBhdWRpdCBDYXNlIDMgaW50ZXJsZWF2 aW5nIDI6IGRvdWJsZSBkZXZpY2VfdW5yZWdpc3Rlci4gUmVtb3ZlIGlzCiAqICAgICAgICBwYXJr ZWQgYnkgYSBvbmUtc2hvdCBrcHJvYmUgYXQgdHlwZWNfdW5yZWdpc3Rlcl9hbHRtb2RlIEJFRk9S RSBpdAogKiAgICAgICAgZXhlY3V0ZXM7IHRoZSBxdWV1ZWQgd29yayB0aGVuIHVucmVnaXN0ZXJz IHRoZSBzYW1lIGFsdG1vZGUKICogICAgICAgIChkZXZpY2UgZnJlZWQpOyBvbiByZXN1bWUgcmVt b3ZlJ3MgdW5yZWdpc3RlciBydW5zIG9uIHRoZSBmcmVlZAogKiAgICAgICAgZGV2aWNlIC0+IFVB RiBpbnNpZGUgdHlwZWNfdW5yZWdpc3Rlcl9hbHRtb2RlL2NsYXNzIGNvcmUuCiAqIHRjMSAgLSBh dWRpdCBDYXNlIDQgKHN0dXNiMTYweCBmb3JtKTogaXJxIHRocmVhZCBwYXJrZWQgYnkgb25lLXNo b3Qga3Byb2JlCiAqICAgICAgICBhdCB0eXBlY191bnJlZ2lzdGVyX3BhcnRuZXIgKGhhdmluZyBz ZWVuIGNoaXAtPnBhcnRuZXIgIT0gTlVMTCk7CiAqICAgICAgICByZW1vdmUgdGhyZWFkIHRoZW4g dW5yZWdpc3RlcnMgdGhlIHNhbWUgcGFydG5lciBhbmQgdW5yZWdpc3RlcnMgdGhlCiAqICAgICAg ICBwb3J0OyBpcnEgcmVzdW1lcyAtPiB1bnJlZ2lzdGVyIG9uIGZyZWVkIHBhcnRuZXIgLT4gVUFG LgogKi8KI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSAiOiAiIGZtdAoKI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgojaW5jbHVkZSA8bGludXgva3Byb2Jlcy5oPgojaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4KI2luY2x1ZGUgPGxpbnV4L2t0aW1lLmg+CiNpbmNsdWRlIDxsaW51eC93 b3JrcXVldWUuaD4KI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4KI2luY2x1ZGUgPGxpbnV4L2Nv bXBsZXRpb24uaD4KI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CiNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+CiNpbmNsdWRlIDxsaW51eC91c2IvdHlwZWMuaD4KI2luY2x1ZGUgPGxpbnV4L3VzYi90eXBl Y19hbHRtb2RlLmg+CgojZGVmaW5lIE1BWF9BTFRNT0RFIDQKCnN0cnVjdCB0eWNfdHlwZWMgewoJ c3RydWN0IHR5cGVjX3BvcnQgKnBvcnQ7CglzdHJ1Y3QgdHlwZWNfcGFydG5lciAqcGFydG5lcjsK CXN0cnVjdCB0eXBlY19hbHRtb2RlICphbW9kZVtNQVhfQUxUTU9ERV07Cn07CgovKiAtLS0tLS0t LS0tLS0tLS0tIGFueDc0MTEgcmVwbGljYSAoQ2FzZSAzKSAtLS0tLS0tLS0tLS0tLS0tICovCnN0 cnVjdCB0eWNfYW54IHsKCXN0cnVjdCB0eWNfdHlwZWMgdHlwZWM7CglzdHJ1Y3QgbXV0ZXggbG9j azsJCS8qIGFuYWxvZyBvZiBjdHgtPmxvY2s6IHdvcmsgc2lkZSBvbmx5ICovCglzdHJ1Y3Qgd29y a19zdHJ1Y3Qgd29yazsKCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTsKCXN0cnVjdCBjb21w bGV0aW9uIHdvcmtfaW5fdXNlOwkvKiB3b3JrIHBhcmtlZCBhdCBpdHMgdXNlIHBvaW50ICovCn07 CgpzdGF0aWMgdm9pZCBhbnhfdW5yZWdpc3Rlcl9hbHRtb2RlX3JlcGxpY2Eoc3RydWN0IHR5Y19h bnggKmN0eCkKewoJaW50IGk7CgoJLyogYW54NzQxMS5jOjUzNS01NDkgLS0gTk8gY3R4LT5sb2Nr IChhdWRpdGVkKSAqLwoJZm9yIChpID0gMDsgaSA8IE1BWF9BTFRNT0RFOyBpKyspCgkJaWYgKGN0 eC0+dHlwZWMuYW1vZGVbaV0pIHsKCQkJdHlwZWNfdW5yZWdpc3Rlcl9hbHRtb2RlKGN0eC0+dHlw ZWMuYW1vZGVbaV0pOwoJCQljdHgtPnR5cGVjLmFtb2RlW2ldID0gTlVMTDsKCQl9Cn0KCnN0YXRp YyB2b2lkIGFueF91bnJlZ2lzdGVyX3BhcnRuZXJfcmVwbGljYShzdHJ1Y3QgdHljX2FueCAqY3R4 KQp7CgkvKiBhbng3NDExLmM6NTg1LTU5MSAtLSBOTyBjdHgtPmxvY2sgKGF1ZGl0ZWQpICovCglp ZiAoY3R4LT50eXBlYy5wYXJ0bmVyKSB7CgkJdHlwZWNfdW5yZWdpc3Rlcl9wYXJ0bmVyKGN0eC0+ dHlwZWMucGFydG5lcik7CgkJY3R4LT50eXBlYy5wYXJ0bmVyID0gTlVMTDsKCX0KfQoKc3RhdGlj IGJvb2wgYW54X3VzZV9tb2RlOwkvKiB0YzA6IHdvcmsgcGFya3MgYXQgdXNlIHBvaW50ICovCnN0 YXRpYyBzdHJ1Y3QgdHljX2FueCAqZ19hbngwOwkvKiB0YzAgdGFyZ2V0IGZvciBrcHJvYmUgbG9v a3VwICovCgovKgogKiB0YzAga3Byb2JlIHRhcmdldDogdHlwZWNfYWx0bW9kZV91cGRhdGVfYWN0 aXZlIGlzIG9ubHkgcmVhY2hlZCBmcm9tIHRoZQogKiB3b3JrJ3MgdXNlIHBvaW50IGluIHRoaXMg bW9kdWxlICh0aGUgcmVtb3ZlIHRocmVhZCBuZXZlciBjYWxscyBpdCkuCiAqIFBhcmsgaGVyZSBB RlRFUiB0aGUgd29yayBoYXMgcmVhZCBhbW9kZVtpXSAoYXVkaXRlZCBjaGVjay10aGVuLXVzZSBn YXApLgogKi8Kc3RhdGljIGludCBrcF91c2VfcHJlKHN0cnVjdCBrcHJvYmUgKnAsIHN0cnVjdCBw dF9yZWdzICpyZWdzKQp7Cgl1bnNpZ25lZCBsb25nIGxvbmcgdDA7CglzdHJ1Y3QgdHljX2FueCAq Y3R4ID0gZ19hbngwOwoKCWlmICghYW54X3VzZV9tb2RlIHx8ICFjdHgpCgkJcmV0dXJuIDA7Cglh bnhfdXNlX21vZGUgPSBmYWxzZTsKCXByX2luZm8oIlRDMDogd29yayBwYXJrZWQgYXQgdXNlIHBv aW50IChhZGV2PSVweCksIHJlbW92ZSBmcmVlcyBub3dcbiIsCgkJKHZvaWQgKilyZWdzLT5kaSk7 Cgljb21wbGV0ZSgmY3R4LT53b3JrX2luX3VzZSk7Cgl0MCA9IGt0aW1lX2dldF9tb25vX2Zhc3Rf bnMoKTsKCXdoaWxlIChrdGltZV9nZXRfbW9ub19mYXN0X25zKCkgLSB0MCA8IDQwMFVMTCAqIE5T RUNfUEVSX01TRUMpCgkJY3B1X3JlbGF4KCk7Cglwcl9pbmZvKCJUQzA6IHdvcmsgcmVzdW1lcyB1 c2Ugb24gKHBvc3NpYmx5IGZyZWVkKSBhZGV2XG4iKTsKCXJldHVybiAwOwp9CgpzdGF0aWMgc3Ry dWN0IGtwcm9iZSBrcF91c2UgPSB7Cgkuc3ltYm9sX25hbWUgPSAidHlwZWNfYWx0bW9kZV91cGRh dGVfYWN0aXZlIiwKCS5wcmVfaGFuZGxlciA9IGtwX3VzZV9wcmUsCn07CgovKiB3b3JrIHJlcGxp Y2Egb2YgYW54NzQxMV93b3JrX2Z1bmMgKGFueDc0MTEuYzo5MDYtOTg0KSAqLwpzdGF0aWMgdm9p ZCBhbnhfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqdykKewoJc3RydWN0IHR5Y19hbngg KmN0eCA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgdHljX2FueCwgd29yayk7CglpbnQgaTsKCglt dXRleF9sb2NrKCZjdHgtPmxvY2spOwkJLyogOjkxNiAqLwoKCS8qICJ1cGRhdGVfYWx0bW9kZSIg Y2hlY2stdGhlbi11c2UgbG9vcCAoOjYwMi02MTMpICovCglmb3IgKGkgPSAwOyBpIDwgTUFYX0FM VE1PREU7IGkrKykgewoJCWlmICghY3R4LT50eXBlYy5hbW9kZVtpXSkKCQkJY29udGludWU7CgkJ cHJfaW5mbygiVEMwOiB3b3JrIHJlYWQgYW1vZGVbJWRdPSVweCBzdmlkPSUwNHgsIGNhbGxpbmcg dXBkYXRlX2FjdGl2ZVxuIiwKCQkJaSwgY3R4LT50eXBlYy5hbW9kZVtpXSwgY3R4LT50eXBlYy5h bW9kZVtpXS0+c3ZpZCk7CgkJdHlwZWNfYWx0bW9kZV91cGRhdGVfYWN0aXZlKGN0eC0+dHlwZWMu YW1vZGVbaV0sIHRydWUpOwoJfQoJLyogUE9XX09GRiBicmFuY2ggKDo5NDMtOTQ2KSAqLwoJcHJf aW5mbygiVEMwOiB3b3JrIHVucmVnaXN0ZXIgYWx0bW9kZStwYXJ0bmVyXG4iKTsKCWFueF91bnJl Z2lzdGVyX2FsdG1vZGVfcmVwbGljYShjdHgpOwoJYW54X3VucmVnaXN0ZXJfcGFydG5lcl9yZXBs aWNhKGN0eCk7CgoJbXV0ZXhfdW5sb2NrKCZjdHgtPmxvY2spOwp9CgpzdGF0aWMgaW50IGFueF9y ZW1vdmVfdGhyZWFkKHZvaWQgKmRhdGEpCnsKCXN0cnVjdCB0eWNfYW54ICpjdHggPSBkYXRhOwoK CXByX2luZm8oIlRDMCo6IHJlbW92ZSBlbnRlcnMgKGF1ZGl0ZWQgb3JkZXI6IHVucmVnaXN0ZXIg RklSU1QpXG4iKTsKCWFueF91bnJlZ2lzdGVyX2FsdG1vZGVfcmVwbGljYShjdHgpOwkvKiA6MTU2 NiAqLwoJYW54X3VucmVnaXN0ZXJfcGFydG5lcl9yZXBsaWNhKGN0eCk7CS8qIDoxNTY3ICovCglw cl9pbmZvKCJUQzAqOiByZW1vdmUgc3RvcHMgd29yayAodG9vIGxhdGUsIGF1ZGl0ZWQpXG4iKTsK CWNhbmNlbF93b3JrX3N5bmMoJmN0eC0+d29yayk7CQkvKiA6MTU3MSAqLwoJcHJfaW5mbygiVEMw KjogcmVtb3ZlIGRvbmVcbiIpOwoJcmV0dXJuIDA7Cn0KCi8qIG9uZS1zaG90IHN0YWxsIGF0IHR5 cGVjX3VucmVnaXN0ZXJfYWx0bW9kZSAodGMwYik6IHBhcmsgdGhlIEZJUlNUIGNhbGxlciAqLwpz dGF0aWMgYm9vbCBvbmVzaG90X2FybWVkOwpzdGF0aWMgc3RydWN0IGNvbXBsZXRpb24gdGNfZG9u ZV93YWl0OwoKc3RhdGljIGludCBrcF91bnJlZ19wcmUoc3RydWN0IGtwcm9iZSAqcCwgc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpCnsKCXVuc2lnbmVkIGxvbmcgbG9uZyB0MDsKCglpZiAoIW9uZXNob3Rf YXJtZWQpCgkJcmV0dXJuIDA7CglvbmVzaG90X2FybWVkID0gZmFsc2U7Cglwcl9pbmZvKCJUQzBi OiByZW1vdmUgcGFya2VkIGF0IHR5cGVjX3VucmVnaXN0ZXJfYWx0bW9kZSAoYWRldj0lcHgpXG4i LAoJCSh2b2lkICopcmVncy0+ZGkpOwoJY29tcGxldGUoJnRjX2RvbmVfd2FpdCk7Cgl0MCA9IGt0 aW1lX2dldF9tb25vX2Zhc3RfbnMoKTsKCXdoaWxlIChrdGltZV9nZXRfbW9ub19mYXN0X25zKCkg LSB0MCA8IDQwMFVMTCAqIE5TRUNfUEVSX01TRUMpCgkJY3B1X3JlbGF4KCk7Cglwcl9pbmZvKCJU QzBiOiBwYXJrZWQgdW5yZWdpc3RlciByZXN1bWVzIChkZXZpY2UgbGlrZWx5IGZyZWVkKVxuIik7 CglyZXR1cm4gMDsKfQoKLyogLS0tLS0tLS0tLS0tLS0tLSBzdHVzYjE2MHggcmVwbGljYSAoQ2Fz ZSA0KSAtLS0tLS0tLS0tLS0tLS0tICovCnN0cnVjdCB0eWNfc3R1IHsKCXN0cnVjdCB0eWNfdHlw ZWMgdHlwZWM7CglzdHJ1Y3QgdGFza19zdHJ1Y3QgKmlycV90aHJlYWQ7CglzdHJ1Y3QgY29tcGxl dGlvbiBpcnFfcGFya2VkOwp9OwoKc3RhdGljIGludCBzdHVfaXJxX3RocmVhZCh2b2lkICpkYXRh KQp7CglzdHJ1Y3QgdHljX3N0dSAqY3R4ID0gZGF0YTsKCgl3aGlsZSAoIWt0aHJlYWRfc2hvdWxk X3N0b3AoKSkgewoJCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7CgkJc2No ZWR1bGVfdGltZW91dChtc2Vjc190b19qaWZmaWVzKDIwKSk7CgkJaWYgKGt0aHJlYWRfc2hvdWxk X3N0b3AoKSkKCQkJYnJlYWs7CgkJLyogc3R1c2IxNjB4X2RldGFjaCg6Mzg4LTM4OSkgY2hlY2st dGhlbi11c2UgKi8KCQlpZiAoY3R4LT50eXBlYy5wYXJ0bmVyKSB7CgkJCXByX2luZm8oIlRDMTog aXJxIHNhdyBwYXJ0bmVyPSVweCwgdW5yZWdpc3RlcmluZ1xuIiwKCQkJCWN0eC0+dHlwZWMucGFy dG5lcik7CgkJCXR5cGVjX3VucmVnaXN0ZXJfcGFydG5lcihjdHgtPnR5cGVjLnBhcnRuZXIpOwoJ CQljdHgtPnR5cGVjLnBhcnRuZXIgPSBOVUxMOwoJCX0KCX0KCXJldHVybiAwOwp9CgpzdGF0aWMg aW50IHN0dV9yZW1vdmVfdGhyZWFkKHZvaWQgKmRhdGEpCnsKCXN0cnVjdCB0eWNfc3R1ICpjdHgg PSBkYXRhOwoKCXByX2luZm8oIlRDMTogcmVtb3ZlIGVudGVycyAoZGV2bS1pcnEgd2luZG93IG9w ZW4pXG4iKTsKCS8qIHN0dXNiMTYweC5jOjgwNS04MDggKi8KCWlmIChjdHgtPnR5cGVjLnBhcnRu ZXIpIHsKCQlwcl9pbmZvKCJUQzE6IHJlbW92ZSBzYXcgcGFydG5lcj0lcHgsIHVucmVnaXN0ZXJp bmdcbiIsCgkJCWN0eC0+dHlwZWMucGFydG5lcik7CgkJdHlwZWNfdW5yZWdpc3Rlcl9wYXJ0bmVy KGN0eC0+dHlwZWMucGFydG5lcik7CgkJY3R4LT50eXBlYy5wYXJ0bmVyID0gTlVMTDsKCX0KCXBy X2luZm8oIlRDMTogcmVtb3ZlIHVucmVnaXN0ZXJzIHBvcnRcbiIpOwoJdHlwZWNfdW5yZWdpc3Rl cl9wb3J0KGN0eC0+dHlwZWMucG9ydCk7CgljdHgtPnR5cGVjLnBvcnQgPSBOVUxMOwoJcHJfaW5m bygiVEMxOiByZW1vdmUgZG9uZVxuIik7CglyZXR1cm4gMDsKfQoKLyogLS0tLS0tLS0tLS0tLS0t LSBvcmNoZXN0cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0gKi8Kc3RhdGljIHN0cnVjdCB0eWNfYW54 ICpnX2FueDsKc3RhdGljIHN0cnVjdCB0eWNfc3R1ICpnX3N0dTsKCgpzdGF0aWMgc3RydWN0IGtw cm9iZSBrcF91bnJlZzsKCnN0YXRpYyBpbnQgdGNfc2V0dXBfY29tbW9uKHN0cnVjdCB0eWNfdHlw ZWMgKnQsIHN0cnVjdCBkZXZpY2UgKnBhcmVudCkKewoJc3RydWN0IHR5cGVjX2NhcGFiaWxpdHkg Y2FwID0geyB9OwoJc3RydWN0IHR5cGVjX3BhcnRuZXJfZGVzYyBwZGVzYyA9IHsgfTsKCXN0cnVj dCB0eXBlY19hbHRtb2RlX2Rlc2MgYWRlc2MgPSB7IH07CglpbnQgaTsKCgljYXAudHlwZSA9IFRZ UEVDX1BPUlRfRFJQOwoJY2FwLmRhdGEgPSBUWVBFQ19QT1JUX0RSRDsKCWNhcC5yZXZpc2lvbiA9 IFVTQl9UWVBFQ19SRVZfMV8yOwoJY2FwLmRyaXZlcl9kYXRhID0gdDsKCXQtPnBvcnQgPSB0eXBl Y19yZWdpc3Rlcl9wb3J0KHBhcmVudCwgJmNhcCk7CglpZiAoSVNfRVJSKHQtPnBvcnQpKSB7CgkJ cHJfZXJyKCJ0eXBlY19yZWdpc3Rlcl9wb3J0IGZhaWxlZDogJXBlXG4iLCB0LT5wb3J0KTsKCQly ZXR1cm4gUFRSX0VSUih0LT5wb3J0KTsKCX0KCXQtPnBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9w YXJ0bmVyKHQtPnBvcnQsICZwZGVzYyk7CglpZiAoSVNfRVJSKHQtPnBhcnRuZXIpKSB7CgkJcHJf ZXJyKCJ0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyIGZhaWxlZDogJXBlXG4iLCB0LT5wYXJ0bmVyKTsK CQl0eXBlY191bnJlZ2lzdGVyX3BvcnQodC0+cG9ydCk7CgkJdC0+cG9ydCA9IE5VTEw7CgkJcmV0 dXJuIFBUUl9FUlIodC0+cGFydG5lcik7Cgl9Cglmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CgkJ YWRlc2Muc3ZpZCA9IDB4MTIzNCArIGk7CgkJYWRlc2MubW9kZSA9IGkgKyAxOwoJCWFkZXNjLnZk byA9IDB4ZGVhZGJlZWY7CgkJYWRlc2Mucm9sZXMgPSBUWVBFQ19QT1JUX0RSRDsKCQl0LT5hbW9k ZVtpXSA9IHR5cGVjX3BhcnRuZXJfcmVnaXN0ZXJfYWx0bW9kZSh0LT5wYXJ0bmVyLCAmYWRlc2Mp OwoJCWlmIChJU19FUlIodC0+YW1vZGVbaV0pKSB7CgkJCXByX2VycigicGFydG5lcl9yZWdpc3Rl cl9hbHRtb2RlWyVkXSBmYWlsZWQ6ICVwZVxuIiwKCQkJICAgICAgIGksIHQtPmFtb2RlW2ldKTsK CQkJdC0+YW1vZGVbaV0gPSBOVUxMOwoJCQlyZXR1cm4gLUVGQVVMVDsKCQl9Cgl9CglyZXR1cm4g MDsKfQoKc3RhdGljIGludCBydW5fdGMwKHZvaWQpCnsKCXN0cnVjdCBkZXZpY2UgKnJvb3RfZGV2 OwoJc3RydWN0IHRhc2tfc3RydWN0ICpybTsKCWludCByZXQ7CgoJcm9vdF9kZXYgPSByb290X2Rl dmljZV9yZWdpc3RlcigidHljcm9vdDAiKTsKCWlmIChJU19FUlIocm9vdF9kZXYpKQoJCXJldHVy biBQVFJfRVJSKHJvb3RfZGV2KTsKCglnX2FueCA9IGt6YWxsb2Moc2l6ZW9mKCpnX2FueCksIEdG UF9LRVJORUwpOwoJaWYgKCFnX2FueCkgewoJCXJvb3RfZGV2aWNlX3VucmVnaXN0ZXIocm9vdF9k ZXYpOwoJCXJldHVybiAtRU5PTUVNOwoJfQoJbXV0ZXhfaW5pdCgmZ19hbngtPmxvY2spOwoJaW5p dF9jb21wbGV0aW9uKCZnX2FueC0+d29ya19pbl91c2UpOwoJSU5JVF9XT1JLKCZnX2FueC0+d29y aywgYW54X3dvcmtfZnVuYyk7CglnX2FueC0+d3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtx dWV1ZSgidHljYW54d3EiKTsKCXJldCA9IHRjX3NldHVwX2NvbW1vbigmZ19hbngtPnR5cGVjLCBy b290X2Rldik7CglpZiAocmV0KQoJCWdvdG8gb3V0OwoKCXJldCA9IHJlZ2lzdGVyX2twcm9iZSgm a3BfdXNlKTsKCWlmIChyZXQpIHsKCQlwcl9lcnIoIlRDMDoga3Byb2JlKHVzZSkgZmFpbGVkICVk XG4iLCByZXQpOwoJCWdvdG8gb3V0OwoJfQoJZ19hbngwID0gZ19hbng7CglhbnhfdXNlX21vZGUg PSB0cnVlOwoKCS8qIDEuIHF1ZXVlIHdvcms7IGl0IHBhcmtzIGluc2lkZSBrcHJvYmUgYXQgaXRz IGZpcnN0IHVzZSwgaGF2aW5nCgkgKiAgICBhbHJlYWR5IHJlYWQgYW1vZGVbMF0gKGF1ZGl0ZWQg Y2hlY2stdGhlbi11c2UgZ2FwKS4gKi8KCXF1ZXVlX3dvcmsoZ19hbngtPndxLCAmZ19hbngtPndv cmspOwoJLyogMi4gd2FpdCB1bnRpbCBwYXJrZWQgKi8KCWlmICghd2FpdF9mb3JfY29tcGxldGlv bl90aW1lb3V0KCZnX2FueC0+d29ya19pbl91c2UsIG1zZWNzX3RvX2ppZmZpZXMoMjAwMCkpKSB7 CgkJcHJfZXJyKCJUQzA6IHdvcmsgbmV2ZXIgcGFya2VkOyBhYm9ydFxuIik7CgkJZ290byBvdXQ7 Cgl9CgkvKiAzLiByZW1vdmUgdGhyZWFkIGZyZWVzIGFsdG1vZGVzK3BhcnRuZXIgdW5kZXIgdGhl IHBhcmtlZCB3b3JrICovCglybSA9IGt0aHJlYWRfcnVuKGFueF9yZW1vdmVfdGhyZWFkLCBnX2Fu eCwgInR5Yy1hbnhybSIpOwoJaWYgKCFJU19FUlIocm0pKQoJCWt0aHJlYWRfc3RvcChybSk7CS8q IGpvaW5zOiByZW1vdmUgY29tcGxldGVzIGluc2lkZSB3aW5kb3cgKi8KCS8qIDQuIHdvcmsgYXV0 by1yZXN1bWVzIGFmdGVyIDQwMG1zIC0+IFVBRiAqLwoJcHJfaW5mbygiVEMwOiBSRVNVTFQgc2Vl IEtBU0FOIHJlcG9ydHMgYWJvdmVcbiIpOwoJbXNsZWVwKDMwMCk7CglhbnhfdW5yZWdpc3Rlcl9h bHRtb2RlX3JlcGxpY2EoZ19hbngpOwoJYW54X3VucmVnaXN0ZXJfcGFydG5lcl9yZXBsaWNhKGdf YW54KTsKb3V0OgoJdW5yZWdpc3Rlcl9rcHJvYmUoJmtwX3VzZSk7CglnX2FueDAgPSBOVUxMOwoJ aWYgKGdfYW54KSB7CgkJaWYgKGdfYW54LT53cSkKCQkJZGVzdHJveV93b3JrcXVldWUoZ19hbngt PndxKTsKCQlrZnJlZShnX2FueCk7CgkJZ19hbnggPSBOVUxMOwoJfQoJcm9vdF9kZXZpY2VfdW5y ZWdpc3Rlcihyb290X2Rldik7CglyZXR1cm4gMDsKfQoKc3RhdGljIGludCBydW5fdGMwYih2b2lk KQp7CglzdHJ1Y3QgZGV2aWNlICpyb290X2RldjsKCXN0cnVjdCB0YXNrX3N0cnVjdCAqcm07Cglp bnQgcmV0OwoKCXJvb3RfZGV2ID0gcm9vdF9kZXZpY2VfcmVnaXN0ZXIoInR5Y3Jvb3QwYiIpOwoJ aWYgKElTX0VSUihyb290X2RldikpCgkJcmV0dXJuIFBUUl9FUlIocm9vdF9kZXYpOwoKCWdfYW54 ID0ga3phbGxvYyhzaXplb2YoKmdfYW54KSwgR0ZQX0tFUk5FTCk7CglpZiAoIWdfYW54KSB7CgkJ cm9vdF9kZXZpY2VfdW5yZWdpc3Rlcihyb290X2Rldik7CgkJcmV0dXJuIC1FTk9NRU07Cgl9Cglt dXRleF9pbml0KCZnX2FueC0+bG9jayk7Cglpbml0X2NvbXBsZXRpb24oJnRjX2RvbmVfd2FpdCk7 CglJTklUX1dPUksoJmdfYW54LT53b3JrLCBhbnhfd29ya19mdW5jKTsKCWdfYW54LT53cSA9IGNy ZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKCJ0eWNhbnh3cWIiKTsKCXJldCA9IHRjX3NldHVw X2NvbW1vbigmZ19hbngtPnR5cGVjLCByb290X2Rldik7CglpZiAocmV0KQoJCWdvdG8gb3V0OwoK CWtwX3VucmVnID0gKHN0cnVjdCBrcHJvYmUpewoJCS5zeW1ib2xfbmFtZSA9ICJ0eXBlY191bnJl Z2lzdGVyX2FsdG1vZGUiLAoJCS5wcmVfaGFuZGxlciA9IGtwX3VucmVnX3ByZSwKCX07CglyZXQg PSByZWdpc3Rlcl9rcHJvYmUoJmtwX3VucmVnKTsKCWlmIChyZXQpIHsKCQlwcl9lcnIoIlRDMGI6 IGtwcm9iZSBmYWlsZWQgJWRcbiIsIHJldCk7CgkJZ290byBvdXQ7Cgl9CgoJLyogMS4gcmVtb3Zl IHRocmVhZCBwYXJrcyBpbnNpZGUga3Byb2JlIEJFRk9SRSBpdHMgdW5yZWdpc3RlciAqLwoJb25l c2hvdF9hcm1lZCA9IHRydWU7CglybSA9IGt0aHJlYWRfcnVuKGFueF9yZW1vdmVfdGhyZWFkLCBn X2FueCwgInR5Yy1hbnhybTBiIik7CglpZiAoSVNfRVJSKHJtKSkgewoJCXByX2VycigiVEMwYjog a3RocmVhZCBmYWlsZWRcbiIpOwoJCWdvdG8gb3V0OwoJfQoJLyogMi4gd2FpdCBwYXJrZWQgKi8K CWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZ0Y19kb25lX3dhaXQsIG1zZWNzX3Rv X2ppZmZpZXMoMjAwMCkpKSB7CgkJcHJfZXJyKCJUQzBiOiByZW1vdmUgbmV2ZXIgcGFya2VkXG4i KTsKCQlrdGhyZWFkX3N0b3Aocm0pOwoJCWdvdG8gb3V0OwoJfQoJLyogMy4gbm93IGxldCB0aGUg d29yayBydW46IGl0IHVucmVnaXN0ZXJzIHRoZSBzYW1lIGFsdG1vZGVzK3BhcnRuZXIKCSAqICAg IChkZXZpY2UgZnJlZWQpIHdoaWxlIHJlbW92ZSBpcyBwYXJrZWQgbWlkLXVucmVnaXN0ZXIgKi8K CXF1ZXVlX3dvcmsoZ19hbngtPndxLCAmZ19hbngtPndvcmspOwoJbXNsZWVwKDEwMCk7CgkvKiA0 LiByZW1vdmUgcmVzdW1lcyAtPiB1bnJlZ2lzdGVyIG9uIGZyZWVkIGRldmljZSAqLwoJcHJfaW5m bygiVEMwYjogcmVtb3ZlIHJlc3VtZXMgYXQgfjMwMG1zXG4iKTsKCW1zbGVlcCg3MDApOwkJCS8q IGxldCBldmVyeXRoaW5nIHNldHRsZSAqLwoJY2FuY2VsX3dvcmtfc3luYygmZ19hbngtPndvcmsp OwoJcHJfaW5mbygiVEMwYjogUkVTVUxUIHNlZSBLQVNBTiByZXBvcnRzIGFib3ZlXG4iKTsKb3V0 OgoJdW5yZWdpc3Rlcl9rcHJvYmUoJmtwX3VucmVnKTsKCWlmIChnX2FueCkgewoJCWlmIChnX2Fu eC0+d3EpCgkJCWRlc3Ryb3lfd29ya3F1ZXVlKGdfYW54LT53cSk7CgkJa2ZyZWUoZ19hbngpOwoJ CWdfYW54ID0gTlVMTDsKCX0KCXJvb3RfZGV2aWNlX3VucmVnaXN0ZXIocm9vdF9kZXYpOwoJcmV0 dXJuIDA7Cn0KCnN0YXRpYyBpbnQga3BfcGFya19wcmUoc3RydWN0IGtwcm9iZSAqcCwgc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpCnsKCXVuc2lnbmVkIGxvbmcgbG9uZyB0MDsKCglpZiAoIW9uZXNob3Rf YXJtZWQpCgkJcmV0dXJuIDA7CglvbmVzaG90X2FybWVkID0gZmFsc2U7Cglwcl9pbmZvKCJUQzE6 IGlycSB0aHJlYWQgcGFya2VkIGF0IHR5cGVjX3VucmVnaXN0ZXJfcGFydG5lciAocGFydG5lcj0l cHgpXG4iLAoJCSh2b2lkICopcmVncy0+ZGkpOwoJY29tcGxldGUoJnRjX2RvbmVfd2FpdCk7Cgl0 MCA9IGt0aW1lX2dldF9tb25vX2Zhc3RfbnMoKTsKCXdoaWxlIChrdGltZV9nZXRfbW9ub19mYXN0 X25zKCkgLSB0MCA8IDQwMFVMTCAqIE5TRUNfUEVSX01TRUMpCgkJY3B1X3JlbGF4KCk7Cglwcl9p bmZvKCJUQzE6IGlycSByZXN1bWVzIHVucmVnaXN0ZXIgKHBhcnRuZXIgbGlrZWx5IGZyZWVkKVxu Iik7CglyZXR1cm4gMDsKfQoKc3RhdGljIGludCBydW5fdGMxKHZvaWQpCnsKCXN0cnVjdCBkZXZp Y2UgKnJvb3RfZGV2OwoJaW50IHJldDsKCglyb290X2RldiA9IHJvb3RfZGV2aWNlX3JlZ2lzdGVy KCJ0eWNyb290MSIpOwoJaWYgKElTX0VSUihyb290X2RldikpCgkJcmV0dXJuIFBUUl9FUlIocm9v dF9kZXYpOwoKCWdfc3R1ID0ga3phbGxvYyhzaXplb2YoKmdfc3R1KSwgR0ZQX0tFUk5FTCk7Cglp ZiAoIWdfc3R1KSB7CgkJcm9vdF9kZXZpY2VfdW5yZWdpc3Rlcihyb290X2Rldik7CgkJcmV0dXJu IC1FTk9NRU07Cgl9Cglpbml0X2NvbXBsZXRpb24oJnRjX2RvbmVfd2FpdCk7Cglpbml0X2NvbXBs ZXRpb24oJmdfc3R1LT5pcnFfcGFya2VkKTsKCXJldCA9IHRjX3NldHVwX2NvbW1vbigmZ19zdHUt PnR5cGVjLCByb290X2Rldik7CglpZiAocmV0KQoJCWdvdG8gb3V0OwoKCWtwX3VucmVnID0gKHN0 cnVjdCBrcHJvYmUpewoJCS5zeW1ib2xfbmFtZSA9ICJ0eXBlY191bnJlZ2lzdGVyX3BhcnRuZXIi LAoJCS5wcmVfaGFuZGxlciA9IGtwX3BhcmtfcHJlLAoJfTsKCXJldCA9IHJlZ2lzdGVyX2twcm9i ZSgma3BfdW5yZWcpOwoJaWYgKHJldCkgewoJCXByX2VycigiVEMxOiBrcHJvYmUgZmFpbGVkICVk XG4iLCByZXQpOwoJCWdvdG8gb3V0OwoJfQoKCS8qIDEuIGlycSB0aHJlYWQgcGFya3MgYXQgaXRz IHVucmVnaXN0ZXIgKHBhcnRuZXIgc3RpbGwgYWxpdmUpICovCglvbmVzaG90X2FybWVkID0gdHJ1 ZTsKCWdfc3R1LT5pcnFfdGhyZWFkID0ga3RocmVhZF9ydW4oc3R1X2lycV90aHJlYWQsIGdfc3R1 LCAidHljLXN0dWlycSIpOwoJaWYgKElTX0VSUihnX3N0dS0+aXJxX3RocmVhZCkpIHsKCQlnX3N0 dS0+aXJxX3RocmVhZCA9IE5VTEw7CgkJZ290byBvdXQ7Cgl9CglpZiAoIXdhaXRfZm9yX2NvbXBs ZXRpb25fdGltZW91dCgmdGNfZG9uZV93YWl0LCBtc2Vjc190b19qaWZmaWVzKDIwMDApKSkgewoJ CXByX2VycigiVEMxOiBpcnEgbmV2ZXIgcGFya2VkXG4iKTsKCQlnb3RvIG91dDsKCX0KCS8qIDIu IHJlbW92ZSBzZXF1ZW5jZSBpbmxpbmUgb24gdGhlIGluc21vZCB0aHJlYWQgKHBhcnRuZXIgc3Rp bGwKCSAqICAgIGFsaXZlIC0+IHVucmVnaXN0ZXIgZnJlZXMgaXQsIHRoZW4gcG9ydCk7IHBhcmtl ZCBpcnEgdGhyZWFkIGlzCgkgKiAgICBvbiBhbm90aGVyIENQVSAqLwoJc3R1X3JlbW92ZV90aHJl YWQoZ19zdHUpOwoJLyogMy4gaXJxIHJlc3VtZXMgLT4gdW5yZWdpc3RlciBvbiBmcmVlZCBwYXJ0 bmVyICovCglwcl9pbmZvKCJUQzE6IFJFU1VMVCBzZWUgS0FTQU4gcmVwb3J0cyBhYm92ZVxuIik7 Cgltc2xlZXAoMzAwKTsKb3V0OgoJdW5yZWdpc3Rlcl9rcHJvYmUoJmtwX3VucmVnKTsKCWlmIChn X3N0dSkgewoJCWlmIChnX3N0dS0+aXJxX3RocmVhZCkKCQkJa3RocmVhZF9zdG9wKGdfc3R1LT5p cnFfdGhyZWFkKTsKCQlrZnJlZShnX3N0dSk7CgkJZ19zdHUgPSBOVUxMOwoJfQoJcm9vdF9kZXZp Y2VfdW5yZWdpc3Rlcihyb290X2Rldik7CglyZXR1cm4gMDsKfQoKLyogLS0tLS0tLS0tLS0tLS0t LSB0YzI6IENhc2UgMS1CIGRlYWRsb2NrIHN0cnVjdHVyZSByZXBsaWNhIC0tLS0tLS0tLS0tLS0t LS0KICogRmFpdGhmdWwgc3RydWN0dXJlIHJlcGxpY2Egb2YgdGhlIGF1ZGl0ZWQgVUNTSSB1bmJp bmQgZGVhZGxvY2s6CiAqICAgLSB1bmJpbmQgdGhyZWFkIGhvbGRzICJjb24tPmxvY2siIGFuZCBj YWxscyBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoKQogKiAgICAgKHVjc2kuYzoyMDAzLTIwMDQg LT4gbW9kZV9zZWxlY3Rpb24uYzoyNzcpOwogKiAgIC0gdGhlIG1vZGUtc2VsZWN0aW9uIHdvcmss IGluc2lkZSBpdHMgYWN0aXZhdGUgd2luZG93LCBtdXN0IHRha2UgdGhlCiAqICAgICBzYW1lIGxv Y2sgdmlhIHRoZSB1Y3NpX2Nvbl9tdXRleF9sb2NrKCkgdHJ5bG9jayBsb29wIHdob3NlIGV4aXQK ICogICAgIGNvbmRpdGlvbiBpcyB0aGUgU1RBTEUgY29uLT5zdGF0dXMgQ09OTkVDVEVEIHNuYXBz aG90CiAqICAgICAodWNzaS5jOjIyNzItMjI3NzsgdWNzaS5oOjQ1NyByZWFkcyAtPnN0YXR1cywg bmV2ZXIgcmVmcmVzaGVkIG9uIHRoZQogKiAgICAgdW5iaW5kIHBhdGgpLgogKiBFeHBlY3RlZCBy ZXN1bHQ6IGJvdGggc2lkZXMgcGFyayBmb3JldmVyOyB0aGUgVk0gaGFuZ3MgdW50aWwgdGltZW91 dC4KICovCnN0cnVjdCB0eWNfZGVhZCB7CglzdHJ1Y3QgbXV0ZXggbG9jazsJCS8qIGNvbi0+bG9j ayBhbmFsb2cgKi8KCWJvb2wgY29ubmVjdGVkX3NuYXBzaG90OwkvKiBjb24tPnN0YXR1cyBDT05O RUNURUQgYml0IChzdGFsZSkgKi8KCXN0cnVjdCBkZWxheWVkX3dvcmsgd29yazsKCXN0cnVjdCBj b21wbGV0aW9uIGluX2xvb3A7CS8qIGhhbmRzaGFrZTogd29yayBpbnNpZGUgdHJ5bG9jayBsb29w ICovCglib29sIGN0bDsJCQkvKiBjdGw9dHJ1ZTogbG9jayBmaXJzdCwgcXVldWUgbGF0ZXIgKi8K fTsKCnN0YXRpYyB2b2lkIGRlYWRfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCnsKCXN0 cnVjdCB0eWNfZGVhZCAqZCA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgdHljX2RlYWQsIHdvcmsu d29yayk7Cglib29sIGxvY2tlZCA9IGZhbHNlOwoKCXByX2luZm8oIlRDMjogd29yayBlbnRlcmVk IGFjdGl2YXRlIHdpbmRvdywgbmVlZHMgY29uLT5sb2NrXG4iKTsKCS8qIGZpcnN0IHRyeWxvY2sg ZmFpbHM6IHVuYmluZCBhbHJlYWR5IGhvbGRzIHRoZSBsb2NrICovCglsb2NrZWQgPSBtdXRleF90 cnlsb2NrKCZkLT5sb2NrKSAhPSAwOwoJaWYgKCFsb2NrZWQpCgkJY29tcGxldGUoJmQtPmluX2xv b3ApOwoJLyogdWNzaV9jb25fbXV0ZXhfbG9jaygpIGxvb3AsIHVjc2kuYzoyMjcyLTIyNzcsIHZl cmJhdGltIHNoYXBlICovCgl3aGlsZSAoZC0+Y29ubmVjdGVkX3NuYXBzaG90ICYmICFsb2NrZWQp IHsKCQlsb2NrZWQgPSBtdXRleF90cnlsb2NrKCZkLT5sb2NrKSAhPSAwOwoJCWlmIChkLT5jb25u ZWN0ZWRfc25hcHNob3QgJiYgIWxvY2tlZCkgewoJCQltc2xlZXAoMjApOwoJCX0KCX0KCWlmIChs b2NrZWQpCgkJbXV0ZXhfdW5sb2NrKCZkLT5sb2NrKTsKCXByX2luZm8oIlRDMjogd29yayBmaW5p c2hlZFxuIik7Cn0KCi8qIGF1ZGl0ZWQgaW50ZXJsZWF2aW5nOiB3b3JrIGVudGVycyB0aGUgbG9v cCBmaXJzdCwgdW5iaW5kIHRoZW4gdGFrZXMgdGhlCiAqIGxvY2sgYW5kIGNhbmNlbHMgLS0gZXhw ZWN0ZWQgcGVybWFuZW50IGhhbmcgKFZNIGtpbGxlZCBieSB0aW1lb3V0KS4gKi8Kc3RhdGljIGlu dCBydW5fdGMyKHZvaWQpCnsKCXN0cnVjdCB0eWNfZGVhZCAqZDsKCglkID0ga3phbGxvYyhzaXpl b2YoKmQpLCBHRlBfS0VSTkVMKTsKCWlmICghZCkKCQlyZXR1cm4gLUVOT01FTTsKCW11dGV4X2lu aXQoJmQtPmxvY2spOwoJaW5pdF9jb21wbGV0aW9uKCZkLT5pbl9sb29wKTsKCWQtPmNvbm5lY3Rl ZF9zbmFwc2hvdCA9IHRydWU7CS8qIGNhYmxlIGNvbm5lY3RlZCBzbmFwc2hvdCAqLwoJZC0+Y3Rs ID0gZmFsc2U7CglJTklUX0RFTEFZRURfV09SSygmZC0+d29yaywgZGVhZF93b3JrX2ZuKTsKCS8q IGF1ZGl0ZWQgb3JkZXI6IHVuYmluZCBob2xkcyBjb24tPmxvY2sgRklSU1QsIHdvcmsgc3RhcnRz IGFuZAoJICogZmFpbHMgaXRzIHRyeWxvY2tzIHdoaWxlIHRoZSBsb2NrIHN0YXlzIGhlbGQgKi8K CW11dGV4X2xvY2soJmQtPmxvY2spOwoJcHJfaW5mbygiVEMyOiB1bmJpbmQgaG9sZHMgY29uLT5s b2NrOyBzY2hlZHVsaW5nIHdvcmtcbiIpOwoJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkLT53b3Jr LCAwKTsKCWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZkLT5pbl9sb29wLCBtc2Vj c190b19qaWZmaWVzKDIwMDApKSkgewoJCXByX2VycigiVEMyOiB3b3JrIG5ldmVyIGVudGVyZWQg bG9vcFxuIik7CgkJbXV0ZXhfdW5sb2NrKCZkLT5sb2NrKTsKCQlrZnJlZShkKTsKCQlyZXR1cm4g LUVUSU1FRE9VVDsKCX0KCXByX2luZm8oIlRDMjogd29yayBsb29waW5nIG9uIGZhaWxlZCB0cnls b2NrczsgdW5iaW5kIGNhbGxzIGNhbmNlbCAoZXhwZWN0IGhhbmcpXG4iKTsKCWNhbmNlbF9kZWxh eWVkX3dvcmtfc3luYygmZC0+d29yayk7CS8qIGF1ZGl0ZWQgaGFuZyAqLwoJcHJfaW5mbygiVEMy OiBjYW5jZWwgcmV0dXJuZWQgKHNob3VsZCBuZXZlciBwcmludClcbiIpOwoJbXV0ZXhfdW5sb2Nr KCZkLT5sb2NrKTsKCWtmcmVlKGQpOwoJcmV0dXJuIDA7Cn0KCi8qIGNvbnRyb2w6IHVuYmluZCB0 YWtlcyB0aGUgbG9jayBCRUZPUkUgdGhlIHdvcmsgZXZlciBydW5zOyBjYW5jZWwoKSBraWxscwog KiB0aGUgcGVuZGluZyB0aW1lciAtLSBubyBkZWFkbG9jayAoYXVkaXRlZCBlc2NhcGUtYnJhbmNo IDEpLiAqLwpzdGF0aWMgaW50IHJ1bl90YzJjdGwodm9pZCkKewoJc3RydWN0IHR5Y19kZWFkICpk OwoKCWQgPSBremFsbG9jKHNpemVvZigqZCksIEdGUF9LRVJORUwpOwoJaWYgKCFkKQoJCXJldHVy biAtRU5PTUVNOwoJbXV0ZXhfaW5pdCgmZC0+bG9jayk7Cglpbml0X2NvbXBsZXRpb24oJmQtPmlu X2xvb3ApOwoJZC0+Y29ubmVjdGVkX3NuYXBzaG90ID0gdHJ1ZTsKCWQtPmN0bCA9IHRydWU7CglJ TklUX0RFTEFZRURfV09SSygmZC0+d29yaywgZGVhZF93b3JrX2ZuKTsKCgltdXRleF9sb2NrKCZk LT5sb2NrKTsKCXByX2luZm8oIlRDMkNUTDogdW5iaW5kIGhvbGRzIGxvY2sgZmlyc3QsIHF1ZXVl aW5nIHdvcmtcbiIpOwoJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkLT53b3JrLCBtc2Vjc190b19q aWZmaWVzKDUwKSk7CgljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmQtPndvcmspOwkvKiBwZW5k aW5nIC0+IGtpbGxlZCAqLwoJcHJfaW5mbygiVEMyQ1RMOiBjYW5jZWwgcmV0dXJuZWQgKGV4cGVj dGVkLCBwZW5kaW5nIGJyYW5jaClcbiIpOwoJbXV0ZXhfdW5sb2NrKCZkLT5sb2NrKTsKCW1zbGVl cCgyMDApOwoJa2ZyZWUoZCk7CglyZXR1cm4gMDsKfQoKLyogLS0tLS0tLS0tLS0tLS0tLSB0Y25h dDogbmF0dXJhbCBoYW1tZXJpbmcgKG5vIHByb2JlcykgLS0tLS0tLS0tLS0tLS0tLSAqLwpzdGF0 aWMgaW50IHRjbmF0X3JvdW5kcyA9IDEwMDA7Cm1vZHVsZV9wYXJhbSh0Y25hdF9yb3VuZHMsIGlu dCwgMDQ0NCk7CgpzdGF0aWMgaW50IHJ1bl90Y25hdCh2b2lkKQp7CglzdHJ1Y3QgZGV2aWNlICpy b290X2RldjsKCWludCByb3VuZDsKCglmb3IgKHJvdW5kID0gMDsgcm91bmQgPCB0Y25hdF9yb3Vu ZHM7IHJvdW5kKyspIHsKCQlyb290X2RldiA9IHJvb3RfZGV2aWNlX3JlZ2lzdGVyKCJ0eWNyb290 bmF0Iik7CgkJaWYgKElTX0VSUihyb290X2RldikpCgkJCXJldHVybiBQVFJfRVJSKHJvb3RfZGV2 KTsKCQlnX2FueCA9IGt6YWxsb2Moc2l6ZW9mKCpnX2FueCksIEdGUF9LRVJORUwpOwoJCWlmICgh Z19hbngpIHsKCQkJcm9vdF9kZXZpY2VfdW5yZWdpc3Rlcihyb290X2Rldik7CgkJCXJldHVybiAt RU5PTUVNOwoJCX0KCQltdXRleF9pbml0KCZnX2FueC0+bG9jayk7CgkJSU5JVF9XT1JLKCZnX2Fu eC0+d29yaywgYW54X3dvcmtfZnVuYyk7CgkJZ19hbngtPndxID0gY3JlYXRlX3NpbmdsZXRocmVh ZF93b3JrcXVldWUoInR5Y25hdHdxIik7CgkJaWYgKHRjX3NldHVwX2NvbW1vbigmZ19hbngtPnR5 cGVjLCByb290X2RldikpIHsKCQkJZGVzdHJveV93b3JrcXVldWUoZ19hbngtPndxKTsKCQkJa2Zy ZWUoZ19hbngpOwoJCQlnX2FueCA9IE5VTEw7CgkJCXJvb3RfZGV2aWNlX3VucmVnaXN0ZXIocm9v dF9kZXYpOwoJCQlyZXR1cm4gLUVGQVVMVDsKCQl9CgkJLyogbmF0dXJhbCByYWNlOiBxdWV1ZSB3 b3JrLCB0aGVuIGltbWVkaWF0ZWx5IHJlbW92ZSAqLwoJCXF1ZXVlX3dvcmsoZ19hbngtPndxLCAm Z19hbngtPndvcmspOwoJCWFueF9yZW1vdmVfdGhyZWFkKGdfYW54KTsKCQljYW5jZWxfd29ya19z eW5jKCZnX2FueC0+d29yayk7CgkJZGVzdHJveV93b3JrcXVldWUoZ19hbngtPndxKTsKCQlrZnJl ZShnX2FueCk7CgkJZ19hbnggPSBOVUxMOwoJCXJvb3RfZGV2aWNlX3VucmVnaXN0ZXIocm9vdF9k ZXYpOwoJCWlmICghKHJvdW5kICUgMTAwKSkKCQkJcHJfaW5mbygiVENOQVQ6IHJvdW5kICVkIGRv bmVcbiIsIHJvdW5kKTsKCX0KCXByX2luZm8oIlRDTkFUOiAlZCByb3VuZHMgZG9uZSAoY2hlY2sg ZG1lc2cgZm9yIEtBU0FOIHJlcG9ydHMpXG4iLAoJCXRjbmF0X3JvdW5kcyk7CglyZXR1cm4gMDsK fQoKLyogLS0tLS0tLS0tLS0tLS0tLSBtb2R1bGUgcGFyYW1zICYgZW50cnkgLS0tLS0tLS0tLS0t LS0tLSAqLwpzdGF0aWMgY2hhciAqYWN0aW9uID0gInN0YXR1cyI7Cm1vZHVsZV9wYXJhbShhY3Rp b24sIGNoYXJwLCAwNDQ0KTsKTU9EVUxFX1BBUk1fREVTQyhhY3Rpb24sICJ0YzB8dGMwYnx0YzF8 dGMyfHRjbmF0fHN0YXR1cyIpOwoKc3RhdGljIGludCB0eWNfcnVuX2FjdGlvbih2b2lkKQp7Cglp ZiAoIXN0cmNtcChhY3Rpb24sICJ0YzAiKSkKCQlyZXR1cm4gcnVuX3RjMCgpOwoJaWYgKCFzdHJj bXAoYWN0aW9uLCAidGMwYiIpKQoJCXJldHVybiBydW5fdGMwYigpOwoJaWYgKCFzdHJjbXAoYWN0 aW9uLCAidGMxIikpCgkJcmV0dXJuIHJ1bl90YzEoKTsKCWlmICghc3RyY21wKGFjdGlvbiwgInRj MiIpKQoJCXJldHVybiBydW5fdGMyKCk7CglpZiAoIXN0cmNtcChhY3Rpb24sICJ0YzJjdGwiKSkK CQlyZXR1cm4gcnVuX3RjMmN0bCgpOwoJaWYgKCFzdHJjbXAoYWN0aW9uLCAidGNuYXQiKSkKCQly ZXR1cm4gcnVuX3RjbmF0KCk7Cglwcl9pbmZvKCJubyBhY3Rpb24sIGRvbmVcbiIpOwoJcmV0dXJu IDA7Cn0KCnN0YXRpYyBpbnQgX19pbml0IHR5Y19pbml0KHZvaWQpCnsKCXByX2luZm8oImFjdGlv bj0lc1xuIiwgYWN0aW9uKTsKCXJldHVybiB0eWNfcnVuX2FjdGlvbigpOwp9Cm1vZHVsZV9pbml0 KHR5Y19pbml0KTsKCnN0YXRpYyB2b2lkIF9fZXhpdCB0eWNfZXhpdCh2b2lkKQp7Cglwcl9pbmZv KCJleGl0XG4iKTsKfQptb2R1bGVfZXhpdCh0eWNfZXhpdCk7Ck1PRFVMRV9MSUNFTlNFKCJHUEwi KTsK ------=_Part_415360_1817415288.1793796878500--