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=1792659436; b=wlyOjFXZE9rLzgkauhWgjoeCa5r9nzGG7h9x6JJFVOHK2CtJ1hnXYBzch5hRyW+CacLH 6N6soIGzM7UaGNjXFbEBQZCf++g19fqaAD6zzhOUymlKu68M/n/euB12DIbfuGOyG80jq T7tAftr6i/HHCCMwNQfXdPN826vDJMrBODgR/zPfL4D2Fh0OsmOhE8SOygwPVIPOgmAek POVtus500OSPx1hMhpUmcbHklShYK0551PYaSkB4ecGiMjOCwXC88UuQjQQ4cfnp2aT9j XfLwLn2JZYVeQWoKLYqjmg45tjwn+w55V8ddIx9ybhrYtePlPZNPcvopNc+sNH8c1pg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792659436; h=DMARC-Filter:Received:X-Originating-IP:Date:X-CM-HeaderCharset:From: To:Cc:Subject:X-Priority:X-Mailer:X-CM-CTRLMSGS:Content-Type: MIME-Version:Message-ID:X-Coremail-Locale:X-CM-TRANSID: X-CM-SenderInfo:X-Coremail-Antispam; bh=y2paGaUAq/CfJme5WJw1fTSxlR0R8QAVctH8m+bqg8Y=; b=MhtKfuu57zKHIEakb4mesWBuT6XqdPlpCrXuGmpqupor7TvTgEujxKy4RQUoWOQ+KRmR YsuO9yrbMemVR58vN/F/+8RKe2XwctAdaSkP+vacUJYDMQBppQPVbKLnIYtM8/xPpNamS bnUvfDaYbkw9z196bjxd/PFiZNwDsnSM3t3UgqPZnTVXQR4LTgSyDFvxEoWKGKVRBGHLl x+GgiKQFWcY0UDOoPZbKrqUDD77E9IR/X/zJkuIe8DkgR4xCMfW9Dk0yFjBpa1XmhZNeJ V6vDY1Ed3uSDDVi/VQ5wuxhygk558LFCYqJqXB0pBuBn+Ih1mVOBtuSh44b5nMZmSlg== 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 B0EAE606A319; Thu, 22 Oct 2026 08:57:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org B0EAE606A319 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.11.162.68] ) by ajax-webmail-app2 (Coremail) ; Thu, 22 Oct 2026 16:57:00 +0800 (GMT+08:00) Date: Thu, 22 Oct 2026 16:57:00 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: =?UTF-8?B?5b6Q5pmX57+U?= To: stefan@datenfreihafen.org, alex.aring@gmail.com, miquel.raynal@bootlin.com Cc: linux-wpan@vger.kernel.org, linux-kernel@vger.kernel.org Subject: ieee802154: mcr20a/mrf24j40/at86rf230: unbind while the SPI completion chain is in flight operates on freed driver data (use-after-free, three same-shaped drivers) X-Priority: 3 X-Mailer: Coremail Webmail Server Version 2025.3-cmXT6 build 20260810(6c94e3b5) Copyright (c) 2002-2026 www.mailtech.cn hust X-CM-CTRLMSGS: =?B?LgYKajiH6nJ5xwDR7hwMki1N8jM= Content-Type: multipart/mixed; boundary="----=_Part_280357_655984024.1792659420630" 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: <4d2e91a4.14801.1a162d3f5d6.Coremail.xuhx@hust.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID:IQEQrMBGb3jcz9lqd_NTAA--.60687W X-CM-SenderInfo: bgsqjkayqyjmo6kx23oohg3hdfq/1tbiAgIIB2rY5eyIwAACs+ X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWkKw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= ------=_Part_280357_655984024.1792659420630 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 VW5iaW5kaW5nIChvciBybW1vZC1pbmcsIG9yIGhvdC11bnBsdWdnaW5nKSBhbnkgb2YgdGhlIHRo cmVlIGluLXRyZWUKaWVlZTgwMjE1NCBTUEkgdHJhbnNjZWl2ZXIgZHJpdmVycyB3aGlsZSB0aGVp ciBJUlEtZHJpdmVuIGNvbXBsZXRpb24KY2hhaW4gaXMgaW4gZmxpZ2h0IGxlYXZlcyB0aGUgY2hh aW4gcnVubmluZyBvbiBmcmVlZCBtZW1vcnk6IHRoZSBhc3luYwpTUEkgbWVzc2FnZXMgYW5kIHRo ZWlyIGNvbXBsZXRpb24gY29udGV4dCBhcmUgb3duZWQgYnkgdGhlIGNvbnRyb2xsZXIKcXVldWUs IGJ1dCB0aGUgY2FsbGJhY2tzIG9ubHkgaG9sZCBiYXJlIHBvaW50ZXJzIHRvIHRoZSBkcml2ZXIg cHJpdmF0ZQpkYXRhIGFuZCByZWdtYXAsIHNvIGFmdGVyIHJlbW92ZSgpIGZyZWVzIHRoZSBwcml2 YXRlIGRhdGEgKGFuZCBkZXZyZXMKbGF0ZXIgZnJlZXMgdGhlIHJlZ21hcCksIHRoZSBzdGlsbC1x dWV1ZWQgY2hhaW4gc3RlcHMgcmVhZCBhbmQgd3JpdGUKZnJlZWQgbWVtb3J5IGFuZCBldmVuIGRl cml2ZSBuZXcgc3BpX2FzeW5jKCkgc3VibWlzc2lvbnMgZnJvbSB0aGUgZnJlZWQKc3BpX2Rldmlj ZSAtLSBhIHVzZS1hZnRlci1mcmVlIGZhbWlseSBjb25maXJtZWQgd2l0aCBLQVNBTiBvbiBtYWlu bGluZQo3LjMgKDQyIHJlcG9ydHMgaW4gb25lIHVuYmluZCwgdGhyZWUtc3RhY2sgY2xvc3VyZSBw cm9iZS91bmJpbmQva3dvcmtlcjsKY2xlYW4gdW5iaW5kIHdoZW4gdGhlIGNoYWluIGhhcHBlbnMg dG8gYmUgaWRsZSkuCgpBbGwgdGhyZWUgZHJpdmVycyBzaGFyZSBvbmUgc2hhcGU6IHRoZSBoYXJk IElSUSBzdWJtaXRzIGFuIGFzeW5jIFNQSQptZXNzYWdlIHdob3NlIGNvbXBsZXRpb24gY2FsbGJh Y2sgKHJ1bm5pbmcgaW4gdGhlIFNQSSBjb250cm9sbGVyIGt3b3JrZXIKY29udGV4dCkgZGVyZWZl cmVuY2VzIHRoZSBkcml2ZXIgcHJpdmF0ZSBkYXRhIGFuZCBpbW1lZGlhdGVseSBzdWJtaXRzCnRo ZSBuZXh0IGNoYWluIHN0ZXAuICBOb3RoaW5nIG9uIHRoZSByZW1vdmUgcGF0aCB3YWl0cyBmb3Ig b3IgcXVpZXNjZXMKdGhhdCBjaGFpbjogc3RvcCgpIG9ubHkgZG9lcyBhIHN5bmNocm9ub3VzIHdy aXRlIGFuZCBkaXNhYmxlX2lycSgpIC0tCndoaWNoIHRoZSBmaXJzdCBjaGFpbiBjYWxsYmFjayB1 bmNvbmRpdGlvbmFsbHkgcmUtZW5hYmxlcwoobWNyMjBhLmM6ODg5LCBtcmYyNGo0MC5jOjEwMjQs IGF0ODZyZjIzMC5jOjc1NiBpbiA3LjMpIC0tIGFuZCB0aGUgU1BJCmNvcmUgb2ZmZXJzIG5vICJk cmFpbiB0aGlzIHNsYXZlJ3MgaW4tZmxpZ2h0IHRyYW5zZmVycyIgcHJpbWl0aXZlLiAgVGhlCm1y ZjI0ajQwIGF1dGhvciBhbHJlYWR5IGxlZnQgYSBUT0RPIGluIHRoZSByZW1vdmUgcGF0aCBkb3Vi dGluZyBleGFjdGx5CnRoaXMgKCJUT0RPOiBXaWxsIGllZWU4MDIxNTRfZnJlZV9kZXZpY2UoKSB3 YWl0IHVudGlsIC0+eG1pdCgpIGlzCmNvbXBsZXRlPyIsIG1yZjI0ajQwLmM6MTM2Nik6IHRoZSBh bnN3ZXIgaXMgbm8sIGFuZCB0aGUgY2hhaW4gZG9lcyBub3QKZXZlbiBuZWVkIGFuIHhtaXQgaW4g cHJvZ3Jlc3MsIG9yZGluYXJ5IFJYIHRyYWZmaWMga2VlcHMgaXQgYWxpdmUuClRyaWdnZXJpbmcg bmVlZHMgYW4gYWRtaW4gYWN0aW9uIChzeXNmcyB1bmJpbmQgLyBybW1vZCAvIGhvdC11bnBsdWcp CnBsdXMgYWN0aXZlIHRyYWZmaWM7IG9uIGEgbG9hZGVkIHRyYW5zY2VpdmVyIHRoZSB3aW5kb3cg aXMgd2lkZS4KClRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbjoKCiogVGVzdCBlbnZpcm9ubWVudCAv IGFmZmVjdGVkIHZlcnNpb24KCiAgTGludXggdmVyc2lvbiA3LjMuMCAoZ2NjIDEzLjMuMCwgR05V IGxkIDIuNDIpICMxIFNNUCBQUkVFTVBUX0RZTkFNSUMKICAtLSB2YW5pbGxhIG1haW5saW5lIDcu MyByZWxlYXNlIHRhcmJhbGwgKGtlcm5lbC5vcmcsIHVubW9kaWZpZWQpLAogIHJlYnVpbHQgd2l0 aCBDT05GSUdfU1BJPXksIENPTkZJR19SRUdNQVBfU1BJPXksIENPTkZJR19JRUVFODAyMTU0PXkK ICAoYWxsIHRocmVlIGRyaXZlcnMpLCBDT05GSUdfREVCVUdfTElTVD15LCBLQVNBTiBlbmFibGVk LCBRRU1VL0tWTQogIHg4Nl82NCBndWVzdC4gIG1jcjIwYS5jIGFuZCBhdDg2cmYyMzAuYyBhcmUg Ynl0ZS1pZGVudGljYWwgaW4gNy4xLjUKICBhbmQgNy4zOyBtcmYyNGo0MC5jIGRpZmZlcnMgYnkg b25lIGluY2x1ZGUgbGluZS4gIExpbmUgbnVtYmVycyBiZWxvdwogIGFyZSBmcm9tIDcuMy4KCiog TWVjaGFuaXNtIChjb21tb24gdG8gdGhlIHRocmVlIGRyaXZlcnM7IG1jcjIwYSBjaXRhdGlvbnMs IHRoZSBvdGhlcgogIHR3byBpbiBicmFja2V0cykKCiAgMS4gT3duZXJzaGlwIGludmVyc2lvbi4g IEFmdGVyIHNwaV9hc3luYygpIHRoZSBtZXNzYWdlIGJlbG9uZ3MgdG8gdGhlCiAgICAgY29udHJv bGxlciBxdWV1ZSBhbmQgaXRzIGNvbXBsZXRpb24gY2FsbGJhY2sgcnVucyBpbiB0aGUKICAgICBj b250cm9sbGVyJ3Mga3dvcmtlciBjb250ZXh0OyB0aGUgY2FsbGJhY2sgY29udGV4dCBob2xkcyBi YXJlCiAgICAgcG9pbnRlcnMgdG8gbHAgKG1jcjIwYS5jIGNoYWluIGNhbGxiYWNrcyBhdCA4ODIt OTI5IGFuZCA3ODAtODQ1CiAgICAgW21yZjI0ajQwLmM6MTAxOS0xMDQwOyBhdDg2cmYyMzAuYyBj aGFpbiA3NDktNzYzIC0+IDczMy03NDcgLT4KICAgICA3MTYtNzMxIC0+IDY4Ny03MTFdKS4gIE5v IHJlZmVyZW5jZSBpcyB0YWtlbiBvbiBhbnkgZHJpdmVyIG9iamVjdCwKICAgICBhbmQgdGhlIFNQ SSBjb3JlIGhhcyBubyBwZXItc2xhdmUgZHJhaW46IHF1ZXVlIHRlYXJkb3duIGhhcHBlbnMKICAg ICBvbmx5IGF0IGNvbnRyb2xsZXIgdW5yZWdpc3Rlci4KCiAgMi4gVGhlIGNoYWluIGlzIHNlbGYt c3VzdGFpbmluZyBhbmQgcmV2aXZlcyB0aGUgSVJRLiAgRWFjaCBjb21wbGV0aW9uCiAgICAgZGVy ZWZlcmVuY2VzIGxwLCBkZXJpdmVzIGFuZCBzdWJtaXRzIHRoZSBuZXh0IG1lc3NhZ2UsIGFuZCB0 aGUKICAgICBmaXJzdCBjaGFpbiBzdGVwIHVuY29uZGl0aW9uYWxseSByZS1lbmFibGVzIHRoZSBj aGlwIElSUQogICAgIChtY3IyMGEuYzo4ODkgW21yZjI0ajQwLmM6MTAyNDsgYXQ4NnJmMjMwLmM6 NzU2XSkuICBzdG9wKCkgaXMgbm90CiAgICAgYSBiYXJyaWVyOiBtY3IyMGFfc3RvcCgpIChtY3Iy MGEuYzo1NDkpIGlzIG9uZSBzeW5jaHJvbm91cyB3cml0ZQogICAgIHBsdXMgZGlzYWJsZV9pcnEo KTsgbXJmMjRqNDBfc3RvcCgpIChtcmYyNGo0MC5jOjYyMCkgZG9lcyBub3QgZXZlbgogICAgIGRp c2FibGUgdGhlIElSUTsgYXQ4NnJmMjMwX3N0b3AoKSAoYXQ4NnJmMjMwLmM6OTI0KSBsaWtld2lz ZS4KICAgICBBIGxhdGUgSVJRIGFmdGVyIHN0b3AoKSBzdGFydHMgYSBmcmVzaCBjaGFpbiBvbiB0 aGUgZHJhaW5pbmcKICAgICBzdGFjay4KCiAgMy4gVGVhcmRvd24gb3JkZXIgbGVhdmVzIHRoZSBj aGFpbiBydW5uaW5nIG9uIGZyZWVkIG9iamVjdHMuCiAgICAgVW5yZWdpc3RlciBjbG9zZXMgdGhl IGludGVyZmFjZSAobmV0L2NvcmUvZGV2LmM6MTI1MTcgIklmIGRldmljZQogICAgIGlzIHJ1bm5p bmcsIGNsb3NlIGl0IGZpcnN0IiAtPiBuZG9fc3RvcCksIHRoZW4KICAgICBpZWVlODAyMTU0X2Zy ZWVfaHcoKSBkcm9wcyB0aGUgZmluYWwgZGV2aWNlIHJlZmVyZW5jZSBhbmQgdGhlCiAgICAgcHJp dmF0ZSBkYXRhIGlzIGtmcmVlKClkIHRvZ2V0aGVyIHdpdGggdGhlIGh3IGluIG9uZSBibG9jawog ICAgIChyZW1vdmUoKTogbWNyMjBhLmM6MTMyNiBbbXJmMjRqNDAuYzoxMzU4OyBhdDg2cmYyMzAu YzoxNjMyXSk7CiAgICAgZGV2cmVzIGZyZWVzIHRoZSByZWdtYXAgb25seSBhZnRlciByZW1vdmUo KSByZXR1cm5zLiAgQm90aCBmcmVlcwogICAgIGhhcHBlbiB3aGlsZSBjaGFpbiBtZXNzYWdlcyBt YXkgc3RpbGwgc2l0IGluIHRoZSBjb250cm9sbGVyIHF1ZXVlCiAgICAgLS0gdGhlIGt3b3JrZXIg dGhlbiBleGVjdXRlcyB0aGUgY2FsbGJhY2tzIG9uIGZyZWVkIGxwIChyZWFkIGFuZAogICAgIHdy aXRlKSwgZGVyZWZlcmVuY2VzIGZyZWVkIGxwLT5zcGkgdG8gZGVyaXZlIGZ1cnRoZXIgc3BpX2Fz eW5jKCkKICAgICBjYWxscywgYW5kIHJlZ21hcCBhc3luYyB3cml0ZXMgY29tcGxldGVkIGFmdGVy IHRoZSBkZXZyZXMgZnJlZQogICAgIHRvdWNoIHRoZSBmcmVlZCBtYXAgKHRoZSByZWdtYXAgY29y ZSBoYXMgaXRzIG93biBsaWZldGltZSBnYXAKICAgICBoZXJlLCB3aGljaCBJIHdpbGwgcmVwb3J0 IHNlcGFyYXRlbHkpLgoKICA0LiBTZWNvbmRhcnkgZWZmZWN0czogYSBsYXRlIGllZWU4MDIxNTRf cnhfaXJxc2FmZSgpIHJlLXNjaGVkdWxlcwogICAgIHRoZSBhbHJlYWR5LWtpbGxlZCBtYWM4MDIx NTQgdGFza2xldAogICAgIChuZXQvbWFjODAyMTU0L3J4LmM6NTIzLTUyNCB2cyB0aGUgdGFza2xl dF9raWxsIGF0CiAgICAgbmV0L21hYzgwMjE1NC9tYWluLmM6Mjc5LTI4MCksIHByb2Nlc3Npbmcg ZnJhbWVzIG9uIGEgaGFsZi1kaXNtYW50bGVkCiAgICAgc3RhY2sgb3IgbGVha2luZyB0aGUgc2ti OyBlbmFibGVfaXJxKCkgbWF5IGFjdCBvbiB0aGUgSVJRIGFmdGVyCiAgICAgZGV2bSBmcmVlX2ly cSgpLgoKKiBFdmlkZW5jZSAoNy4zLCBLQVNBTikKCiAgUmVwcm9kdWNlciBhdHRhY2hlZCAobWNy c2ltLmMpOiBhIHNvZnR3YXJlLWxvb3BiYWNrIFNQSSBjb250cm9sbGVyCiAgcGx1cyBhIGZ1bmN0 aW9uLWZvci1mdW5jdGlvbiBtaXJyb3Igb2YgdGhlIHJlYWwgbWNyMjBhIG1lc3NhZ2UgZmxvdwog IChzYW1lIGNoYWluIHNoYXBlLCBzYW1lIHN0b3AvcmVtb3ZlIHN0cnVjdHVyZSwgc2FtZSBkZXZt IHJlZ21hcDsKICBzaW11bGF0ZWQgY2hpcCBJUlEgKyBwZXItbWVzc2FnZSBjb250cm9sbGVyIGRl bGF5IHRvIGtlZXAgdGhlIGNoYWluCiAgdmlzaWJseSBpbiBmbGlnaHQpLiAgVXNhZ2U6CgogICAg aW5zbW9kIG1jcnNpbS5rbyBpcnFfcGVyaW9kX21zPTQwIHhmZXJfZGVsYXlfbXM9MTIwICAgIyBj aGFpbiBidXN5CiAgICBzbGVlcCAzCiAgICBlY2hvIHNwaTAuMCA+IC9zeXMvYnVzL3NwaS9kcml2 ZXJzL21jcnNpbS91bmJpbmQgICAgICAjIHRoZSBtb2R1bGUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJpbnRzIHRoZSBleGFjdCBCREYgdG8gdW5iaW5kCiAgICAjIHdh dGNoIGRtZXNnIGZvciB0aGUgbmV4dCBzZWNvbmRzCgogIE9uZSB1bmJpbmQgZHVyaW5nIGFuIGFj dGl2ZSBjaGFpbiBwcm9kdWNlZCA0MiBLQVNBTiByZXBvcnRzOgogIHNwaV9maW5hbGl6ZV9jdXJy ZW50X21lc3NhZ2UgMjAsIF9fc3BpX3VubWFwX21zZyAxMSwgdGhlIG1pcnJvcmVkCiAgY2hhaW4g Y2FsbGJhY2sgKG1jcnNpbV9pcnFfY2xlYW5fY29tcGxldGUpIDYsIHNwaV9yZXNfcmVsZWFzZSAy LAogIHRyYW5zZmVyX29uZV9tZXNzYWdlIDEsIHBsdXMgdHdvIHJlcG9ydHMgb2YgbGF0ZSBjYWxs YmFja3MgY2FsbGluZwogIHNwaV9hc3luYygpIGl0c2VsZiBvbiB0aGUgZnJlZWQgc3BpX2Rldmlj ZSAobnVsbC1wdHItZGVyZWYgLwogIHNsYWItb3V0LW9mLWJvdW5kcyBjYXVnaHQgYnkgS0FTQU4g YmVmb3JlIHRoZSBkZXJlZiBsYW5kZWQpLiAgRmlyc3QKICByZXBvcnQsIHRocmVlLXN0YWNrIGNs b3N1cmU6CgogICAgYWNjZXNzOiBzbGFiLXVzZS1hZnRlci1mcmVlIGluIHNwaV9maW5hbGl6ZV9j dXJyZW50X21lc3NhZ2UKICAgICAgICAgICAgYnkgdGFzayBzcGkwIChjb250cm9sbGVyIGt3b3Jr ZXIpCiAgICBhbGxvY2F0ZWQ6IG1jcnNpbV9wcm9iZSA8LSByZWFsbHlfcHJvYmUKICAgIGZyZWVk OiAgICAga2ZyZWUgPC0gbWNyc2ltX3JlbW92ZSA8LSBkZXZpY2VfcmVsZWFzZV9kcml2ZXJfaW50 ZXJuYWwKICAgICAgICAgICAgICAgPC0gdW5iaW5kX3N0b3JlCgogIE5lZ2F0aXZlIGNvbnRyb2w6 IHdpdGggdGhlIGNoYWluIGlkbGUgKG5vIHRyYW5zZmVyIGRlbGF5KSwgdGhlIHNhbWUKICB1bmJp bmQgcGF0aCBwcm9kdWNlcyB6ZXJvIHJlcG9ydHMgLS0gdGhlIHN5bmNocm9ub3VzIHdyaXRlIGlu IHJlbW92ZQogIGFjdHMgYXMgYW4gYWNjaWRlbnRhbCBkcmFpbiBiYXJyaWVyIGluIEZJRk8gb3Jk ZXIsIHNvIHRoZSBkZWZlY3QgaXMKICBzcGVjaWZpY2FsbHkgdGhlIGluLWZsaWdodCBjaGFpbiBj cm9zc2luZyB0aGUgZnJlZSwgbWF0Y2hpbmcgdGhlCiAgc291cmNlIGFuYWx5c2lzIGFib3ZlLgoK ICBUcmlnZ2VyaW5nIG9uIHJlYWwgaGFyZHdhcmU6IHVuYmluZC9ybW1vZC9ob3QtdW5wbHVnIHdo aWxlIHRoZQogIHRyYW5zY2VpdmVyIHJlY2VpdmVzIG9yIHRyYW5zbWl0czsgd2luZG93cyBhcmUg bWlsbGlzZWNvbmRzIHdpZGUgYW5kCiAgd2lkZW4gdGhyb3VnaCB0aGUgZW5hYmxlX2lycSByZXZp dmFsOyBubyB1bnVzdWFsIHNjaGVkdWxpbmcgbmVlZGVkLgogIFRoZSBzYW1lLXNoYXBlZCBzb3Vy Y2UgaXMgcHJlc2VudCBpbiBhbGwgdGhyZWUgZHJpdmVycyAoY2l0ZWQKICBhYm92ZSk7IHRoZSBk eW5hbWljIHJ1biBkZW1vbnN0cmF0ZXMgdGhlIGZhbWlseSByb290IGNhdXNlIG9uIHRoZQogIG1j cjIwYS1zaGFwZWQgaW5zdGFuY2UgcGx1cyB0aGUgU1BJLWNvcmUgYmVoYXZpb3IgdGhhdCBhbGwg dGhyZWUKICBzaGFyZS4KCgpUaGFua3MgZm9yIHRha2luZyBhIGxvb2suCgpSZWdhcmRzLApIYW54 aWFuZyBYdQp4dWh4QGh1c3QuZWR1LmNuCgoK ------=_Part_280357_655984024.1792659420630 Content-Type: text/plain; name=mcrsim.c Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mcrsim.c" Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLyoKICogbWNyc2ltLmMgLSBkeW5h bWljIHZlcmlmaWNhdGlvbiBmb3IgSFYtMiAvIE4tMSBvZiB0aGUgZHJpdmVycy9iYXNlCiAqIHJh Y2UtY29uZGl0aW9uIGF1ZGl0IChtY3IyMGEtZmFtaWx5IGFzeW5jIFNQSSBjb21wbGV0aW9uIGNo YWlucyB2cwogKiB0ZWFyZG93biksIGFnYWluc3QgdGhlIEtBU0FOK0RFQlVHX0xJU1Qga2VybmVs IChidWlsZC1rYXNhbi1zcGkpLgogKgogKiBJdCByZXByb2R1Y2VzIHRoZSBtY3IyMGEgc3RydWN0 dXJlIGZhaXRoZnVsbHkgYXQgdGhlIEFQSSBsZXZlbCwgd2l0aAogKiBaRVJPIGtlcm5lbC1zb3Vy Y2UgbW9kaWZpY2F0aW9uOgogKgogKiAgIC0gYSBmYWtlLCBzb2Z0d2FyZS1sb29wYmFjayBTUEkg Y29udHJvbGxlciAocXVldWUtYmFzZWQsCiAqICAgICB0cmFuc2Zlcl9vbmVfbWVzc2FnZSArIHNw aV9maW5hbGl6ZV9jdXJyZW50X21lc3NhZ2UpLCB3aGljaCBrZWVwcwogKiAgICAgcHJvY2Vzc2lu ZyBpdHMgcXVldWUgaW5kZXBlbmRlbnRseSBvZiBzbGF2ZS1kcml2ZXIgYmluZGluZywKICogICAg IGV4YWN0bHkgbGlrZSBhIHJlYWwgY29udHJvbGxlci4gIEFuIG9wdGlvbmFsIHBlci1tZXNzYWdl IGRlbGF5CiAqICAgICAoeGZlcl9kZWxheV9tcykgd2lkZW5zIHRoZSBuYXR1cmFsIHdpbmRvd3Mg Zm9yIG9ic2VydmF0aW9uLgogKiAgIC0gb25lIGZha2Ugc2xhdmUgZGV2aWNlICJtY3JzaW0iIGJv dW5kIHRvIGEgZHJpdmVyIHdob3NlIHByaXZhdGUKICogICAgIGRhdGEgKGxwKSBpcyBhIHBsYWlu IGt6YWxsb2MgKE5PVCBkZXZtKSwgZnJlZWQgZGlyZWN0bHkgaW4KICogICAgIC5yZW1vdmUganVz dCBsaWtlIGllZWU4MDIxNTRfZnJlZV9odygpIGZyZWVzIHRoZSBzaW5nbGUKICogICAgIHdwYW5f cGh5K2xvY2FsK2xwIGFsbG9jYXRpb24gaW5zaWRlIG1jcjIwYV9yZW1vdmUoKS4KICogICAtIGFu IG1jcjIwYS1zaGFwZWQgYXN5bmNocm9ub3VzIGNvbXBsZXRpb24gY2hhaW4gZHJpdmVuIGJ5IGEK ICogICAgIHBlcmlvZGljIGRlbGF5ZWRfd29yayB0aGF0IHBsYXlzIHRoZSByb2xlIG9mIHRoZSBj aGlwIElSUQogKiAgICAgKGluaXRpYXRvciBvbmx5OyB0aGUgY2hhaW4gaXRzZWxmIHN1cnZpdmVz IG9uIGl0cyBvd24pOgogKgogKiAgICAgICBzaW1faXJxKGR3b3JrKSAtPiBzcGlfYXN5bmMoJmxw LT5pcnFfbXNnKQogKiAgICAgICAgIC0+IGlycV9zdGF0dXNfY29tcGxldGUgOiByZWdtYXBfdXBk YXRlX2JpdHNfYXN5bmMobHAtPnJlZ21hcCkKICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKyBzcGlfYXN5bmMoJmxwLT5yZWdfbXNnKQogKiAgICAgICAgIC0+IGlycV9jbGVhbl9j b21wbGV0ZSAgOiByZWFkcyBscC0+aXJxX2RhdGEsIGRpc3BhdGNoZXMKICogICAgICAgICAtPiBo YW5kbGVfcnggICAgICAgICAgIDogcmVmaWxscyBhbmQgcmVzdWJtaXRzICZscC0+cmVnX21zZwog KiAgICAgICAgIC0+IHJ4X3JlYWRfbGVuX2NvbXBsZXRlOiBzcGlfYXN5bmMoJmxwLT5yeF9idWZf bXNnKQogKiAgICAgICAgIC0+IHJ4X2J1Zl9jb21wbGV0ZSAgICAgOiByZWFkcyBscC0+cnhfYnVm LCB0aGVuCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ21hcF91cGRhdGVf Yml0c19hc3luYyhscC0+cmVnbWFwKQogKgogKiAgICAgQWxsIGNhbGxiYWNrcyBkZXJlZmVyZW5j ZSB0aGUgcmF3IGxwIHBvaW50ZXI7IGxwLT5yZWdfbXNnIGlzCiAqICAgICBzaGFyZWQgYnkgdGhl IGNoYWluIEFORCBieSB0aGUgInhtaXQiIHBhdGggKE4tMSkuCiAqICAgLSByZWdtYXAgaXMgZGV2 bV9yZWdtYXBfaW5pdF9zcGkoKTogZnJlZWQgYnkgZGV2cmVzIEFGVEVSCiAqICAgICAucmVtb3Zl IHJldHVybnMgKGF1dGhlbnRpYyBkZC5jIG9yZGVyaW5nKSwgd2hpbGUgY2hhaW4gY2FsbGJhY2tz CiAqICAgICBrZWVwIGNhbGxpbmcgcmVnbWFwX3VwZGF0ZV9iaXRzX2FzeW5jIChIVi0yIHN0ZXAg NiA9IEhWLTEgd2lkZQogKiAgICAgd2luZG93IHRocm91Z2ggdGhlIHJlYWwgcmVnbWFwLXNwaSBw YXRoKS4KICoKICogRmlkZWxpdHkgYm91bmRhcmllcyAoZG9jdW1lbnRlZCBpbiB0aGUgYXVkaXQg cmVwb3J0KToKICogICAtIHRoZSBjaGlwIElSUSBpcyBzaW11bGF0ZWQgYnkgYSBwZXJpb2RpYyB3 b3JrICh0aGUgaW5pdGlhdG9yKTsKICogICAgIHRoZSBwcm9wZXJ0eSB1bmRlciB0ZXN0IGlzIHRo ZSBjaGFpbidzIHN1cnZpdmFsIHBhc3QgdW5iaW5kLAogKiAgICAgbm90IHRoZSBJUlEgaXRzZWxm OwogKiAgIC0gdGhlIGllZWU4MDIxNTQvbWFjODAyMTU0IHVwcGVyIGxheWVyIGlzIHJlcGxhY2Vk IGJ5IGRpcmVjdAogKiAgICAgbG9nLWFuZC1yZXN1Ym1pdDsKICogICAtIE4tMSdzIG5hdHVyYWwg cHJvYmFiaWxpc3RpYyBjb2xsaXNpb24gaXMgbWFkZSBuZWFyLWNlcnRhaW4gYnkKICogICAgIHhm ZXJfZGVsYXlfbXMgKGNvbnRyb2xsZWQgd2luZG93KSwgcGx1cyBhIG5hdHVyYWwgaGFtbWVyIG1v ZGUuCiAqCiAqIEFjdGlvbnMgKGVjaG8gLi4uID4gL3N5cy9tb2R1bGUvbWNyc2ltL3BhcmFtZXRl cnMvYWN0aW9uKToKICogICBydW4gPG1zPiAgICAgICAgICA6IGtlZXAgdGhlIGNoYWluIHJ1bm5p bmcgZm9yIG1zIChzdGF0cyBwcmludGVkKQogKiAgIHhtaXQgPG4+IDx1cz4gICAgIDogTi0xOiBr dGhyZWFkIGxvb3BzIHRoZSBtY3IyMGFfeG1pdC1zaGFwZWQgYm9keQogKiAgICAgICAgICAgICAg ICAgICAgICAgKGZpbGxzIGxwLT5yZWdfbXNnICsgc3BpX2FzeW5jKSBuIHRpbWVzCiAqICAgc3lu Y3Byb2JlICAgICAgICAgOiBOLTEgb3V0Y29tZSBwcm9iZTogb25lIHN5bmMgcmVnbWFwIG9wIHdp dGggYQogKiAgICAgICAgICAgICAgICAgICAgICAgNXMgaGFuZyB3YXRjaGRvZyAob3JwaGFuZWQt bWVzc2FnZSBldmlkZW5jZSkKICogICBzdGF0dXMgICAgICAgICAgICA6IHN0YXRpc3RpY3MKICog VW5iaW5kIGZvciBIVi0yIGlzIGRyaXZlbiBmcm9tIHRoZSBWTSBpbml0IHNjcmlwdCB2aWEKICog ICBlY2hvIHNwaUIuQyA+IC9zeXMvYnVzL3NwaS9kcml2ZXJzL21jcnNpbS91bmJpbmQKICovCiNk ZWZpbmUgcHJfZm10KGZtdCkgIk1DUlNJTTogIiBmbXQKCiNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgojaW5j bHVkZSA8bGludXgva3RocmVhZC5oPgojaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KI2luY2x1ZGUg PGxpbnV4L3dvcmtxdWV1ZS5oPgojaW5jbHVkZSA8bGludXgvc2xhYi5oPgojaW5jbHVkZSA8bGlu dXgvc3BpL3NwaS5oPgojaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CiNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4KI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgojaW5jbHVkZSA8bGlu dXgva3RpbWUuaD4KI2luY2x1ZGUgPGxpbnV4L2F0b21pYy5oPgoKLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi8q IHR1bmFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKi8KCnN0YXRpYyBpbnQgaXJxX3BlcmlvZF9tcyA9IDQwOwptb2R1bGVfcGFy YW0oaXJxX3BlcmlvZF9tcywgaW50LCAwNjAwKTsKTU9EVUxFX1BBUk1fREVTQyhpcnFfcGVyaW9k X21zLCAic2ltdWxhdGVkIGNoaXAgSVJRIHBlcmlvZCAoY2hhaW4gaW5pdGlhdG9yKSIpOwoKc3Rh dGljIGludCB4ZmVyX2RlbGF5X21zID0gODA7Cm1vZHVsZV9wYXJhbSh4ZmVyX2RlbGF5X21zLCBp bnQsIDA2MDApOwpNT0RVTEVfUEFSTV9ERVNDKHhmZXJfZGVsYXlfbXMsICJwZXItbWVzc2FnZSBk ZWxheSBpbnNpZGUgdGhlIGZha2UgY29udHJvbGxlciAoY29udHJvbGxlZCB3aW5kb3cpIik7Cgov KiBmYWtlIGNoaXAgcmVnaXN0ZXJzIChtY3IyMGEgbmFtZXMga2VwdCBmb3IgdHJhY2VhYmlsaXR5 KSAqLwojZGVmaW5lIERBUl9JUlFfU1RTMQkweDAyCiNkZWZpbmUgREFSX1BIWV9DVFJMMQkweDEw CiNkZWZpbmUgREFSX1JYX0ZSTV9MRU4JMHgxMwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi8qIGZha2Ugc29m dHdhcmUtbG9vcGJhY2sgU1BJIGNvbnRyb2xsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKi8KCiNkZWZpbmUgU0lNX0NTX01BWAk0CgpzdHJ1Y3QgbWNyc2ltX2N0cmwgewoJc3RydWN0 IHBsYXRmb3JtX2RldmljZQkqcGRldjsKCXN0cnVjdCBzcGlfY29udHJvbGxlcgkqY3RscjsKCXU4 CQkJcmVnZmlsZVtTSU1fQ1NfTUFYXVsxMjhdOwoJdTgJCQlhZGRyW1NJTV9DU19NQVhdOwoJYm9v bAkJCXJkW1NJTV9DU19NQVhdOwp9OwoKc3RhdGljIHN0cnVjdCBtY3JzaW1fY3RybCAqZ19jdHJs OwpzdGF0aWMgc3RydWN0IHNwaV9kZXZpY2UgKmdfc3BpZGV2OwoKc3RhdGljIGF0b21pY19sb25n X3Qgc3RhdF9tc2dzID0gQVRPTUlDX0xPTkdfSU5JVCgwKTsKc3RhdGljIGF0b21pY19sb25nX3Qg c3RhdF9kZWxheWVkID0gQVRPTUlDX0xPTkdfSU5JVCgwKTsKc3RhdGljIGF0b21pY19sb25nX3Qg c3RhdF9pcnFfc3VibWl0ID0gQVRPTUlDX0xPTkdfSU5JVCgwKTsKc3RhdGljIGF0b21pY19sb25n X3Qgc3RhdF9jaGFpbl9zdGVwcyA9IEFUT01JQ19MT05HX0lOSVQoMCk7CnN0YXRpYyBhdG9taWNf bG9uZ190IHN0YXRfeG1pdCA9IEFUT01JQ19MT05HX0lOSVQoMCk7CnN0YXRpYyBhdG9taWNfbG9u Z190IHN0YXRfYXN5bmNfY2FsbHMgPSBBVE9NSUNfTE9OR19JTklUKDApOwoKc3RhdGljIHZvaWQg c2ltX2hhbmRsZV9tZXNzYWdlKHN0cnVjdCBtY3JzaW1fY3RybCAqYywgc3RydWN0IHNwaV9tZXNz YWdlICptKQp7CglzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp4ZmVyOwoJdTggY3MgPSBtLT5zcGktPmNo aXBfc2VsZWN0WzBdOwoJdW5zaWduZWQgaW50IGk7CgoJbGlzdF9mb3JfZWFjaF9lbnRyeSh4ZmVy LCAmbS0+dHJhbnNmZXJzLCB0cmFuc2Zlcl9saXN0KSB7CgkJY29uc3QgdTggKnR4ID0geGZlci0+ dHhfYnVmOwoJCXU4ICpyeCA9IHhmZXItPnJ4X2J1ZjsKCgkJZm9yIChpID0gMDsgaSA8IHhmZXIt PmxlbjsgaSsrKSB7CgkJCWlmICh0eCkgewoJCQkJdTggYiA9IHR4W2ldOwoKCQkJCWlmIChpID09 IDApIHsKCQkJCQljLT5hZGRyW2NzXSA9IGIgJiAweDdmOwoJCQkJCWMtPnJkW2NzXSA9ICEhKGIg JiAweDgwKTsKCQkJCX0gZWxzZSBpZiAoIWMtPnJkW2NzXSkgewoJCQkJCWMtPnJlZ2ZpbGVbY3Nd W2MtPmFkZHJbY3NdICYgMHg3Zl0gPSBiOwoJCQkJCWMtPmFkZHJbY3NdKys7CgkJCQl9CgkJCX0K CQkJaWYgKHJ4KQoJCQkJcnhbaV0gPSBjLT5yZWdmaWxlW2NzXVtjLT5hZGRyW2NzXSsrICYgMHg3 Zl07CgkJfQoJCW0tPmFjdHVhbF9sZW5ndGggKz0geGZlci0+bGVuOwoJfQp9CgpzdGF0aWMgaW50 IG1jcnNpbV90cmFuc2Zlcl9vbmVfbWVzc2FnZShzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIs CgkJCQkgICAgICAgc3RydWN0IHNwaV9tZXNzYWdlICptKQp7CglhdG9taWNfbG9uZ19pbmMoJnN0 YXRfbXNncyk7CglpZiAoeGZlcl9kZWxheV9tcyA+IDApIHsKCQlhdG9taWNfbG9uZ19pbmMoJnN0 YXRfZGVsYXllZCk7CgkJbXNsZWVwKHhmZXJfZGVsYXlfbXMpOwoJfQoJc2ltX2hhbmRsZV9tZXNz YWdlKHNwaV9jb250cm9sbGVyX2dldF9kZXZkYXRhKGN0bHIpLCBtKTsKCW0tPnN0YXR1cyA9IDA7 CglzcGlfZmluYWxpemVfY3VycmVudF9tZXNzYWdlKGN0bHIpOwoJcmV0dXJuIDA7Cn0KCi8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSAqLwovKiBtY3IyMGEtc2hhcGVkIHNsYXZlIGRyaXZlciAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICovCgpzdHJ1Y3QgbWNyc2ltX2xwIHsKCXN0cnVjdCBz cGlfZGV2aWNlCSpzcGk7CglzdHJ1Y3QgcmVnbWFwCQkqcmVnbWFwOwoKCXN0cnVjdCBzcGlfbWVz c2FnZQlpcnFfbXNnOwoJc3RydWN0IHNwaV90cmFuc2ZlcglpcnFfeGhkcjsKCXN0cnVjdCBzcGlf dHJhbnNmZXIJaXJxX3hkYXRhOwoJdTgJCQlpcnFfaGRyOwoJdTgJCQlpcnFfZGF0YVsyXTsKCglz dHJ1Y3Qgc3BpX21lc3NhZ2UJcmVnX21zZzsJCS8qIFNIQVJFRCBieSBjaGFpbiArIHhtaXQgKE4t MSkgKi8KCXN0cnVjdCBzcGlfdHJhbnNmZXIJcmVnX3hjbWQ7CglzdHJ1Y3Qgc3BpX3RyYW5zZmVy CXJlZ194ZGF0YTsKCXU4CQkJcmVnX2NtZDsKCXU4CQkJcmVnX2RhdGFbNF07CgoJc3RydWN0IHNw aV9tZXNzYWdlCXJ4X2J1Zl9tc2c7CglzdHJ1Y3Qgc3BpX3RyYW5zZmVyCXJ4X3hoZHI7CglzdHJ1 Y3Qgc3BpX3RyYW5zZmVyCXJ4X3hidWY7CglzdHJ1Y3Qgc3BpX3RyYW5zZmVyCXJ4X3hscWk7Cgl1 OAkJCXJ4X2hkcjsKCXU4CQkJcnhfYnVmWzMyXTsKCXU4CQkJcnhfbHFpOwoKCXN0cnVjdCBkZWxh eWVkX3dvcmsJc2ltX2lycTsJLyogY2hpcC1JUlEgaW5pdGlhdG9yICovCglpbnQJCQlhbGl2ZTsK CWludAkJCWNoYWluX2J1c3k7CS8qIElSUS1saW5lIGdhdGluZyBhbmFsb2c6IHRoZSByZWFsIGNo aXAKCQkJCQkgKiBkb2VzIG5vdCByZS1yYWlzZSB0aGUgSVJRIHdoaWxlIHRoZQoJCQkJCSAqIGNo YWluIG93bnMgaXQgKElTUiBkaXNhYmxlcyBpdCkgKi8KfTsKCnN0YXRpYyB2b2lkIG1jcnNpbV9p cnFfc3RhdHVzX2NvbXBsZXRlKHZvaWQgKmNvbnRleHQpOwpzdGF0aWMgdm9pZCBtY3JzaW1fcnhf YnVmX2NvbXBsZXRlKHZvaWQgKmNvbnRleHQpOwoKc3RhdGljIHZvaWQgc2V0dXBfbWVzc2FnZXMo c3RydWN0IG1jcnNpbV9scCAqbHApCnsKCXNwaV9tZXNzYWdlX2luaXQoJmxwLT5pcnFfbXNnKTsK CWxwLT5pcnFfbXNnLmNvbnRleHQgPSBscDsKCWxwLT5pcnFfbXNnLmNvbXBsZXRlID0gbWNyc2lt X2lycV9zdGF0dXNfY29tcGxldGU7CglscC0+aXJxX3hoZHIubGVuID0gMTsKCWxwLT5pcnFfeGhk ci50eF9idWYgPSAmbHAtPmlycV9oZHI7CglscC0+aXJxX3hoZHIucnhfYnVmID0gJmxwLT5pcnFf aGRyOwoJbHAtPmlycV94ZGF0YS5sZW4gPSAyOwoJbHAtPmlycV94ZGF0YS5yeF9idWYgPSBscC0+ aXJxX2RhdGE7CglzcGlfbWVzc2FnZV9hZGRfdGFpbCgmbHAtPmlycV94aGRyLCAmbHAtPmlycV9t c2cpOwoJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJmxwLT5pcnFfeGRhdGEsICZscC0+aXJxX21zZyk7 CgoJc3BpX21lc3NhZ2VfaW5pdCgmbHAtPnJlZ19tc2cpOwoJbHAtPnJlZ19tc2cuY29udGV4dCA9 IGxwOwoJbHAtPnJlZ194Y21kLmxlbiA9IDE7CglscC0+cmVnX3hjbWQudHhfYnVmID0gJmxwLT5y ZWdfY21kOwoJbHAtPnJlZ194Y21kLnJ4X2J1ZiA9ICZscC0+cmVnX2NtZDsKCWxwLT5yZWdfeGRh dGEucnhfYnVmID0gbHAtPnJlZ19kYXRhOwoJbHAtPnJlZ194ZGF0YS50eF9idWYgPSBscC0+cmVn X2RhdGE7CglzcGlfbWVzc2FnZV9hZGRfdGFpbCgmbHAtPnJlZ194Y21kLCAmbHAtPnJlZ19tc2cp OwoJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJmxwLT5yZWdfeGRhdGEsICZscC0+cmVnX21zZyk7CgoJ c3BpX21lc3NhZ2VfaW5pdCgmbHAtPnJ4X2J1Zl9tc2cpOwoJbHAtPnJ4X2J1Zl9tc2cuY29udGV4 dCA9IGxwOwoJbHAtPnJ4X2J1Zl9tc2cuY29tcGxldGUgPSBtY3JzaW1fcnhfYnVmX2NvbXBsZXRl OwoJbHAtPnJ4X3hoZHIubGVuID0gMTsKCWxwLT5yeF94aGRyLnR4X2J1ZiA9ICZscC0+cnhfaGRy OwoJbHAtPnJ4X3hoZHIucnhfYnVmID0gJmxwLT5yeF9oZHI7CglscC0+cnhfeGJ1Zi5yeF9idWYg PSBscC0+cnhfYnVmOwoJbHAtPnJ4X3hscWkubGVuID0gMTsKCWxwLT5yeF94bHFpLnJ4X2J1ZiA9 ICZscC0+cnhfbHFpOwoJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJmxwLT5yeF94aGRyLCAmbHAtPnJ4 X2J1Zl9tc2cpOwoJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJmxwLT5yeF94YnVmLCAmbHAtPnJ4X2J1 Zl9tc2cpOwoJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJmxwLT5yeF94bHFpLCAmbHAtPnJ4X2J1Zl9t c2cpOwp9CgovKiAtLS0tIHRoZSBjaGFpbiAobWlycm9ycyBtY3IyMGEuYyBjYWxsYmFja3Mgb25l LXRvLW9uZSkgLS0tLS0tLS0tLS0tLSAqLwoKc3RhdGljIHZvaWQgbWNyc2ltX3JlcXVlc3Rfcngo c3RydWN0IG1jcnNpbV9scCAqbHApCnsKCWF0b21pY19sb25nX2luYygmc3RhdF9hc3luY19jYWxs cyk7CglyZWdtYXBfdXBkYXRlX2JpdHNfYXN5bmMobHAtPnJlZ21hcCwgREFSX1BIWV9DVFJMMSwg MHgxZiwgMHgwNSk7Cn0KCnN0YXRpYyB2b2lkIG1jcnNpbV9yeF9idWZfY29tcGxldGUodm9pZCAq Y29udGV4dCkKewoJc3RydWN0IG1jcnNpbV9scCAqbHAgPSBjb250ZXh0OwoKCWF0b21pY19sb25n X2luYygmc3RhdF9jaGFpbl9zdGVwcyk7CgkvKiBtY3IyMGE6IHJlYWRzIGxwLT5yZWdfZGF0YVsw XSAmIGxwLT5yeF9idWYgLi4uICovCglwcl9pbmZvX3JhdGVsaW1pdGVkKCJDSEFJTjogcnhfYnVm X2NvbXBsZXRlIGRlcmVmcyBscD0lcHggcnhfYnVmWzBdPSUwMnggbHFpPSUwMnhcbiIsCgkJCSAg ICBscCwgbHAtPnJ4X2J1ZlswXSwgbHAtPnJ4X2xxaSk7CglscC0+Y2hhaW5fYnVzeSA9IDA7CS8q IG1jcjIwYTogY2hhaW4gZW5kID09IElSUSByZS1lbmFibGVkICovCgltY3JzaW1fcmVxdWVzdF9y eChscCk7Cn0KCnN0YXRpYyB2b2lkIG1jcnNpbV9yeF9yZWFkX2xlbl9jb21wbGV0ZSh2b2lkICpj b250ZXh0KQp7CglzdHJ1Y3QgbWNyc2ltX2xwICpscCA9IGNvbnRleHQ7CglpbnQgcmV0OwoKCWF0 b21pY19sb25nX2luYygmc3RhdF9jaGFpbl9zdGVwcyk7CglscC0+cnhfeGJ1Zi5sZW4gPSBscC0+ cmVnX2RhdGFbMF0gJiAweDFmOwoJcmV0ID0gc3BpX2FzeW5jKGxwLT5zcGksICZscC0+cnhfYnVm X21zZyk7CglpZiAocmV0KQoJCXByX2Vycl9yYXRlbGltaXRlZCgicnggYnVmIHN1Ym1pdCByZXQ9 JWRcbiIsIHJldCk7Cn0KCnN0YXRpYyB2b2lkIG1jcnNpbV9oYW5kbGVfcngoc3RydWN0IG1jcnNp bV9scCAqbHApCnsKCWF0b21pY19sb25nX2luYygmc3RhdF9jaGFpbl9zdGVwcyk7CglscC0+cmVn X21zZy5jb21wbGV0ZSA9IG1jcnNpbV9yeF9yZWFkX2xlbl9jb21wbGV0ZTsKCWxwLT5yZWdfY21k ID0gREFSX1JYX0ZSTV9MRU47CglscC0+cmVnX3hkYXRhLmxlbiA9IDE7CglzcGlfYXN5bmMobHAt PnNwaSwgJmxwLT5yZWdfbXNnKTsKfQoKc3RhdGljIHZvaWQgbWNyc2ltX2lycV9jbGVhbl9jb21w bGV0ZSh2b2lkICpjb250ZXh0KQp7CglzdHJ1Y3QgbWNyc2ltX2xwICpscCA9IGNvbnRleHQ7CgoJ YXRvbWljX2xvbmdfaW5jKCZzdGF0X2NoYWluX3N0ZXBzKTsKCS8qIG1jcjIwYTogcmVhZHMgbHAt PmlycV9kYXRhLCBlbmFibGVfaXJxKCksIGRpc3BhdGNoZXMgKi8KCXByX2luZm9fcmF0ZWxpbWl0 ZWQoIkNIQUlOOiBpcnFfY2xlYW5fY29tcGxldGUgZGVyZWZzIGxwPSVweCBpcnFfZGF0YT0lMDJ4 ICUwMnhcbiIsCgkJCSAgICBscCwgbHAtPmlycV9kYXRhWzBdLCBscC0+aXJxX2RhdGFbMV0pOwoJ bWNyc2ltX2hhbmRsZV9yeChscCk7Cn0KCnN0YXRpYyB2b2lkIG1jcnNpbV9pcnFfc3RhdHVzX2Nv bXBsZXRlKHZvaWQgKmNvbnRleHQpCnsKCXN0cnVjdCBtY3JzaW1fbHAgKmxwID0gY29udGV4dDsK CWludCByZXQ7CgoJYXRvbWljX2xvbmdfaW5jKCZzdGF0X2NoYWluX3N0ZXBzKTsKCS8qIG1jcjIw YV9pcnFfc3RhdHVzX2NvbXBsZXRlOiBhc3luYyByZWdtYXAgd3JpdGUgKyByZXN1Ym1pdCByZWdf bXNnICovCglhdG9taWNfbG9uZ19pbmMoJnN0YXRfYXN5bmNfY2FsbHMpOwoJcmVnbWFwX3VwZGF0 ZV9iaXRzX2FzeW5jKGxwLT5yZWdtYXAsIERBUl9QSFlfQ1RSTDEsIDB4MWYsIDB4MDApOwoKCWxw LT5yZWdfbXNnLmNvbXBsZXRlID0gbWNyc2ltX2lycV9jbGVhbl9jb21wbGV0ZTsKCWxwLT5yZWdf Y21kID0gREFSX0lSUV9TVFMxOwoJbHAtPnJlZ19kYXRhWzBdID0gbHAtPmlycV9kYXRhWzBdOwoJ bHAtPnJlZ19kYXRhWzFdID0gbHAtPmlycV9kYXRhWzFdOwoJbHAtPnJlZ194ZGF0YS5sZW4gPSAy OwoJcmV0ID0gc3BpX2FzeW5jKGxwLT5zcGksICZscC0+cmVnX21zZyk7CglpZiAocmV0KQoJCXBy X2Vycl9yYXRlbGltaXRlZCgiaXJxIGNsZWFuIHN1Ym1pdCByZXQ9JWRcbiIsIHJldCk7Cn0KCnN0 YXRpYyB2b2lkIG1jcnNpbV9pcnFfd29ya2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqdykKewoJc3Ry dWN0IG1jcnNpbV9scCAqbHAgPSBjb250YWluZXJfb2Yodywgc3RydWN0IG1jcnNpbV9scCwgc2lt X2lycS53b3JrKTsKCglpZiAoIWxwLT5hbGl2ZSkKCQlyZXR1cm47CglzY2hlZHVsZV9kZWxheWVk X3dvcmsoJmxwLT5zaW1faXJxLCBtc2Vjc190b19qaWZmaWVzKGlycV9wZXJpb2RfbXMpKTsKCWlm IChscC0+Y2hhaW5fYnVzeSkKCQlyZXR1cm47CS8qIGhhcmR3YXJlIElSUS1saW5lIGdhdGluZyBh bmFsb2cgKi8KCWxwLT5jaGFpbl9idXN5ID0gMTsKCWxwLT5pcnFfaGRyID0gMHg4MCB8IERBUl9J UlFfU1RTMTsKCWF0b21pY19sb25nX2luYygmc3RhdF9pcnFfc3VibWl0KTsKCWlmIChzcGlfYXN5 bmMobHAtPnNwaSwgJmxwLT5pcnFfbXNnKSkKCQlscC0+Y2hhaW5fYnVzeSA9IDA7Cn0KCi8qIC0t LS0gcHJvYmUgLyByZW1vdmU6IHRoZSBtY3IyMGEgbGlmZWN5Y2xlLCB1bm1vZGlmaWVkIHNoYXBl IC0tLS0tLS0tICovCgpzdGF0aWMgYm9vbCBtY3JzaW1fdm9sYXRpbGUoc3RydWN0IGRldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgcmVnKQp7CgkvKiBtY3IyMGFfZGFyX3ZvbGF0aWxlKCk6IG9ubHkg dGhlIElSUSBzdGF0dXMgcmVncyBhcmUgdm9sYXRpbGUgKi8KCXN3aXRjaCAocmVnKSB7CgljYXNl IERBUl9JUlFfU1RTMToKCQlyZXR1cm4gdHJ1ZTsKCWRlZmF1bHQ6CgkJcmV0dXJuIGZhbHNlOwoJ fQp9CgpzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgbWNyc2ltX3JlZ21hcF9jZmcg PSB7CgkucmVnX2JpdHMgPSA4LAoJLnZhbF9iaXRzID0gOCwKCS5jYWNoZV90eXBlID0gUkVHQ0FD SEVfTUFQTEUsCS8qIG1jcjIwYSB1c2VzIFJFR0NBQ0hFX01BUExFICovCgkudm9sYXRpbGVfcmVn ID0gbWNyc2ltX3ZvbGF0aWxlLAp9OwoKc3RhdGljIGludCBtY3JzaW1fcHJvYmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKewoJc3RydWN0IG1jcnNpbV9scCAqbHA7CgoJbHAgPSBremFsbG9jKHNp emVvZigqbHApLCBHRlBfS0VSTkVMKTsKCWlmICghbHApCgkJcmV0dXJuIC1FTk9NRU07CglscC0+ c3BpID0gc3BpOwoJbHAtPmFsaXZlID0gMTsKCXNwaV9zZXRfZHJ2ZGF0YShzcGksIGxwKTsKCgls cC0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9zcGkoc3BpLCAmbWNyc2ltX3JlZ21hcF9jZmcp OwoJaWYgKElTX0VSUihscC0+cmVnbWFwKSkgewoJCWtmcmVlKGxwKTsKCQlyZXR1cm4gUFRSX0VS UihscC0+cmVnbWFwKTsKCX0KCgkvKgoJICogbWNyMjBhX3N0YXJ0KCkvbWNyMjBhX3BoeV9pbml0 KCkgd3JpdGUgREFSX1BIWV9DVFJMMSBmcm9tIHByb2Nlc3MKCSAqIGNvbnRleHQgYmVmb3JlIHRo ZSBJUlEgY2hhaW4gZXZlciBydW5zOyB0aGlzIGFsc28gcHJpbWVzIHRoZQoJICogcmVnbWFwIGNh Y2hlIHNvIHRoZSBjaGFpbidzIHVwZGF0ZV9iaXRzX2FzeW5jKCkgcmVhZHMgbmV2ZXIgZmFsbAoJ ICogYmFjayB0byBhIGJ1cyByZWFkIGZyb20gY29tcGxldGlvbiBjb250ZXh0LgoJICovCglyZWdt YXBfdXBkYXRlX2JpdHMobHAtPnJlZ21hcCwgREFSX1BIWV9DVFJMMSwgMHgxZiwgMHgwMCk7CgoJ c2V0dXBfbWVzc2FnZXMobHApOwoJSU5JVF9ERUxBWUVEX1dPUksoJmxwLT5zaW1faXJxLCBtY3Jz aW1faXJxX3dvcmtmbik7CgoJcHJfaW5mbygicHJvYmU6IHNwaT0lcHggbHA9JXB4IHJlZ21hcD0l cHggKGNoYWluIGluaXRpYXRvciBwZXJpb2Q9JWRtcyB4ZmVyX2RlbGF5PSVkbXMpXG4iLAoJCXNw aSwgbHAsIGxwLT5yZWdtYXAsIGlycV9wZXJpb2RfbXMsIHhmZXJfZGVsYXlfbXMpOwoJc2NoZWR1 bGVfZGVsYXllZF93b3JrKCZscC0+c2ltX2lycSwgbXNlY3NfdG9famlmZmllcyhpcnFfcGVyaW9k X21zKSk7CglyZXR1cm4gMDsKfQoKc3RhdGljIHZvaWQgbWNyc2ltX3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQp7CglzdHJ1Y3QgbWNyc2ltX2xwICpscCA9IHNwaV9nZXRfZHJ2ZGF0YShz cGkpOwoKCXByX2luZm8oInJlbW92ZSBFTlRFUjogbHA9JXB4IHJlZ21hcD0lcHggKG1jcjIwYSBz aGFwZTogc3luYyB3cml0ZSArIHN0b3AgaW5pdGlhdG9yICsga2ZyZWUsIE5PIGNoYWluIGRyYWlu KVxuIiwKCQlscCwgbHAtPnJlZ21hcCk7CgoJLyogbWNyMjBhX3N0b3AgYW5hbG9nOiBvbmUgU1lO QyByZWdtYXAgd3JpdGUgKHNwaV9zeW5jKSAuLi4gKi8KCXJlZ21hcF91cGRhdGVfYml0cyhscC0+ cmVnbWFwLCBEQVJfUEhZX0NUUkwxLCAweDFmLCAweDAwKTsKCS8qIC4uLiBhbmQgc3RvcCB0aGUg SVJRIGluaXRpYXRvciAoZGlzYWJsZV9pcnEgYW5hbG9nKSAqLwoJbHAtPmFsaXZlID0gMDsKCWNh bmNlbF9kZWxheWVkX3dvcmtfc3luYygmbHAtPnNpbV9pcnEpOwoKCS8qIG1jcjIwYV9yZW1vdmUg YW5hbG9nOiBpZWVlODAyMTU0X2ZyZWVfaHcgLT4ga2ZyZWUgb2YgdGhlIHNpbmdsZQoJICogYWxs b2NhdGlvbi4gIFRoZSBpbi1mbGlnaHQgY2hhaW4gaXMgTk9UIHdhaXRlZCBmb3IgKHRoZSBidWcp LiAqLwoJa2ZyZWUobHApOwoKCXByX2luZm8oInJlbW92ZSBET05FOiBscCBmcmVlZDsgYW55IHF1 ZXVlZC9jb21wbGV0aW5nIGNoYWluIG1lc3NhZ2VzIG5vdyBkZXJlZmVyZW5jZSBmcmVlZCBtZW1v cnk7IGRldm0gcmVnbWFwX2V4aXQgZm9sbG93cyB2aWEgZGV2cmVzXG4iKTsKfQoKc3RhdGljIGNv bnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIG1jcnNpbV9pZHNbXSA9IHsKCXsgIm1jcnNpbSIgfSwK CXsgfQp9OwpNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgbWNyc2ltX2lkcyk7CgpzdGF0aWMgc3Ry dWN0IHNwaV9kcml2ZXIgbWNyc2ltX2RyaXZlciA9IHsKCS5kcml2ZXIgPSB7CgkJLm5hbWUgPSAi bWNyc2ltIiwKCX0sCgkucHJvYmUgPSBtY3JzaW1fcHJvYmUsCgkucmVtb3ZlID0gbWNyc2ltX3Jl bW92ZSwKCS5pZF90YWJsZSA9IG1jcnNpbV9pZHMsCn07CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogYWN0 aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqLwoKc3RhdGljIGNoYXIgYWN0aW9uX2NtZFs2NF07CgpzdGF0aWMgaW50IHhtaXRf bG9vcHMgPSAyMDA7CnN0YXRpYyBpbnQgeG1pdF9pbnRlcnZhbF91cyA9IDEwMDA7CgpzdGF0aWMg aW50IHhtaXRfdGhyZWFkKHZvaWQgKmRhdGEpCnsKCXN0cnVjdCBtY3JzaW1fbHAgKmxwID0gZGF0 YTsKCWludCBpOwoKCXByX2luZm8oIlhNSVQ6IGt0aHJlYWQgcnVubmluZyBtY3IyMGFfeG1pdC1z aGFwZWQgYm9keSAlZCB0aW1lcywgaW50ZXJ2YWw9JWR1cywgcmVnX21zZz0lcHhcbiIsCgkJeG1p dF9sb29wcywgeG1pdF9pbnRlcnZhbF91cywgJmxwLT5yZWdfbXNnKTsKCWZvciAoaSA9IDA7IGkg PCB4bWl0X2xvb3BzICYmICFrdGhyZWFkX3Nob3VsZF9zdG9wKCk7IGkrKykgewoJCS8qID09IG1j cjIwYV94bWl0KCkgYm9keTogdW5sb2NrZWQgcmVmaWxsICsgc3VibWl0IG9mIHRoZQoJCSAqIFNB TUUgbHAtPnJlZ19tc2cgdGhhdCB0aGUgSVJRIGNoYWluIGFsc28gdXNlcyAqLwoJCWxwLT5yZWdf bXNnLmNvbXBsZXRlID0gTlVMTDsKCQlscC0+cmVnX2NtZCA9IERBUl9QSFlfQ1RSTDE7CgkJbHAt PnJlZ19kYXRhWzBdID0gMHgwMDsJCS8qIFhDVlNFUV9JRExFICovCgkJbHAtPnJlZ194ZGF0YS5s ZW4gPSAxOwoJCWF0b21pY19sb25nX2luYygmc3RhdF94bWl0KTsKCQlzcGlfYXN5bmMobHAtPnNw aSwgJmxwLT5yZWdfbXNnKTsKCQl1c2xlZXBfcmFuZ2UoeG1pdF9pbnRlcnZhbF91cywgeG1pdF9p bnRlcnZhbF91cyArIDEwMCk7Cgl9Cglwcl9pbmZvKCJYTUlUOiBrdGhyZWFkIGRvbmUgYWZ0ZXIg JWQgc3VibWl0c1xuIiwgaSk7CglyZXR1cm4gMDsKfQoKc3RhdGljIGF0b21pY190IHN5bmNwcm9i ZV9kb25lID0gQVRPTUlDX0lOSVQoMCk7CnN0YXRpYyBzdHJ1Y3QgZGVsYXllZF93b3JrIHN5bmNw cm9iZV93ZDsKCnN0YXRpYyBpbnQgc3luY3Byb2JlX3J1bih2b2lkICpkYXRhKQp7CglzdHJ1Y3Qg bWNyc2ltX2xwICpscCA9IGRhdGE7CgoJcHJfaW5mbygiU1lOQ1BST0JFOiBpc3N1aW5nIG9uZSBT WU5DIHJlZ21hcCBvcCAoaGFuZyA9IG9ycGhhbmVkLW1lc3NhZ2UgZXZpZGVuY2UpXG4iKTsKCXJl Z21hcF91cGRhdGVfYml0cyhscC0+cmVnbWFwLCAweDExLCAweGZmLCAweDU1KTsKCWF0b21pY19z ZXQoJnN5bmNwcm9iZV9kb25lLCAxKTsKCXByX2luZm8oIlNZTkNQUk9CRTogQ09NUExFVEVEIChx dWV1ZSBzdGlsbCBmdW5jdGlvbmFsKVxuIik7CglyZXR1cm4gMDsKfQoKc3RhdGljIHZvaWQgc3lu Y3Byb2JlX3dhdGNoZG9nKHN0cnVjdCB3b3JrX3N0cnVjdCAqdykKewoJaWYgKCFhdG9taWNfcmVh ZCgmc3luY3Byb2JlX2RvbmUpKQoJCXByX2VycigiU1lOQ1BST0JFLUhVTkc6IHN5bmMgcmVnbWFw IG9wIGRpZCBOT1QgY29tcGxldGUgd2l0aGluIDVzIC0+IG1lc3NhZ2Ugb3JwaGFuZWQgYnkgcXVl dWUgY29ycnVwdGlvbiAoTi0xIG91dGNvbWUgMSlcbiIpOwoJZWxzZQoJCXByX2luZm8oIlNZTkNQ Uk9CRS1XRDogb3AgZmluaXNoZWQgaW4gdGltZVxuIik7Cn0KCnN0YXRpYyB2b2lkIGFjdGlvbl93 b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3KQp7CgljaGFyIGNtZFs2NF07CgljaGFyICpwLCAq Y3A7Cglsb25nIG4gPSAwOwoKCXN0cnNjcHkoY21kLCBzdHJzdHJpcChhY3Rpb25fY21kKSwgc2l6 ZW9mKGNtZCkpOwoJY3AgPSBjbWQ7CglwID0gc3Ryc2VwKCZjcCwgIiAiKTsKCWlmIChjcCAmJiBj cFswXSAmJiBrc3RydG9sKGNwLCAwLCAmbikpCgkJbiA9IDA7CgoJaWYgKCFzdHJjbXAocCwgInJ1 biIpKSB7CgkJbXNsZWVwKG4gPyBuIDogMTAwMCk7CgkJcHJfaW5mbygicnVuOiBzbGVwdCAlbGRt c1xuIiwgbiA/IG4gOiAxMDAwKTsKCX0gZWxzZSBpZiAoIXN0cmNtcChwLCAieG1pdCIpKSB7CgkJ c3RydWN0IHRhc2tfc3RydWN0ICp0OwoKCQlpZiAoY3AgJiYgY3BbMF0pIHsKCQkJY2hhciAqcTsK CQkJbG9uZyB2OwoKCQkJaWYgKCFrc3RydG9sKHN0cnNlcCgmY3AsICIgIiksIDAsICZ2KSkKCQkJ CXhtaXRfbG9vcHMgPSAoaW50KXY7CgkJCXEgPSBjcDsKCQkJaWYgKHEgJiYgcVswXSAmJiAha3N0 cnRvbChxLCAwLCAmdikpCgkJCQl4bWl0X2ludGVydmFsX3VzID0gKGludCl2OwoJCX0KCQlpZiAo IWdfc3BpZGV2KSB7CgkJCXByX2VycigieG1pdDogbm8gc3BpIGRldmljZVxuIik7CgkJCWdvdG8g b3V0OwoJCX0KCQl0ID0ga3RocmVhZF9ydW4oeG1pdF90aHJlYWQsIHNwaV9nZXRfZHJ2ZGF0YShn X3NwaWRldiksICJtY3JzaW1feG1pdCIpOwoJCWlmIChJU19FUlIodCkpCgkJCXByX2VycigieG1p dDoga3RocmVhZCBmYWlsZWRcbiIpOwoJfSBlbHNlIGlmICghc3RyY21wKHAsICJzeW5jcHJvYmUi KSkgewoJCWlmICghZ19zcGlkZXYpIHsKCQkJcHJfZXJyKCJzeW5jcHJvYmU6IG5vIHNwaSBkZXZp Y2VcbiIpOwoJCQlnb3RvIG91dDsKCQl9CgkJYXRvbWljX3NldCgmc3luY3Byb2JlX2RvbmUsIDAp OwoJCUlOSVRfREVMQVlFRF9XT1JLKCZzeW5jcHJvYmVfd2QsIHN5bmNwcm9iZV93YXRjaGRvZyk7 CgkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZzeW5jcHJvYmVfd2QsIG1zZWNzX3RvX2ppZmZpZXMo NTAwMCkpOwoJCXsKCQkJc3RydWN0IHRhc2tfc3RydWN0ICp0OwoKCQkJdCA9IGt0aHJlYWRfcnVu KHN5bmNwcm9iZV9ydW4sIHNwaV9nZXRfZHJ2ZGF0YShnX3NwaWRldiksICJtY3JzaW1fc3luY3Ai KTsKCQkJaWYgKElTX0VSUih0KSkKCQkJCXByX2Vycigic3luY3Byb2JlOiBrdGhyZWFkIGZhaWxl ZFxuIik7CgkJfQoJfSBlbHNlIGlmICghc3RyY21wKHAsICJzdGF0dXMiKSkgewoJCXByX2luZm8o InN0YXR1czogbXNncz0lbGQgZGVsYXllZF9tc2dzKHN0YWxsZWQpPSVsZCBpcnFfc3VibWl0cz0l bGQgY2hhaW5fc3RlcHM9JWxkIHhtaXRfc3VibWl0cz0lbGQgcmVnbWFwX2FzeW5jPSVsZFxuIiwK CQkJYXRvbWljX2xvbmdfcmVhZCgmc3RhdF9tc2dzKSwKCQkJYXRvbWljX2xvbmdfcmVhZCgmc3Rh dF9kZWxheWVkKSwKCQkJYXRvbWljX2xvbmdfcmVhZCgmc3RhdF9pcnFfc3VibWl0KSwKCQkJYXRv bWljX2xvbmdfcmVhZCgmc3RhdF9jaGFpbl9zdGVwcyksCgkJCWF0b21pY19sb25nX3JlYWQoJnN0 YXRfeG1pdCksCgkJCWF0b21pY19sb25nX3JlYWQoJnN0YXRfYXN5bmNfY2FsbHMpKTsKCX0gZWxz ZSB7CgkJcHJfaW5mbygidW5rbm93biBhY3Rpb24gJyVzJ1xuIiwgcCk7Cgl9Cm91dDoKCXByX2lu Zm8oIkFDVElPTl9DT01QTEVURVxuIik7Cn0KCnN0YXRpYyBERUNMQVJFX1dPUksoYWN0aW9uX3dv cmssIGFjdGlvbl93b3JrZm4pOwoKc3RhdGljIGludCBhY3Rpb25fc2V0KGNvbnN0IGNoYXIgKnZh bCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApCnsKCWludCByZXQgPSBwYXJhbV9zZXRf Y29weXN0cmluZyh2YWwsIGtwKTsKCglpZiAocmV0ID09IDApCgkJc2NoZWR1bGVfd29yaygmYWN0 aW9uX3dvcmspOwoJcmV0dXJuIHJldDsKfQoKc3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFy YW1fb3BzIGFjdGlvbl9vcHMgPSB7Cgkuc2V0ID0gYWN0aW9uX3NldCwKCS5nZXQgPSBwYXJhbV9n ZXRfc3RyaW5nLAp9OwpzdGF0aWMgc3RydWN0IGtwYXJhbV9zdHJpbmcgYWN0aW9uX3BhcmFtID0g ewoJLm1heGxlbiA9IHNpemVvZihhY3Rpb25fY21kKSwKCS5zdHJpbmcgPSBhY3Rpb25fY21kLAp9 Owptb2R1bGVfcGFyYW1fY2IoYWN0aW9uLCAmYWN0aW9uX29wcywgJmFjdGlvbl9wYXJhbSwgMDIw MCk7Ck1PRFVMRV9QQVJNX0RFU0MoYWN0aW9uLCAicnVuIDxtcz4gfCB4bWl0IDxuPiA8dXM+IHwg c3luY3Byb2JlIHwgc3RhdHVzIik7CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogbW9kdWxlIGluaXQ6IGZh a2UgY29udHJvbGxlciArIHNsYXZlIGRldmljZSAgICAgICAgICAgICAgICAgICAgICAgICAqLwoK c3RhdGljIGludCBfX2luaXQgbWNyc2ltX2luaXQodm9pZCkKewoJc3RydWN0IG1jcnNpbV9jdHJs ICpjOwoJc3RydWN0IHNwaV9ib2FyZF9pbmZvIGluZm87CglpbnQgcmV0OwoKCXJldCA9IHNwaV9y ZWdpc3Rlcl9kcml2ZXIoJm1jcnNpbV9kcml2ZXIpOwoJaWYgKHJldCkKCQlyZXR1cm4gcmV0OwoK CWMgPSBremFsbG9jKHNpemVvZigqYyksIEdGUF9LRVJORUwpOwoJaWYgKCFjKSB7CgkJcmV0ID0g LUVOT01FTTsKCQlnb3RvIGVycl9kcnY7Cgl9CgljLT5wZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3Jl Z2lzdGVyX3NpbXBsZSgibWNyc2ltLWN0cmwiLCAtMSwgTlVMTCwgMCk7CglpZiAoSVNfRVJSKGMt PnBkZXYpKSB7CgkJcmV0ID0gUFRSX0VSUihjLT5wZGV2KTsKCQlnb3RvIGVycl9mcmVlOwoJfQoK CWMtPmN0bHIgPSBzcGlfYWxsb2NfaG9zdCgmYy0+cGRldi0+ZGV2LCAwKTsKCWlmICghYy0+Y3Rs cikgewoJCXJldCA9IC1FTk9NRU07CgkJZ290byBlcnJfcGRldjsKCX0KCWMtPmN0bHItPmJ1c19u dW0gPSAtMTsKCWMtPmN0bHItPm51bV9jaGlwc2VsZWN0ID0gU0lNX0NTX01BWDsKCWMtPmN0bHIt Pm1vZGVfYml0cyA9IFNQSV9DUE9MIHwgU1BJX0NQSEEgfCBTUElfQ1NfSElHSCB8IFNQSV9MU0Jf RklSU1Q7CgljLT5jdGxyLT50cmFuc2Zlcl9vbmVfbWVzc2FnZSA9IG1jcnNpbV90cmFuc2Zlcl9v bmVfbWVzc2FnZTsKCXNwaV9jb250cm9sbGVyX3NldF9kZXZkYXRhKGMtPmN0bHIsIGMpOwoKCXJl dCA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGMtPmN0bHIpOwoJaWYgKHJldCkKCQlnb3RvIGVy cl9jdGxyOwoJZ19jdHJsID0gYzsKCgltZW1zZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7Cglz dHJzY3B5KGluZm8ubW9kYWxpYXMsICJtY3JzaW0iLCBzaXplb2YoaW5mby5tb2RhbGlhcykpOwoJ aW5mby5idXNfbnVtID0gYy0+Y3Rsci0+YnVzX251bTsKCWluZm8uY2hpcF9zZWxlY3QgPSAwOwoJ aW5mby5tYXhfc3BlZWRfaHogPSAxMDAwMDAwOwoJaW5mby5tb2RlID0gU1BJX01PREVfMDsKCgln X3NwaWRldiA9IHNwaV9uZXdfZGV2aWNlKGMtPmN0bHIsICZpbmZvKTsKCWlmICghZ19zcGlkZXYp IHsKCQlwcl9lcnIoInNwaV9uZXdfZGV2aWNlIGZhaWxlZFxuIik7CgkJcmV0ID0gLUVOT0RFVjsK CQlnb3RvIGVycl9jdHJsX3JlZzsKCX0KCglwcl9pbmZvKCJpbml0OiBjb250cm9sbGVyIGJ1c19u dW09JWQgZGV2aWNlPSVzICh1bmJpbmQ6IGVjaG8gJXMgPiAvc3lzL2J1cy9zcGkvZHJpdmVycy9t Y3JzaW0vdW5iaW5kKVxuIiwKCQljLT5jdGxyLT5idXNfbnVtLCBkZXZfbmFtZSgmZ19zcGlkZXYt PmRldiksIGRldl9uYW1lKCZnX3NwaWRldi0+ZGV2KSk7CglyZXR1cm4gMDsKCmVycl9jdHJsX3Jl ZzoKCXNwaV91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoYy0+Y3Rscik7CglnX2N0cmwgPSBOVUxMOwpl cnJfY3RscjoKCXNwaV9jb250cm9sbGVyX3B1dChjLT5jdGxyKTsKZXJyX3BkZXY6CglwbGF0Zm9y bV9kZXZpY2VfdW5yZWdpc3RlcihjLT5wZGV2KTsKZXJyX2ZyZWU6CglrZnJlZShjKTsKZXJyX2Ry djoKCXNwaV91bnJlZ2lzdGVyX2RyaXZlcigmbWNyc2ltX2RyaXZlcik7CglyZXR1cm4gcmV0Owp9 CgpzdGF0aWMgdm9pZCBfX2V4aXQgbWNyc2ltX2V4aXQodm9pZCkKewoJaWYgKGdfc3BpZGV2KSB7 CgkJc3BpX3VucmVnaXN0ZXJfZGV2aWNlKGdfc3BpZGV2KTsKCQlnX3NwaWRldiA9IE5VTEw7Cgl9 CglpZiAoZ19jdHJsKSB7CgkJc3BpX3VucmVnaXN0ZXJfY29udHJvbGxlcihnX2N0cmwtPmN0bHIp OwoJCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGdfY3RybC0+cGRldik7CgkJa2ZyZWUoZ19j dHJsKTsKCQlnX2N0cmwgPSBOVUxMOwoJfQoJc3BpX3VucmVnaXN0ZXJfZHJpdmVyKCZtY3JzaW1f ZHJpdmVyKTsKCXByX2luZm8oInJlbW92ZWRcbiIpOwp9Cgptb2R1bGVfaW5pdChtY3JzaW1faW5p dCk7Cm1vZHVsZV9leGl0KG1jcnNpbV9leGl0KTsKTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpNT0RV TEVfREVTQ1JJUFRJT04oIkhWLTIvTi0xIHZlcmlmaWNhdGlvbjogbWNyMjBhLXNoYXBlZCBhc3lu YyBTUEkgY2hhaW4gdnMgdW5iaW5kIik7Cg== ------=_Part_280357_655984024.1792659420630--