From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=13.75.44.102 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794381466; b=2qlnCgaTWl/xG2eSfy2MO09zwjF5cFKtH599+y874vkrpsUCIvLatdmzIU1r+EQMBOtf Aj5CoTDjfxB5lRvBnspumrI6ZtlF58im69uyKuqu0W2seaZgEagEW/JYk0rETCX+J0yoU LpepupiAopOeeZWjv5vvuTVabDN25GI44s1V2rGdB0CE+q+qfUPcsiCLuBrDmExRzrhqA cymBSFMa08B8J74onkWVGpfslc6pePyryaov5a91sNzEoZfDTlSGAmLiqqI5iO/aSzOKY Nw2Qt4gkLOlR0i1hHMGI+gaIa7Z5L7mqlCMYqa7wmQ/tsMFIieAK1fSPIKiUB7ung9g== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794381466; 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=9GROqxwfFk5eMQ3XhcVTUjn+6o7If1GsGS/fJAF2/gY=; b=mXK4GdSPrZqSjKUw4RPzXu5WJKGk/uEak3kVfHwWi/MKS0abhloxRj9GhUBj0OjhsNUb NbwxQ1keCb7QvsBLKpGf4qyuAYtyRZuGk4D+ABokcCEOIg+POr5gutFGFsxlPay1j3IJY VjO0iQhczBeUvG+czctfXp6MWj8Cn/dtuNNNj79RibfdKoX0c+xQQO5q0matpcTltsKnP 686hzisBrnYfKV3NomcUW23a9CcEnCx7+bREuEkv1NrzGdaepbgpJKWBjv3kdfWaWPg6l +LpTjLneiqGLArEn/nTsd45L2LPWGxTSnXbPgWCkbbfn/VcxnDPn5ua/TWzSW7HA9hw== 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.75.44.102 Received: from azure-sdnproxy.icoremail.net (azure-sdnproxy.icoremail.net [13.75.44.102]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 459BE606A324 for ; Wed, 11 Nov 2026 07:17:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 459BE606A324 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-app1 (Coremail) ; Wed, 11 Nov 2026 15:17:38 +0800 (GMT+08:00) Date: Wed, 11 Nov 2026 15:17:38 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: =?UTF-8?B?5b6Q5pmX57+U?= To: tglx@kernel.org Cc: linux-kernel@vger.kernel.org Subject: genirq: NMI dispatch reads struct irqaction with no quiescence -- use-after-free across free_nmi()'s kfree (x86 verification on the arch-independent core path) 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?Lk24nTiH6nJ5xwDR7hwMki1N8jM= Content-Type: multipart/mixed; boundary="----=_Part_494561_157968919.1794381458198" 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: <57077c85.24251.1a1c9782b17.Coremail.xuhx@hust.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID:IAEQrMA2_2qSFvRqgF41AA--.12266W X-CM-SenderInfo: bgsqjkayqyjmo6kx23oohg3hdfq/1tbiAQMIB2rzQ+17NAAAs1 X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWkKw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= ------=_Part_494561_157968919.1794381458198 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 aGFuZGxlX2Zhc3Rlb2lfbm1pKCkgKGtlcm5lbC9pcnEvY2hpcC5jOjc5Mi04MTApLCB0aGUgU1BJ LU5NSSBmbG93CmhhbmRsZXIsIHNuYXBzaG90cyBkZXNjLT5hY3Rpb24gYXQgZW50cnkgd2l0aCBu byBsb2NrICg6Nzk1KSBhbmQgdGhlbgp1c2VzIHRoYXQgcG9pbnRlciBpbiBOTUkgY29udGV4dDog dGhlIHRyYWNlcG9pbnQocykgKDo4MDEvOjgwNiksIHRoZQppbmRpcmVjdCBjYWxsIGFjdGlvbi0+ aGFuZGxlcihpcnEsIGFjdGlvbi0+ZGV2X2lkKSAoOjgwNSkgYW5kIHRoZQp0cmFpbGluZyBpcnFf ZW9pLiAgVGhlIHVucmVnaXN0ZXIgcGF0aCBmcmVlX25taSgpIC0+IF9fY2xlYW51cF9ubWkoKQoo a2VybmVsL2lycS9tYW5hZ2UuYzoyMDMyLTIwNjUpIHJlbW92ZXMgdGhlIHB1YmxpY2F0aW9uIHVu ZGVyCmRlc2MtPmxvY2ssIHRoZW4ga2ZyZWUoKXMgdGhlIGFjdGlvbiBPVVRTSURFIHRoZSBsb2Nr ICg6MjA1NykgLS0KdGhlcmUgaXMgbm8gbWVjaGFuaXNtIGFueXdoZXJlIHRoYXQgd2FpdHMgZm9y IGFuIGluLWZsaWdodCBOTUkKaGFuZGxlcjogdGhlIGZsb3cgaGFuZGxlciBuZXZlciBzZXRzIElS UURfSVJRX0lOUFJPR1JFU1MgKG5vCklSUURfSVJRX0lOUFJPR1JFU1MgaW4gdGhlIHdob2xlIGZ1 bmN0aW9uLCBzbyBfX3N5bmNocm9uaXplX2hhcmRpcnEncwpzcGluIGNhbiBuZXZlciBvYnNlcnZl IGFuIGluLWZsaWdodCBOTUkpLCB0aGVyZSBpcyBubyByZWZlcmVuY2UKY291bnQsIG5vIFJDVSwg YW5kIG5vIGluLWZsaWdodCBjb3VudGVyIG9uIHN0cnVjdCBpcnFhY3Rpb24uICBXaGVuCnRoZSBy ZW1vdmUgc2lkZSBhbmQgYW4gaW4tZmxpZ2h0IE5NSSBydW4gY29uY3VycmVudGx5LCB0aGUgaW4t ZmxpZ2h0CmhhbmRsZXIga2VlcHMgZGVyZWZlcmVuY2luZyB0aGUga2ZyZWUoKWQgYWN0aW9uIC0t IGluY2x1ZGluZyByZWFkaW5nCnRoZSBmdW5jdGlvbiBwb2ludGVyIGFuZCBpbmRpcmVjdC1jYWxs aW5nIGl0IC0tIHdoaWNoIGhhcHBlbnMgaW4gTk1JCmNvbnRleHQgKHBhbmljIG9yIGhhcmQgbG9j a3VwOyBubyBzYWZlIHJlY292ZXJ5KS4gIEkgdmVyaWZpZWQgdGhpcwpvbmUtc2hvdCBvbiBhIHBy aXN0aW5lIExpbnV4IDcuMyBLQVNBTiBrZXJuZWwgYnkgZHJpdmluZyB0aGUKYXJjaC1pbmRlcGVu ZGVudCBnZW5pcnEgY29yZSB3aXRoIGEgZmFrZSBOTUktY2FwYWJsZSBpcnFjaGlwIG1vZHVsZQoo SVJRQ0hJUF9TVVBQT1JUU19OTUksIG1pcnJvcmluZyB0aGUgR0lDIGRyaXZlcidzIG5taV9zZXR1 cC90ZWFyZG93bgpzZW1hbnRpY3MpOiB3aXRoIHRoZSBkaXNwYXRjaCB0aHJlYWQgaGVsZCBieSBr cHJvYmUgcmlnaHQgYWZ0ZXIgdGhlCnNuYXBzaG90IChoYW5kbGVfZmFzdGVvaV9ubWkrMHg1Nikg YW5kIGZyZWVfbm1pIGNvbXBsZXRpbmcgaXRzIGtmcmVlCm9uIGFub3RoZXIgQ1BVLCB0aGUgcmVs ZWFzZSBwcm9kdWNlZCBleGFjdGx5IHRoZSB0d28gcHJlZGljdGVkCnNsYWItdXNlLWFmdGVyLWZy ZWUgcmVwb3J0cyAoYWN0aW9uLT5oYW5kbGVyIGxvYWQgYXQgKzB4NWUsIGRldl9pZApsb2FkIGF0 ICsweDZiIC0tIG1hdGNoaW5nIHRoZSBvYmpkdW1wLWRlY29kZWQgbG9hZCBvZmZzZXRzIGJ5dGUg Zm9yCmJ5dGUpLCBmb2xsb3dlZCBieSBhbiBpbmRpcmVjdCBjYWxsIHRocm91Z2ggdGhlIGdhcmJh Z2UgZnVuY3Rpb24KcG9pbnRlciAoT29wcyBSSVAgMHgwKSBmcm9tIE5NSSBjb250ZXh0LiAgVGhl IHNpYmxpbmcgZHJpdmVycwpwY2llaHAtc3R5bGUgY29tcGFyaXNvbiBkb2VzIG5vdCBleGlzdCBo ZXJlLCBidXQgdGhlIHBsYWluLUlSUSBwYXRoCmhhcyB0aGUgY29tcGxldGUgcXVpZXNjZW5jZSBt YWNoaW5lcnkgKElSUURfSVJRX0lOUFJPR1JFU1MgKwpfX3N5bmNocm9uaXplX2hhcmRpcnEgKyBy ZXF1ZXN0X211dGV4ICsgZGV2X2lkIG1hdGNoaW5nKSB0aGF0IHRoZSBOTUkKcGF0aHMgbGFjayBl bnRpcmVseSAtLSB0aGUgZGVmZWN0IGlzIHRoYXQgTk1JIGRpc3BhdGNoIGJ5cGFzc2VzIGFsbApv ZiBpdC4KClRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbjoKCiogVGhlIHR3byBwYXRocyAoTGludXgg Ny4zIGxpbmUgbnVtYmVycykKCiAgRGlzcGF0Y2ggKFNQSS1OTUkpOiBnZW5lcmljX2hhbmRsZV9k b21haW5fbm1pKCkgLT4gaGFuZGxlX2lycV9kZXNjKCkKICAtPiBkZXNjLT5oYW5kbGVfaXJxID0g aGFuZGxlX2Zhc3Rlb2lfbm1pIChrZXJuZWwvaXJxL2NoaXAuYzo3OTItODEwKToKICA6Nzk1IHNu YXBzaG90OyA6Nzk5IGtzdGF0OyA6ODAxLzo4MDYgdHJhY2Vwb2ludHM7IDo4MDUKICBhY3Rpb24t PmhhbmRsZXIoaXJxLCBhY3Rpb24tPmRldl9pZCk7IDo4MDgtODA5IGlycV9lb2kuCgogIFVucmVn aXN0ZXI6IGZyZWVfbm1pKCkgKG1hbmFnZS5jOjIwNjctMjA4MikgLT4gX19jbGVhbnVwX25taSgp CiAgKG1hbmFnZS5jOjIwMzItMjA2NSk6IGxvY2sgOjIwMzcsIGlycV9ubWlfdGVhcmRvd24gOjIw MzggKGZsb3cKICBoYW5kbGVyIHN3aXRjaGVkIGJhY2sgYnkgdGhlIGlycWNoaXAgZHJpdmVyLCBn aWMtdjMuYzo2NDYpLAogIGRlc2MtPmFjdGlvbiA9IE5VTEwgOjIwNDcsIGlycV9zaHV0ZG93bl9h bmRfZGVhY3RpdmF0ZSA6MjA1MCwKICB1bmxvY2ssIGtmcmVlKGFjdGlvbikgOjIwNTcsIGlycV9y ZWxlYXNlX3Jlc291cmNlcyA6MjA1OSwKICBpcnFfY2hpcF9wbV9wdXQgOjIwNjEsIG1vZHVsZV9w dXQgOjIwNjIuICBObyB3YWl0IG9mIGFueSBraW5kCiAgYmVmb3JlIHRoZSBrZnJlZS4KCiogV2h5 IHRoZSBkZXB0aC9tYXNrIGhhbmRsaW5nIGlzIG5vdCBwcm90ZWN0aW9uIChjbG9zZWQpCgogIGZy ZWVfbm1pKCkgb24gYW4gZW5hYmxlZCBOTUkgKGRlcHRoPT0wKSBvbmx5IFdBUk5zIGFuZCBkaXNh YmxlcwogIChtYW5hZ2UuYzoyMDc3LTIwNzkpOyBkaXNhYmxlX25taV9ub3N5bmMoKSBkb2N1bWVu dHMgdGhhdCBpdCBkb2VzCiAgbm90IHdhaXQgZm9yIHJ1bm5pbmcgaW5zdGFuY2VzIChtYW5hZ2Uu Yzo3NTUtNzY4KSBhbmQgYSBzeW5jaHJvbm91cwogIGRpc2FibGVfbm1pKCkgZG9lcyBub3QgZXhp c3QgaW4gdGhlIHRyZWU7IGEgR0lDdjMtbGV2ZWwgbWFzayBzdG9wcwogIE5FVyBkZWxpdmVyaWVz IGJ1dCBTUEkgcGVuZGluZyBzdGF0ZSBzdXJ2aXZlcyBkaXNhYmxlIChHSUN2MyBzcGVjOgogIG9u bHkgUFBJIHBlbmRpbmcgaXMgY2xlYXJlZCBvbiBkaXNhYmxlKSwgc28gImRpc2FibGVkIGJ1dCBz dGlsbAogIGRlbGl2ZXJhYmxlIiB3aWRlbnMgdGhlIHdpbmRvdy4gIHN0cnVjdCBpcnFhY3Rpb24g aGFzIG5vIHJlZmNvdW50CiAgYW5kIG5vIFJDVSBmaWVsZCAoaW5jbHVkZS9saW51eC9pbnRlcnJ1 cHQuaDoxMjMtMTM5KTsgdGhlIGtmcmVlIGlzCiAgZGlyZWN0LgoKICBUaGUgcGxhaW4gZnJlZV9p cnEoKSBwYXRoLCBieSBjb250cmFzdCwgaGFzIHRoZSBmdWxsIG1hY2hpbmVyeToKICBJUlFEX0lS UV9JTlBST0dSRVNTIChoYW5kbGUuYzoyNTUtMjY3KSArIF9fc3luY2hyb25pemVfaGFyZGlycQog IChtYW5hZ2UuYzo1MC04MikgKyByZXF1ZXN0X211dGV4IChtYW5hZ2UuYzoxODY4KSArIGRldl9p ZCBtYXRjaGluZwogIHdpdGggYW4gYWxyZWFkeS1mcmVlIGVhcmx5IHJldHVybiAobWFuYWdlLmM6 MTg4MS0xODg5KS4gIE5NSQogIGRpc3BhdGNoIGJ5cGFzc2VzIGhhbmRsZV9pcnFfZXZlbnQoKSwg c28gaXQgbmV2ZXIgcGFydGljaXBhdGVzLgoKKiBSZWFjaGFiaWxpdHkgKHVwc3RyZWFtIGZvcm0p CgogIFJlcXVpcmVzIGFybTY0ICsgR0lDdjMgcHNldWRvLU5NSSAoaXJxY2hpcC5naWN2M19wc2V1 ZG9fbm1pPTEpIGFuZAogIGFuIFNQSS10eXBlIE5NSSByZWdpc3RyYXRpb247IGluLXRyZWUgcmVn aXN0cmFudHM6IEFDUEkgQUdESQogIChmcmVlcyB3aXRob3V0IGRpc2FibGluZyBmaXJzdCwgYWdk aS5jOjE1MC0xNTEpLCBGdWppdHN1IEE2NEZYIGRpYWcsCiAgYW5kIGFybV9wbXUncyBTUEkgb3Zl cmZsb3cgKGl0cyBwcm9iZS1mYWlsdXJlIHBhdGggcmVtb3ZlcyB0aGUKICBjcHVocCBpbnN0YW5j ZSB3aXRoIF9ub2NhbGxzIC0tIHRlYXJkb3duIGNhbGxiYWNrcyBkbyBub3QgcnVuLCBOTUkKICBz dGF5cyBlbmFibGVkIC0tIHRoZW4gZnJlZXMsIGFybV9wbXUuYzo4NTgtODU5LzI0My81MSkuICBU cmlnZ2VyCiAgcGFpcnMgYW4gYWRtaW4gcmVtb3ZlIHdpdGggYW55IGluLWZsaWdodCBmaXJtd2Fy ZS9QTVUgTk1JOyB0aGUKICB3aW5kb3cgaXMgbWljcm9zZWNvbmRzLCBhbmQgTk1JIGZyZXF1ZW5j eSBzY2FsZXMgaXQgbGluZWFybHkuCiAgQWx0ZXJuYXRpdmUgZGVsaXZlcnkgcGF0aHMgKHJlc2Vu ZCwgc29mdHdhcmUgcmUtdHJpZ2dlciwgaW5qZWN0aW9uLAogIHN1c3BlbmQvcmVzdW1lKSB3ZXJl IGV4aGF1c3RpdmVseSBydWxlZCBvdXQgZm9yIE5NSSBkZXNjcyAtLSB0aGUKICBvbmx5IGV4ZWN1 dGlvbiBvZiBoYW5kbGVfZmFzdGVvaV9ubWkgaXMgdGhlIE5NSSBlbnRyeSBpdHNlbGYsIHNvCiAg dGhlIGV4cG9zdXJlIGlzIGV4YWN0bHkgdGhpcyB3aW5kb3cuCgoqIEV2aWRlbmNlIChwcmlzdGlu ZSA3LjMgS0FTQU4sIHg4Nl82NCBRRU1VOyBpbnN0cnVtZW50cyBhdHRhY2hlZCkKCiAgbm1pX3Jh Y2Uua28gcmVnaXN0ZXJzIGEgZmFrZSBOTUkgaXJxY2hpcCAodGhlIEdJQyBtaXJyb3IpIGFuZCBh CiAgZGlzcGF0Y2gga3RocmVhZCBvbiB0aGUgZXhwb3J0ZWQtZXF1aXZhbGVudCBwYXRoczsgbm1p X3N0YWxsLmtvCiAgcGFya3MgdGhlIGRpc3BhdGNoZXIgYXQgaGFuZGxlX2Zhc3Rlb2lfbm1pKzB4 NTYgKGFmdGVyIHRoZQogIHNuYXBzaG90LCBiZWZvcmUgdGhlIGhhbmRsZXIvZGV2X2lkIGxvYWRz KS4gIGZyZWVfbm1pIGZyb20gYW5vdGhlcgogIENQVSBjb21wbGV0ZXMgaW5zaWRlIHRoZSBzdGFs bDoKCiAgICBCVUc6IEtBU0FOOiBzbGFiLXVzZS1hZnRlci1mcmVlIGluIGhhbmRsZV9mYXN0ZW9p X25taSsweDVlCiAgICAgICAgIChhY3Rpb24tPmhhbmRsZXIgbG9hZCkgICA8LSBvYmpkdW1wLWRl Y29kZWQgb2Zmc2V0cyBtYXRjaAogICAgQlVHOiBLQVNBTjogc2xhYi11c2UtYWZ0ZXItZnJlZSBp biBoYW5kbGVfZmFzdGVvaV9ubWkrMHg2YgogICAgICAgICAoYWN0aW9uLT5kZXZfaWQgbG9hZCkK ICAgIE9vcHM6IDAwMTAgUklQOiAwMDEwOjB4MCAgICAgPC0gaW5kaXJlY3QgY2FsbCB0aHJvdWdo IHRoZSBnYXJiYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u IHBvaW50ZXIgcmVhZCBmcm9tIGZyZWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1lbW9yeSwgaW4gTk1JIGNvbnRleHQKICAgIHRocmVlIHN0YWNrcyBjbG9zZWQ6IHVzZSBo YW5kbGVfZmFzdGVvaV9ubWkrMHg1ZSA8LSBoYW5kbGVfaXJxX2Rlc2MKICAgICAgKENQVSAyKTsg YWxsb2MgX19rbWFsbG9jX2NhY2hlX25vcHJvZiA8LSByZXF1ZXN0X25taSAodGFzayAxMTIpOwog ICAgICBmcmVlIGtmcmVlIDwtIF9fY2xlYW51cF9ubWkgPC0gZnJlZV90aHJlYWQgKENQVSAzKTsK ICAgICAgb2JqZWN0IGttYWxsb2MtMTI4IChzdHJ1Y3QgaXJxYWN0aW9uKQoKICBGaWRlbGl0eSwg c3RhdGVkIHBsYWlubHk6IHRoZSBhdWRpdGVkIGRlZmVjdCBjb2RlIChjaGlwLmM6NzkyLTgxMAog IHNuYXBzaG90L3VzZSBhbmQgbWFuYWdlLmM6MjAzMi0yMDY1IHVubG9jay1hbmQtZnJlZSkgaXMg dGhlCiAgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGdlbmlycSBjb3JlIGFuZCBleGVjdXRlcyB1 bm1vZGlmaWVkOyB0aGUKICBkZWxpdmVyeSBFTlRSWSAoR0lDIHBzZXVkby1OTUkgZXhjZXB0aW9u IHBhdGgpIGlzIHBsYXRmb3JtIGNvZGUgYW5kCiAgaXMgcmVwbGFjZWQgaW4gdGhlIHg4NiBWTSBi eSBhIG1vZHVsZSBpcnFjaGlwIHdob3NlIHNldHVwL3RlYXJkb3duCiAgbWlycm9yIHRoZSBHSUMg c2VtYW50aWNzIC0tIHRoZSByYWNpbmcgcGFpciAoZGlzcGF0Y2ggc25hcHNob3QgdnMKICB1bnJl Z2lzdGVyIGZyZWUpIGlzIHVuYWZmZWN0ZWQgYnkgd2hpY2ggZW50cnkgcmFpc2VzIHRoZSBpbnRl cnJ1cHQuCgoqIFN1Z2dlc3RlZCBmaXggZGlyZWN0aW9uCgogIE9wdGlvbiBBIChtaW5pbWFsKTog aW4gX19jbGVhbnVwX25taSgpLCBhZnRlciByZW1vdmluZyB0aGUKICBwdWJsaWNhdGlvbiBhbmQg YmVmb3JlIHRoZSBvdXQtb2YtbG9jayBrZnJlZSwgd2FpdCBmb3IgaW4tZmxpZ2h0CiAgTk1Jczog X19zeW5jaHJvbml6ZV9oYXJkaXJxKGRlc2MsIHRydWUpIGNvdmVycyB0aGUgYWN0aXZlIHdpbmRv dwogIChFT0kgY2xlYXJzIGl0KSwgcGx1cyBhIHBlci1kZXNjIGluLWZsaWdodCBjb3VudGVyIGlu Y3JlbWVudGVkLwogIGRlY3JlbWVudGVkIGJ5IGhhbmRsZV9mYXN0ZW9pX25taSAoYXRvbWljOyBz cGluLXdhaXRlZCB0byB6ZXJvKQogIHRvIGNsb3NlIHRoZSBzbWFsbCBhY2stdGhlbi1zYW1wbGUg YmxpbmQgc3BvdDsgYSBwcmUtd2FpdAogIFBFTkRJTkcgY2xlYXIgYWNjb3VudHMgZm9yIHRoZSBH SUN2MyBTUEkgcGVuZGluZy1zdXJ2aXZhbCBydWxlLgoKICBPcHRpb24gQiAoc3RydWN0dXJhbCk6 IG1ha2Ugc3RydWN0IGlycWFjdGlvbiBSQ1UtZnJlZWQgZm9yIE5NSQogIGZsb3dzIChyY3VfZGVy ZWZlcmVuY2UgYXQgdGhlIHNuYXBzaG90LCBrZnJlZV9yY3UgYXQgY2xlYW51cCkgLS0KICBjb25z aXN0ZW50IHdpdGggdGhlIHNwYXJzZS1pcnEgUkNVIGRpcmVjdGlvbiBhbmQgaXQgYWxzbyBmaXhl cyB0aGUKICBwZXJjcHUgdmFyaWFudCAobXkgc2VwYXJhdGUgb2JzZXJ2YXRpb24pLiAgRWl0aGVy IHdheSwgZnJlZV9ubWkoKQogIGRlc2VydmVzIGEga2VybmVsLWRvYyBzdGF0aW5nIHRoZSBxdWll c2NlbmNlIGNvbnRyYWN0IChub25lIGV4aXN0cwogIHRvZGF5KS4KCgogIFBsZWFzZSBrZWVwIG1l IGluIENjOyBJIGFtIG5vdCBzdWJzY3JpYmVkIHRvIHRoZSBsaXN0cy4KCgpSZWdhcmRzLApIYW54 aWFuZyBYdQp4dWh4QGh1c3QuZWR1LmNuCg== ------=_Part_494561_157968919.1794381458198 Content-Type: text/plain; name=nmi_stall.c Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nmi_stall.c" Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLyoKICogbm1pX3N0YWxsLmMgLSBn ZW5lcmljIGtwcm9iZSBjb250cm9sbGVkLXdpbmRvdyBzdGFsbGVyIGZvciB0aGUKICoga2VybmVs L2lycSBOTUkgdmVyaWZpY2F0aW9uICgyMDI2LTExLTA5KSwgZm9sbG93aW5nIHRoZSByNF9zdGFs bAogKiBtZXRob2RvbG9neSAoY29udHJvbGxlZCB3aW5kb3c7IGRvZXMgbm90IG1lYXN1cmUgbmF0 dXJhbCBoaXQgcmF0ZXMpLgogKgogKiBQYXJhbXM6CiAqICAgc3ltYm9sPSAgIGZ1bmN0aW9uIHRv IHByb2JlIChyZXF1aXJlZCkKICogICBvZmY9ICAgICAga3Byb2JlIG9mZnNldCBpbnNpZGUgc3lt Ym9sIChpbnN0cnVjdGlvbiBvZmZzZXQsIGhleCBvaykKICogICBzdGFsbF91cz0gbWF4IGJ1c3kt d2FpdCBkdXJhdGlvbiBvbmNlIGFybWVkK2hpdCAoZGVmYXVsdCA0MHMpCiAqICAgYXJtPSAgICAg IHN5c2ZzIGdhdGUgKDA2MDApOiBzdGFsbCBvbmx5IHdoaWxlIGFybWVkCiAqICAgcmVsZWFzZT0g IHN5c2ZzIGdhdGUgKDA2MDApOiBlbmQgdGhlIHN0YWxsCiAqCiAqIFRoZSBwcmVfaGFuZGxlciBz dGFsbHMgdGhlIEZJUlNUIGFybWVkIGhpdCB1bnRpbCByZWxlYXNlPTEgKG9yIHRpbWVvdXQpLgog KiBMYXRlciBoaXRzIGFyZSBjb3VudGVkIG9ubHkuCiAqLwojZGVmaW5lIHByX2ZtdChmbXQpICJO TUkxU1RBTEw6ICIgZm10CgojaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiNpbmNsdWRlIDxsaW51 eC9pbml0Lmg+CiNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KI2luY2x1ZGUgPGxpbnV4L2twcm9i ZXMuaD4KI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4K CnN0YXRpYyBjaGFyICpzeW1ib2wgPSAiIjsKbW9kdWxlX3BhcmFtKHN5bWJvbCwgY2hhcnAsIDA0 MDApOwpNT0RVTEVfUEFSTV9ERVNDKHN5bWJvbCwgImtwcm9iZSB0YXJnZXQgc3ltYm9sIik7Cgpz dGF0aWMgdW5zaWduZWQgbG9uZyBvZmY7Cm1vZHVsZV9wYXJhbShvZmYsIHVsb25nLCAwNDAwKTsK TU9EVUxFX1BBUk1fREVTQyhvZmYsICJrcHJvYmUgb2Zmc2V0IGluc2lkZSBzeW1ib2wiKTsKCnN0 YXRpYyBpbnQgc3RhbGxfdXMgPSA0MDAwMDAwMDsKbW9kdWxlX3BhcmFtKHN0YWxsX3VzLCBpbnQs IDA2MDApOwpNT0RVTEVfUEFSTV9ERVNDKHN0YWxsX3VzLCAibWF4IHN0YWxsIGR1cmF0aW9uIGlu IHVzIik7CgpzdGF0aWMgaW50IGFybTsKbW9kdWxlX3BhcmFtKGFybSwgaW50LCAwNjAwKTsKTU9E VUxFX1BBUk1fREVTQyhhcm0sICIxID0gc3RhbGwgbmV4dCBoaXQiKTsKCnN0YXRpYyBpbnQgcmVs ZWFzZTsKbW9kdWxlX3BhcmFtKHJlbGVhc2UsIGludCwgMDYwMCk7Ck1PRFVMRV9QQVJNX0RFU0Mo cmVsZWFzZSwgIjEgPSBlbmQgdGhlIHN0YWxsIik7CgpzdGF0aWMgYXRvbWljX3QgaGl0cyA9IEFU T01JQ19JTklUKDApOwpzdGF0aWMgYm9vbCBjb25zdW1lZDsKCnN0YXRpYyBpbnQgc3RhbGxfcHJl KHN0cnVjdCBrcHJvYmUgKnAsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7CglpbnQgaCA9IGF0b21p Y19pbmNfcmV0dXJuKCZoaXRzKTsKCglpZiAoIVJFQURfT05DRShhcm0pIHx8IGNvbnN1bWVkKSB7 CgkJaWYgKGggPD0gNSkKCQkJcHJfd2FybigiaGl0ICMlZCAobm90IHN0YWxsZWQsIGFybT0lZClc biIsIGgsIFJFQURfT05DRShhcm0pKTsKCQlyZXR1cm4gMDsKCX0KCVdSSVRFX09OQ0UoY29uc3Vt ZWQsIHRydWUpOwoJcHJfd2FybigiU1RBTEwgSElUIGF0ICVzKzB4JWx4IHN0YWxsX3VzPSVkXG4i LCBwLT5zeW1ib2xfbmFtZSwgb2ZmLAoJCXN0YWxsX3VzKTsKCS8qIGhhcmQgZGVhZGxpbmUgc28g YSBkZWFkIG9yY2hlc3RyYXRvciBjYW5ub3QgaGFuZyB0aGUgVk0gZm9yZXZlciAqLwoJZm9yIChp bnQgd2FpdGVkID0gMDsgd2FpdGVkIDwgc3RhbGxfdXMgJiYgIVJFQURfT05DRShyZWxlYXNlKTsK CSAgICAgd2FpdGVkICs9IDEwMDApCgkJdWRlbGF5KDEwMDApOwoJcHJfd2FybigiUkVMRUFTRUQg KHJlbGVhc2U9JWQgd2FpdGVkX2hpdHM9JWQpXG4iLCBSRUFEX09OQ0UocmVsZWFzZSksCgkJYXRv bWljX3JlYWQoJmhpdHMpKTsKCXJldHVybiAwOwp9CgpzdGF0aWMgc3RydWN0IGtwcm9iZSBrcDsK CnN0YXRpYyBpbnQgX19pbml0IG5taV9zdGFsbF9pbml0KHZvaWQpCnsKCWlmICghc3ltYm9sWzBd KSB7CgkJcHJfZXJyKCJubyBzeW1ib2wgZ2l2ZW5cbiIpOwoJCXJldHVybiAtRUlOVkFMOwoJfQoJ a3Auc3ltYm9sX25hbWUgPSBzeW1ib2w7CglrcC5vZmZzZXQgPSBvZmY7CglrcC5wcmVfaGFuZGxl ciA9IHN0YWxsX3ByZTsKCWlmIChyZWdpc3Rlcl9rcHJvYmUoJmtwKSkgewoJCXByX2VycigiY2Fu bm90IHJlZ2lzdGVyIGtwcm9iZSBvbiAlcysweCVseFxuIiwgc3ltYm9sLCBvZmYpOwoJCXJldHVy biAtRUlOVkFMOwoJfQoJcHJfd2FybigiYXJtZWQtYWJsZTogJXMrMHglbHggc3RhbGxfdXM9JWQg KHdhaXRpbmcgZm9yIGFybT0xKVxuIiwKCQlzeW1ib2wsIG9mZiwgc3RhbGxfdXMpOwoJcmV0dXJu IDA7Cn0KCnN0YXRpYyB2b2lkIF9fZXhpdCBubWlfc3RhbGxfZXhpdCh2b2lkKQp7Cgl1bnJlZ2lz dGVyX2twcm9iZSgma3ApOwoJcHJfd2FybigicmVtb3ZlZCBoaXRzPSVkIHN0YWxsZWQ9JWRcbiIs IGF0b21pY19yZWFkKCZoaXRzKSwgY29uc3VtZWQpOwp9Cgptb2R1bGVfaW5pdChubWlfc3RhbGxf aW5pdCk7Cm1vZHVsZV9leGl0KG5taV9zdGFsbF9leGl0KTsKTU9EVUxFX0xJQ0VOU0UoIkdQTCIp OwpNT0RVTEVfREVTQ1JJUFRJT04oImdlbmVyaWMga3Byb2JlIHN0YWxsIGZvciBrZXJuZWwvaXJx IE5NSSB2ZXJpZmljYXRpb24iKTsK ------=_Part_494561_157968919.1794381458198 Content-Type: text/plain; name=nmi_race.c Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nmi_race.c" Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLyoKICogbm1pX3JhY2UuYyAtIGRy aXZlciBtb2R1bGUgZm9yIHRoZSBrZXJuZWwvaXJxIE5NSSByYWNlIHZlcmlmaWNhdGlvbgogKiAo MjAyNi0xMS0wOSkuIEl0IGV4ZXJjaXNlcyB0aGUgUkVBTCBnZW5pcnEgTk1JIGNvcmUgcGF0aHMK ICogKHJlcXVlc3Rfbm1pL2ZyZWVfbm1pL2VuYWJsZV9pcnEgKyBoYW5kbGVfZmFzdGVvaV9ubWkp IG9uIGEgZmFrZQogKiBOTUktY2FwYWJsZSBpcnFfY2hpcCwgbWlycm9yaW5nIHdoYXQgR0lDdjMg cHNldWRvLU5NSSBkb2VzIG9uIGFybTY0LgogKgogKiByZXF1ZXN0X25taSgpL2ZyZWVfbm1pKCkg YXJlIG5vdCBleHBvcnRlZCwgc28gdGhleSBhcmUgcmVzb2x2ZWQgd2l0aCB0aGUKICoga3Byb2Jl LWFkZHIgdHJpY2sgKHNhbWUgdGVjaG5pcXVlIGFzIHI0X3N0YWxsJ3Mgc3ltYm9sIGxvb2t1cCku CiAqCiAqIG1vZGVzOgogKiAgIDEgIENhc2UtMSBjb250cm9sbGVkIHdpbmRvdzogZGlzcGF0Y2gg dGhyZWFkIGVudGVycyBoYW5kbGVfZmFzdGVvaV9ubWkKICogICAgICBhbmQgaXMgc3RhbGxlZCBi eSBubWlfc3RhbGwua28gKGtwcm9iZSBhdCArMHg1NiBpbiBidWlsZC1rYXNhbi03LjMsCiAqICAg ICAgYWZ0ZXIgdGhlIGRlc2MtPmFjdGlvbiBzbmFwc2hvdCwgYmVmb3JlIHRoZSBhY3Rpb24tPmhh bmRsZXIgLwogKiAgICAgIGFjdGlvbi0+ZGV2X2lkIGxvYWRzKTsgZnJlZSB0aHJlYWQgZnJlZXMg dGhlIGFjdGlvbiBtZWFud2hpbGU7IHRoZQogKiAgICAgIHJlbGVhc2VkIGRpc3BhdGNoZXIgdGhl biByZWFkcyBmcmVlZCBtZW1vcnkgLT4gS0FTQU4uCiAqICAgMyAgbmF0dXJhbCBoYW1tZXI6IHdy aXRlciByZXF1ZXN0L3NsZWVwL2ZyZWUvc2xlZXAgY3ljbGVzICsgZGVuc2UKICogICAgICBkaXNw YXRjaGVyIChSRUFEX09OQ0UoaW5zdGFsbGVkKSBwcmUtY2hlY2sgdG8gZG9kZ2UgdGhlIE5VTEwg d2luZG93OwogKiAgICAgIHJlc2lkdWFsIE5VTEwgLyBmcmVlZCByZWFkcyBhcmUgY2FwdHVyZWQg YnkgS0FTQU4vS0NTQU4pLgogKiAgICAgIGNodXJuPTEgdmFyaWFudDogd3JpdGVyIG9ubHkgY3lj bGVzIGVuYWJsZS9kaXNhYmxlIChuZWdhdGl2ZSBjb250cm9sLAogKiAgICAgIGRlc2MtPmFjdGlv biB1bnRvdWNoZWQpLgogKiAgIDUgIFc1IGRvdWJsZS1mcmVlOiB0d28gdGhyZWFkcyBjYWxsIGZy ZWVfbm1pKCkgY29uY3VycmVudGx5IG9uIGFuCiAqICAgICAgaW5zdGFsbGVkIGxpbmU7IHRoZSBs b3NlciBwYXNzZXMgdGhlIGlycV9pc19ubWkoKSBnYXRlIGJlZm9yZSB0aGUKICogICAgICB3aW5u ZXIgY2xlYXJzIElSUVNfTk1JLCB0aGVuIHNlcmlhbGl6ZXMgYmVoaW5kIGRlc2MtPmxvY2sgYW5k IHJ1bnMKICogICAgICBhIFNFQ09ORCBjbGVhbnVwIChXQVJOX09OKGRlc2MtPmFjdGlvbj09TlVM TCkgKyB1bmNvbmRpdGlvbmFsCiAqICAgICAgcmVsZWFzZSB0YWlsKSAtPiB0ZWFyZG93bi9yZWxl YXNlX3Jlc291cmNlcyBjb3VudGVkIHR3aWNlLCBtb2R1bGUKICogICAgICByZWZjb3VudCBnb2Vz IG5lZ2F0aXZlIGluIC9wcm9jL21vZHVsZXMuCiAqLwojZGVmaW5lIHByX2ZtdChmbXQpICJOTUkx UkFDRTogIiBmbXQKCiNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KI2luY2x1ZGUgPGxpbnV4L2lu aXQuaD4KI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgojaW5jbHVkZSA8bGludXgva3Byb2Jlcy5o PgojaW5jbHVkZSA8bGludXgvaXJxLmg+CiNpbmNsdWRlIDxsaW51eC9pcnFkZXNjLmg+CiNpbmNs dWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4KI2luY2x1 ZGUgPGxpbnV4L2RlbGF5Lmg+CiNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KI2luY2x1ZGUgPGxp bnV4L3NjaGVkL3Rhc2suaD4KCnR5cGVkZWYgaW50ICgqcmVxdWVzdF9ubWlfdCkodW5zaWduZWQg aW50LCBpcnFfaGFuZGxlcl90LCB1bnNpZ25lZCBsb25nLAoJCQkgICAgIGNvbnN0IGNoYXIgKiwg dm9pZCAqKTsKdHlwZWRlZiBjb25zdCB2b2lkICooKmZyZWVfbm1pX3QpKHVuc2lnbmVkIGludCwg dm9pZCAqKTsKCnN0YXRpYyBpbnQgbW9kZSA9IDE7Cm1vZHVsZV9wYXJhbShtb2RlLCBpbnQsIDA0 MDApOwpNT0RVTEVfUEFSTV9ERVNDKG1vZGUsICIxPWNhc2UxIGNvbnRyb2xsZWQsIDM9aGFtbWVy LCA1PVc1IGRvdWJsZS1mcmVlIik7CgpzdGF0aWMgaW50IHNlY3MgPSA2MDsKbW9kdWxlX3BhcmFt KHNlY3MsIGludCwgMDQwMCk7Ck1PRFVMRV9QQVJNX0RFU0Moc2VjcywgImhhbW1lciBkdXJhdGlv biAobW9kZSAzKSIpOwoKc3RhdGljIGludCBob2xkX21zID0gMTUwMDsKbW9kdWxlX3BhcmFtKGhv bGRfbXMsIGludCwgMDQwMCk7Ck1PRFVMRV9QQVJNX0RFU0MoaG9sZF9tcywgImluc3RhbGxlZCBo b2xkIHRpbWUgcGVyIGN5Y2xlIChtb2RlIDMpIik7CgpzdGF0aWMgaW50IGdhcF9tcyA9IDEwMDsK bW9kdWxlX3BhcmFtKGdhcF9tcywgaW50LCAwNDAwKTsKTU9EVUxFX1BBUk1fREVTQyhnYXBfbXMs ICJmcmVlZCBnYXAgdGltZSBwZXIgY3ljbGUgKG1vZGUgMykiKTsKCnN0YXRpYyBpbnQgY2h1cm47 Cm1vZHVsZV9wYXJhbShjaHVybiwgaW50LCAwNDAwKTsKTU9EVUxFX1BBUk1fREVTQyhjaHVybiwg Im1vZGUzIGNvbnRyb2w6IHdyaXRlciBjeWNsZXMgZW5hYmxlL2Rpc2FibGUgb25seSIpOwoKc3Rh dGljIHVuc2lnbmVkIGludCBjcHVfZGlzcCA9IDIsIGNwdV9mcmVlID0gMzsKbW9kdWxlX3BhcmFt KGNwdV9kaXNwLCB1aW50LCAwNDAwKTsKbW9kdWxlX3BhcmFtKGNwdV9mcmVlLCB1aW50LCAwNDAw KTsKCnN0YXRpYyByZXF1ZXN0X25taV90IHJlcXVlc3Rfbm1pX2ZuOwpzdGF0aWMgZnJlZV9ubWlf dCBmcmVlX25taV9mbjsKCnN0YXRpYyB1bnNpZ25lZCBpbnQgdmlycTsKc3RhdGljIHZvaWQgKmNv b2tpZTsKc3RhdGljIGF0b21pY190IGluc3RhbGxlZCA9IEFUT01JQ19JTklUKDApOwpzdGF0aWMg YXRvbWljX3QgZ28gPSBBVE9NSUNfSU5JVCgwKTsKc3RhdGljIGF0b21pY190IHRlYXJkb3duX2Nu dCA9IEFUT01JQ19JTklUKDApOwpzdGF0aWMgYXRvbWljX3QgcmVscmVzX2NudCA9IEFUT01JQ19J TklUKDApOwpzdGF0aWMgYXRvbWljX3QgZGlzcGF0Y2hlcyA9IEFUT01JQ19JTklUKDApOwpzdGF0 aWMgYXRvbWljX3QgZGlzcF9udWxsID0gQVRPTUlDX0lOSVQoMCk7CnN0YXRpYyBzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRfZGlzcCwgKnRfZnJlZTsKCi8qIC0tLS0gZmFrZSBOTUktY2FwYWJsZSBjaGlw IChjb3JlIHNlZXMgdGhlIHNhbWUgY2FsbGJhY2tzIGFzIEdJQ3YzKSAtLS0tICovCgpzdGF0aWMg aW50IGZha2Vfbm1pX3NldHVwKHN0cnVjdCBpcnFfZGF0YSAqZCkKewoJcHJfd2FybigiY2hpcDog aXJxX25taV9zZXR1cCBpcnE9JXVcbiIsIGQtPmlycSk7CglyZXR1cm4gMDsKfQoKc3RhdGljIHZv aWQgZmFrZV9ubWlfdGVhcmRvd24oc3RydWN0IGlycV9kYXRhICpkKQp7Cglwcl93YXJuKCJjaGlw OiBpcnFfbm1pX3RlYXJkb3duICMlZCBpcnE9JXVcbiIsCgkJYXRvbWljX2luY19yZXR1cm4oJnRl YXJkb3duX2NudCksIGQtPmlycSk7Cn0KCnN0YXRpYyB2b2lkIGZha2VfcmVscmVzKHN0cnVjdCBp cnFfZGF0YSAqZCkKewoJcHJfd2FybigiY2hpcDogaXJxX3JlbGVhc2VfcmVzb3VyY2VzICMlZCBp cnE9JXVcbiIsCgkJYXRvbWljX2luY19yZXR1cm4oJnJlbHJlc19jbnQpLCBkLT5pcnEpOwp9Cgpz dGF0aWMgdm9pZCBmYWtlX21hc2soc3RydWN0IGlycV9kYXRhICpkKSB7fQpzdGF0aWMgdm9pZCBm YWtlX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpIHt9CnN0YXRpYyB2b2lkIGZha2VfZW9pKHN0 cnVjdCBpcnFfZGF0YSAqZCkge30KCnN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgZmFrZV9jaGlwID0g ewoJLm5hbWUJCQk9ICJubWktZmFrZSIsCgkuZmxhZ3MJCQk9IElSUUNISVBfU1VQUE9SVFNfTk1J LAoJLmlycV9tYXNrCQk9IGZha2VfbWFzaywKCS5pcnFfdW5tYXNrCQk9IGZha2VfdW5tYXNrLAoJ LmlycV9lb2kJCT0gZmFrZV9lb2ksCgkuaXJxX25taV9zZXR1cAkJPSBmYWtlX25taV9zZXR1cCwK CS5pcnFfbm1pX3RlYXJkb3duCT0gZmFrZV9ubWlfdGVhcmRvd24sCgkuaXJxX3JlbGVhc2VfcmVz b3VyY2VzCT0gZmFrZV9yZWxyZXMsCn07CgpzdGF0aWMgYXRvbWljX3QgaGFuZGxlcl9jYWxscyA9 IEFUT01JQ19JTklUKDApOwoKc3RhdGljIGlycXJldHVybl90IGZha2Vfbm1pX2hhbmRsZXIoaW50 IGlycSwgdm9pZCAqZGV2X2lkKQp7CgkvKiBwcmludCBzcGFyc2VseTogcHJpbnRrLXBhdGggYWNj ZXNzZXMgd291bGQgZGlsdXRlIEtDU0FOIHNhbXBsaW5nICovCglpZiAoYXRvbWljX2luY19yZXR1 cm4oJmhhbmRsZXJfY2FsbHMpICUgNTEyID09IDEpCgkJcHJfd2FybigiSEFORExFUiBDQUxMRUQg IyVkIGlycT0lZCBkZXZfaWQ9JXB4XG4iLAoJCQlhdG9taWNfcmVhZCgmaGFuZGxlcl9jYWxscyks IGlycSwgZGV2X2lkKTsKCXJldHVybiBJUlFfSEFORExFRDsKfQoKc3RhdGljIHZvaWQgcGFyayh2 b2lkKQp7Cgl3aGlsZSAoIWt0aHJlYWRfc2hvdWxkX3N0b3AoKSkKCQltc2xlZXAoMTAwKTsKfQoK c3RhdGljIHVuc2lnbmVkIGxvbmcgc3ltX2FkZHIoY29uc3QgY2hhciAqbmFtZSkKewoJc3RydWN0 IGtwcm9iZSBwID0geyAuc3ltYm9sX25hbWUgPSBuYW1lIH07Cgl1bnNpZ25lZCBsb25nIGFkZHIg PSAwOwoKCWlmICghcmVnaXN0ZXJfa3Byb2JlKCZwKSkgewoJCWFkZHIgPSAodW5zaWduZWQgbG9u ZylwLmFkZHI7CgkJdW5yZWdpc3Rlcl9rcHJvYmUoJnApOwoJfQoJcmV0dXJuIGFkZHI7Cn0KCnN0 YXRpYyBpbnQgZG9fcmVxdWVzdCh2b2lkKQp7CglpbnQgcmV0OwoKCXJldCA9IHJlcXVlc3Rfbm1p X2ZuKHZpcnEsIGZha2Vfbm1pX2hhbmRsZXIsCgkJCSAgICAgSVJRRl9QRVJDUFUgfCBJUlFGX05P QkFMQU5DSU5HIHwgSVJRRl9OT19BVVRPRU4gfAoJCQkgICAgIElSUUZfTk9fVEhSRUFELAoJCQkg ICAgICJubWktcmFjZSIsICZjb29raWUpOwoJaWYgKCFyZXQpIHsKCQlhdG9taWNfaW5jKCZpbnN0 YWxsZWQpOwoJCWVuYWJsZV9pcnEodmlycSk7IC8qID09IGVuYWJsZV9ubWkgKi8KCQkvKgoJCSAq IFRoZSBHSUMgZHJpdmVyIGluc3RhbGxzIGhhbmRsZV9mYXN0ZW9pX25taSBmcm9tIGl0cwoJCSAq IGlycV9ubWlfc2V0dXAgY2FsbGJhY2sgKGRlc2MtPmxvY2sgaGVsZCk7IHRoZSBjb3JlIGRvZXMg bm90CgkJICogZG8gaXQuIHN0cnVjdCBpcnFfZGVzYyBpcyBvcGFxdWUgdG8gbW9kdWxlcywgc28g d2UgaW5zdGFsbAoJCSAqIHRoZSBhdWRpdGVkIGZsb3cgaGFuZGxlciB2aWEgdGhlIGV4cG9ydGVk IEFQSSBpbnN0ZWFkLgoJCSAqLwoJCV9faXJxX3NldF9oYW5kbGVyKHZpcnEsIGhhbmRsZV9mYXN0 ZW9pX25taSwgMCwgTlVMTCk7Cgl9Cglwcl93YXJuKCJyZXF1ZXN0X25taSAtPiAlZCAoaW5zdGFs bGVkPSVkKVxuIiwgcmV0LAoJCWF0b21pY19yZWFkKCZpbnN0YWxsZWQpKTsKCXJldHVybiByZXQ7 Cn0KCnN0YXRpYyB2b2lkIGRvX2ZyZWUodm9pZCkKewoJY29uc3Qgdm9pZCAqZGV2bmFtZTsKCglh dG9taWNfZGVjKCZpbnN0YWxsZWQpOwoJZGV2bmFtZSA9IGZyZWVfbm1pX2ZuKHZpcnEsICZjb29r aWUpOwoJcHJfd2FybigiZnJlZV9ubWkgLT4gJXAgKGluc3RhbGxlZD0lZClcbiIsIGRldm5hbWUs CgkJYXRvbWljX3JlYWQoJmluc3RhbGxlZCkpOwp9CgovKiBtb2RlIDE6IGRpc3BhdGNoZXIgc3Rh bGxzIGluc2lkZSBoYW5kbGVfZmFzdGVvaV9ubWkgdmlhIG5taV9zdGFsbC5rbyAqLwpzdGF0aWMg aW50IGRpc3BfdGhyZWFkX20xKHZvaWQgKmFyZykKewoJd2hpbGUgKCFhdG9taWNfcmVhZCgmZ28p KQoJCWNwdV9yZWxheCgpOwoJcHJfd2FybigiRElTUEFUQ0hfQkVHSU4gKGNwdT0ldSlcbiIsIHNt cF9wcm9jZXNzb3JfaWQoKSk7CglnZW5lcmljX2hhbmRsZV9pcnEodmlycSk7Cglwcl93YXJuKCJE SVNQQVRDSF9ET05FXG4iKTsKCXBhcmsoKTsKCXJldHVybiAwOwp9CgpzdGF0aWMgaW50IGZyZWVf dGhyZWFkX20xKHZvaWQgKmFyZykKewoJbXNsZWVwKDIwMDApOwoJcHJfd2FybigicmVsZWFzZSBn byAtPiBkaXNwYXRjaCBlbnRlcnMgaGFuZGxlX2Zhc3Rlb2lfbm1pXG4iKTsKCWF0b21pY19pbmMo JmdvKTsKCW1zbGVlcCgzMDAwKTsgLyogZGlzcGF0Y2hlciBpcyBzdGFsbGVkIGluc2lkZSBoYW5k bGVfZmFzdGVvaV9ubWkgbm93ICovCglkb19mcmVlKCk7Cglwcl93YXJuKCJGUkVFIHNpZGUgZmlu aXNoZWQgKGRpc3BhdGNoZXIgc3RpbGwgc3RhbGxlZCBvbiBmcmVlZCBhY3Rpb24pXG4iKTsKCXBh cmsoKTsKCXJldHVybiAwOwp9CgovKiBtb2RlIDM6IG5hdHVyYWwgaGFtbWVyICovCnN0YXRpYyBp bnQgd3JpdGVyX3RocmVhZCh2b2lkICphcmcpCnsKCXVuc2lnbmVkIGxvbmcgZGVhZGxpbmUgPSBq aWZmaWVzICsgc2VjcyAqIEhaOwoJaW50IGN5Y2xlcyA9IDA7CgoJd2hpbGUgKHRpbWVfYmVmb3Jl KGppZmZpZXMsIGRlYWRsaW5lKSkgewoJCWlmIChjaHVybikgewoJCQkvKiBjb250cm9sOiBubyBt YW5hZ2VtZW50IHdyaXRlcyBhdCBhbGwgKi8KCQkJbXNsZWVwX2ludGVycnVwdGlibGUoaG9sZF9t cyk7CgkJfSBlbHNlIHsKCQkJaWYgKGRvX3JlcXVlc3QoKSkKCQkJCWJyZWFrOwoJCQltc2xlZXBf aW50ZXJydXB0aWJsZShob2xkX21zKTsKCQkJZG9fZnJlZSgpOwoJCQltc2xlZXBfaW50ZXJydXB0 aWJsZShnYXBfbXMpOwoJCX0KCQljeWNsZXMrKzsKCX0KCWlmIChjaHVybikKCQljeWNsZXMgPSAw OwoJcHJfd2Fybigid3JpdGVyIGRvbmU6IGN5Y2xlcz0lZCBjaHVybj0lZCB0ZWFyZG93bj0lZCBy ZWxyZXM9JWRcbiIsCgkJY3ljbGVzLCBjaHVybiwgYXRvbWljX3JlYWQoJnRlYXJkb3duX2NudCks CgkJYXRvbWljX3JlYWQoJnJlbHJlc19jbnQpKTsKCXBhcmsoKTsKCXJldHVybiAwOwp9CgpzdGF0 aWMgaW50IGRpc3BfdGhyZWFkX20zKHZvaWQgKmFyZykKewoJdW5zaWduZWQgbG9uZyBkZWFkbGlu ZSA9IGppZmZpZXMgKyBzZWNzICogSFo7CgoJd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIGRl YWRsaW5lKSkgewoJCWlmIChhdG9taWNfcmVhZCgmaW5zdGFsbGVkKSkgewoJCQlnZW5lcmljX2hh bmRsZV9pcnEodmlycSk7CgkJCWF0b21pY19pbmMoJmRpc3BhdGNoZXMpOwoJCX0gZWxzZSB7CgkJ CWF0b21pY19pbmMoJmRpc3BfbnVsbCk7CgkJCWNwdV9yZWxheCgpOwoJCX0KCX0KCXByX3dhcm4o ImRpc3BhdGNoZXIgZG9uZTogZGlzcGF0Y2hlcz0lZCBudWxsLXNraXBzPSVkXG4iLAoJCWF0b21p Y19yZWFkKCZkaXNwYXRjaGVzKSwgYXRvbWljX3JlYWQoJmRpc3BfbnVsbCkpOwoJcGFyaygpOwoJ cmV0dXJuIDA7Cn0KCi8qIG1vZGUgNTogY29uY3VycmVudCBkb3VibGUgZnJlZV9ubWkgKFc1KSAq LwpzdGF0aWMgaW50IHc1X3RocmVhZCh2b2lkICphcmcpCnsKCWludCBpZCA9IChpbnQpKGxvbmcp YXJnOwoJY29uc3Qgdm9pZCAqcmV0OwoJaW50IGk7CgoJLyogcmVuZGV6dm91cyBzbyBCT1RIIHRo cmVhZHMgcGFzcyBmcmVlX25taSdzIGlycV9pc19ubWkoKSBnYXRlIGJlZm9yZQoJICogZWl0aGVy IG9uZSBjbGVhcnMgSVJRU19OTUkgaW5zaWRlIHRoZSBjbGVhbnVwIGxvY2sgcmVnaW9uICovCglh dG9taWNfaW5jKCZnbyk7Cgl3aGlsZSAoYXRvbWljX3JlYWQoJmdvKSA8IDIpCgkJY3B1X3JlbGF4 KCk7CgoJcmV0ID0gZnJlZV9ubWlfZm4odmlycSwgJmNvb2tpZSk7Cglwcl93YXJuKCJXNSB0aHJl YWQgJWQgZnJlZSAtPiAlcCB0ZWFyZG93bj0lZCByZWxyZXM9JWRcbiIsIGlkLCByZXQsCgkJYXRv bWljX3JlYWQoJnRlYXJkb3duX2NudCksIGF0b21pY19yZWFkKCZyZWxyZXNfY250KSk7CgkvKiBm YWxsYmFjayByZXRyaWVzIGluIGNhc2UgdGhpcyB0aHJlYWQgbG9zdCB0aGUgaXN0YXRlIHJhY2Ug Ki8KCWZvciAoaSA9IDA7IGkgPCAzMCAmJiBhdG9taWNfcmVhZCgmdGVhcmRvd25fY250KSA8IDI7 IGkrKykKCQl1ZGVsYXkoNTAwKTsKCXByX3dhcm4oIlc1IHRocmVhZCAlZCBkb25lOiB0ZWFyZG93 bj0lZCByZWxyZXM9JWQgKGV4cGVjdCAyLzIpXG4iLCBpZCwKCQlhdG9taWNfcmVhZCgmdGVhcmRv d25fY250KSwgYXRvbWljX3JlYWQoJnJlbHJlc19jbnQpKTsKCXBhcmsoKTsKCXJldHVybiAwOwp9 CgpzdGF0aWMgaW50IF9faW5pdCBubWlfcmFjZV9pbml0KHZvaWQpCnsKCXVuc2lnbmVkIGxvbmcg YV9yZXEgPSBzeW1fYWRkcigicmVxdWVzdF9ubWkiKTsKCXVuc2lnbmVkIGxvbmcgYV9mcmVlID0g c3ltX2FkZHIoImZyZWVfbm1pIik7CglpbnQgcmV0ID0gLUVJTlZBTDsKCglyZXF1ZXN0X25taV9m biA9IChyZXF1ZXN0X25taV90KWFfcmVxOwoJZnJlZV9ubWlfZm4gPSAoZnJlZV9ubWlfdClhX2Zy ZWU7CglpZiAoIXJlcXVlc3Rfbm1pX2ZuIHx8ICFmcmVlX25taV9mbikgewoJCXByX2VycigiY2Fu bm90IHJlc29sdmUgcmVxdWVzdF9ubWk9JWx4IGZyZWVfbm1pPSVseFxuIiwgYV9yZXEsCgkJICAg ICAgIGFfZnJlZSk7CgkJcmV0dXJuIC1FSU5WQUw7Cgl9Cglwcl93YXJuKCJyZXNvbHZlZCByZXF1 ZXN0X25taT0lcHggZnJlZV9ubWk9JXB4IG1vZGU9JWRcbiIsCgkJcmVxdWVzdF9ubWlfZm4sIGZy ZWVfbm1pX2ZuLCBtb2RlKTsKCgl2aXJxID0gX19pcnFfYWxsb2NfZGVzY3MoLTEsIDAsIDEsIE5V TUFfTk9fTk9ERSwgVEhJU19NT0RVTEUsIE5VTEwpOwoJaWYgKHZpcnEgPCAwKSB7CgkJcHJfZXJy KCJpcnFfYWxsb2NfZGVzY3MgZmFpbGVkICVkXG4iLCB2aXJxKTsKCQlyZXR1cm4gdmlycTsKCX0K CXByX3dhcm4oImFsbG9jYXRlZCB2aXJxPSV1IChkZXNjIG93bmVyPXRoaXMgbW9kdWxlKVxuIiwg dmlycSk7CglpcnFfc2V0X2NoaXAodmlycSwgJmZha2VfY2hpcCk7CgoJc3dpdGNoIChtb2RlKSB7 CgljYXNlIDE6CgkJcmV0ID0gZG9fcmVxdWVzdCgpOwoJCWlmIChyZXQpCgkJCXJldHVybiByZXQ7 CgkJdF9mcmVlID0ga3RocmVhZF9jcmVhdGVfb25fY3B1KGZyZWVfdGhyZWFkX20xLCBOVUxMLCBj cHVfZnJlZSwKCQkJCQkgICAgICAgIm5taTFfZnJlZSIpOwoJCXRfZGlzcCA9IGt0aHJlYWRfY3Jl YXRlX29uX2NwdShkaXNwX3RocmVhZF9tMSwgTlVMTCwgY3B1X2Rpc3AsCgkJCQkJICAgICAgICJu bWkxX2Rpc3AiKTsKCQlpZiAoSVNfRVJSKHRfZnJlZSkgfHwgSVNfRVJSKHRfZGlzcCkpCgkJCXJl dHVybiAtRUlOVkFMOwoJCXdha2VfdXBfcHJvY2Vzcyh0X2ZyZWUpOwoJCXdha2VfdXBfcHJvY2Vz cyh0X2Rpc3ApOwoJCWJyZWFrOwoJY2FzZSAzOgoJCS8qIGV4cGVyaW1lbnQ6IHRoZSB3cml0ZXIg aW5zdGFsbHMgaW4gaXRzIGZpcnN0IGN5Y2xlLgoJCSAqIGNodXJuIGNvbnRyb2w6IGluc3RhbGwg b25jZSBoZXJlIHNvIHRoZSBkaXNwYXRjaCBkZW5zaXR5CgkJICogbWF0Y2hlcyB0aGUgZXhwZXJp bWVudCwgYW5kIHRoZSB3cml0ZXIgb25seSBzbGVlcHMuICovCgkJaWYgKGNodXJuICYmIGRvX3Jl cXVlc3QoKSkKCQkJcmV0dXJuIHJldDsKCQl0X2ZyZWUgPSBrdGhyZWFkX2NyZWF0ZV9vbl9jcHUo d3JpdGVyX3RocmVhZCwgTlVMTCwgY3B1X2ZyZWUsCgkJCQkJICAgICAgICJubWkxX3dyaXRlciIp OwoJCXRfZGlzcCA9IGt0aHJlYWRfY3JlYXRlX29uX2NwdShkaXNwX3RocmVhZF9tMywgTlVMTCwg Y3B1X2Rpc3AsCgkJCQkJICAgICAgICJubWkxX2Rpc3AiKTsKCQlpZiAoSVNfRVJSKHRfZnJlZSkg fHwgSVNfRVJSKHRfZGlzcCkpCgkJCXJldHVybiAtRUlOVkFMOwoJCXdha2VfdXBfcHJvY2Vzcyh0 X2ZyZWUpOwoJCXdha2VfdXBfcHJvY2Vzcyh0X2Rpc3ApOwoJCWJyZWFrOwoJY2FzZSA1OgoJCXJl dCA9IGRvX3JlcXVlc3QoKTsKCQlpZiAocmV0KQoJCQlyZXR1cm4gcmV0OwoJCXRfZnJlZSA9IGt0 aHJlYWRfY3JlYXRlX29uX2NwdSh3NV90aHJlYWQsICh2b2lkICopMUwsIGNwdV9mcmVlLAoJCQkJ CSAgICAgICAibm1pX3c1YSIpOwoJCXRfZGlzcCA9IGt0aHJlYWRfY3JlYXRlX29uX2NwdSh3NV90 aHJlYWQsICh2b2lkICopMkwsIGNwdV9kaXNwLAoJCQkJCSAgICAgICAibm1pX3c1YiIpOwoJCWlm IChJU19FUlIodF9mcmVlKSB8fCBJU19FUlIodF9kaXNwKSkKCQkJcmV0dXJuIC1FSU5WQUw7CgkJ d2FrZV91cF9wcm9jZXNzKHRfZnJlZSk7CgkJd2FrZV91cF9wcm9jZXNzKHRfZGlzcCk7CgkJYnJl YWs7CglkZWZhdWx0OgoJCXByX2VycigiYmFkIG1vZGUgJWRcbiIsIG1vZGUpOwoJCXJldHVybiAt RUlOVkFMOwoJfQoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkIF9fZXhpdCBubWlfcmFjZV9leGl0 KHZvaWQpCnsKCWlmICh0X2ZyZWUgJiYgIUlTX0VSUih0X2ZyZWUpKQoJCWt0aHJlYWRfc3RvcCh0 X2ZyZWUpOwoJaWYgKHRfZGlzcCAmJiAhSVNfRVJSKHRfZGlzcCkpCgkJa3RocmVhZF9zdG9wKHRf ZGlzcCk7CgkvKiBiZXN0LWVmZm9ydCBjbGVhbnVwIG9mIGEgc3RpbGwtaW5zdGFsbGVkIGFjdGlv biAobW9kZSAzIGNodXJuIG9mZikgKi8KCWlmIChhdG9taWNfcmVhZCgmaW5zdGFsbGVkKSAmJiBt b2RlID09IDMgJiYgIWNodXJuKQoJCWRvX2ZyZWUoKTsKCXByX3dhcm4oInJlbW92ZWQgbW9kZT0l ZCB0ZWFyZG93bj0lZCByZWxyZXM9JWRcbiIsIG1vZGUsCgkJYXRvbWljX3JlYWQoJnRlYXJkb3du X2NudCksIGF0b21pY19yZWFkKCZyZWxyZXNfY250KSk7Cn0KCm1vZHVsZV9pbml0KG5taV9yYWNl X2luaXQpOwptb2R1bGVfZXhpdChubWlfcmFjZV9leGl0KTsKTU9EVUxFX0xJQ0VOU0UoIkdQTCIp OwpNT0RVTEVfREVTQ1JJUFRJT04oImtlcm5lbC9pcnEgTk1JIHJhY2UgdmVyaWZpY2F0aW9uIGRy aXZlciIpOwo= ------=_Part_494561_157968919.1794381458198--