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=1792677706; b=DrjWlx/n1at4DYkjptChHewBxAubojEbqI3YVBsm5jRp5Jdr0eCjFZ1Z9co9QdXcLv0K C7wOy1gcxWPWEkiTJnruMg9al11Zjke6hT59m9j9RTmsYIKayPeR0VM3nazPGGHDPAznj fsm4m6IGcR8gbymZeR69gwThsEomEfaj0EkbF+7h3PtGPHQ9f0/ZVGIfGReq8J8x6FaE9 bbZqLKl+Q7KmYjzOOmnjkXKuQdL+nc403oBi0HB2ocGhkzzpUPKNhEV665b+BMm9H7xU9 X9RVGjjsr6xSNCqPPOuAXFzbPyr5uiKp3jrf0/On/sGP0DCLncyPkvAgigLVEceRBvg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792677706; 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=g0Tj5eZmIhSRc4nx5SeW1NBAS/ccje+bTrA8n1TnYIY=; b=z7luQ8XP4ROUC2TFDfS+XP+H/KVxyo/QxZfaMT+imNrbKOmF1oMz5qJ04oyZbOyW7pYB DqPi2OuQGhXnzwcGpDzDN5U8/ovKYae2um6uPqAyt1x6q9QjVUb3Px3sROSRolApbHb+I SLkoxgUOzbjIjnFFmecP0fqC0nhttkbcXdpgA+gI28Bqtx5Y9Frx0OTl7HKgZ2i2mMRKy XG7H4ZZPfoUYdzpHLEh3lFtcWcL90MfrFp6WFHhfVTEtRuF0YFcUIJZOTFodtK83KVGag Aspho0AA5dWe8WPl3USG5cSM0GLSaWLVBCK+FriyS4rTD1lMdCOGPogLKuHZm4PJ7Tw== 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 D6F39606A322; Thu, 22 Oct 2026 14:01:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org D6F39606A322 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:01:26 +0800 (GMT+08:00) Date: Thu, 22 Oct 2026 22:01:26 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: =?UTF-8?B?5b6Q5pmX57+U?= To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, namhyung@kernel.org Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: perf/uncore: CPU-hotplug box migration racing PCI box removal operates on a freed intel_uncore_box (no common lock, no reference on the hotplug side) 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?TC3g3jiH6nJ5xwDR7hwMki1N8jM= Content-Type: multipart/mixed; boundary="----=_Part_283838_53608114.1792677686188" 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: <51d7f699.14c14.1a163eaabac.Coremail.xuhx@hust.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID:IQEQrMAWP3g2F9pqCHhUAA--.58868W X-CM-SenderInfo: bgsqjkayqyjmo6kx23oohg3hdfq/1tbiAQMIB2rY5euqIwABs5 X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWkKw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= ------=_Part_283838_53608114.1792677686188 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 V2hlbiBhIENQVSBnb2VzIG9mZmxpbmUgKG9yIG9ubGluZSkgb24gYSBtdWx0aS1kaWUgaG9zdCwg dGhlIHVuY29yZQpob3RwbHVnIGNhbGxiYWNrIHdhbGtzIGV2ZXJ5IHR5cGUncyBib3hlcyB0aHJv dWdoCnVuY29yZV9jaGFuZ2VfdHlwZV9jdHgoKSwgd2hpY2ggcmVhZHMgcG11LT5ib3hlc1tkaWVd LCB3cml0ZXMgYm94CmZpZWxkcywgY2FuY2VscyB0aGUgYm94IGhydGltZXIgYW5kIGNhbGxzIHBl cmZfcG11X21pZ3JhdGVfY29udGV4dCgpCi0tIGFsbCB3aXRob3V0IHRha2luZyBhIHJlZmVyZW5j ZSBvbiB0aGUgYm94IGFuZCB3aXRob3V0IGFueSBsb2NrIGluCmNvbW1vbiB3aXRoIHRoZSBQQ0kg cmVtb3ZlIHBhdGgsIHdoaWNoIG9uIHRoZSAibGFzdCBib3giIHRyYW5zaXRpb24KTlVMTHMgdGhl IHNsb3QgYW5kIGtmcmVlcyB0aGUgYm94LiAgVGhlIGhvdHBsdWcgc2lkZSBjYW4gdGhlcmVmb3Jl CmhvbGQgYW5kIGtlZXAgdXNpbmcgYSBib3ggdGhlIFBDSSBzaWRlIGp1c3QgZnJlZWQ6IGhydGlt ZXJfY2FuY2VsKCkKb24gYSBmcmVlZCB0aW1lciAoaXRzIGJhc2UgcG9pbnRlciByZWFkIGxlYWRz IHRvIGEgc3BpbmxvY2sgb24KYXJiaXRyYXJ5IG1lbW9yeSksIHdyaXRlcyBpbnRvIGZyZWVkIHNs YWIsIGFuZCBhIG1pZ3JhdGlvbiBjaGFpbiB0aGF0Cm1heSBhbHNvIGRlcmVmZXJlbmNlIGFuIHVu cmVnaXN0ZXJlZCBQTVUncyBmcmVlZCBwZXItQ1BVIGNvbnRleHRzLgo3LjMncyByZWNlbnQgYm94 LXJlZmNvdW50aW5nIHJlZmFjdG9yIGNvdmVyZWQgdGhlIFBDSSBwcm9iZS9yZW1vdmUKcGFpciBi dXQgbGVmdCB0aGUgaG90cGx1ZyBzaWRlIHVucmVmZXJlbmNlZCwgc28gdGhlIHJhY2UgaXMgZnVs bHkKcHJlc2VudCBpbiBjdXJyZW50IG1haW5saW5lOyB0aGUgcGVyZi1jb3JlIGhhbGYgb2YgdGhl IHRyYW5zbWlzc2lvbgpjaGFpbiwgaW4gY29udHJhc3QsIEkgdmVyaWZpZWQgZHluYW1pY2FsbHkg dG8gYmUgcHJvcGVybHkgcHJvdGVjdGVkLAp3aGljaCBwaW5zIHRoZSBkZWZlY3Qgc3F1YXJlbHkg aW4gdGhlIHVuY29yZSBsYXllci4KClRoZSB0d28gcGF0aHMgc2hhcmUgcG11LT5ib3hlc1tkaWVd IGFuZCB0aGUgYm94IG9iamVjdCB3aXRoIG5vdGhpbmcKdG8gc2VyaWFsaXplIHRoZW0gKGFyY2gv eDg2L2V2ZW50cy9pbnRlbC91bmNvcmUuYyk6IHRoZSBDUFUgaG90cGx1ZwpjYWxsYmFja3MgdGFr ZSB0aGUgY3B1IGhvdHBsdWcgbG9ja3MsIHRoZSBQQ0kgcmVtb3ZlIGNhbGxiYWNrIHRha2VzCml0 cyBkZXZpY2UncyBsb2NrIC0tIG5laXRoZXIgdGFrZXMgdGhlIG90aGVyJ3MsIGFuZCB1bmxpa2Ug dGhlIHByb2JlCnBhdGgsIFBDSSByZW1vdmUgaGFzIG5vIGNwdV9ob3RwbHVnX2Rpc2FibGUoKSB3 cmFwcGVyLiAgVGhlIGJveApyZWZlcmVuY2UgY291bnQgdGhhdCA3LjMgaW50cm9kdWNlZCBpcyB0 YWtlbiBieSB0aGUgUENJIHByb2JlCihhdG9taWNfaW5jKCZib3gtPnJlZmNudCksIHVuY29yZS5j OjEyMTUpIGFuZCBkcm9wcGVkIGJ5IFBDSSByZW1vdmUKKHVuY29yZS5jOjEyOTMtMTI5NiksIGJ1 dCB0aGUgaG90cGx1ZyBzaWRlJ3MgdW5jb3JlX2JveF9yZWYoKS8KdW5jb3JlX2JveF91bnJlZigp IGl0ZXJhdGUgb25seSB0aGUgTVNSIGFuZCBNTUlPIHVuY29yZSBhcnJheXMKKHVuY29yZS5jOjE1 OTAtMTU5MSBvbiBvZmZsaW5lLCA6MTY5Mi0xNjkzIG9uIG9ubGluZSkgLS0gdGhlIFBDSQp0eXBl cyByZWFjaCB1bmNvcmVfY2hhbmdlX3R5cGVfY3R4KCkgdmlhCnVuY29yZV9jaGFuZ2VfY29udGV4 dCh1bmNvcmVfcGNpX3VuY29yZXMsIC4uLikgKHVuY29yZS5jOjE2MDgvMTY4OSkKd2l0aCBubyBy ZWZlcmVuY2UgYXQgYWxsLiAgVHJpZ2dlcmluZyBuZWVkcyBhIG11bHRpLWRpZSBob3N0IHdpdGgK aWQtdGFibGUgdW5jb3JlIFBDSSBkcml2ZXJzIGFuZCBjb25jdXJyZW50IENQVSBvZmZsaW5lL29u bGluZSBwbHVzClBDSSB1bmJpbmQvcmVtb3ZlIChhZG1pbmlzdHJhdG9yIGFjdGlvbnMsIG9yIGEg aG90cGx1ZyBldmVudCByYWNpbmcKYW4gYWRtaW4gb3BlcmF0aW9uKS4KClRoZSBkZXRhaWxlZCBk ZXNjcmlwdGlvbjoKCiogVGVzdCBlbnZpcm9ubWVudCAvIGFmZmVjdGVkIHZlcnNpb24KCiAgTGlu dXggdmVyc2lvbiA3LjMuMCAoZ2NjIDEzLjMuMCwgR05VIGxkIDIuNDIpICMxIFNNUCBQUkVFTVBU X0RZTkFNSUMKICAtLSB2YW5pbGxhIG1haW5saW5lIDcuMyByZWxlYXNlIHRhcmJhbGwgKGtlcm5l bC5vcmcsIHVubW9kaWZpZWQpLAogIHJlYnVpbHQgd2l0aCBDT05GSUdfUEVSRl9FVkVOVFM9eSwg Q09ORklHX1BFUkZfRVZFTlRTX0lOVEVMX1VOQ09SRT15LAogIENPTkZJR19IT1RQTFVHX0NQVT15 LCBLQVNBTiBlbmFibGVkLCBRRU1VL0tWTSB4ODZfNjQgZ3Vlc3QuICBMaW5lCiAgbnVtYmVycyBi ZWxvdyBhcmUgZnJvbSA3LjMgKHRoZSByZWZhY3RvciB0aGF0IGFkZGVkIGJveCByZWZjb3VudGlu ZwogIGFuZCBQTVVfQlJPS0VOIGlzIHRoZSBjdXJyZW50IHNoYXBlIGFuYWx5emVkIGhlcmUpLgoK KiBNZWNoYW5pc20KCiAgSCBzaWRlIC0tIENQVSBvZmZsaW5lIGZvciB0aGlzIGRpZSAodW5jb3Jl X2V2ZW50X2NwdV9vZmZsaW5lKCksCiAgdW5jb3JlLmM6MTU4NCk6CgogICAgICB1bmNvcmVfYm94 X3VucmVmKHVuY29yZV9tc3JfdW5jb3JlcywgZGllKTsgICAgLyogOjE1OTAgIG1zci9tbWlvCiAg ICAgIHVuY29yZV9ib3hfdW5yZWYodW5jb3JlX21taW9fdW5jb3JlcywgZGllKTsgICAvKiA6MTU5 MSAgb25seSEgICAqLwogICAgICAuLi4KICAgICAgdW5jb3JlX2NoYW5nZV9jb250ZXh0KHVuY29y ZV9wY2lfdW5jb3JlcywgY3B1LCB0YXJnZXQpOyAvKiA6MTYwOCAqLwogICAgICAgIC0+IHVuY29y ZV9jaGFuZ2VfdHlwZV9jdHgoKSAgICAgICAgICAgICAgICAgIC8qIDoxNTE0ICovCiAgICAgICAg ICAgICBib3ggPSBwbXUtPmJveGVzW2RpZV07ICAgICAgICAgICAgICAgICAgIC8qIDoxNTIzICBu byByZWYgKi8KICAgICAgICAgICAgIC4uLiBib3gtPmNwdSAvIGNwdW1hc2sgd3JpdGVzIC4uLiAg ICAgICAgLyogOjE1MzEvOjE1MzggICAqLwogICAgICAgICAgICAgdW5jb3JlX3BtdV9jYW5jZWxf aHJ0aW1lcihib3gpOyAgICAgICAgICAvKiA6MTU0NyAgICAgICAgICovCiAgICAgICAgICAgICBw ZXJmX3BtdV9taWdyYXRlX2NvbnRleHQoJnBtdS0+cG11LCBvbGRfY3B1LCBuZXdfY3B1KTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjE1 NDgsIHNsZWVwcyAqLwogICAgICAgICAgICAgYm94LT5jcHUgPSBuZXdfY3B1OyAgICAgICAgICAg ICAgICAgICAgICAvKiA6MTU0OSAgdXNlIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveCBBRlRFUiB0aGUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xlZXBhYmxlIGNhbGwg Ki8KICAgICAgICAgICAgIGNwdW1hc2tfc2V0X2NwdShuZXdfY3B1LCAmcG11LT5jcHVfbWFzayk7 LyogOjE1NTAgICAgICAgICAqLwoKICBQIHNpZGUgLS0gUENJIHJlbW92ZSBvZiB0aGF0IGRpZSdz IGJveCAodW5jb3JlX3BjaV9wbXVfdW5yZWdpc3RlcigpLAogIHVuY29yZS5jOjEyODMpOgoKICAg ICAgcG11LT5ib3hlc1tkaWVdID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjEy ODkgKi8KICAgICAgaWYgKGF0b21pY19kZWNfcmV0dXJuKCZwbXUtPmFjdGl2ZWJveGVzKSA9PSAw KQogICAgICAgICAgICAgIHVuY29yZV9wbXVfdW5yZWdpc3RlcihwbXUpOyAgICAgICAgICAgICAv KiA6MTI5MS0xMjkyICh0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIvdW5yZWcKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFjZSByZXBvcnRlZAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5 KSAqLwogICAgICBpZiAoYXRvbWljX2RlY19yZXR1cm4oJmJveC0+cmVmY250KSA9PSAwKSB7ICAg ICAvKiA6MTI5MzogcHJvYmUncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZWYgaXMgdGhlIG9ubHkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lIC0+IDAgKi8KICAgICAgICAg ICAgICB1bmNvcmVfYm94X2V4aXQoYm94KTsKICAgICAgICAgICAgICBrZnJlZShib3gpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjEyOTUgKi8KICAgICAgfQoKICBJbnRlcmxlYXZp bmc6IEggcmVhZHMgYm94IGF0IDoxNTIzLCBQIE5VTExzIHRoZSBzbG90IGFuZCBkcm9wcyB0aGUK ICByZWZjb3VudCB0byB6ZXJvIGFuZCBrZnJlZXM7IEggY29udGludWVzIG9uIGZyZWVkIG1lbW9y eToKICAtIHVuY29yZV9wbXVfY2FuY2VsX2hydGltZXIoKSAodW5jb3JlLmM6MzU2KSAtPiBocnRp bWVyX2NhbmNlbCgpIC0+CiAgICBsb2NrX2hydGltZXJfYmFzZSgpIHJlYWRzIHRoZSBmcmVlZCB0 aW1lci0+YmFzZSBhbmQgdGhlbgogICAgcmF3X3NwaW5fbG9ja3Mgd2hhdGV2ZXIgYWRkcmVzcyB0 aGF0IGZyZWVkIHdvcmQgbm93IGhvbGRzIChHUEYgb3IKICAgIGEgbG9ja3VwIG9uIHJldXNlOyBL QVNBTiB3b3VsZCByZXBvcnQgdGhlIFVBRiByZWFkKTsKICAtIHBlcmZfcG11X21pZ3JhdGVfY29u dGV4dCgpIChrZXJuZWwvZXZlbnRzL2NvcmUuYzoxNDQ2NykgcnVucwogICAgd2hpbGUgdGhlIFBN VSBpdHNlbGYgbWF5IGJlIGdldHRpbmcgdW5yZWdpc3RlcmVkIGJ5IHRoZSBzYW1lCiAgICByZW1v dmUgKGl0cyBfX3BlcmZfcG11X2luc3RhbGxfZXZlbnQoKSAtPiBmaW5kX2dldF9wbXVfY29udGV4 dCgpCiAgICBkZXJlZmVyZW5jZXMgcG11LT5jcHVfcG11X2NvbnRleHQgLS0gY29udmVyZ2luZyB3 aXRoIHRoZSBjb25zdW1lcgogICAgc2lkZSBvZiBteSBwcmV2aW91cyByZXBvcnQpOwogIC0gOjE1 NDktMTU1MCB3cml0ZSBib3gtPmNwdS9jcHVtYXNrIGludG8gZnJlZWQgc2xhYi4KCiAgT25saW5l IHZhcmlhbnQ6IGFsbG9jYXRlX2JveGVzKCkgKDoxNjEyKSBjaGVja2luZyBhbmQgaW5zdGFsbGlu ZwogIHBtdS0+Ym94ZXNbZGllXSByYWNlcyB0aGUgc2FtZSByZWFkLW91dC9OVUxML2tmcmVlIG9u IHJlbW92YWwsCiAgeWllbGRpbmcgYSBkb3VibGUgYm94IGluIG9uZSBzbG90IG9yIGEgZGFuZ2xp bmcgc2xvdDsgbm90ZSB0aGF0IHRoZQogIFdBUk5fT05fT05DRSBhZ2FpbnN0IGFuIG9jY3VwaWVk IHNsb3QgYWRkZWQgYnkgdGhlIDcuMyByZWZhY3RvcgogICg6MTIwNikgZ3VhcmRzIHRoZSBwcm9i ZSBwYXRoLCBub3QgdGhpcyBvbmUuCgoqIEV2aWRlbmNlCgogIC0gU291cmNlLWxldmVsOiB0aGUg YW5hbHlzaXMgYWJvdmUgaXMgb24gY3VycmVudCA3LjMsIGZ1bmN0aW9uIGJ5CiAgICBmdW5jdGlv bjsgdGhlIGxvY2sgaW52ZW50b3J5IG9mIHVuY29yZS5jIGlzIHVuY2hhbmdlZCBieSB0aGUKICAg IHJlZmFjdG9yIChubyBzZXJpYWxpemF0aW9uIGV4aXN0cyBvciB3YXMgYWRkZWQgYmV0d2VlbiB0 aGUgaG90cGx1ZwogICAgY2FsbGJhY2tzIGFuZCB0aGUgUENJIGNhbGxiYWNrcyksIGFuZCB0aGUg aG90cGx1ZyBzaWRlIGRlbW9uc3RyYWJseQogICAgdGFrZXMgbm8gYm94IHJlZmVyZW5jZSBmb3Ig UENJIHR5cGVzIChpdHMgcmVmL3VucmVmIGhlbHBlcnMgYXJlCiAgICBvbmx5IGludm9rZWQgb24g dGhlIG1zci9tbWlvIGFycmF5cykuCiAgLSBEeW5hbWljLCBORUdBVElWRSAodGhpcyBpcyB0aGUg aGFsZiBJIGNvdWxkIHJ1biB3aXRob3V0IHVuY29yZQogICAgaGFyZHdhcmUpOiB0aGUgcGVyZi1j b3JlIHRyYW5zbWlzc2lvbiBjaGFpbiB0aGUgbWlncmF0aW9uIGZ1bm5lbHMKICAgIGludG8gLS0g cGVyZl9wbXVfbWlncmF0ZV9jb250ZXh0KCkgdnMgY29uY3VycmVudAogICAgcGVyZl9wbXVfdW5y ZWdpc3RlcigpL3JlZ2lzdGVyKCkgd2l0aCBpbi1mbGlnaHQgZXZlbnQgY3JlYXRpb24gYW5kCiAg ICBDUFUgaG90cGx1ZyAtLSB3YXMgc3RyZXNzLXRlc3RlZCBvbiB0aGUgS0FTQU4ga2VybmVsIHdp dGggdGhlCiAgICBhdHRhY2hlZCBtb2R1bGUncyBtaWd1bnJlZy9taWdvcGVuIGFjdGlvbnMgKDMw MCByb3VuZHMgZWFjaCwKICAgIHNlcXVlbnRpYWwgdW5yZWdpc3Rlci9yZWdpc3RlciArIG1pZ3Jh dGUgaGFtbWVyICsgb3Blbi9jbG9zZQogICAgaGFtbWVyICsgQ1BVIG9mZmxpbmUvb25saW5lIGxv b3BzKTogWkVSTyBLQVNBTiByZXBvcnRzIGluIGJvdGgKICAgIGNvbmZpZ3VyYXRpb25zLiAgVGhl IGV4aXN0aW5nIFNSQ1UgKyBJRFIvbGlzdCByZW1vdmFsIG9yZGVyaW5nICsKICAgIGNvbnRleHQg bG9ja3MgcHJvdGVjdCB0aGUgcGVyZi1jb3JlIHNpZGU7IHRoZSB1bnByb3RlY3RlZCBwYXJ0IGlz CiAgICBwcmVjaXNlbHkgdGhlIHVuY29yZS1sYXllciBib3ggbGlmZXRpbWUgdGhpcyByZXBvcnQg ZGVzY3JpYmVzLgogICAgKFRoZSB0aGlyZCBjb25maWd1cmF0aW9uIHdpdGggY29uY3VycmVudCBy ZWdpc3RlciBjaHVybiByZWFjaGVzCiAgICB0aGUgcmVnaXN0ZXIvdW5yZWdpc3RlciByYWNlIG9m IG15IHByZXZpb3VzIHJlcG9ydCBmaXJzdCwgYXMKICAgIGV4cGVjdGVkLikKICAtIFJlYWwtaGFy ZHdhcmUgdHJpZ2dlciAocm9vdCwgbXVsdGktZGllLCBlLmcuIFNLWCk6CgogICAgICAjIHRlcm1p bmFsIEE6IG9mZmxpbmUvb25saW5lIGEgY29sbGVjdGluZyBDUFUgb2YgdGhlIGRpZQogICAgICB3 aGlsZSA6OyBkbwogICAgICAgIGVjaG8gMCA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdU4v b25saW5lCiAgICAgICAgZWNobyAxID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Ti9vbmxp bmUKICAgICAgZG9uZQogICAgICAjIHRlcm1pbmFsIEI6IHVuYmluZC9yZWJpbmQgdGhlIHNhbWUg ZGllJ3MgdW5jb3JlIGJveAogICAgICB3aGlsZSA6OyBkbwogICAgICAgIGVjaG8gPGJkZj4gPiAv c3lzL2J1cy9wY2kvZHJpdmVycy9za3hfdW5jb3JlL3VuYmluZAogICAgICAgIGVjaG8gPGJkZj4g PiAvc3lzL2J1cy9wY2kvZHJpdmVycy9za3hfdW5jb3JlL2JpbmQKICAgICAgZG9uZQogICAgICAj IGV4cGVjdGVkIHdpdGggS0FTQU46IHVzZS1hZnRlci1mcmVlIGluCiAgICAgICMgdW5jb3JlX2No YW5nZV90eXBlX2N0eCAvIHVuY29yZV9wbXVfY2FuY2VsX2hydGltZXIgLwogICAgICAjIGxvY2tf aHJ0aW1lcl9iYXNlOyBvciBhIGRvdWJsZSBib3ggaW4gcG11LT5ib3hlc1tkaWVdCgogIE15IHRl c3QgZW52aXJvbm1lbnQgcHJvdmlkZXMgbm8gSW50ZWwgdW5jb3JlIFBDSSBkZXZpY2VzLCBzbyB0 aGUKICBIIHggUCBpbnRlcmxlYXZpbmcgaXRzZWxmIGlzIHNvdXJjZS1wcm92ZW4sIG5vdCBkeW5h bWljYWxseQogIHJlcHJvZHVjZWQuCgoKVGhhbmtzIGZvciB0YWtpbmcgYSBsb29rLgoKClJlZ2Fy ZHMsCkhhbnhpYW5nIFh1Cnh1aHhAaHVzdC5lZHUuY24KCg== ------=_Part_283838_53608114.1792677686188 Content-Type: text/plain; name=pmu_race.c Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pmu_race.c" Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLyoKICogcG11X3JhY2UuYyAtIHZl cmlmaWNhdGlvbiBkcml2ZXIgZm9yIHBlcmYvUE1VIHJhY2UtY29uZGl0aW9uIGF1ZGl0IGNhc2Vz CiAqIChSNC9SNi9SOC9SOSkgYWdhaW5zdCB0aGUgS0FTQU4gdmVyaWZpY2F0aW9uIGtlcm5lbC4K ICoKICogRXhwb3NlcyBhbiAiYWN0aW9uIiBtb2R1bGUgcGFyYW1ldGVyIHRoYXQgZHJpdmVzIHBl cmZfcG11X3JlZ2lzdGVyIC8KICogcGVyZl9wbXVfdW5yZWdpc3RlciAvIHBlcmZfcG11X21pZ3Jh dGVfY29udGV4dCAvIGtlcm5lbC1jb3VudGVyIGNyZWF0aW9uCiAqIG9uIGEgZmFrZSBQTVUgbmFt ZWQgInJhY2VwbXUiOgogKgogKiAgIGVjaG8gcmVnaXN0ZXIgICAgICAgID4gYWN0aW9uICAgOiBv bmUgcGVyZl9wbXVfcmVnaXN0ZXIKICogICBlY2hvIHVucmVnaXN0ZXIgICAgICA+IGFjdGlvbiAg IDogb25lIHBlcmZfcG11X3VucmVnaXN0ZXIKICogICBlY2hvIHJlZ2xvb3AgTiAgICAgICA+IGFj dGlvbiAgIDogTiBzZXF1ZW50aWFsIHJlZ2lzdGVyK3VucmVnaXN0ZXIgcm91bmRzCiAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYXR1cmFsLXdpbmRvdyBoYW1tZXIsIFI0 LUEgLyBiYXNlbGluZSkKICogICBlY2hvIHJhY2UgTiAgICAgICAgICA+IGFjdGlvbiAgIDogMiBr dGhyZWFkczogQT11bnJlZ2lzdGVyIGxvb3AsCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEI9cmVnaXN0ZXIgbG9vcCBvbiB0aGUgc2FtZSBzdHJ1Y3QgcG11CiAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSODogYWN0aXZlYm94ZXMgVE9DVE9VIGNv cmUsIHVuY29yZS1zdHlsZQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 ZW1wbGF0ZSByZXNldCBiZWZvcmUgZWFjaCByZWdpc3RlcikKICogICBlY2hvIGNodXJuIE4gICAg ICAgICA+IGFjdGlvbiAgIDogMyBrdGhyZWFkczogcmVnL3VucmVnIGNodXJuICsgbWlncmF0ZSBs b29wCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3Blbi9jbG9zZSBj aHVybiAoUjkgcGVyZi1jb3JlIG92ZXJsYXApCiAqICAgZWNobyBvcGVuIE4gICAgICAgICAgPiBh Y3Rpb24gICA6IE4ga2VybmVsIGNvdW50ZXIgY3JlYXRlL3JlbGVhc2UgYXR0ZW1wdHMKICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaXNvbmVkLXN0YXRlIGNvbnN1bXB0 aW9uKQogKiAgIGVjaG8gc3RhdHVzICAgICAgICAgID4gYWN0aW9uICAgOiBsb2cgcmVnaXN0ZXJl ZCBzdGF0ZSBhbmQgc3RhdHMKICoKICogVGhlIGtlcm5lbCBzb3VyY2UgaXMgTk9UIG1vZGlmaWVk OiBldmVyeXRoaW5nIGlzIGRyaXZlbiB0aHJvdWdoIGV4cG9ydGVkCiAqIHBlcmYgY29yZSBBUElz IChwZXJmX3BtdV9yZWdpc3Rlci9wZXJmX3BtdV91bnJlZ2lzdGVyIGFyZSBFWFBPUlRfU1lNQk9M X0dQTCwKICogcGVyZl9wbXVfbWlncmF0ZV9jb250ZXh0IGFuZCBwZXJmX2V2ZW50X2NyZWF0ZV9r ZXJuZWxfY291bnRlciBsaWtld2lzZSkuCiAqLwojZGVmaW5lIHByX2ZtdChmbXQpICJQTVVSQUNF OiAiIGZtdAoKI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgojaW5jbHVkZSA8bGludXgvaW5pdC5o PgojaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+CiNp bmNsdWRlIDxsaW51eC9zY2hlZC5oPgojaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KI2luY2x1ZGUg PGxpbnV4L3dvcmtxdWV1ZS5oPgojaW5jbHVkZSA8bGludXgvcGVyZl9ldmVudC5oPgojaW5jbHVk ZSA8bGludXgvZXJyLmg+CiNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KCnN0YXRpYyBzdHJ1Y3Qg cG11IHRlc3RfcG11OwpzdGF0aWMgaW50IG15X3JlZ2lzdGVyZWQ7CnN0YXRpYyBpbnQgdGVzdF90 eXBlID0gLTE7CgovKiBzdGF0aXN0aWNzICovCnN0YXRpYyB1bnNpZ25lZCBsb25nIHN0YXRfcmVn X29rLCBzdGF0X3JlZ19mYWlsOwpzdGF0aWMgdW5zaWduZWQgbG9uZyBzdGF0X3VucmVnX29rLCBz dGF0X3VucmVnX2ZhaWw7CnN0YXRpYyB1bnNpZ25lZCBsb25nIHN0YXRfb3Blbl9vaywgc3RhdF9v cGVuX2ZhaWw7CnN0YXRpYyBpbnQgb3Blbl9lcnIwLCBvcGVuX2VycjE7CgpzdGF0aWMgaW50IHJh Y2VfZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpOwpzdGF0aWMgdm9pZCByYWNl X2V2ZW50X3JlYWQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KTsKc3RhdGljIGludCByYWNlX2V2 ZW50X2FkZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBmbGFncyk7CnN0YXRpYyB2b2lk IHJhY2VfZXZlbnRfZGVsKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKTsKc3Rh dGljIHZvaWQgcmFjZV9ldmVudF9zdGFydChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBm bGFncyk7CnN0YXRpYyB2b2lkIHJhY2VfZXZlbnRfc3RvcChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZl bnQsIGludCBmbGFncyk7CnN0YXRpYyBpbnQgb3Blbl90aHJlYWQodm9pZCAqZGF0YSk7CgovKgog KiBUZW1wbGF0ZSByZXNldCBtaXJyb3JzIHVuY29yZV9wbXVfcmVnaXN0ZXIoKSdzCiAqICAgICBw bXUtPnBtdSA9IChzdHJ1Y3QgcG11KXsgLi4uIH07CiAqIHdoaWNoIGNsZWFycyAtPmRldiAvIC0+ Y3B1X3BtdV9jb250ZXh0IC8gLT50eXBlIGV0Yy4gYmVmb3JlIHJlLXJlZ2lzdGVyaW5nLgogKi8K c3RhdGljIHZvaWQgcG11X3Jlc2V0KHZvaWQpCnsKCXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG11IHRt cGwgPSB7CgkJLnRhc2tfY3R4X25yCT0gcGVyZl9pbnZhbGlkX2NvbnRleHQsCgkJLm1vZHVsZQkJ PSBUSElTX01PRFVMRSwKCQkuY2FwYWJpbGl0aWVzCT0gUEVSRl9QTVVfQ0FQX05PX0lOVEVSUlVQ VCB8CgkJCQkgIFBFUkZfUE1VX0NBUF9OT19FWENMVURFLAoJCS5ldmVudF9pbml0CT0gcmFjZV9l dmVudF9pbml0LAoJCS5hZGQJCT0gcmFjZV9ldmVudF9hZGQsCgkJLmRlbAkJPSByYWNlX2V2ZW50 X2RlbCwKCQkuc3RhcnQJCT0gcmFjZV9ldmVudF9zdGFydCwKCQkuc3RvcAkJPSByYWNlX2V2ZW50 X3N0b3AsCgkJLnJlYWQJCT0gcmFjZV9ldmVudF9yZWFkLAoJfTsKCgl0ZXN0X3BtdSA9IHRtcGw7 Cn0KCnN0YXRpYyBpbnQgcmFjZV9ldmVudF9pbml0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkK ewoJaWYgKGV2ZW50LT5hdHRyLnR5cGUgIT0gdGVzdF90eXBlKQoJCXJldHVybiAtRU5PRU5UOwoJ cmV0dXJuIDA7Cn0Kc3RhdGljIHZvaWQgcmFjZV9ldmVudF9yZWFkKHN0cnVjdCBwZXJmX2V2ZW50 ICpldmVudCkgeyB9CnN0YXRpYyBpbnQgcmFjZV9ldmVudF9hZGQoc3RydWN0IHBlcmZfZXZlbnQg KmV2ZW50LCBpbnQgZmxhZ3MpIHsgcmV0dXJuIDA7IH0Kc3RhdGljIHZvaWQgcmFjZV9ldmVudF9k ZWwoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQgZmxhZ3MpIHsgfQpzdGF0aWMgdm9pZCBy YWNlX2V2ZW50X3N0YXJ0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKSB7IH0K c3RhdGljIHZvaWQgcmFjZV9ldmVudF9zdG9wKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50 IGZsYWdzKSB7IH0KCnN0YXRpYyBpbnQgZG9fcmVnaXN0ZXIodm9pZCkKewoJaW50IHJldDsKCglw bXVfcmVzZXQoKTsKCXJldCA9IHBlcmZfcG11X3JlZ2lzdGVyKCZ0ZXN0X3BtdSwgInJhY2VwbXUi LCAtMSk7CglpZiAocmV0KSB7CgkJc3RhdF9yZWdfZmFpbCsrOwoJCW15X3JlZ2lzdGVyZWQgPSAw OwoJfSBlbHNlIHsKCQlzdGF0X3JlZ19vaysrOwoJCW15X3JlZ2lzdGVyZWQgPSAxOwoJCXRlc3Rf dHlwZSA9IHRlc3RfcG11LnR5cGU7Cgl9CglyZXR1cm4gcmV0Owp9CgpzdGF0aWMgaW50IGRvX3Vu cmVnaXN0ZXIodm9pZCkKewoJaW50IHJldDsKCglpZiAoIW15X3JlZ2lzdGVyZWQpIHsKCQlzdGF0 X3VucmVnX2ZhaWwrKzsKCQlyZXR1cm4gLUVJTlZBTDsKCX0KCXJldCA9IHBlcmZfcG11X3VucmVn aXN0ZXIoJnRlc3RfcG11KTsKCWlmIChyZXQpIHsKCQlzdGF0X3VucmVnX2ZhaWwrKzsKCX0gZWxz ZSB7CgkJc3RhdF91bnJlZ19vaysrOwoJCW15X3JlZ2lzdGVyZWQgPSAwOwoJfQoJcmV0dXJuIHJl dDsKfQoKc3RhdGljIGludCBkb19vcGVuX29uZShpbnQgY3B1KQp7CglzdHJ1Y3QgcGVyZl9ldmVu dF9hdHRyIGF0dHIgPSB7fTsKCXN0cnVjdCBwZXJmX2V2ZW50ICpldjsKCglpZiAoIW15X3JlZ2lz dGVyZWQgfHwgdGVzdF90eXBlIDwgMCkKCQlyZXR1cm4gLUVOT0RFVjsKCglhdHRyLnNpemUgPSBz aXplb2YoYXR0cik7CglhdHRyLnR5cGUgPSB0ZXN0X3R5cGU7CglhdHRyLmNvbmZpZyA9IDA7Cglh dHRyLmRpc2FibGVkID0gMTsKCglldiA9IHBlcmZfZXZlbnRfY3JlYXRlX2tlcm5lbF9jb3VudGVy KCZhdHRyLCBjcHUgJSBucl9jcHVfaWRzLCBOVUxMLAoJCQkJCSAgICAgIE5VTEwsIE5VTEwpOwoJ aWYgKElTX0VSUihldikpIHsKCQlzdGF0X29wZW5fZmFpbCsrOwoJCWlmIChvcGVuX2VycjAgPT0g MCkgb3Blbl9lcnIwID0gKGludClQVFJfRVJSKGV2KTsKCQllbHNlIGlmIChvcGVuX2VycjEgPT0g MCAmJiAoaW50KVBUUl9FUlIoZXYpICE9IG9wZW5fZXJyMCkgb3Blbl9lcnIxID0gKGludClQVFJf RVJSKGV2KTsKCQlyZXR1cm4gUFRSX0VSUihldik7Cgl9CglzdGF0X29wZW5fb2srKzsKCXBlcmZf ZXZlbnRfcmVsZWFzZV9rZXJuZWwoZXYpOwoJcmV0dXJuIDA7Cn0KCi8qCiAqIFVuZ2F0ZWQgb3Bl biBhdHRlbXB0OiBsaWtlIGEgcmVhbCBpbi1mbGlnaHQgcGVyZl9ldmVudF9vcGVuKCkgdGhhdAog KiBhbHJlYWR5IHBhc3NlZCBwZXJmX2luaXRfZXZlbnQoKSB1bmRlciBTUkNVIHdoaWxlIHRoZSBQ TVUgaXMgYmVpbmcKICogdG9ybiBkb3duLiBObyBteV9yZWdpc3RlcmVkIGdhdGU6IGZhaWx1cmVz IGFyZSBleHBlY3RlZCBhbmQgaWdub3JlZDsKICogdGhlIGdvYWwgaXMgdG8gcmVhY2ggZmluZF9n ZXRfcG11X2NvbnRleHQoKSB3aGlsZS9hZnRlcgogKiBwbXUtPmNwdV9wbXVfY29udGV4dCBpcyBm cmVlZC4KICovCnN0YXRpYyB2b2lkIGRvX29wZW5fcmF3KGludCBjcHUpCnsKCXN0cnVjdCBwZXJm X2V2ZW50X2F0dHIgYXR0ciA9IHt9OwoJc3RydWN0IHBlcmZfZXZlbnQgKmV2OwoKCWlmICh0ZXN0 X3R5cGUgPCAwKQoJCXJldHVybjsKCglhdHRyLnNpemUgPSBzaXplb2YoYXR0cik7CglhdHRyLnR5 cGUgPSB0ZXN0X3R5cGU7CglhdHRyLmNvbmZpZyA9IDA7CglhdHRyLmRpc2FibGVkID0gMTsKCgll diA9IHBlcmZfZXZlbnRfY3JlYXRlX2tlcm5lbF9jb3VudGVyKCZhdHRyLCBjcHUgJSBucl9jcHVf aWRzLCBOVUxMLAoJCQkJCSAgICAgIE5VTEwsIE5VTEwpOwoJaWYgKCFJU19FUlIoZXYpKQoJCXBl cmZfZXZlbnRfcmVsZWFzZV9rZXJuZWwoZXYpOwp9CgpzdHJ1Y3QgbG9vcF9jdHggewoJbG9uZyBu OwoJc3RydWN0IGNvbXBsZXRpb24gZG9uZTsKfTsKCi8qIFI4OiB0aHJlYWQgQSAtIHVucmVnaXN0 ZXIgaGFtbWVyIChtaXJyb3JzIHVuY29yZV9wY2lfcG11X3VucmVnaXN0ZXIpICovCnN0YXRpYyBp bnQgcmFjZV91bnJlZ190aHJlYWQodm9pZCAqZGF0YSkKewoJc3RydWN0IGxvb3BfY3R4ICpjID0g ZGF0YTsKCWxvbmcgaTsKCglmb3IgKGkgPSAwOyBpIDwgYy0+biAmJiAha3RocmVhZF9zaG91bGRf c3RvcCgpOyBpKyspIHsKCQlpZiAobXlfcmVnaXN0ZXJlZCkKCQkJZG9fdW5yZWdpc3RlcigpOwoJ CXVzbGVlcF9yYW5nZSgwLCAzMDApOwoJfQoJY29tcGxldGUoJmMtPmRvbmUpOwoJcmV0dXJuIDA7 Cn0KCi8qIFI4OiB0aHJlYWQgQiAtIHJlZ2lzdGVyIGhhbW1lciB3aXRoIHRlbXBsYXRlIHJlc2V0 IChtaXJyb3JzIHVuY29yZV9wbXVfcmVnaXN0ZXIpICovCnN0YXRpYyBpbnQgcmFjZV9yZWdfdGhy ZWFkKHZvaWQgKmRhdGEpCnsKCXN0cnVjdCBsb29wX2N0eCAqYyA9IGRhdGE7Cglsb25nIGk7CgoJ Zm9yIChpID0gMDsgaSA8IGMtPm4gJiYgIWt0aHJlYWRfc2hvdWxkX3N0b3AoKTsgaSsrKSB7CgkJ ZG9fcmVnaXN0ZXIoKTsKCQl1c2xlZXBfcmFuZ2UoMCwgMzAwKTsKCX0KCWNvbXBsZXRlKCZjLT5k b25lKTsKCXJldHVybiAwOwp9CgovKiBSOSBjb3JlOiBtaWdyYXRlIGhhbW1lciAobWlycm9ycyB1 bmNvcmVfY2hhbmdlX3R5cGVfY3R4KSAqLwpzdGF0aWMgaW50IG1pZ3JhdGVfdGhyZWFkKHZvaWQg KmRhdGEpCnsKCXN0cnVjdCBsb29wX2N0eCAqYyA9IGRhdGE7Cglsb25nIGk7CgoJZm9yIChpID0g MDsgaSA8IGMtPm4gJiYgIWt0aHJlYWRfc2hvdWxkX3N0b3AoKTsgaSsrKSB7CgkJaWYgKG15X3Jl Z2lzdGVyZWQpCgkJCXBlcmZfcG11X21pZ3JhdGVfY29udGV4dCgmdGVzdF9wbXUsIDAsIDEgJSBu cl9jcHVfaWRzKTsKCQl1c2xlZXBfcmFuZ2UoMCwgMjAwKTsKCX0KCWNvbXBsZXRlKCZjLT5kb25l KTsKCXJldHVybiAwOwp9CgovKgogKiBSOS1zcGVjaWZpYzogbWlncmF0ZSBoYW1tZXIga3RocmVh ZCByYWNpbmcgYSBTRVFVRU5USUFMCiAqIHVucmVnaXN0ZXIvcmVnaXN0ZXIgbG9vcCAobm8gY29u Y3VycmVudCByZWdpc3Rlcnx8dW5yZWdpc3Rlciwgc28gdGhlCiAqIFI4IHRlYXIgYXQgcGVyZl9w bXVfdW5yZWdpc3RlcisweDFkMyBjYW5ub3QgZmlyZSBmaXJzdCkuIFRoZSBtaWdyYXRlCiAqIHRo cmVhZCBrZWVwcyBjYWxsaW5nIHBlcmZfcG11X21pZ3JhdGVfY29udGV4dCgpIHdoaWxlIHRoZSBs b29wIGZyZWVzCiAqIGFuZCByZS1jcmVhdGVzIHBtdS0+Y3B1X3BtdV9jb250ZXh0LgogKi8Kc3Rh dGljIGludCBtaWdfaGFtbWVyKHZvaWQgKnVudXNlZCkKewoJd2hpbGUgKCFrdGhyZWFkX3Nob3Vs ZF9zdG9wKCkpIHsKCQlwZXJmX3BtdV9taWdyYXRlX2NvbnRleHQoJnRlc3RfcG11LCAwLCAxICUg bnJfY3B1X2lkcyk7CgkJY29uZF9yZXNjaGVkKCk7Cgl9CglyZXR1cm4gMDsKfQoKc3RhdGljIHZv aWQgcnVuX21pZ3VucmVnKGxvbmcgbikKewoJc3RydWN0IHRhc2tfc3RydWN0ICptaWc7Cglsb25n IGk7CgoJaWYgKCFteV9yZWdpc3RlcmVkKQoJCWRvX3JlZ2lzdGVyKCk7CgoJbWlnID0ga3RocmVh ZF9ydW4obWlnX2hhbW1lciwgTlVMTCwgInBtdV9taWdfaGFtbWVyIik7CglpZiAoSVNfRVJSKG1p ZykpIHsKCQlwcl9lcnIoImt0aHJlYWRfcnVuIGZhaWxlZFxuIik7CgkJcmV0dXJuOwoJfQoKCWZv ciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKCQlpZiAobXlfcmVnaXN0ZXJlZCkKCQkJZG9fdW5yZWdp c3RlcigpOwoJCWRvX3JlZ2lzdGVyKCk7CgkJY29uZF9yZXNjaGVkKCk7Cgl9CgoJa3RocmVhZF9z dG9wKG1pZyk7CgkvKiBjb25zdW1lIGFueSBwb2lzb25lZCBlbmQgc3RhdGUgKi8KCWRvX29wZW5f b25lKDApOwoJZG9fb3Blbl9vbmUoMSAlIG5yX2NwdV9pZHMpOwoJcHJfaW5mbygiTUlHVU5SRUdf RE9ORSBuPSVsZCByZWdfb2s9JWx1IHJlZ19mYWlsPSVsdSB1bnJlZ19vaz0lbHUgdW5yZWdfZmFp bD0lbHUgb3Blbl9vaz0lbHUgb3Blbl9mYWlsPSVsdVxuIiwKCQluLCBzdGF0X3JlZ19vaywgc3Rh dF9yZWdfZmFpbCwgc3RhdF91bnJlZ19vaywgc3RhdF91bnJlZ19mYWlsLAoJCXN0YXRfb3Blbl9v aywgc3RhdF9vcGVuX2ZhaWwpOwp9CgovKgogKiBSOSB3aXRoIGxpdmUgZXZlbnRzOiBhIG1pZ3Jh dGUgaGFtbWVyIGFuZCBhbiBvcGVuL2Nsb3NlIGhhbW1lciBydW4KICogY29udGludW91c2x5IHdo aWxlIHRoZSBtYWluIHRocmVhZCBkb2VzIHNlcXVlbnRpYWwgdW5yZWdpc3Rlci9yZWdpc3Rlcgog KiByb3VuZHMuIE9wZW5lZCBldmVudHMgbGl2ZSBsb25nIGVub3VnaCBmb3IgcGVyZl9wbXVfbWln cmF0ZV9jb250ZXh0KCkKICogdG8gdGFrZSB0aGUgX19wZXJmX3BtdV9pbnN0YWxsX2V2ZW50KCkg cGF0aCwgd2hpY2ggZGVyZWZlcmVuY2VzCiAqIHBtdS0+Y3B1X3BtdV9jb250ZXh0IHRocm91Z2gg ZmluZF9nZXRfcG11X2NvbnRleHQoKS4KICovCnN0YXRpYyB2b2lkIHJ1bl9taWdvcGVuKGxvbmcg bikKewoJc3RydWN0IGxvb3BfY3R4IG8gPSB7IC5uID0gNCAqIG4gKyA2NCB9OwoJc3RydWN0IHRh c2tfc3RydWN0ICptaWcsICpvcDsKCWxvbmcgaTsKCglpbml0X2NvbXBsZXRpb24oJm8uZG9uZSk7 CglpZiAoIW15X3JlZ2lzdGVyZWQpCgkJZG9fcmVnaXN0ZXIoKTsKCgltaWcgPSBrdGhyZWFkX3J1 bihtaWdfaGFtbWVyLCBOVUxMLCAicG11X21pZ19oYW1tZXIiKTsKCW9wID0ga3RocmVhZF9ydW4o b3Blbl90aHJlYWQsICZvLCAicG11X29wZW5faGFtbWVyIik7CglpZiAoSVNfRVJSKG1pZykgfHwg SVNfRVJSKG9wKSkgewoJCXByX2Vycigia3RocmVhZF9ydW4gZmFpbGVkXG4iKTsKCQlyZXR1cm47 Cgl9CgoJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewoJCWlmIChteV9yZWdpc3RlcmVkKQoJCQlk b191bnJlZ2lzdGVyKCk7CgkJZG9fcmVnaXN0ZXIoKTsKCQkvKiBnaXZlIHRoZSBvcGVuL21pZ3Jh dGUgaGFtbWVycyBhIHN0YWJsZSByZWdpc3RlcmVkIHdpbmRvdyAqLwoJCXVzbGVlcF9yYW5nZSg0 MDAwLCA4MDAwKTsKCQljb25kX3Jlc2NoZWQoKTsKCX0KCglrdGhyZWFkX3N0b3AobWlnKTsKCWlm ICghSVNfRVJSKG9wKSkgewoJCS8qIGxldCB0aGUgb3BlbiBoYW1tZXIgZHJhaW4sIHRoZW4gc3Rv cCAqLwoJCXdhaXRfZm9yX2NvbXBsZXRpb24oJm8uZG9uZSk7Cgl9Cglwcl9pbmZvKCJNSUdPUEVO X0RPTkUgbj0lbGQgcmVnX29rPSVsdSByZWdfZmFpbD0lbHUgdW5yZWdfb2s9JWx1IHVucmVnX2Zh aWw9JWx1IG9wZW5fb2s9JWx1IG9wZW5fZmFpbD0lbHUgZXJyMD0lZCBlcnIxPSVkXG4iLAoJCW4s IHN0YXRfcmVnX29rLCBzdGF0X3JlZ19mYWlsLCBzdGF0X3VucmVnX29rLCBzdGF0X3VucmVnX2Zh aWwsCgkJc3RhdF9vcGVuX29rLCBzdGF0X29wZW5fZmFpbCwgb3Blbl9lcnIwLCBvcGVuX2VycjEp Owp9CgovKiBSOSBjb3JlOiBvcGVuL2Nsb3NlIGNodXJuIChleGVyY2lzZXMgZmluZF9nZXRfcG11 X2NvbnRleHQpICovCgpzdGF0aWMgaW50IG9wZW5fdGhyZWFkKHZvaWQgKmRhdGEpCnsKCXN0cnVj dCBsb29wX2N0eCAqYyA9IGRhdGE7Cglsb25nIGk7CgoJZm9yIChpID0gMDsgaSA8IGMtPm4gJiYg IWt0aHJlYWRfc2hvdWxkX3N0b3AoKTsgaSsrKSB7CgkJZG9fb3Blbl9yYXcoKGludCkoaSAlIG5y X2NwdV9pZHMpKTsKCQl1c2xlZXBfcmFuZ2UoMCwgMjAwKTsKCX0KCWNvbXBsZXRlKCZjLT5kb25l KTsKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZCBydW5fcmFjZShsb25nIG4pCnsKCXN0cnVjdCBs b29wX2N0eCBhID0geyAubiA9IG4gfSwgYiA9IHsgLm4gPSBuIH07CglzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRhLCAqdGI7CgoJaW5pdF9jb21wbGV0aW9uKCZhLmRvbmUpOwoJaW5pdF9jb21wbGV0aW9u KCZiLmRvbmUpOwoKCS8qIHN0YXJ0IGZyb20gcmVnaXN0ZXJlZCBzdGF0ZSBsaWtlIHRoZSByZWFs IHNjZW5hcmlvICovCglpZiAoIW15X3JlZ2lzdGVyZWQpCgkJZG9fcmVnaXN0ZXIoKTsKCgl0YSA9 IGt0aHJlYWRfcnVuKHJhY2VfdW5yZWdfdGhyZWFkLCAmYSwgInBtdV9yYWNlX3VucmVnIik7Cgl0 YiA9IGt0aHJlYWRfcnVuKHJhY2VfcmVnX3RocmVhZCwgJmIsICJwbXVfcmFjZV9yZWciKTsKCWlm ICghSVNfRVJSKHRhKSAmJiAhSVNfRVJSKHRiKSkgewoJCXdhaXRfZm9yX2NvbXBsZXRpb24oJmEu ZG9uZSk7CgkJd2FpdF9mb3JfY29tcGxldGlvbigmYi5kb25lKTsKCX0gZWxzZQoJCXByX2Vycigi a3RocmVhZF9ydW4gZmFpbGVkXG4iKTsKCWlmICghSVNfRVJSKHRhKSkKCQlrdGhyZWFkX3N0b3Ao dGEpOwoJaWYgKCFJU19FUlIodGIpKQoJCWt0aHJlYWRfc3RvcCh0Yik7CgoJcHJfaW5mbygiUkFD RV9ET05FIG49JWxkIHJlZ19vaz0lbHUgcmVnX2ZhaWw9JWx1IHVucmVnX29rPSVsdSB1bnJlZ19m YWlsPSVsdVxuIiwKCQluLCBzdGF0X3JlZ19vaywgc3RhdF9yZWdfZmFpbCwgc3RhdF91bnJlZ19v aywgc3RhdF91bnJlZ19mYWlsKTsKfQoKc3RhdGljIHZvaWQgcnVuX2NodXJuKGxvbmcgbikKewoJ c3RydWN0IGxvb3BfY3R4IGEgPSB7IC5uID0gbiB9LCBiID0geyAubiA9IG4gfSwgYyA9IHsgLm4g PSBuIH07CglzdHJ1Y3QgbG9vcF9jdHggZCA9IHsgLm4gPSBuIH07CglzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRhLCAqdGIsICp0YywgKnRkOwoKCWluaXRfY29tcGxldGlvbigmYS5kb25lKTsKCWluaXRf Y29tcGxldGlvbigmYi5kb25lKTsKCWluaXRfY29tcGxldGlvbigmYy5kb25lKTsKCWluaXRfY29t cGxldGlvbigmZC5kb25lKTsKCglpZiAoIW15X3JlZ2lzdGVyZWQpCgkJZG9fcmVnaXN0ZXIoKTsK Cgl0YSA9IGt0aHJlYWRfcnVuKHJhY2VfdW5yZWdfdGhyZWFkLCAmYSwgInBtdV9jaHVybl91bnJl ZyIpOwoJdGIgPSBrdGhyZWFkX3J1bihyYWNlX3JlZ190aHJlYWQsICZiLCAicG11X2NodXJuX3Jl ZyIpOwoJdGMgPSBrdGhyZWFkX3J1bihtaWdyYXRlX3RocmVhZCwgJmMsICJwbXVfY2h1cm5fbWln Iik7Cgl0ZCA9IGt0aHJlYWRfcnVuKG9wZW5fdGhyZWFkLCAmZCwgInBtdV9jaHVybl9vcGVuIik7 CglpZiAoIUlTX0VSUih0YSkgJiYgIUlTX0VSUih0YikgJiYgIUlTX0VSUih0YykgJiYgIUlTX0VS Uih0ZCkpIHsKCQl3YWl0X2Zvcl9jb21wbGV0aW9uKCZhLmRvbmUpOwoJCXdhaXRfZm9yX2NvbXBs ZXRpb24oJmIuZG9uZSk7CgkJd2FpdF9mb3JfY29tcGxldGlvbigmYy5kb25lKTsKCQkvKiBjb25z dW1lIGFueSBwb2lzb25lZCBlbmQgc3RhdGUgKi8KCQlkb19vcGVuX29uZSgwKTsKCQlkb19vcGVu X29uZSgxICUgbnJfY3B1X2lkcyk7Cgl9IGVsc2UKCQlwcl9lcnIoImt0aHJlYWRfcnVuIGZhaWxl ZFxuIik7CgoJcHJfaW5mbygiQ0hVUk5fRE9ORSBuPSVsZCByZWdfb2s9JWx1IHJlZ19mYWlsPSVs dSB1bnJlZ19vaz0lbHUgdW5yZWdfZmFpbD0lbHUgb3Blbl9vaz0lbHUgb3Blbl9mYWlsPSVsdVxu IiwKCQluLCBzdGF0X3JlZ19vaywgc3RhdF9yZWdfZmFpbCwgc3RhdF91bnJlZ19vaywgc3RhdF91 bnJlZ19mYWlsLAoJCXN0YXRfb3Blbl9vaywgc3RhdF9vcGVuX2ZhaWwpOwp9CgpzdGF0aWMgdm9p ZCBydW5fcmVnbG9vcChsb25nIG4pCnsKCWxvbmcgaTsKCglmb3IgKGkgPSAwOyBpIDwgbjsgaSsr KSB7CgkJZG9fcmVnaXN0ZXIoKTsKCQlkb191bnJlZ2lzdGVyKCk7CgkJdXNsZWVwX3JhbmdlKDAs IDUwKTsKCX0KCXByX2luZm8oIlJFR0xPT1BfRE9ORSBuPSVsZCByZWdfb2s9JWx1IHJlZ19mYWls PSVsdSB1bnJlZ19vaz0lbHUgdW5yZWdfZmFpbD0lbHVcbiIsCgkJbiwgc3RhdF9yZWdfb2ssIHN0 YXRfcmVnX2ZhaWwsIHN0YXRfdW5yZWdfb2ssIHN0YXRfdW5yZWdfZmFpbCk7Cn0KCnN0YXRpYyB2 b2lkIHJ1bl9vcGVuKGxvbmcgbikKewoJbG9uZyBpOwoKCWZvciAoaSA9IDA7IGkgPCBuOyBpKysp CgkJZG9fb3Blbl9yYXcoKGludCkoaSAlIG5yX2NwdV9pZHMpKTsKCXByX2luZm8oIk9QRU5fRE9O RSBvcGVuX29rPSVsdSBvcGVuX2ZhaWw9JWx1XG4iLAoJCXN0YXRfb3Blbl9vaywgc3RhdF9vcGVu X2ZhaWwpOwp9CgpzdGF0aWMgY2hhciBhY3Rpb25fY21kWzY0XTsKCnN0YXRpYyB2b2lkIGFjdGlv bl93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3KQp7CgljaGFyIGNtZFs2NF07Cglsb25nIG47 CgljaGFyICpwLCAqY3A7CgoJc3Ryc2NweShjbWQsIHN0cnN0cmlwKGFjdGlvbl9jbWQpLCBzaXpl b2YoY21kKSk7CgljcCA9IGNtZDsKCXAgPSBzdHJzZXAoJmNwLCAiICIpOwoJbiA9IDA7CglpZiAo Y3AgJiYgY3BbMF0pCgkJaWYgKGtzdHJ0b2woY3AsIDAsICZuKSkKCQkJbiA9IDA7CgoJaWYgKCFz dHJjbXAocCwgInJlZ2lzdGVyIikpCgkJcHJfaW5mbygicmVnaXN0ZXIgcmM9JWQgdHlwZT0lZFxu IiwgZG9fcmVnaXN0ZXIoKSwgdGVzdF90eXBlKTsKCWVsc2UgaWYgKCFzdHJjbXAocCwgInVucmVn aXN0ZXIiKSkKCQlwcl9pbmZvKCJ1bnJlZ2lzdGVyIHJjPSVkXG4iLCBkb191bnJlZ2lzdGVyKCkp OwoJZWxzZSBpZiAoIXN0cmNtcChwLCAicmVnbG9vcCIpKQoJCXJ1bl9yZWdsb29wKG4pOwoJZWxz ZSBpZiAoIXN0cmNtcChwLCAicmFjZSIpKQoJCXJ1bl9yYWNlKG4pOwoJZWxzZSBpZiAoIXN0cmNt cChwLCAiY2h1cm4iKSkKCQlydW5fY2h1cm4obik7CgllbHNlIGlmICghc3RyY21wKHAsICJtaWd1 bnJlZyIpKQoJCXJ1bl9taWd1bnJlZyhuKTsKCWVsc2UgaWYgKCFzdHJjbXAocCwgIm1pZ29wZW4i KSkKCQlydW5fbWlnb3BlbihuKTsKCWVsc2UgaWYgKCFzdHJjbXAocCwgIm9wZW4iKSkKCQlydW5f b3BlbihuKTsKCWVsc2UgaWYgKCFzdHJjbXAocCwgInN0YXR1cyIpKQoJCXByX2luZm8oInN0YXR1 cyByZWdpc3RlcmVkPSVkIHR5cGU9JWQgcmVnX29rPSVsdSByZWdfZmFpbD0lbHUgdW5yZWdfb2s9 JWx1IHVucmVnX2ZhaWw9JWx1IG9wZW5fb2s9JWx1IG9wZW5fZmFpbD0lbHVcbiIsCgkJCW15X3Jl Z2lzdGVyZWQsIHRlc3RfdHlwZSwgc3RhdF9yZWdfb2ssIHN0YXRfcmVnX2ZhaWwsCgkJCXN0YXRf dW5yZWdfb2ssIHN0YXRfdW5yZWdfZmFpbCwgc3RhdF9vcGVuX29rLAoJCQlzdGF0X29wZW5fZmFp bCk7CgllbHNlCgkJcHJfaW5mbygidW5rbm93biBhY3Rpb24gJyVzJ1xuIiwgcCk7CgoJcHJfaW5m bygiQUNUSU9OX0NPTVBMRVRFXG4iKTsKfQoKc3RhdGljIERFQ0xBUkVfV09SSyhhY3Rpb25fd29y aywgYWN0aW9uX3dvcmtmbik7CgpzdGF0aWMgY2hhciBhY3Rpb25fY21kWzY0XTsKCnN0YXRpYyBp bnQgYWN0aW9uX3NldChjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0g KmtwKQp7CglpbnQgcmV0ID0gcGFyYW1fc2V0X2NvcHlzdHJpbmcodmFsLCBrcCk7CgoJaWYgKHJl dCA9PSAwKQoJCXNjaGVkdWxlX3dvcmsoJmFjdGlvbl93b3JrKTsKCXJldHVybiByZXQ7Cn0KCnN0 YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBhY3Rpb25fb3BzID0gewoJLnNldCA9 IGFjdGlvbl9zZXQsCgkuZ2V0ID0gcGFyYW1fZ2V0X3N0cmluZywKfTsKc3RhdGljIHN0cnVjdCBr cGFyYW1fc3RyaW5nIGFjdGlvbl9wYXJhbSA9IHsKCS5tYXhsZW4gPSBzaXplb2YoYWN0aW9uX2Nt ZCksCgkuc3RyaW5nID0gYWN0aW9uX2NtZCwKfTsKbW9kdWxlX3BhcmFtX2NiKGFjdGlvbiwgJmFj dGlvbl9vcHMsICZhY3Rpb25fcGFyYW0sIDAyMDApOwpNT0RVTEVfUEFSTV9ERVNDKGFjdGlvbiwg InJlZ2lzdGVyfHVucmVnaXN0ZXJ8cmVnbG9vcCBOfHJhY2UgTnxjaHVybiBOfG9wZW4gTnxzdGF0 dXMiKTsKCnN0YXRpYyBpbnQgX19pbml0IHBtdV9yYWNlX2luaXQodm9pZCkKewoJcG11X3Jlc2V0 KCk7Cglwcl9pbmZvKCJsb2FkZWQsIG5yX2NwdV9pZHM9JWRcbiIsIG5yX2NwdV9pZHMpOwoJcmV0 dXJuIDA7Cn0KCnN0YXRpYyB2b2lkIF9fZXhpdCBwbXVfcmFjZV9leGl0KHZvaWQpCnsKCWNhbmNl bF93b3JrX3N5bmMoJmFjdGlvbl93b3JrKTsKCWlmIChteV9yZWdpc3RlcmVkKQoJCWRvX3VucmVn aXN0ZXIoKTsKCXByX2luZm8oInVubG9hZGVkIHJlZ19vaz0lbHUgcmVnX2ZhaWw9JWx1IHVucmVn X29rPSVsdSB1bnJlZ19mYWlsPSVsdVxuIiwKCQlzdGF0X3JlZ19vaywgc3RhdF9yZWdfZmFpbCwg c3RhdF91bnJlZ19vaywgc3RhdF91bnJlZ19mYWlsKTsKfQoKbW9kdWxlX2luaXQocG11X3JhY2Vf aW5pdCk7Cm1vZHVsZV9leGl0KHBtdV9yYWNlX2V4aXQpOwpNT0RVTEVfTElDRU5TRSgiR1BMIik7 Ck1PRFVMRV9ERVNDUklQVElPTigicGVyZi9QTVUgcmFjZS1jb25kaXRpb24gdmVyaWZpY2F0aW9u IGRyaXZlciAoUjQvUjYvUjgvUjkpIik7Cg== ------=_Part_283838_53608114.1792677686188--