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=1794381970; b=5Dd9EwqMSf3ZTfn1vt7xzfrpl9y7AYwlNajJs+zWSABNgsZKe66OyurB8FOMIFeZxmPl Xtai8LAQRjOiCTTPGmAkw9BnH7VlHY4oythnONURQSsGjofdsHYw/L2pWAKXEZasklm6q 2p0Vkb4FyqdtQKLSzse1idsfwT/f/V7lnT9A0Myp2FF1fVGHgD+yZf8doPmqbEIGVdWo9 o8mWMdBlK4ElAACoEsF4W6LmIgM2Vxm7JYBiIGctfIwWWQzcoR5cRusnDkbmeGlcFPRSf /Rd46fXPxJLtmq1FFcRjGqnye0yfNemFGm8xvpHytacfrkqNs95Iwnlu5WKBBr8VS9w== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794381970; 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=1CgqoqA7WO8cqUh+BeLfn6kPM1J9FXzlzUgFD4z9s/w=; b=wCnh1MXXterwJ4ODPbnbSxF7sbM+myXWEHPBlfKVlyK44UhL5rz/AnMmvGxt7II9Etxn YrMuGpt/S3GjZccy2DBtUwM6o8VLcUz4XJ++TR+fzgqsfS7zdl6ROg9udIgl1ywLviLKb jBP0kWow48KufeTwBeX5G9HrPuBWc3qJd75PieeGXZbdxuIYbw148MCF4nXqKdvwUzlJK 6yHxkldYEQBJA2f/6md+0svG+dgO6KwvsayzLskPthon4pgfxkRbU2D1DD75YO0I3Pbai NK7EZxnOQgLEt/T9/YCfT4tKKO+JvjauHfGXnw4G/6IKEXaEFHtNjffNvh8kAYeC1nA== 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 3ACC8606A31C for ; Wed, 11 Nov 2026 07:26:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 3ACC8606A31C 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:26:05 +0800 (GMT+08:00) Date: Wed, 11 Nov 2026 15:26:05 +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 API lacks the request_mutex / dev_id matching / idempotency semantics that free_irq() has -- double free_nmi releases chip PM and module references twice (verified) 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?B5DEUDiH6nJ5xwDR7hwMki1N8jM= Content-Type: multipart/mixed; boundary="----=_Part_494721_274776445.1794381965859" 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: <4efdf746.2427f.1a1c97fea23.Coremail.xuhx@hust.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID:IAEQrMCmbmqNGPRqrW81AA--.10935W X-CM-SenderInfo: bgsqjkayqyjmo6kx23oohg3hdfq/1tbiAQMIB2rzQ+17NAACs3 X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWkKw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= ------=_Part_494721_274776445.1794381965859 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 VGhlIE5NSSB2YXJpYW50cyBvZiB0aGUgZ2VuaXJxIHJlZ2lzdHJhdGlvbiBBUEkgZHJvcHBlZCB0 aHJlZQpndWFyYW50ZWVzIHRoYXQgX19mcmVlX2lycSgpIHByb3ZpZGVzIG9uIHRoZSBwbGFpbi1J UlEgc2lkZSwgYWxsCnZpc2libGUgaW4gX19jbGVhbnVwX25taSgpIChrZXJuZWwvaXJxL21hbmFn ZS5jOjIwMzItMjA2NSk6ICgxKSBubwpyZXF1ZXN0X211dGV4IC0tIHJlcXVlc3Rfbm1pKCkncyBv d24gTk1JLXN0YXRlIHNldHVwIGV2ZW4gcnVucyBBRlRFUgpfX3NldHVwX2lycSgpIHJlbGVhc2Vk IHRoZSBtdXRleCAobWFuYWdlLmM6MjMyNi0yMzMwKSwgYW5kIGZyZWVfbm1pKCkKLT4gX19jbGVh bnVwX25taSgpIG5ldmVyIHRha2VzIGl0OyAoMikgbm8gZGV2X2lkIGlkZW50aXR5IG1hdGNoaW5n IC0tCmZyZWVfbm1pKCkgYWNjZXB0cyBkZXZfaWQgYnV0IG5ldmVyIGNvbXBhcmVzIGl0IChtYW5h Z2UuYzoyMDY3LTIwODIpLApzbyBpdCBhbHdheXMgZnJlZXMgIndoYXRldmVyIGlzIGN1cnJlbnRs eSBpbnN0YWxsZWQiOyAoMykgbm8KaWRlbXBvdGVuY3kgLS0gd2hlbiB0aGUgV0FSTiBhdCA6MjA0 MiBmaXJlcyAoZGVzYy0+YWN0aW9uID09IE5VTEwsCmkuZS4gdGhlIGxpbmUgd2FzIGFscmVhZHkg ZnJlZWQpIHRoZSBjbGVhbnVwIHRhaWwKKGlycV9yZWxlYXNlX3Jlc291cmNlcygpLCBpcnFfY2hp cF9wbV9wdXQoKSwgbW9kdWxlX3B1dCgpIGF0CjoyMDU5LTIwNjIpIFNUSUxMIEVYRUNVVEVTIHVu Y29uZGl0aW9uYWxseSwgdW5saWtlIF9fZnJlZV9pcnEoKSdzCmFscmVhZHktZnJlZSBlYXJseSBy ZXR1cm4gd2hpY2ggc2tpcHMgdGhlIHRhaWwgKG1hbmFnZS5jOjE4ODEtMTg4NykuCkEgZG91Ymxl IGZyZWVfbm1pKCkgdGhlcmVmb3JlIHVuZGVyZmxvd3MgdGhlIGlycWNoaXAgUE0gcmVmZXJlbmNl IGFuZAp0aGUgbW9kdWxlIHJlZmVyZW5jZSBhbmQgcmUtcmVsZWFzZXMgdGhlIGNoaXAgcmVzb3Vy Y2VzIC0tIEkgdmVyaWZpZWQKdGhpcyBvbiBhIHByaXN0aW5lIExpbnV4IDcuMyBLQVNBTiBrZXJu ZWw6IHR3byBjb25jdXJyZW50IGZyZWVfbm1pKCkKY2FsbHMgb24gb25lIGxpbmUgcHJvZHVjZWQg V0FSTklORyBtYW5hZ2UuYzoyMDQyIChkb3VibGUgY2xlYW51cCksCmlycV9ubWlfdGVhcmRvd24g YW5kIGlycV9yZWxlYXNlX3Jlc291cmNlcyBleGVjdXRlZCB0d2ljZSwgYW5kCi9wcm9jL21vZHVs ZXMgc2hvd2VkIHRoZSBtb2R1bGUgcmVmY291bnQgYXQgLTEuICBUaGUgY29tcGFuaW9uIHJlcG9y dAoodGhlIE5NSSBkaXNwYXRjaCB1c2UtYWZ0ZXItZnJlZSkgY292ZXJzIHRoZSBxdWllc2NlbmNl IGdhcCBvbiB0aGUKc2FtZSBBUEk7IHRoaXMgbWFpbCBjb3ZlcnMgdGhlIHNlcmlhbGl6YXRpb24v bWF0Y2hpbmcvaWRlbXBvdGVuY3kKZ2FwLiAgTm8gaW4tdHJlZSBjYWxsZXIgdG9kYXkgaXNzdWVz IGNvbmN1cnJlbnQgb3IgZG91YmxlIGZyZWVfbm1pCihwcm9iZS9yZW1vdmUgYXJlIHNlcmlhbGl6 ZWQgcGVyIGRldmljZSBhbmQgZWFjaCBOTUkgbGluZSBoYXMgYQpzaW5nbGUgb3duZXIpLCBzbyB0 aGlzIGlzIGFuIEFQSS1zdHJ1Y3R1cmFsIGRlZmVjdCB3aXRoIHZlcmlmaWVkCmNvbnNlcXVlbmNl cyAtLSBjaGVhcCB0byBmaXggKGFsaWduIF9fY2xlYW51cF9ubWkoKSB3aXRoIF9fZnJlZV9pcnEo KQpzZW1hbnRpY3MpLCB3b3J0aCBmaXhpbmcgYmVmb3JlIGFueSBkcml2ZXIgcmVsaWVzIG9uIGNv bmN1cnJlbnQKTk1JIG1hbmFnZW1lbnQuCgpUaGUgZGV0YWlsZWQgZGVzY3JpcHRpb246CgoqIFRo ZSBtaXNzaW5nIGd1YXJhbnRlZXMgKExpbnV4IDcuMywga2VybmVsL2lycS9tYW5hZ2UuYykKCiAg UGxhaW4gc2lkZTogX19zZXR1cF9pcnEoKSB0YWtlcyByZXF1ZXN0X211dGV4IGV4cGxpY2l0bHkg dG8gcHJvdGVjdAogIGFnYWluc3QgYSBjb25jdXJyZW50IF9fZnJlZV9pcnEoKSAoOjE1NTYtMTU2 NCk7IF9fZnJlZV9pcnEoKSBob2xkcwogIGl0ICg6MTg2OC0xOTg0KSwgbWF0Y2hlcyBkZXZfaWQg cHJlY2lzZWx5ICg6MTg4Ni0xODg5KSwgYW5kIG9uCiAgYWxyZWFkeS1mcmVlIFdBUk5zIGFuZCBy ZXR1cm5zIGVhcmx5IFdJVEhPVVQgdGhlIHJlbGVhc2UgdGFpbAogICg6MTg4MS0xODg3KTsgcmVz b3VyY2UgcmVsZWFzZSBoYXBwZW5zIHVuZGVyIGNoaXBfYnVzX2xvY2sKICAoOjE5NjctMTk4Miku CgogIE5NSSBzaWRlOiBfX2NsZWFudXBfbm1pKCkgKDoyMDMyLTIwNjUpIGhvbGRzIG9ubHkgZGVz Yy0+bG9jayBmb3IKICB0aGUgcHVibGljYXRpb24gcmVtb3ZhbCAoOjIwMzcgdGVhcmRvd24sIDoy MDQ3IGFjdGlvbj1OVUxMLAogIDoyMDUwIHNodXRkb3duL2RlYWN0aXZhdGUpOyBldmVyeXRoaW5n IGVsc2UgLS0ga2ZyZWUgKDoyMDU3KSwKICBpcnFfcmVsZWFzZV9yZXNvdXJjZXMgKDoyMDU5KSwg aXJxX2NoaXBfcG1fcHV0ICg6MjA2MSksCiAgbW9kdWxlX3B1dCAoOjIwNjIpIC0tIHJ1bnMgdW5s b2NrZWQuICByZXF1ZXN0X25taSgpJ3MgZmFpbHVyZSBwYXRoCiAgcmV1c2VzIHRoZSBzYW1lIGNs ZWFudXAgKDoyMzMzKSwgYW5kIGl0cyBzdWNjZXNzLXBhdGggTk1JLXN0YXRlCiAgY29tbWl0IChp c3RhdGUgfD0gSVJRU19OTUk7IGlycV9ubWlfc2V0dXAoKSwgOjIzMjYtMjMzMCkgcnVucyBhZnRl cgogIF9fc2V0dXBfaXJxKCkgcmVsZWFzZWQgcmVxdWVzdF9tdXRleCAoOjIzMjIpIC0tIHNvIGV2 ZW4gdGhlIHNldHVwCiAgaGFsZiBvZiB0aGUgcHJvdG9jb2wgaXMgb3V0c2lkZSB0aGUgbXV0ZXgg b24gdGhlIE5NSSBzaWRlLgoKICBUaGUgdW5jb25kaXRpb25hbCB0YWlsIG9uIHRoZSBhbHJlYWR5 LWZyZWUgcGF0aCBpcyB0aGUgZGlyZWN0bHkKICBvYnNlcnZhYmxlIGRlZmVjdDogOjIwNDIncyBX QVJOIGhhcyBubyBsaW5rYWdlIHRvIDoyMDU3LTIwNjIuCgoqIEV2aWRlbmNlIChwcmlzdGluZSA3 LjMgS0FTQU47IGluc3RydW1lbnRzIGF0dGFjaGVkKQoKICBubWlfcmFjZS5jIGRyaXZlcyB0d28g dGhyZWFkcyB0byBhIHJlbmRlenZvdXMgYW5kIHRoZW4gaXNzdWVzIHR3bwogIGNvbmN1cnJlbnQg ZnJlZV9ubWkoKSBjYWxscyBvbiB0aGUgc2FtZSBsaW5lIChib3RoIHRha2luZyB0aGUKICBkZXB0 aD09MCBXQVJOIGJyYW5jaCwgbWFuYWdlLmM6MjA3OCk6CgogICAgV0FSTklORyBtYW5hZ2UuYzoy MDc4IGF0IGZyZWVfbm1pKzB4NjkgICAgICAgICAgICAoeDIsIGJvdGggdGhyZWFkcykKICAgIGNo aXA6IGlycV9ubWlfdGVhcmRvd24gIzEKICAgIGNoaXA6IGlycV9yZWxlYXNlX3Jlc291cmNlcyAj MSAgICAgICAgICAgICAgICAgICAgKGZpcnN0IHRhaWw6IG9rKQogICAgY2hpcDogaXJxX25taV90 ZWFyZG93biAjMiAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gc2Vjb25kIGNsZWFudXAKICAg IFdBUk5JTkcgbWFuYWdlLmM6MjA0MiBhdCBfX2NsZWFudXBfbm1pKzB4MTU3ICAgICAgIChkZXNj LT5hY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID09IE5VTEwpCiAgICBjaGlwOiBpcnFfcmVsZWFzZV9yZXNvdXJjZXMgIzIgICAg ICAgICAgICAgICAgICAgICA8LSB0YWlsIHJhbiBhZ2FpbgogICAgL3Byb2MvbW9kdWxlczogbm1p X3JhY2UgMjQ1NzYgLTEgLSBMaXZlICAgICAgICAgICAgPC0gbW9kdWxlX3B1dCByYW4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3aWNl OiBtb2R1bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlZmNvdW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBVTkRFUkZMT1cKCiAgWmVybyBLQVNBTiByZXBvcnRzLCBhcyB0 aGUgYW5hbHlzaXMgcHJlZGljdHM6IHRoZSBkb3VibGUgY2xlYW51cAogIHBhdGggc2tpcHMga2Zy ZWUgKG5vIFVBRikgLS0gdGhlIGRhbWFnZSBpcyB0aGUgcmVmZXJlbmNlL3Jlc291cmNlCiAgdW5k ZXJmbG93IChjaGlwIHJ1bnRpbWUgUE0sIG1vZHVsZSB1bmxvYWQgc2FmZXR5KSBhbmQgdGhlCiAg ZG91YmxlLWV4ZWN1dGVkIGlycV9yZWxlYXNlX3Jlc291cmNlcy4KCiAgTW9kdWxlIHVzYWdlOiBp bnNtb2Qgbm1pX3JhY2Uua287IHRoZSB0d28tdGhyZWFkIHJlbmRlenZvdXMgKwogIGNvbmN1cnJl bnQgZnJlZV9ubWkgcnVucyBhdXRvbWF0aWNhbGx5IChhY3Rpb249bm1pMmMgaW4gdGhlIHBsYW5z KTsKICBubWlfc3RhbGwua28gaXMgdGhlIGNvbXBhbmlvbiB3aW5kb3cgaW5zdHJ1bWVudCAodXNl ZCBieSB0aGUKICBjb21wYW5pb24gZGlzcGF0Y2gtVUFGIHJlcG9ydCkuCgoqIEZpeCBkaXJlY3Rp b24gCgogIDEuIGZyZWVfbm1pKCkgKGFuZCB0aGUgcmVxdWVzdF9ubWkgZmFpbHVyZSBwYXRoJ3Mg Y2xlYW51cCBjYWxsKQogICAgIHRha2UgZGVzYy0+cmVxdWVzdF9tdXRleCBhcm91bmQgdGhlIGNs ZWFudXA7CiAgMi4gX19jbGVhbnVwX25taSgpOiBvbiB0aGUgYWxyZWFkeS1mcmVlIFdBUk4sIHJl dHVybiBlYXJseSBhbmQgc2tpcAogICAgIHRoZSBlbnRpcmUgcmVsZWFzZSB0YWlsIChpZGVtcG90 ZW5jeSwgbWF0Y2hpbmcgbWFuYWdlLmM6CiAgICAgMTg4MS0xODg3KTsKICAzLiBmcmVlX25taSgp IG1hdGNoZXMgZGV2X2lkIChvciB0aGUgQVBJIGRyb3BzIHRoZSBwYXJhbWV0ZXIgd2l0aAogICAg IGFuIGV4cGxpY2l0IGNvbW1lbnQpIC0tIHJlc3RvcmluZyB0aGUgaWRlbnRpdHkgc2VtYW50aWNz IGNhbGxlcnMKICAgICBjbGVhcmx5IGV4cGVjdCAoYXJtX3BtdSBwYXNzZXMgcGVyLWNwdSBwb2lu dGVycywgYWdkaS9hNjRmeCBwYXNzCiAgICAgTlVMTCk7CiAgNC4gbW92ZSByZXF1ZXN0X25taSgp J3MgaXN0YXRlL2lycV9ubWlfc2V0dXAgY29tbWl0IGluc2lkZSB0aGUKICAgICBfX3NldHVwX2ly cSgpIG11dGV4LWhlbGQgcmVnaW9uIChvciBhZGQgY2hpcF9idXNfbG9jayBhcm91bmQgdGhlCiAg ICAgTk1JIHJlc291cmNlIHJlbGVhc2UsIG1pcnJvcmluZyBfX2ZyZWVfaXJxKCkpLgoKICBXaXRo ICgyKSBhbG9uZSwgdGhlIHZlcmlmaWVkIFc1IGRpc2FwcGVhcnM7IHdpdGggKDEpKygyKSB0aGUg Tk1JCiAgQVBJIGdhaW5zIHRoZSBzYW1lIHNlcmlhbGl6YXRpb24gYW5kIGlkZW1wb3RlbmN5IGFz IGZyZWVfaXJxKCkuCiAgKFRoZSBkaXNwYXRjaC1zaWRlIHF1aWVzY2VuY2UgdXNlLWFmdGVyLWZy ZWUgaXMgYSBzZXBhcmF0ZSBkZWZlY3QsCiAgcmVwb3J0ZWQgaW4gaXRzIG93biBtYWlsLikKCgog IFBsZWFzZSBrZWVwIG1lIGluIENjOyBJIGFtIG5vdCBzdWJzY3JpYmVkIHRvIHRoZSBsaXN0cy4K CgpSZWdhcmRzLApIYW54aWFuZyBYdQp4dWh4QGh1c3QuZWR1LmNuCg== ------=_Part_494721_274776445.1794381965859 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_494721_274776445.1794381965859 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_494721_274776445.1794381965859--