From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=13.76.78.106 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792677922; b=n0D84YOZA6uX/4wzHvvoGkRUYTXjGb/OH4rgZF6HH90g6StZ5E+bcDPY7Cp/0hqk1093 XcWoRSUECQlZ3jjsvKCWeBh2h7HK90iyArFGH66F5TBDU46oZDeUdxdAVWg2UW8MU6VCh 0ZoTCTQqNx5u/bJLirwblwNxEI4SY4R4OhMgtaWbaCBfGVyTNCyCqh1UKZqRoYjl4CnnC adhstuTHrnYpYuHI83RqWxZRc4avBVCheGdoGYP904myO6QNWDylchZmolikJ4Aq5aPFC DcmUvnt8CRQm0Niw6drNs7ly96WM1xRM6O3WaJiL9v5/HLiqOxsDqOOGCMz4j8X4CZg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792677922; 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=9Tk4FoL9U7rhfLnWmQtCZ3Py8oBe/qHJBFjUSKmmX+8=; b=PlGnPmbpWv+WJ4nmYtp6GE/uIHtyU8MVFkk1uPErkHtNa90Y8eOGh0EDZMWlNOUMAJzh IVmlktz7jdi0uK0FqiRPhhVEOV3NLOkgW+tCKljw6NAkDYZQFPt5v685VgmyH6y8yXw6T vriAkWE7qnIn7WbXpdx3T1zNqPPenH58UuoHdccYF3etVtFi7qFPVtlNNqzLA/p8kxt9B MCWXiUW3dy92w5I2RXOia+jipasE9RF8Sc8op3xBlanLhwkyxzoERJeESyUY+3l+BwKLR IsMAlmxU1vQXtemsM7SXnhPZQNhOoCDGHwJA4fRuAuqVa1QA8Xf7sz6Zbo/3EG4MqTw== 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=13.76.78.106 Received: from azure-sdnproxy.icoremail.net (azure-sdnproxy.icoremail.net [13.76.78.106]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CD9BE606A319; Thu, 22 Oct 2026 14:05:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org CD9BE606A319 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) ; Thu, 22 Oct 2026 22:05:04 +0800 (GMT+08:00) Date: Thu, 22 Oct 2026 22:05:04 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: =?UTF-8?B?5b6Q5pmX57+U?= To: joro@8bytes.org, will@kernel.org Cc: iommu@lists.linux.dev, linux-kernel@vger.kernel.org, bhelgaas@google.com, linux-pci@vger.kernel.org, nicolinc@nvidia.com Subject: iommu: PCI reset helpers' lock-free entry reads race the iommu_device_unregister() traversal -> group use-after-free or NULL deref inside the reset path 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?Stx/pDiH6nJ5xwDR7hwMki1N8jM= Content-Type: multipart/mixed; boundary="----=_Part_283853_1938003770.1792677904304" 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: <2f9a772a.14c19.1a163edffb0.Coremail.xuhx@hust.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID:IQEQrMBGb3gQGNpq4HlUAA--.61073W X-CM-SenderInfo: bgsqjkayqyjmo6kx23oohg3hdfq/1tbiAQoIB2rY5euqrQABs+ X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWkKw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= ------=_Part_283853_1938003770.1792677904304 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 VGhlIFBDSSByZXNldCBJT01NVSBoZWxwZXJzIHJlYWQgcGRldi0+ZGV2LmlvbW11X2dyb3VwIGFu ZApkZXYtPmlvbW11IGJlZm9yZSB0YWtpbmcgYW55IGxvY2ssIGFuZCB0aGUgd2hvbGUgUENJIHJl c2V0IGJvZHkKKEZMUiBhbG9uZSBzbGVlcHMgMTAwbXMpIHJ1bnMgYmV0d2VlbiB0aGVpciBwcmVw YXJlIGFuZCBkb25lIGhhbHZlcwotLSBtZWFud2hpbGUgdGhlIGlvbW11X2RldmljZV91bnJlZ2lz dGVyKCkgdHJhdmVyc2FsIGNhbiB0ZWFyIHRoZQpkZXZpY2UncyBncm91cCBhd2F5IGVudGlyZWx5 LCBzbyB0aGUgaGVscGVyJ3MgcG9zdC1yZXNldCBoYWxmIGxvY2tzCmFuIGFscmVhZHktZnJlZWQg Z3JvdXAgKHVzZS1hZnRlci1mcmVlIHNwaW5sb2NrKSBvciB3YWxrcwomTlVMTC0+ZGV2aWNlcyAo TlVMTCBkZXJlZiBvb3BzKS4gIFRoZSBrZXJuZWwncyBvd24gY29tbWVudCBhYm92ZQp0aGVzZSBo ZWxwZXJzIHN0YXRlcyB0aGUgY29udHJhY3QgLS0gImNhbGxlcnMgbXVzdCBlbnN1cmUgdGhlcmUg d2lsbApiZSBubyByYWN5IGlvbW11X3JlbGVhc2VfZGV2aWNlKCkgY2FsbCwgd2hpY2ggb3RoZXJ3 aXNlIHdvdWxkIFVBRiB0aGUKZGV2LT5pb21tdV9ncm91cCBwb2ludGVyIiAoZHJpdmVycy9pb21t dS9pb21tdS5jOjQwMjctNDAzMikgLS0gYnV0CnRoZSB1bnJlZ2lzdGVyIHRyYXZlcnNhbCBpcyBw cmVjaXNlbHkgYW4gaW9tbXVfcmVsZWFzZV9kZXZpY2UoKQpzb3VyY2UgdGhhdCBubyByZXNldC1w YXRoIGNhbGxlciBjYW4gZW5zdXJlIGFnYWluc3Q6IGl0IHRha2VzIG5vCmRldmljZSBsb2NrLCBz byB0aGUgZGV2aWNlX2xvY2sgdGhlIHJlc2V0IHBhdGggaG9sZHMgKHdoaWNoIGRvZXMKc2VyaWFs aXplIGRldmljZV9kZWwpIHByb3RlY3RzIG5vdGhpbmcgaGVyZS4KCkNvbmNyZXRlbHksIG9uIG1h aW5saW5lIDcuMzogcGNpX2Rldl9yZXNldF9pb21tdV9wcmVwYXJlKCkKKGlvbW11LmM6NDAzNCkg cmVhZHMgdGhlIGdyb3VwIGF0IDo0MDM2IGFuZCB0ZXN0cyBkZXZfaGFzX2lvbW11KCkgYXQKOjQw NDIgYmVmb3JlIGd1YXJkKG11dGV4KSgmZ3JvdXAtPm11dGV4KSBhdCA6NDA0NTsKcGNpX2Rldl9y ZXNldF9pb21tdV9kb25lKCkgKDo0MTQ2KSBoYXMgdGhlIHNhbWUgc2hhcGUgYXQgOjQxNDgsCjo0 MTUzLCA6NDE1NiBhbmQgdGhlbiBjYWxscyBfX2Rldl90b19nZGV2KCkgYXQgOjQxNTgsIHdoaWNo IHdhbGtzCmdyb3VwLT5kZXZpY2VzLiAgVGhlIHJlc2V0IGJvZHkgYnJhY2tldGVkIGJ5IHRoZXNl IGhlbHBlcnMgaW5jbHVkZXMKZml2ZSBjYWxsLXNpdGUgcGFpcnMgaW4gZHJpdmVycy9wY2kvcGNp LmMgKDo0NDI2Lzo0NDQ2IHdpdGggdGhlIEZMUgptc2xlZXAoMTAwKSBhdCA6NDQ0MiwgOjQ1MDMv OjQ1MjQgd2l0aCBhbm90aGVyIGF0IDo0NTIwLCA6NDU2MS86NDU3OCwKOjUwMTkvOjUwMzEsIDo1 MDU2Lzo1MDc2KSAtLSBhID49MTAwbXMgd2luZG93IGR1cmluZyB3aGljaCB0aGUKdHJhdmVyc2Fs J3MgbWlsbGlzZWNvbmQtc2NhbGUgdGVhcmRvd24gZml0cyB3aXRoIHJvb20gdG8gc3BhcmUuClVu bGlrZSB0aGUgcmVtb3ZhbC1zaWRlIHJhY2UgSSByZXBvcnRlZCBlYXJsaWVyLCB0cmlnZ2VyaW5n IG5lZWRzIE5PCmNvbmN1cnJlbnQgZGV2aWNlX2RlbDogYSBjbGllbnQgZGV2aWNlIHBlcmZvcm1p bmcgYW4gRkxSIG9yIGJ1cwpyZXNldCAoYWRtaW5pc3RyYXRvciAiZWNobyAxID4gL3N5cy9idXMv cGNpL2RldmljZXMvPEJERj4vcmVzZXQiLCBvcgphIGRyaXZlci1pbml0aWF0ZWQgcmVzZXQgc3Vj aCBhcyBOSUMgcmVjb25maWd1cmF0aW9uKSB3aGlsZSB0aGUgSU9NTVUKaW5zdGFuY2UgaXMgdW5y ZWdpc3RlcmVkICh2aXJ0aW8taW9tbXUgc3lzZnMgdW5iaW5kLCBwbGF0Zm9ybSBJT01NVSkKaXMg ZW5vdWdoIC0tIHRoZSByZXNldCBib2R5J3Mgd2lkdGggbWFrZXMgdGhpcyB0aGUgZWFzaWVzdCBv ZiB0aGUKdW5yZWdpc3Rlci1yYWNlIGZhbWlseSB0byBoaXQuCgpUaGUgZGV0YWlsZWQgZGVzY3Jp cHRpb246CgoqIFRlc3QgZW52aXJvbm1lbnQgLyBhZmZlY3RlZCB2ZXJzaW9uCgogIExpbnV4IHZl cnNpb24gNy4zLjAgKGdjYyAxMy4zLjAsIEdOVSBsZCAyLjQyKSAjMSBTTVAgUFJFRU1QVF9EWU5B TUlDCiAgLS0gdmFuaWxsYSBtYWlubGluZSA3LjMgcmVsZWFzZSB0YXJiYWxsIChrZXJuZWwub3Jn LCB1bm1vZGlmaWVkKS4KICBBbGwgZnVuY3Rpb25zIGNpdGVkIGFyZSBieXRlLWlkZW50aWNhbCBp biA3LjEuNSBhbmQgNy4zOyBsaW5lCiAgbnVtYmVycyBhcmUgZnJvbSA3LjMuICBUaGlzIHJlcG9y dCBpcyBzb3VyY2UtbGV2ZWw6IG15IHRlc3QKICBlbnZpcm9ubWVudCBwcm92aWRlcyBubyBQQ0kr QVRTIGNsaWVudCB0byBkcml2ZSB0aGUgRSBzaWRlLCBzbyB0aGUKICBpbnRlcmxlYXZpbmcgaXRz ZWxmIHdhcyBub3QgcmVwcm9kdWNlZCBkeW5hbWljYWxseTsgdGhlIHNoYXJlZAogIHRlYXJkb3du IGhhbGYgKHRoZSB0cmF2ZXJzYWwgZnJlZWluZyBhIGdyb3VwIHRocm91Z2ggdGhlCiAgdW5jb25k aXRpb25hbCBpb21tdV9ncm91cF9wdXQoKSBhdCBpb21tdS5jOjc3NSkgaXMgdGhlIHNhbWUKICBj b21wb25lbnQgbXkgcmVtb3ZhbC1zaWRlIHJlcG9ydCBkZW1vbnN0cmF0ZWQgd2l0aCBLQVNBTi4K CiogTWVjaGFuaXNtCgogIFRoZSBoZWxwZXIgcGFpcidzIHNoYXBlIChlbnRyeSByZWFkcyBwcmVj ZWRlIGV2ZXJ5IGxvY2spOgoKICAgICAgaW50IHBjaV9kZXZfcmVzZXRfaW9tbXVfcHJlcGFyZShz dHJ1Y3QgcGNpX2RldiAqcGRldikgICAvKiA6NDAzNCAqLwogICAgICB7CiAgICAgICAgICAgICAg c3RydWN0IGlvbW11X2dyb3VwICpncm91cCA9IHBkZXYtPmRldi5pb21tdV9ncm91cDsgIC8qIDo0 MDM2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxvY2stZnJlZSAqLwogICAgICAgICAgICAgIC4uLgogICAgICAgICAgICAg IGlmICghcGNpX2F0c19zdXBwb3J0ZWQocGRldikgfHwgIWRldl9oYXNfaW9tbXUoJnBkZXYtPmRl dikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogOjQwNDIsIHNlY29uZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrLWZyZWUgcmVhZCAqLwogICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgZ3VhcmQobXV0ZXgpKCZn cm91cC0+bXV0ZXgpOyAgICAgICAgICAgICAgICAgICAgLyogOjQwNDUgKi8KICAgICAgICAgICAg ICAuLi4KCiAgICAgIHZvaWQgcGNpX2Rldl9yZXNldF9pb21tdV9kb25lKHN0cnVjdCBwY2lfZGV2 ICpwZGV2KSAgICAgLyogOjQxNDYgKi8KICAgICAgewogICAgICAgICAgICAgIHN0cnVjdCBpb21t dV9ncm91cCAqZ3JvdXAgPSBwZGV2LT5kZXYuaW9tbXVfZ3JvdXA7ICAvKiA6NDE0OCAqLwogICAg ICAgICAgICAgIC4uLgogICAgICAgICAgICAgIGlmICghcGNpX2F0c19zdXBwb3J0ZWQocGRldikg fHwgIWRldl9oYXNfaW9tbXUoJnBkZXYtPmRldikpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjQxNTMgKi8KICAgICAgICAg ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICBndWFyZChtdXRleCkoJmdyb3VwLT5t dXRleCk7ICAgICAgICAgICAgICAgICAgICAvKiA6NDE1NiAqLwogICAgICAgICAgICAgIGdkZXYg PSBfX2Rldl90b19nZGV2KCZwZGV2LT5kZXYpOyAgICAgICAgICAgICAgIC8qIDo0MTU4OiB3YWxr cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBncm91cC0+ZGV2aWNlcyAgICAgKi8KCiAgQSBzaWRlOiBpb21tdV9kZXZpY2VfdW5yZWdpc3Rl cigpIC0+IGJ1c19mb3JfZWFjaF9kZXYgLT4KICByZW1vdmVfaW9tbXVfZ3JvdXAoKSAoOjI3Mykg LT4gaW9tbXVfcmVsZWFzZV9kZXZpY2UoKSAoOjc3OCkgLT4KICBfX2lvbW11X2dyb3VwX3JlbW92 ZV9kZXZpY2UoKSAoOjc1MSkgY2xlYXJzIGRldi0+aW9tbXVfZ3JvdXAgdW5kZXIKICB0aGUgZ3Jv dXAgbG9jayAoOjc2NjsgYWxzbyB2aWEgaW9tbXVfZGVpbml0X2RldmljZSBhdCA6NjExKSBhbmQs CiAgd2l0aCB0aGUgdW5jb25kaXRpb25hbCBpb21tdV9ncm91cF9wdXQoKSBhdCA6Nzc1LCBjYW4g ZnJlZSB0aGUKICBncm91cCBvdXRyaWdodCB3aGVuIHRoaXMgZGV2aWNlIGhlbGQgdGhlIGxhc3Qg cmVmZXJlbmNlLgoKICBJbnRlcmxlYXZpbmcgKGRvbmUoKSBoYWxmIHNob3duOyBwcmVwYXJlIGlz IHN5bW1ldHJpYyk6CgogICAgICBFOiAgZ3JvdXAgPSBwZGV2LT5kZXYuaW9tbXVfZ3JvdXA7ICAg ICAgICAvKiA6NDE0OCwgcmVhZHMgRyAqLwogICAgICAuLi4gcmVzZXQgYm9keTogbXNsZWVwKDEw MCkgLi4uICAgICAgICAgICAvKiA+PTEwMG1zICAgICAgICAqLwogICAgICBBOiAgdHJhdmVyc2Fs IGNvbXBsZXRlczogZ3JvdXAgbG9jayB0ZWFyZG93biwgZGV2LT5pb21tdV9ncm91cAogICAgICAg ICAgPSBOVUxMLCBwYXJhbSBmcmVlZCwgOjc3NSBwdXQgZHJvcHMgdGhlIGxhc3QgcmVmIC0+IEcg ZnJlZWQKICAgICAgRTogIGRldl9oYXNfaW9tbXUoJnBkZXYtPmRldikgICAgICAgICAgICAgLyog OjQxNTM6CiAgICAgICAgICAtIHJlYWQgbGFuZHMgYmVmb3JlIEEncyBwYXJhbSBjbGVhciAtPiB0 cnVlCiAgICAgICAgICAgIC0+IGd1YXJkKG11dGV4KSgmZ3JvdXAtPm11dGV4KSAgICAgIC8qIDo0 MTU2OiBtdXRleF9sb2NrIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGUkVFRCBncm91cCAtPiBVQUYKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzcGlubG9jayBvbiBmcmVlZC8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldXNlZCBtZW1vcnkpICAqLwogICAg ICAgICAgLSBHIHN1cnZpdmVkIChvdGhlciByZWZzKSAtPiBfX2Rldl90b19nZGV2KCZwZGV2LT5k ZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjQx NTg6IHJlLXJlYWRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGV2LT5pb21tdV9ncm91cCA9PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwgLT4gZm9yX2VhY2hfCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBfZGV2aWNlKE5VTEwpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fsa3MgJk5VTEwtPmRl dmljZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiBOVUxMIGRlcmVmIG9vcHMgKi8KCiAgICAgIFN5bW1ldHJpYyB2YXJpYW50OiA6NDE0OCBhbHJl YWR5IHJlYWRzIE5VTEwgKGFmdGVyIEEncyA6NzY2KQogICAgICB3aGlsZSA6NDE1MyBzdGlsbCBz ZWVzIHRoZSBwYXJhbSAtPiBndWFyZChtdXRleCkgb24gYSBOVUxMCiAgICAgIGdyb3VwIHBvaW50 ZXIuCgogIFdoeSB0aGUgZXhpc3RpbmcgbG9ja3MgZG8gbm90IGhlbHA6IHRoZSByZXNldCBwYXRo IGhvbGRzIHRoZQogIGRldmljZSBsb2NrLCB3aGljaCBzZXJpYWxpemVzIGRldmljZV9kZWwgKHRo ZSBjYXNlIHRoZSA6NDAyNwogIGNvbW1lbnQgd2FzIGRlc2lnbmVkIGZvciAtLSBQQ0kgc3lzZnMg aXMgcmVtb3ZlZCBiZWZvcmUgdGhlCiAgcmVtb3ZhbCBub3RpZmljYXRpb24pLiAgVGhlIHVucmVn aXN0ZXIgdHJhdmVyc2FsIGlzIG5vdAogIGRldmljZV9kZWw6IGl0IHdhbGtzIHRoZSBidXMncyBr bGlzdCBhbmQgY2FsbHMKICBpb21tdV9yZWxlYXNlX2RldmljZSgpIGRpcmVjdGx5LCB0YWtpbmcg bm8gY2xpZW50IGRldmljZSBsb2NrIGFuZAogIG5vbmUgb2YgdGhlIGxvY2tzIHRoZSBoZWxwZXJz IHRha2UgYmVmb3JlIHRoZWlyIGVudHJ5IHJlYWRzLgoKKiBUcmlnZ2VyIG1vZGVsCgogIEFueSBy dW50aW1lLXVucmVnaXN0cmFibGUgSU9NTVUgaW5zdGFuY2UgKHZpcnRpby1pb21tdSBzeXNmcwog IHVuYmluZDsgcGxhdGZvcm0gSU9NTVVzIHdpdGhvdXQgc3VwcHJlc3NfYmluZF9hdHRyczsgUENJ CiAgaG90LXVucGx1ZyBwYXRocykgdGltZXMgYSBjbGllbnQgZGV2aWNlIHVuZGVyZ29pbmcgRkxS L2J1cyByZXNldAogIGR1cmluZyB1bnJlZ2lzdHJhdGlvbjoKCiAgICAgICMgdGVybWluYWwgQSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJvb3QpCiAgICAgIGVjaG8gPHZpcnRp by1idXMtaWQ+ID4gL3N5cy9idXMvdmlydGlvL2RyaXZlcnMvdmlydGlvX2lvbW11L3VuYmluZAog ICAgICAjIHRlcm1pbmFsIEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyb290 KQogICAgICBlY2hvIDEgPiAvc3lzL2J1cy9wY2kvZGV2aWNlcy88QkRGPi9yZXNldCAgICAgICMg bG9vcCwgb3IgbGV0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgZHJpdmVyIHJlY29uZmlnCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0cmlnZ2VyIEZMUgoKICBUaGUgPj0xMDBtcyBy ZXNldCBib2R5IG1ha2VzIHRoZSBoaXQgcHJvYmFiaWxpdHkgZmFyIGhpZ2hlciB0aGFuCiAgdGhl IHJlbW92YWwtc2lkZSByYWNlJ3MgbWlsbGlzZWNvbmQgb3ZlcmxhcC4KCiogRXZpZGVuY2UKCiAg U291cmNlLWxldmVsIG9uIDcuMywgZnVuY3Rpb24gYnkgZnVuY3Rpb24gKGV2ZXJ5IGFuY2hvciBp cyBxdW90ZWQKICBpbiB0aGUgbWVjaGFuaXNtIHNlY3Rpb24gYWJvdmU7IGEgY29uc29saWRhdGVk IGFubm90YXRlZCBsaXN0IGlzCiAgYXZhaWxhYmxlIG9uIHJlcXVlc3QpLiAgVGhlIEEtc2lkZSB0 ZWFyZG93biB0aGF0IHRoZSBpbnRlcmxlYXZpbmcKICBjb25zdW1lcyAtLSB0aGUgdHJhdmVyc2Fs IGVudGVyaW5nIGlvbW11X3JlbGVhc2VfZGV2aWNlKCkgd2l0aG91dAogIGFueSBvZiB0aGUgcHJv YmUtc2lkZSBsb2NrcyBhbmQgZnJlZWluZyBhIGdyb3VwIHZpYSB0aGUKICB1bmNvbmRpdGlvbmFs IDo3NzUgcHV0IC0tIGlzIHRoZSBpZGVudGljYWwgY29tcG9uZW50IGRlbW9uc3RyYXRlZAogIHdp dGggS0FTQU4gaW4gbXkgcmVtb3ZhbC1zaWRlIHJlcG9ydCAocmVwcm9kdWNlciBhdHRhY2hlZCBh Z2FpbgogIGhlcmUgZm9yIGNvbnZlbmllbmNlOyBpdHMgImFiIiBhY3Rpb24gZHJpdmVzIGV4YWN0 bHkgdGhhdCB0ZWFyZG93bgogIGhhbGYpLgoKClRoYW5rcyBmb3IgdGFraW5nIGEgbG9vay4KClJl Z2FyZHMsCkhhbnhpYW5nIFh1Cnh1aHhAaHVzdC5lZHUuY24KCgo= ------=_Part_283853_1938003770.1792677904304 Content-Type: text/plain; name=iommurace.c Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="iommurace.c" Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLyoKICogaW9tbXVyYWNlLmMgLSBk eW5hbWljIHZlcmlmaWNhdGlvbiBkcml2ZXIgZm9yIHRoZSBJT01NVSBsaWZlY3ljbGUgcmFjZQog KiBhdWRpdCAoSFYtMyAvIEhWLTQgaW4gZG9jcy9tYW51YWwtcmV2aWV3LWRyaXZlcnMtYmFzZS0y MDI2LTEwLTIwLm1kKS4KICoKICogUmVnaXN0ZXJzIGEgRkFLRSBJT01NVSBpbnN0YW5jZSAoc3Ry dWN0IGlvbW11X2RldmljZSArIHN0cnVjdCBpb21tdV9vcHMpCiAqIHRocm91Z2ggdGhlIHJlYWwg RVhQT1JUX1NZTUJPTF9HUEwgY29yZSBBUElzLCBhbmQgZHJpdmVzIHRoZSBSRUFMIGNvcmUKICog Y29kZSBwYXRocyBvZiBkcml2ZXJzL2lvbW11L2lvbW11LmMgd2l0aCBSRUFMIHBsYXRmb3JtLWJ1 cyBkZXZpY2VzOgogKgogKiAgIGVudHJ5IEEgKGluc3RhbmNlIHVucmVnaXN0ZXIgdHJhdmVyc2Fs KToKICogICAgICAgaW9tbXVfZGV2aWNlX3VucmVnaXN0ZXIoKSAtPiBidXNfZm9yX2VhY2hfZGV2 IC0+IHJlbW92ZV9pb21tdV9ncm91cAogKiAgIGVudHJ5IEIgKGNsaWVudCByZW1vdmFsKToKICog ICAgICAgcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoKSAtPiBkZXZpY2VfZGVsIC0+CiAqICAg ICAgIEJVU19OT1RJRllfUkVNT1ZFRF9ERVZJQ0UgLT4gaW9tbXVfYnVzX25vdGlmaWVyIC0+IGlv bW11X3JlbGVhc2VfZGV2aWNlCiAqICAgZW50cnkgQyAoY2xpZW50IHByb2JlKToKICogICAgICAg cGxhdGZvcm1fZGV2aWNlX2FkZCgpIC0+IGRldmljZV9hZGQgLT4gQlVTX05PVElGWV9BRERfREVW SUNFIC0+CiAqICAgICAgIGlvbW11X2J1c19ub3RpZmllciAtPiBpb21tdV9wcm9iZV9kZXZpY2Ug LT4gaW9tbXVfaW5pdF9kZXZpY2UKICoKICogQ2xpZW50cyBhcmUgYm91bmQgdG8gdGhlIGZha2Ug aW5zdGFuY2UgYnkgY2FsbGluZyBpb21tdV9md3NwZWNfaW5pdCgpCiAqIChFWFBPUlRfU1lNQk9M X0dQTCkgYmV0d2VlbiBwbGF0Zm9ybV9kZXZpY2VfYWxsb2MoKSBhbmQKICogcGxhdGZvcm1fZGV2 aWNlX2FkZCgpLCBzbyB0aGUgQUREIG5vdGlmaWVyJ3MgcHJvYmUgbWF0Y2hlcyB0aGUgZmFrZSBv cHMKICogdmlhIGlvbW11X2Z3c3BlY19vcHMoKSBvbiB0aGUgc2hhcmVkIHNvZnR3YXJlIGZ3bm9k ZS4KICoKICogYWN0aW9ucyAoZWNobyA8Y21kPiA+IC9zeXMvbW9kdWxlL2lvbW11cmFjZS9wYXJh bWV0ZXJzL2FjdGlvbik6CiAqICAgc2V0dXAgICAgICAgICAgIC0gY2FycmllciBkZXZpY2UgKyBz b2Z0d2FyZSBmd25vZGUgKyBpb21tdV9kZXZpY2Vfc3lzZnNfYWRkCiAqICAgICAgICAgICAgICAg ICAgICAgKyBpb21tdV9kZXZpY2VfcmVnaXN0ZXIgKHJlYWwgYnVzX2lvbW11X3Byb2JlIHN3ZWVw KQogKiAgIHVucmVnICAgICAgICAgICAtIG9uZSBpb21tdV9kZXZpY2VfdW5yZWdpc3RlciAocmVh bCB0cmF2ZXJzYWwpCiAqICAgcmVnICAgICAgICAgICAgIC0gb25lIGlvbW11X2RldmljZV9yZWdp c3RlcgogKiAgIHJlZ2xvb3AgTiAgICAgICAtIE4gc2VxdWVudGlhbCByZWdpc3Rlcit1bnJlZ2lz dGVyIHJvdW5kcyAoYmFzZWxpbmUpCiAqICAgY2xpZW50IE4gICAgICAgIC0gTiBjbGllbnRzIGFk ZGVkIHRoZW4gcmVtb3ZlZCBzZXF1ZW50aWFsbHkgKGJhc2VsaW5lOwogKiAgICAgICAgICAgICAg ICAgICAgIGV4cGVjdCB6ZXJvIHNwbGF0cyB3aXRoIGEgc3RhYmxlIHJlZ2lzdGVyZWQgaW5zdGFu Y2UpCiAqICAgYWIgTiAgICAgICAgICAgIC0gSFYtMyBBIHggQjoga3RocmVhZCBBIGxvb3BzIHJl Z2lzdGVyK3VucmVnaXN0ZXIsCiAqICAgICAgICAgICAgICAgICAgICAga3RocmVhZCBCIGxvb3Bz IGNsaWVudCBhZGQrZGVsOyByZWFsIHBhdGhzIG9uIGJvdGggc2lkZXMKICogICBhYyBOICAgICAg ICAgICAgLSBIVi00IEEgeCBDOiBrdGhyZWFkIEEgbG9vcHMgcmVnaXN0ZXIrdW5yZWdpc3RlciwK ICogICAgICAgICAgICAgICAgICAgICBrdGhyZWFkIEMgbG9vcHMgY2xpZW50IGFkZCBvbmx5IChX MS9XMiB3aW5kb3dzLAogKiAgICAgICAgICAgICAgICAgICAgIGNsaWVudHMga2VwdCBmb3IgcG9z dC1tb3J0ZW0gaW5zcGVjdGlvbikKICogICBhYzEgTiAgICAgICAgICAgLSBzYW1lIGFzIGFjIGJ1 dCBkZXZpY2VfZ3JvdXAgPSBnZW5lcmljX3NpbmdsZV9kZXZpY2VfZ3JvdXAKICogICAgICAgICAg ICAgICAgICAgICAoVzM6IHVucmVnaXN0ZXIgdGFpbCBzaW5nbGV0b25fZ3JvdXAgcmFjZSBzdXJm YWNlKQogKiAgIGNsZWFudXAgICAgICAgICAtIGJlc3QtZWZmb3J0IHRlYXJkb3duICh1bnJlZ2lz dGVyLCBkcm9wIGNsaWVudHMsIHN5c2ZzKQogKiAgIHN0YXR1cyAgICAgICAgICAtIGxvZyBzdGF0 cwogKgogKiBLZXJuZWwgc291cmNlIGlzIE5PVCBtb2RpZmllZDsgZXZlcnl0aGluZyBpcyBkcml2 ZW4gdGhyb3VnaCBleHBvcnRlZAogKiBpb21tdSBjb3JlIEFQSXMsIG1hdGNoaW5nIHRoZSBtZXRo b2RvbG9neSBvZiBwbXVfcmFjZS9tY3JzaW0vcmVnbWFwX3JhY2UuCiAqCiAqIE5PVEU6IGFiL2Fj L2FjMSBtYXkgbGVhayBtb2R1bGUgcmVmZXJlbmNlcyB3aGVuIHRoZSBhdWRpdCdzICJXMiBkZWZl Y3RpdmUKICogc3RhdGUiIGhpdHMgKHByb2JlIHN1Y2NlZWRlZCAtPiB0cnlfbW9kdWxlX2dldCwg bGF0ZXIgcmVtb3ZhbCBza2lwcwogKiBpb21tdV9kZWluaXRfZGV2aWNlIC0+IG5vIG1vZHVsZV9w dXQpLiBybW1vZCB0aGVuIGZhaWxzIHdpdGggRUJVU1k7IHRoZQogKiBwbGFucyB0aGVyZWZvcmUg ZG8gbm90IHJtbW9kIGFmdGVyIHJhY2UgYWN0aW9ucyAtIHRoZSBsZWFrIGl0c2VsZiBpcyBhCiAq IHZlcmlmaWVkIHByZWRpY3Rpb24gb2YgdGhlIHJlcG9ydC4KICovCiNkZWZpbmUgcHJfZm10KGZt dCkgIklPTU1VUkFDRTogIiBmbXQKCiNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPgojaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgojaW5jbHVkZSA8bGlu dXgvZGVsYXkuaD4KI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgojaW5jbHVkZSA8bGludXgvc3RyaW5n Lmg+CiNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiNpbmNsdWRlIDxsaW51eC9jb21wbGV0aW9uLmg+ CiNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rldmlj ZS5oPgojaW5jbHVkZSA8bGludXgvaW9tbXUuaD4KI2luY2x1ZGUgPGxpbnV4L3Byb3BlcnR5Lmg+ CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gKi8KLyogZmFrZSBJT01NVSBpbnN0YW5jZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwoKc3RhdGljIHN0cnVjdCBpb21tdV9k ZXZpY2UgZm9tX2lvbW11OwpzdGF0aWMgc3RydWN0IGlvbW11X29wcyBmb21fb3BzOwpzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RldmljZSAqY2FycmllcjsKc3RhdGljIHN0cnVjdCBmd25vZGVfaGFu ZGxlICpzd19ub2RlOwpzdGF0aWMgYXRvbWljX3QgcmVnX3N0YXRlID0gQVRPTUlDX0lOSVQoMCk7 IC8qIDEgPSByZWdpc3RlcmVkICovCnN0YXRpYyBpbnQgdXNlX3NpbmdsZXRvbjsKCi8qIHN0YXRz ICovCnN0YXRpYyB1bnNpZ25lZCBsb25nIHN0YXRfcmVnLCBzdGF0X3VucmVnLCBzdGF0X3JlZ19m YWlsOwpzdGF0aWMgdW5zaWduZWQgbG9uZyBzdGF0X2FkZF9vaywgc3RhdF9hZGRfZmFpbCwgc3Rh dF9md19mYWlsLCBzdGF0X2RlbDsKc3RhdGljIHVuc2lnbmVkIGxvbmcgc3RhdF9iX2RvbmUsIHN0 YXRfY19kb25lLCBzdGF0X2FfZG9uZTsKCi8qIGZha2Ugc3RhdGljIGlkZW50aXR5IGRvbWFpbjog YXR0YWNoIGlzIGEgbm8tb3AsIGZyZWUgbXVzdCBub3Qga2ZyZWUgKi8Kc3RhdGljIGludCBmb21f YXR0YWNoX2RldihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb20sIHN0cnVjdCBkZXZpY2UgKmRldiwK CQkJICBzdHJ1Y3QgaW9tbXVfZG9tYWluICpvbGQpCnsKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9p ZCBmb21fZG9tX2ZyZWUoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tKQp7Cglwcl9pbmZvKCJmb21f ZG9tX2ZyZWUgb24gc3RhdGljIGlkZW50aXR5IGRvbWFpbiAoaWdub3JlZClcbiIpOwp9CgpzdGF0 aWMgY29uc3Qgc3RydWN0IGlvbW11X2RvbWFpbl9vcHMgZm9tX2RvbV9vcHMgPSB7CgkuYXR0YWNo X2RldiA9IGZvbV9hdHRhY2hfZGV2LAoJLmZyZWUgPSBmb21fZG9tX2ZyZWUsCn07CgpzdGF0aWMg c3RydWN0IGlvbW11X2RvbWFpbiBmb21faWRlbnRpdHlfZG9tID0gewoJLnR5cGUgPSBJT01NVV9E T01BSU5fSURFTlRJVFksCgkub3BzID0gJmZvbV9kb21fb3BzLAoJLm93bmVyID0gJmZvbV9vcHMs CgkucGdzaXplX2JpdG1hcCA9IDAsCgkuZ2VvbWV0cnkgPSB7CgkJLmFwZXJ0dXJlX3N0YXJ0ID0g MCwKCQkuYXBlcnR1cmVfZW5kID0gfjBVTCwKCQkuZm9yY2VfYXBlcnR1cmUgPSBmYWxzZSwKCX0s Cn07CgpzdGF0aWMgc3RydWN0IGlvbW11X2RldmljZSAqZm9tX3Byb2JlX2RldmljZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpCnsKCXJldHVybiAmZm9tX2lvbW11Owp9CgpzdGF0aWMgdm9pZCBmb21fcmVs ZWFzZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQp7Cn0KCnN0YXRpYyBpbnQgZm9tX2RlZl9k b21haW5fdHlwZShzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKCXJldHVybiBJT01NVV9ET01BSU5fSURF TlRJVFk7Cn0KCnN0YXRpYyBpbnQgZm9tX3JlZ2lzdGVyKHZvaWQpCnsKCWludCByZXQ7CgoJaWYg KGF0b21pY194Y2hnKCZyZWdfc3RhdGUsIDEpICE9IDApCgkJcmV0dXJuIDA7IC8qIGFscmVhZHkg cmVnaXN0ZXJlZCAqLwoKCWZvbV9vcHMgPSAoc3RydWN0IGlvbW11X29wcyl7CgkJLm93bmVyCQkJ PSBUSElTX01PRFVMRSwKCQkucHJvYmVfZGV2aWNlCQk9IGZvbV9wcm9iZV9kZXZpY2UsCgkJLnJl bGVhc2VfZGV2aWNlCQk9IGZvbV9yZWxlYXNlX2RldmljZSwKCQkuZGV2aWNlX2dyb3VwCQk9IHVz ZV9zaW5nbGV0b24gPwoJCQkJCSAgZ2VuZXJpY19zaW5nbGVfZGV2aWNlX2dyb3VwIDoKCQkJCQkg IGdlbmVyaWNfZGV2aWNlX2dyb3VwLAoJCS5kZWZfZG9tYWluX3R5cGUJPSBmb21fZGVmX2RvbWFp bl90eXBlLAoJCS5pZGVudGl0eV9kb21haW4JPSAmZm9tX2lkZW50aXR5X2RvbSwKCX07CgoJcmV0 ID0gaW9tbXVfZGV2aWNlX3JlZ2lzdGVyKCZmb21faW9tbXUsICZmb21fb3BzLCAmY2Fycmllci0+ ZGV2KTsKCWlmIChyZXQpIHsKCQlhdG9taWNfc2V0KCZyZWdfc3RhdGUsIDApOwoJCXN0YXRfcmVn X2ZhaWwrKzsKCQlyZXR1cm4gcmV0OwoJfQoJc3RhdF9yZWcrKzsKCXJldHVybiAwOwp9CgpzdGF0 aWMgdm9pZCBmb21fdW5yZWdpc3Rlcih2b2lkKQp7CglpZiAoYXRvbWljX3hjaGcoJnJlZ19zdGF0 ZSwgMCkgIT0gMSkKCQlyZXR1cm47IC8qIG5vdCByZWdpc3RlcmVkICovCglpb21tdV9kZXZpY2Vf dW5yZWdpc3RlcigmZm9tX2lvbW11KTsKCXN0YXRfdW5yZWcrKzsKfQoKLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICov Ci8qIGZha2UgY2xpZW50IGRldmljZXMgKHJlYWwgcGxhdGZvcm0gYnVzIGRldmljZXMpICAgICAg ICAgICAgICAgICAgICAgKi8KCiNkZWZpbmUgTUFYX0NMSSA1MTIKc3RhdGljIHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKmNsaVtNQVhfQ0xJXTsKc3RhdGljIGludCBucl9jbGk7CgpzdGF0aWMgaW50 IGZvbV9uZXdfY2xpZW50KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKipvdXQpCnsKCXN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXY7CglpbnQgcmV0OwoKCXBkZXYgPSBwbGF0Zm9ybV9kZXZpY2Vf YWxsb2MoImZvbWNsaSIsIFBMQVRGT1JNX0RFVklEX0FVVE8pOwoJaWYgKCFwZGV2KQoJCXJldHVy biAtRU5PTUVNOwoKCS8qCgkgKiBCaW5kIHRoZSBjbGllbnQncyBmd3NwZWMgdG8gdGhlIGZha2Ug aW5zdGFuY2UgQkVGT1JFIGRldmljZV9hZGQgc28KCSAqIHRoZSBBREQgbm90aWZpZXIncyBpb21t dV9wcm9iZV9kZXZpY2UoKSBtYXRjaGVzIG91ciBmYWtlIG9wcy4KCSAqIEZhaWxzIHdpdGggLUVO T0RFVi8tRVBST0JFX0RFRkVSIHdoZW4gdGhlIGluc3RhbmNlIGlzIGN1cnJlbnRseQoJICogdW5y ZWdpc3RlcmVkIC8gbWlkLXJlZ2lzdHJhdGlvbjogdGhlIG5hdHVyYWwgbm9uLXJhY3kgYnJhbmNo LgoJICovCglyZXQgPSBpb21tdV9md3NwZWNfaW5pdCgmcGRldi0+ZGV2LCBzd19ub2RlKTsKCWlm IChyZXQpIHsKCQlzdGF0X2Z3X2ZhaWwrKzsKCQlwbGF0Zm9ybV9kZXZpY2VfcHV0KHBkZXYpOwoJ CXJldHVybiByZXQ7Cgl9CgoJcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZChwZGV2KTsKCWlmIChy ZXQpIHsKCQlzdGF0X2FkZF9mYWlsKys7CgkJcGxhdGZvcm1fZGV2aWNlX3B1dChwZGV2KTsKCQly ZXR1cm4gcmV0OwoJfQoJc3RhdF9hZGRfb2srKzsKCSpvdXQgPSBwZGV2OwoJcmV0dXJuIDA7Cn0K CnN0YXRpYyB2b2lkIGZvbV9kZWxfY2xpZW50KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp CnsKCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHBkZXYpOwoJc3RhdF9kZWwrKzsKfQoKLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICovCi8qIHJhY2UgdGhyZWFkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KCnN0cnVjdCByYXJncyB7CglpbnQgcm91bmRz Owp9OwoKc3RhdGljIHN0cnVjdCByYXJncyByYSwgcmI7CgpzdGF0aWMgaW50IHRocmVhZF9hKHZv aWQgKmRhdGEpIC8qIGVudHJ5IEE6IHJlZ2lzdGVyL3VucmVnaXN0ZXIgcm91bmRzICovCnsKCXN0 cnVjdCByYXJncyAqYSA9IGRhdGE7CglpbnQgaTsKCglmb3IgKGkgPSAwOyBpIDwgYS0+cm91bmRz OyBpKyspIHsKCQlmb21fcmVnaXN0ZXIoKTsKCQlmb21fdW5yZWdpc3RlcigpOwoJCWlmICgoaSAl IDUwMCkgPT0gNDk5KQoJCQlwcl9pbmZvKCJ0aHJlYWRfYSByb3VuZCAlZFxuIiwgaSArIDEpOwoJ CS8qCgkJICogTm8gc2xlZXA6IG1heGltaXplIG92ZXJsYXAgb2YgdGhlIHVucmVnaXN0ZXIgdHJh dmVyc2FsCgkJICogd2l0aCBjb25jdXJyZW50IGNsaWVudCBhZGQvZGVsL3Byb2JlIG9uIG90aGVy IENQVXMuCgkJICovCgl9CglzdGF0X2FfZG9uZSsrOwoJcHJfaW5mbygidGhyZWFkX2EgZmluaXNo ZWQgJWQgcm91bmRzXG4iLCBhLT5yb3VuZHMpOwoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQgdGhy ZWFkX2Iodm9pZCAqZGF0YSkgLyogZW50cnkgQjogY2xpZW50IGFkZCtkZWwgY2h1cm4gKi8KewoJ c3RydWN0IHJhcmdzICphID0gZGF0YTsKCWludCBpOwoJc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldjsKCglmb3IgKGkgPSAwOyBpIDwgYS0+cm91bmRzOyBpKyspIHsKCQlpZiAoZm9tX25ld19j bGllbnQoJnBkZXYpKQoJCQljb250aW51ZTsKCQlmb21fZGVsX2NsaWVudChwZGV2KTsKCQlpZiAo KGkgJSA1MDApID09IDQ5OSkKCQkJcHJfaW5mbygidGhyZWFkX2Igcm91bmQgJWRcbiIsIGkgKyAx KTsKCX0KCXN0YXRfYl9kb25lKys7Cglwcl9pbmZvKCJ0aHJlYWRfYiBmaW5pc2hlZCAlZCByb3Vu ZHMgKGFkZF9vaz0lbHUgZndfZmFpbD0lbHUpXG4iLAoJCWEtPnJvdW5kcywgc3RhdF9hZGRfb2ss IHN0YXRfZndfZmFpbCk7CglyZXR1cm4gMDsKfQoKc3RhdGljIGludCB0aHJlYWRfYyh2b2lkICpk YXRhKSAvKiBlbnRyeSBDOiBjbGllbnQgYWRkIG9ubHkgKEhWLTQpICovCnsKCXN0cnVjdCByYXJn cyAqYSA9IGRhdGE7CglpbnQgaTsKCglmb3IgKGkgPSAwOyBpIDwgYS0+cm91bmRzOyBpKyspIHsK CQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2OwoKCQlpZiAobnJfY2xpIDwgTUFYX0NMSSkg ewoJCQlpZiAoZm9tX25ld19jbGllbnQoJnBkZXYpID09IDApCgkJCQljbGlbbnJfY2xpKytdID0g cGRldjsKCQl9CgkJaWYgKChpICUgNTAwKSA9PSA0OTkpCgkJCXByX2luZm8oInRocmVhZF9jIHJv dW5kICVkXG4iLCBpICsgMSk7Cgl9CglzdGF0X2NfZG9uZSsrOwoJcHJfaW5mbygidGhyZWFkX2Mg ZmluaXNoZWQgJWQgcm91bmRzIChhZGRlZD0lZClcbiIsIGEtPnJvdW5kcywgbnJfY2xpKTsKCXJl dHVybiAwOwp9CgpzdGF0aWMgdm9pZCBydW5fcmFjZShjb25zdCBjaGFyICpraW5kLCBpbnQgcm91 bmRzKQp7CglzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhLCAqdGI7CgoJcmEucm91bmRzID0gcm91bmRz OwoJcmIucm91bmRzID0gcm91bmRzOwoKCWlmIChzdHJjbXAoa2luZCwgImFiIikgPT0gMCkKCQl0 YiA9IGt0aHJlYWRfcnVuKHRocmVhZF9iLCAmcmIsICJpb21tdXJhY2VfYiIpOwoJZWxzZQoJCXRi ID0ga3RocmVhZF9ydW4odGhyZWFkX2MsICZyYiwgImlvbW11cmFjZV9jIik7Cgl0YSA9IGt0aHJl YWRfcnVuKHRocmVhZF9hLCAmcmEsICJpb21tdXJhY2VfYSIpOwoJaWYgKElTX0VSUih0YSkgfHwg SVNfRVJSKHRiKSkgewoJCXByX2Vycigia3RocmVhZCBjcmVhdGlvbiBmYWlsZWRcbiIpOwoJCXJl dHVybjsKCX0KCS8qIGJsb2NrIHVudGlsIGJvdGggc2lkZXMgY29tcGxldGUgKGJvdW5kZWQ6IGEg Y3Jhc2hlZCB0aHJlYWQgbmV2ZXIKCSAqIGluY3JlbWVudHMgaXRzIGRvbmUgY291bnRlciAtIGJh aWwgb3V0IGFmdGVyIDE1MHMgYW5kIGxldCB0aGUKCSAqIHBsYW4gY29udGludWU7IHRoZSBLQVNB TiByZXBvcnQgaW4gZG1lc2cgaXMgdGhlIGV2aWRlbmNlKSAqLwoJewoJCWludCB3YWl0ZWQgPSAw OwoKCQl3aGlsZSAoc3RhdF9hX2RvbmUgKyBzdGF0X2JfZG9uZSArIHN0YXRfY19kb25lIDwgMiAm JgoJCSAgICAgICB3YWl0ZWQgPCAxNTAwMDApIHsKCQkJbXNsZWVwKDIwMCk7CgkJCXdhaXRlZCAr PSAyMDA7CgkJfQoJfQoJcHJfaW5mbygicmFjZSAlcyByb3VuZHM9JWQgY29tcGxldGVcbiIsIGtp bmQsIHJvdW5kcyk7Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwovKiBhY3Rpb24gcGFyYW1ldGVyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCgpzdGF0aWMg Y2hhciBhY3Rpb25fYnVmWzY0XTsKCnN0YXRpYyBpbnQgYWN0aW9uX3NldChjb25zdCBjaGFyICp2 YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKQp7CgljaGFyIGNtZFsxNl07Cglsb25n IG4gPSAwOwoJaW50IGdvdDsKCglzdHJzY3B5KGFjdGlvbl9idWYsIHZhbCwgc2l6ZW9mKGFjdGlv bl9idWYpKTsKCWdvdCA9IHNzY2FuZih2YWwsICIlMTVzICVsZCIsIGNtZCwgJm4pOwoJaWYgKGdv dCA8IDEpCgkJcmV0dXJuIC1FSU5WQUw7CgoJaWYgKHN0cmNtcChjbWQsICJzZXR1cCIpID09IDAp IHsKCQlpbnQgcmV0OwoKCQlpZiAoY2FycmllcikgewoJCQlwcl9pbmZvKCJzZXR1cDogYWxyZWFk eSBkb25lXG4iKTsKCQkJcmV0dXJuIDA7CgkJfQoJCXN3X25vZGUgPSBmd25vZGVfY3JlYXRlX3Nv ZnR3YXJlX25vZGUoTlVMTCwgTlVMTCk7CgkJaWYgKElTX0VSUihzd19ub2RlKSkgewoJCQlzd19u b2RlID0gTlVMTDsKCQkJcmV0dXJuIFBUUl9FUlIoc3dfbm9kZSk7CgkJfQoJCWNhcnJpZXIgPSBw bGF0Zm9ybV9kZXZpY2VfYWxsb2MoImZvbWh3IiwgUExBVEZPUk1fREVWSURfQVVUTyk7CgkJaWYg KCFjYXJyaWVyKSB7CgkJCWZ3bm9kZV9yZW1vdmVfc29mdHdhcmVfbm9kZShzd19ub2RlKTsKCQkJ c3dfbm9kZSA9IE5VTEw7CgkJCXJldHVybiAtRU5PTUVNOwoJCX0KCQlkZXZpY2Vfc2V0X25vZGUo JmNhcnJpZXItPmRldiwgc3dfbm9kZSk7CgkJcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZChjYXJy aWVyKTsKCQlpZiAocmV0KSB7CgkJCXBsYXRmb3JtX2RldmljZV9wdXQoY2Fycmllcik7CgkJCWNh cnJpZXIgPSBOVUxMOwoJCQlmd25vZGVfcmVtb3ZlX3NvZnR3YXJlX25vZGUoc3dfbm9kZSk7CgkJ CXN3X25vZGUgPSBOVUxMOwoJCQlyZXR1cm4gcmV0OwoJCX0KCQlyZXQgPSBpb21tdV9kZXZpY2Vf c3lzZnNfYWRkKCZmb21faW9tbXUsICZjYXJyaWVyLT5kZXYsIE5VTEwsCgkJCQkJICAgICAiZm9t X2lvbW11MCIpOwoJCWlmIChyZXQpIHsKCQkJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoY2Fy cmllcik7CgkJCWNhcnJpZXIgPSBOVUxMOwoJCQlmd25vZGVfcmVtb3ZlX3NvZnR3YXJlX25vZGUo c3dfbm9kZSk7CgkJCXN3X25vZGUgPSBOVUxMOwoJCQlyZXR1cm4gcmV0OwoJCX0KCQlyZXQgPSBm b21fcmVnaXN0ZXIoKTsKCQlwcl9pbmZvKCJzZXR1cCBkb25lIChyZWdpc3RlciByZXQ9JWQpXG4i LCByZXQpOwoJCXJldHVybiByZXQ7Cgl9CgoJaWYgKHN0cmNtcChjbWQsICJ1bnJlZyIpID09IDAp IHsKCQlmb21fdW5yZWdpc3RlcigpOwoJCXByX2luZm8oInVucmVnIGRvbmVcbiIpOwoJCXJldHVy biAwOwoJfQoJaWYgKHN0cmNtcChjbWQsICJyZWciKSA9PSAwKSB7CgkJaW50IHJldCA9IGZvbV9y ZWdpc3RlcigpOwoKCQlwcl9pbmZvKCJyZWcgcmV0PSVkXG4iLCByZXQpOwoJCXJldHVybiByZXQ7 Cgl9CglpZiAoc3RyY21wKGNtZCwgInJlZ2xvb3AiKSA9PSAwICYmIGdvdCA9PSAyKSB7CgkJbG9u ZyBpOwoKCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJCWZvbV9yZWdpc3RlcigpOwoJCQlm b21fdW5yZWdpc3RlcigpOwoJCX0KCQlwcl9pbmZvKCJyZWdsb29wICVsZCBkb25lXG4iLCBuKTsK CQlyZXR1cm4gMDsKCX0KCWlmIChzdHJjbXAoY21kLCAiY2xpZW50IikgPT0gMCAmJiBnb3QgPT0g MikgewoJCWxvbmcgaTsKCQlpbnQgZXJyID0gMDsKCgkJaWYgKG4gPiBNQVhfQ0xJKQoJCQluID0g TUFYX0NMSTsKCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJCWlmIChmb21fbmV3X2NsaWVu dCgmY2xpW25yX2NsaV0pKSB7CgkJCQllcnIgPSAxOwoJCQkJYnJlYWs7CgkJCX0KCQkJbnJfY2xp Kys7CgkJfQoJCW1zbGVlcCg1MDApOyAvKiBsZXQgcHJvYmVzIHNldHRsZSAqLwoJCWZvciAoaSA9 IDA7IGkgPCBucl9jbGk7IGkrKykKCQkJZm9tX2RlbF9jbGllbnQoY2xpW2ldKTsKCQlucl9jbGkg PSAwOwoJCXByX2luZm8oImNsaWVudCAlbGQgZG9uZSAoZXJyPSVkKVxuIiwgbiwgZXJyKTsKCQly ZXR1cm4gMDsKCX0KCWlmICgoc3RyY21wKGNtZCwgImFiIikgPT0gMCB8fCBzdHJjbXAoY21kLCAi YWMiKSA9PSAwIHx8CgkgICAgIHN0cmNtcChjbWQsICJhYzEiKSA9PSAwKSAmJiBnb3QgPT0gMikg ewoJCXVzZV9zaW5nbGV0b24gPSAoY21kWzJdID09ICcxJyk7CgkJc3RhdF9hX2RvbmUgPSBzdGF0 X2JfZG9uZSA9IHN0YXRfY19kb25lID0gMDsKCQlydW5fcmFjZShjbWQsIChpbnQpbik7CgkJcmV0 dXJuIDA7Cgl9CglpZiAoc3RyY21wKGNtZCwgImNsZWFudXAiKSA9PSAwKSB7CgkJaW50IGk7CgoJ CWZvbV91bnJlZ2lzdGVyKCk7CgkJZm9yIChpID0gMDsgaSA8IG5yX2NsaTsgaSsrKQoJCQlpZiAo Y2xpW2ldKQoJCQkJZm9tX2RlbF9jbGllbnQoY2xpW2ldKTsKCQlucl9jbGkgPSAwOwoJCXByX2lu Zm8oImNsZWFudXAgZG9uZSAobW9kdWxlIHJlZmNvdW50IGxlYWsgPT4gcm1tb2QgRUJVU1kgaXMg ZXhwZWN0ZWQgYWZ0ZXIgcmFjZXMpXG4iKTsKCQlyZXR1cm4gMDsKCX0KCWlmIChzdHJjbXAoY21k LCAic3RhdHVzIikgPT0gMCkgewoJCXByX2luZm8oInN0YXRzOiByZWc9JWx1IHVucmVnPSVsdSBy ZWdfZmFpbD0lbHUgYWRkX29rPSVsdSBhZGRfZmFpbD0lbHUgZndfZmFpbD0lbHUgZGVsPSVsdVxu IiwKCQkJc3RhdF9yZWcsIHN0YXRfdW5yZWcsIHN0YXRfcmVnX2ZhaWwsIHN0YXRfYWRkX29rLAoJ CQlzdGF0X2FkZF9mYWlsLCBzdGF0X2Z3X2ZhaWwsIHN0YXRfZGVsKTsKCQlwcl9pbmZvKCJjbGll bnRzIHRyYWNrZWQ9JWQgc2luZ2xldG9uPSVkXG4iLCBucl9jbGksIHVzZV9zaW5nbGV0b24pOwoJ CXJldHVybiAwOwoJfQoKCXJldHVybiAtRUlOVkFMOwp9CgpzdGF0aWMgY29uc3Qgc3RydWN0IGtl cm5lbF9wYXJhbV9vcHMgYWN0aW9uX29wcyA9IHsKCS5zZXQgPSBhY3Rpb25fc2V0LAoJLmdldCA9 IHBhcmFtX2dldF9zdHJpbmcsCn07Cm1vZHVsZV9wYXJhbV9jYihhY3Rpb24sICZhY3Rpb25fb3Bz LCAmYWN0aW9uX2J1ZiwgMDYwMCk7Ck1PRFVMRV9QQVJNX0RFU0MoYWN0aW9uLCAic2V0dXB8dW5y ZWd8cmVnfHJlZ2xvb3AgTnxjbGllbnQgTnxhYiBOfGFjIE58YWMxIE58Y2xlYW51cHxzdGF0dXMi KTsKCnN0YXRpYyBpbnQgX19pbml0IGlvbW11cmFjZV9pbml0KHZvaWQpCnsKCXByX2luZm8oImxv YWRlZCAoa2VybmVsIGhhcyBJT01NVV9BUEkpXG4iKTsKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9p ZCBfX2V4aXQgaW9tbXVyYWNlX2V4aXQodm9pZCkKewoJaW50IGk7CgoJZm9tX3VucmVnaXN0ZXIo KTsKCWZvciAoaSA9IDA7IGkgPCBucl9jbGk7IGkrKykKCQlpZiAoY2xpW2ldKQoJCQlmb21fZGVs X2NsaWVudChjbGlbaV0pOwoJbnJfY2xpID0gMDsKCWlmIChjYXJyaWVyKSB7CgkJaW9tbXVfZGV2 aWNlX3N5c2ZzX3JlbW92ZSgmZm9tX2lvbW11KTsKCQlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3Rl cihjYXJyaWVyKTsKCQlmd25vZGVfcmVtb3ZlX3NvZnR3YXJlX25vZGUoc3dfbm9kZSk7Cgl9Cglw cl9pbmZvKCJ1bmxvYWRlZFxuIik7Cn0KCm1vZHVsZV9pbml0KGlvbW11cmFjZV9pbml0KTsKbW9k dWxlX2V4aXQoaW9tbXVyYWNlX2V4aXQpOwoKTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpNT0RVTEVf REVTQ1JJUFRJT04oIklPTU1VIGxpZmVjeWNsZSByYWNlIHZlcmlmaWNhdGlvbiBkcml2ZXIgKEhW LTMvSFYtNCkiKTsK ------=_Part_283853_1938003770.1792677904304--