From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=162.243.161.220 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792677156; b=WexVjA7626inrenhMaLfjUXJjwyfl5uwkNzf2wHt40r6nyLWirgdvUUQYZJj9B2XW8JT RTgFtXc6RGqMfdShwjjECbMwKvAu0khr4OM5nMIoRwGYZs+WHlBq2w9ecHOu8lEh5ZzJZ NR5HckVy5C3mdj5eWg6pYl1IvUG2j9spQlOtZd/VvfxsDc2pHsrULigXWtJNus/Cj97H9 yyBd36IlaRXc+d+LhbVitvi3NMNqTq5bezs6Givn3imwBSk5KESnYJYPeNUS3kRj9ir/p P6pGY8cDVbD3Dhn3kFOOQUakJd6d8EzXyV4aYncZEq447D65xqbt5Es7rvUmn9IbY2Q== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792677156; 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=A8oMljLkxTTZmxNM2LtZtjfHnw6S9YhA0DeOS/jYZZU=; b=Nmwq12WlWGOzg/i5MP+dJrcs6MpE3G3zJsMqRkImZmrpZKswwC3j0IHb8cj/h7XVMZJJ 2VztB33iV6fKLw7NjFX7G9ozIHCgmmQ7Euqva1ehSDdhx0AbiI7lbvXBbr+V0PW1jYrGA 0QdmlIYfKwuYf+AZsPECKnvhHt5YOxlknNQDi5fXiuakwcKxZ2wk53oXpJYbXQjw8LHva 5XwLm0GguFnD03BwV/VLyoq91KYhjPDRn/X4J6idwGo9NYPNQNeuB0ejZRLTaWcOlEdKW IRxUqbyPL67edi6Tid1ZPUDZ1treodgjKXkyL9SN9Ytdek5QTkKtrPi2q7NA1LZ6w2w== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none header.from=hust.edu.cn; spf=pass smtp.mailfrom=hust.edu.cn; arc=none smtp.remote-ip=162.243.161.220 Received: from zg8tmtyylji0my4xnjeumjiw.icoremail.net (zg8tmtyylji0my4xnjeumjiw.icoremail.net [162.243.161.220]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 33068606A31A for ; Thu, 22 Oct 2026 13:52:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 33068606A31A 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 21:52:32 +0800 (GMT+08:00) Date: Thu, 22 Oct 2026 21:52:32 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: =?UTF-8?B?5b6Q5pmX57+U?= To: broonie@kernel.org Cc: linux-kernel@vger.kernel.org, alsa-devel@alsa-project.org Subject: regmap: async completion returns before the callback's last map dereference and regmap_exit() never drains -> use-after-free of struct regmap 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?RnFAiziH6nJ5xwDR7hwMki1N8jM= Content-Type: multipart/mixed; boundary="----=_Part_283724_1237872205.1792677152320" 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: X-Coremail-Locale: zh_CN X-CM-TRANSID:IQEQrMBGb3ggFdpqS3RUAA--.61061W X-CM-SenderInfo: bgsqjkayqyjmo6kx23oohg3hdfq/1tbiAgoIB2rY5eypKAACs- X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWkKw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= ------=_Part_283724_1237872205.1792677152320 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 cmVnbWFwJ3MgYXN5bmNocm9ub3VzLXdyaXRlIGNvbXBsZXRpb24gcGF0aCBoYXMgdHdvIGxpZmV0 aW1lIGdhcHMgdGhhdApib3RoIGVuZCBpbiBhIHVzZS1hZnRlci1mcmVlIG9mIHN0cnVjdCByZWdt YXA6IHRoZSBjb21wbGV0aW9uIHByZWRpY2F0ZQpiZWNvbWVzIHRydWUgd2hpbGUgdGhlIGNhbGxi YWNrIHN0aWxsIGhhcyBvbmUgbWFwIGRlcmVmZXJlbmNlIGxlZnQgKHNvCnJlZ21hcF9hc3luY19j b21wbGV0ZSgpIGNhbiByZXR1cm4gYW5kIHRoZSBvd25lciBjYW4gcmVnbWFwX2V4aXQoKS0tCmtm cmVlKG1hcCkgLS0gYmVmb3JlIHRoZSBjYWxsYmFjaydzIHRyYWlsaW5nIHdha2VfdXAoKSksIGFu ZApyZWdtYXBfZXhpdCgpIGl0c2VsZiBuZXZlciB3YWl0cyBmb3IgaW4tZmxpZ2h0IGFzeW5jIHdv cmsgYXQgYWxsLgpCb3RoIGNvbmZpcm1lZCB3aXRoIEtBU0FOIG9uIG1haW5saW5lIDcuMyB3aXRo IGEgY3VzdG9tLWJ1cyByZXByb2R1Y2VyOgphIGxhdGUgYnVzIGNvbXBsZXRpb24gZXhlY3V0aW5n IHJlZ21hcF9hc3luY19jb21wbGV0ZV9jYigpIG9uIGEgZnJlZWQKbWFwIChzcGluX2xvY2svbGlz dF9tb3ZlL3dha2VfdXAgb24gZnJlZWQgbWVtb3J5KSwgYW5kIHRoZSB0YWlsLXdpbmRvdwpmb3Jt IHdoZXJlIGNvbXBsZXRlKCkgcmV0dXJucyB2aWEgdGhlIHdhaXRfZXZlbnQgZmFzdCBwYXRoIHdo aWxlIHRoZQpjYWxsYmFjayBpcyBzdGFsbGVkIGJldHdlZW4gc3Bpbl91bmxvY2sgYW5kIHdha2Vf dXAuCgpUaGUgYWZmZWN0ZWQgc2V0IGlzIGV2ZXJ5IHJlZ21hcCB1c2VkIHdpdGggdGhlIGFzeW5j IEFQSTogcmVnbWFwLXNwaQppcyB0aGUgb25seSBidXMgaW4gdGhlIHRyZWUgcHJvdmlkaW5nIC5h c3luY193cml0ZSAocmVnbWFwLXNwaS5jOjEwNCksCnNvIGNvbmNyZXRlbHkgU1BJIHJlZ21hcHMg LS0gaW5jbHVkaW5nIEFTb0MgY29tcG9uZW50cyAodGhlIERBUE0Kc2VxdWVuY2UgZW5kaW5nIGlu IHNuZF9zb2NfY29tcG9uZW50X2FzeW5jX2NvbXBsZXRlKCkgZm9sbG93cyB0aGUKZG9jdW1lbnRl ZCBjb250cmFjdCBhbmQgaXMgc3RpbGwgZXhwb3NlZCB0byB0aGUgdGFpbC13aW5kb3cgZm9ybSkg YW5kCnRoZSBpZWVlODAyMTU0IFNQSSBkcml2ZXJzIHdob3NlIGxhdGUgcmVnbWFwIHdyaXRlcyBh ZnRlciB1bmJpbmQgZmxvdwppbnRvIGV4YWN0bHkgdGhpcyBnYXAgKHRoZSBkcml2ZXItc2lkZSB1 bmJpbmQgcmFjZSBpcyB0aGUgc3ViamVjdCBvZgpteSByZXBvcnQgdG8gdGhlIHdwYW4gbGlzdDsg dGhpcyBtYWlsIGlzIHRoZSByZWdtYXAgaGFsZikuClRyaWdnZXJpbmcgbmVlZHMgdGhlIG1hcCdz IG93bmVyIHRvIHRlYXIgdGhlIG1hcCBkb3duIChkZXZtIHJlbGVhc2Ugb24KdW5iaW5kL3JtbW9k LCBvciBkaXJlY3QgcmVnbWFwX2V4aXQoKSkgd2hpbGUgYW4gYXN5bmMgd3JpdGUgaXMgaW4KZmxp Z2h0IC0tIGFuIGFkbWluaXN0cmF0b3IgYWN0aW9uIHBsdXMgb3JkaW5hcnkgZHJpdmVyIEkvTy4K ClRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbjoKCiogVGVzdCBlbnZpcm9ubWVudCAvIGFmZmVjdGVk IHZlcnNpb24KCiAgTGludXggdmVyc2lvbiA3LjMuMCAoZ2NjIDEzLjMuMCwgR05VIGxkIDIuNDIp ICMxIFNNUCBQUkVFTVBUX0RZTkFNSUMKICAtLSB2YW5pbGxhIG1haW5saW5lIDcuMyByZWxlYXNl IHRhcmJhbGwgKGtlcm5lbC5vcmcsIHVubW9kaWZpZWQpLAogIHJlYnVpbHQgd2l0aCBDT05GSUdf U1BJPXksIENPTkZJR19SRUdNQVBfU1BJPXksIEtBU0FOIGVuYWJsZWQsCiAgUUVNVS9LVk0geDg2 XzY0IGd1ZXN0LiAgVGhlIGFzeW5jLWNvbXBsZXRpb24gYW5kIGV4aXQgY29kZSBpcwogIGJ5dGUt aWRlbnRpY2FsIGluIDcuMS41IGFuZCA3LjMgKGZ1bmN0aW9uLWxldmVsIGRpZmY7IG9ubHkKICBk ZWJ1Z2ZzL3JlZ2NhY2hlIGluaXQvZXhpdCBvcmRlcmluZyBjaGFuZ2VkIGluIGJldHdlZW4pOyBs aW5lCiAgbnVtYmVycyBiZWxvdyBhcmUgZnJvbSA3LjMuCgoqIEZvcm0gMTogcHJlZGljYXRlLXRy dWUgcG9pbnQgIT0gbGFzdCBkZXJlZmVyZW5jZSBwb2ludCAodGFpbCB3aW5kb3cpCgogIHJlZ21h cF9hc3luY19jb21wbGV0ZV9jYigpIChkcml2ZXJzL2Jhc2UvcmVnbWFwL3JlZ21hcC5jOjMzNTUt MzM3Myk6CgogICAgICBzcGluX2xvY2soJm1hcC0+YXN5bmNfbG9jayk7ICAgICAgICAgICAgICAg ICAgIC8qIDozMzYxICovCiAgICAgIGxpc3RfbW92ZSgmYXN5bmMtPmxpc3QsICZtYXAtPmFzeW5j X2ZyZWUpOyAgICAgLyogOjMzNjIgKi8KICAgICAgd2FrZSA9IGxpc3RfZW1wdHkoJm1hcC0+YXN5 bmNfbGlzdCk7ICAgICAgICAgICAvKiA6MzM2MyAgcHJlZGljYXRlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVjb21lcyBUUlVFIGhlcmUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5kZXIgdGhlIGxvY2sgKi8KICAgICAgLi4uCiAgICAgIHNwaW5fdW5sb2NrKCZtYXAtPmFzeW5j X2xvY2spOyAgICAgICAgICAgICAgICAgLyogOjMzNjggKi8KICAgICAgaWYgKHdha2UpCiAgICAg ICAgICAgICAgd2FrZV91cCgmbWFwLT5hc3luY193YWl0cSk7ICAgICAgICAgICAgLyogOjMzNzEg IExBU1QgbWFwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVyZWZlcmVuY2UsIGFmdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVubG9jayAqLwoKICBUaGUgd2FpdGVyLCBy ZWdtYXBfYXN5bmNfY29tcGxldGUoKSAocmVnbWFwLmM6MzM5NSksIGNoZWNrcyB0aGUgc2FtZQog IGxpc3QgdW5kZXIgdGhlIHNhbWUgbG9jayBhbmQgcmV0dXJucyB0aHJvdWdoIHRoZSB3YWl0X2V2 ZW50IEZBU1QKICBwYXRoIChpbmNsdWRlL2xpbnV4L3dhaXQuaCkgd2hlbiB0aGUgbGlzdCBpcyBh bHJlYWR5IGVtcHR5LiAgU286CgogICAgICBjYWxsYmFjazogIDozMzYzIHByZWRpY2F0ZSB0cnVl ICAtPiAgOjMzNjggdW5sb2NrICAtPiBbIHByZWVtcHRlZCBdCiAgICAgIHdhaXRlcjogICAgZmFz dCBwYXRoIHNlZXMgZW1wdHkgbGlzdCAgLT4gcmVnbWFwX2FzeW5jX2NvbXBsZXRlKCkKICAgICAg ICAgICAgICAgICByZXR1cm5zCiAgICAgIG93bmVyOiAgICAgcmVnbWFwX2V4aXQoKSAtPiBrZnJl ZShtYXApCiAgICAgIGNhbGxiYWNrOiAgcmVzdW1lcyAtPiA6MzM3MSB3YWtlX3VwKCZtYXAtPmFz eW5jX3dhaXRxKSBvbiBGUkVFRCBtYXAKICAgICAgICAgICAgICAgICAtPiBfX3dha2VfdXBfY29t bW9uX2xvY2soKSB0YWtlcyB0aGUgZnJlZWQgd2FpdHF1ZXVlCiAgICAgICAgICAgICAgICAgc3Bp bmxvY2sgYW5kIHdhbGtzIHRoZSBmcmVlZCBsaXN0ICAtLSBVQUYKCiAgVGhlIG1lbW9yeSBvcmRl cmluZyBpdHNlbGYgaXMgZmluZSAocHJlZGljYXRlIGFuZCBvYnNlcnZhdGlvbiBzaGFyZQogIGFz eW5jX2xvY2spOyB0aGUgZGVmZWN0IGlzIGRlZmluaXRpb25hbDogdGhlIHByZWRpY2F0ZSBpcyBh bGxvd2VkIHRvCiAgYmVjb21lIHRydWUgYmVmb3JlIHRoZSBsYXN0IGRlcmVmZXJlbmNlLiAgQSB3 YWl0ZXIgdGhhdCBTTEVQVCBpcwogIHNhZmUgKHRoYXQgd2FpdGVyJ3Mgd2FrZXVwIGlzIHRoaXMg dmVyeSB3YWtlX3VwKSwgd2hpY2ggaXMgd2hhdAogIG1ha2VzIHRoZSB3aW5kb3cgbmFycm93IC0t IGJ1dCB0aGUgZG9jdW1lbnRlZCBjb250cmFjdAogICgiVG8gbWFrZSBzdXJlIHRoYXQgYWxsIHNj aGVkdWxlZCB1cGRhdGVzIGhhdmUgYmVlbiBjb21wbGV0ZWQKICBzbmRfc29jX2NvbXBvbmVudF9h c3luY19jb21wbGV0ZSgpIG11c3QgYmUgY2FsbGVkIiwKICBzb3VuZC9zb2Mvc29jLWNvbXBvbmVu dC5jOjgyMykgaXMgZXhhY3RseSB0aGUgZmFzdC1wYXRoIHVzYWdlLCBzbyBhCiAgY29udHJhY3Qt Zm9sbG93aW5nIHVzZXIgaXMgdGhlIGV4cG9zZWQgb25lLgoKKiBGb3JtIDI6IHJlZ21hcF9leGl0 KCkgcGVyZm9ybXMgbm8gZHJhaW4gKHdpZGUgd2luZG93KQoKICByZWdtYXBfZXhpdCgpIChyZWdt YXAuYzoxNDYxKSByZWN5Y2xlcyBub2RlcyBhbHJlYWR5IHBhcmtlZCBvbgogIG1hcC0+YXN5bmNf ZnJlZSBhbmQgdGhlbiBrZnJlZXMgdGhlIG1hcDsgaXQgbmVpdGhlciBjYWxscwogIHJlZ21hcF9h c3luY19jb21wbGV0ZSgpIG5vciB3YWl0cyBmb3IgcnVubmluZyBjYWxsYmFja3MsIGFuZCBub2Rl cwogIHN0aWxsIG9uIG1hcC0+YXN5bmNfbGlzdCAoaW4gZmxpZ2h0KSBhcmUgbmVpdGhlciBjYW5j ZWxsZWQgbm9yCiAgZnJlZWQuICBkZXZtX3JlZ21hcF9yZWxlYXNlKCkgKHJlZ21hcC5jOjExODUp IHNpbXBseSBmb3J3YXJkcyB0bwogIHJlZ21hcF9leGl0KCksIHNvIGRldm0tY3JlYXRlZCBtYXBz IC0tIHRoZSBjb21tb24gY2FzZSAtLSBoYXZlCiAgbm9ib2R5IGRyYWluaW5nIG9uIHRoZSB1bmJp bmQgcGF0aCBlaXRoZXIuICBBIGJ1cyBjb21wbGV0aW9uCiAgYXJyaXZpbmcgYWZ0ZXIgZXhpdCBy dW5zIHRoZSB3aG9sZSBjYWxsYmFjayBvbiB0aGUgZnJlZWQgbWFwOgoKICAgICAgYXN5bmMtPm1h cCByZWFkICg6MzM1NikgLyBzcGluX2xvY2soJm1hcC0+YXN5bmNfbG9jaykgKDozMzYxKQogICAg ICAvIGxpc3RfbW92ZSB3cml0aW5nIHRoZSBmcmVlZCBtYXAncyBsaXN0IGhlYWRzICg6MzM2MikK ICAgICAgLyB3YWtlX3VwICg6MzM3MSkKCiAgcGx1cyB0aGUgaW4tZmxpZ2h0IG5vZGUgYW5kIHdv cmtfYnVmIGxlYWsuICBUaGUgd2luZG93IGlzIHRoZSBidXMKICBxdWV1ZSdzIHJlc2lkZW5jeSB0 aW1lIChtaWxsaXNlY29uZHMgZm9yIFNQSSkgLS0gdGhpcyBpcyB0aGUgZm9ybQogIHRoZSB1bmJp bmQtdGltZSBkcml2ZXIgcmFjZXMgZmFsbCBpbnRvLgoKICBGb3IgY29tcGxldGVuZXNzLCB0aGUg c3VibWlzc2lvbiBzaWRlIGhhbmRzIG91dCBiYXJlIHBvaW50ZXJzIHRvbzoKICBhc3luYy0+bWFw ID0gbWFwIChyZWdtYXAuYzoxNzYwKSB3aXRoIG5vIHJlZmVyZW5jZSwgYW5kIHRoZSBTUEkKICBj b21wbGV0aW9uIGNoYWluIChyZWdtYXAtc3BpLmM6MjEtMjYsIDc0LTc3KSBjYWxscyBzdHJhaWdo dCBpbnRvCiAgdGhlIGNhbGxiYWNrIHdpdGggbm8gbWFwIGxpZmV0aW1lIGd1YXJhbnRlZSBhbnl3 aGVyZSBpbiB0aGUgY2hhaW4uCgoqIEV2aWRlbmNlICg3LjMsIEtBU0FOKQoKICBSZXByb2R1Y2Vy IGF0dGFjaGVkIChyZWdtYXBfcmFjZS5jKTogcmVnaXN0ZXJzIGEgcmVnbWFwIG9uIGEgY3VzdG9t CiAgYnVzIHdob3NlIGNvbXBsZXRpb24gZmlyZXMgZnJvbSBhIGRlbGF5ZWQgd29yaywgdGhlbiBk cml2ZXMgYm90aAogIGZvcm1zLiAgVXNhZ2UgKGJ1aWxkIG5vdGU6IGFkanVzdCB0aGUgaW50ZXJu YWwuaCBpbmNsdWRlIGF0IHRoZSB0b3AKICBvZiB0aGUgZmlsZSB0byBwb2ludCBpbnRvIHRoZSBr ZXJuZWwgc291cmNlIHRyZWUgeW91IGJ1aWxkIGFnYWluc3Q7CiAgaXQgaXMga2VwdCBhcyBhIHJl bGF0aXZlIHBhdGggZnJvbSB0aGUgbGF5b3V0IEkgdGVzdGVkIGluKToKCiAgICBpbnNtb2QgcmVn bWFwX3JhY2Uua28gZGVsYXlfbXM9NDAwCiAgICBlY2hvIGh2MWIgPiAvc3lzL21vZHVsZS9yZWdt YXBfcmFjZS9wYXJhbWV0ZXJzL2FjdGlvbiAgICMgZm9ybSAyOgogICAgICAgICAgICAgICAgICAg ICAjIGFzeW5jIHdyaXRlIGluIGZsaWdodCArIGltbWVkaWF0ZSByZWdtYXBfZXhpdCgpCiAgICBy bW1vZCByZWdtYXBfcmFjZSAgICMgb3B0aW9uYWwKCiAgICBpbnNtb2QgcmVnbWFwX3JhY2Uua28g ZGVsYXlfbXM9MTAwIHN0YWxsX3VzPTgwMDAwMAogICAgZWNobyBodjFhID4gL3N5cy9tb2R1bGUv cmVnbWFwX3JhY2UvcGFyYW1ldGVycy9hY3Rpb24gICAjIGZvcm0gMToKICAgICAgICAgICAgICAg ICAgICAgIyBrcHJvYmUgc3RhbGxzIHRoZSBjYWxsYmFjayBrdGhyZWFkIGF0CiAgICAgICAgICAg ICAgICAgICAgICMgX193YWtlX3VwKCkgZW50cnk7IGNvbXBsZXRlKCkrZXhpdCgpIHJ1biBpbnNp ZGUKICAgICAgICAgICAgICAgICAgICAgIyB0aGUgc3RhbGw7IHRoZW4gdGhlIHN0YWxsIHJlbGVh c2VzCgogIC0gaHYxYjogMTUgc2xhYi11c2UtYWZ0ZXItZnJlZSByZXBvcnRzIC0tIHJlZ21hcF9h c3luY19jb21wbGV0ZV9jYgogICAgeDYgKHRoZSBjYWxsYmFjayBpdHNlbGYgb24gdGhlIGZyZWVk IG1hcCkgcGx1cyB0aGUgcHJlZGljdGVkIHRhaWwKICAgIGFjY2VzcyBzZXQ6IF9yYXdfc3Bpbl9s b2NrL19yYXdfc3Bpbl91bmxvY2sgZmFtaWx5LAogICAgX19saXN0X2FkZC9fX2xpc3RfZGVsX2Vu dHJ5IHZhbGlkYXRpb24gKHRoZSBsaXN0X21vdmUgd3JpdGVzKSwKICAgIF9fd2FrZV91cF9jb21t b24uCiAgLSBodjFhOiB0aGUgdGFpbC13aW5kb3cgd2l0bmVzcyAtLSBjYWxsYmFjayBzdGFsbGVk IGF0IF9fd2FrZV91cAogICAgZW50cnksIHJlZ21hcF9hc3luY19jb21wbGV0ZSgpIHJldHVybnMg ZHVyaW5nIHRoZSBzdGFsbCAob24gdGhlCiAgICBpZGVudGljYWxseS1jb2RlZCA3LjEuNSB0cmVl IEkgbWVhc3VyZWQgdGhlIGZhc3QtcGF0aCByZXR1cm4gYXQKICAgIH4xdXMgd2hpbGUgdGhlIGNh bGxiYWNrIHNhdCBpbiB0aGUgd2luZG93KSwgcmVnbWFwX2V4aXQoKSBmcmVlcwogICAgdGhlIG1h cCwgdGhlIHN0YWxsIHJlbGVhc2VzLCBhbmQgd2FrZV91cCB3YWxrcyBmcmVlZCBtZW1vcnk6CiAg ICBfX3dha2VfdXBfY29tbW9uICsgX3Jhd19zcGluX2xvY2tfaXJxc2F2ZS91bmxvY2tfaXJxcmVz dG9yZQogICAgdXNlLWFmdGVyLWZyZWUgcmVwb3J0cy4KCgpUaGFua3MgZm9yIHRha2luZyBhIGxv b2suCgpSZWdhcmRzLApIYW54aWFuZyBYdQp4dWh4QGh1c3QuZWR1LmNuCgoK ------=_Part_283724_1237872205.1792677152320 Content-Type: text/plain; name=regmap_race.c Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="regmap_race.c" Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLyoKICogcmVnbWFwX3JhY2UuYyAt IGR5bmFtaWMgdmVyaWZpY2F0aW9uIGZvciBIVi0xIG9mIHRoZSBkcml2ZXJzL2Jhc2UKICogcmFj ZS1jb25kaXRpb24gYXVkaXQgKHJlZ21hcCBhc3luYyBjb21wbGV0aW9uIHZzIG1hcCBsaWZldGlt ZSkuCiAqCiAqIERyaXZlcyB0aGUgcmVnbWFwIGNvcmUgdGhyb3VnaCBpdHMgZXhwb3J0ZWQgQVBJ IG9ubHkKICogKF9fcmVnbWFwX2luaXQvcmVnbWFwX2V4aXQvcmVnbWFwX3dyaXRlX2FzeW5jL3Jl Z21hcF9hc3luY19jb21wbGV0ZS8KICogcmVnbWFwX2FzeW5jX2NvbXBsZXRlX2NiIGFyZSBhbGwg RVhQT1JUX1NZTUJPTF9HUEwpLiAgVGhlIGtlcm5lbCBzb3VyY2UKICogaXMgTk9UIG1vZGlmaWVk LgogKgogKiBUaGUgYnVzIGlzIGEgZmFrZSByZWdtYXBfYnVzIHdob3NlIGFzeW5jX3dyaXRlIGRl ZmVycyB0aGUgY29tcGxldGlvbgogKiBjYWxsYmFjayAocmVnbWFwX2FzeW5jX2NvbXBsZXRlX2Ni KSBvbnRvIGEgc3lzdGVtIHdvcmsgd2l0aCBhCiAqIGNvbmZpZ3VyYWJsZSBkZWxheSwgZXhhY3Rs eSBtaXJyb3Jpbmcgd2hhdCBhIHJlYWwgU1BJIGNvbnRyb2xsZXIgZG9lczoKICogdGhlIGNhbGxi YWNrIHJ1bnMgaW4gYnVzL2NvbnRyb2xsZXIgY29udGV4dCB3aXRoIG5vIHJlZmVyZW5jZSBvbiBt YXAuCiAqCiAqICAgZWNobyBodjFiIDxtcz4gPiBhY3Rpb24gOiBIVi0xIGZvcm0gMiAod2lkZSB3 aW5kb3csIGRldm0tc3R5bGUpOgogKiAgICAgICAgICAgICAgY3JlYXRlIG1hcCAtPiByZWdtYXBf d3JpdGVfYXN5bmMgLT4gcmVnbWFwX2V4aXQgSU1NRURJQVRFTFkKICogICAgICAgICAgICAgIChu byBkcmFpbiwgaWRlbnRpY2FsIHRvIGRldm1fcmVnbWFwX3JlbGVhc2UpIC0+IHdhaXQgZm9yIHRo ZQogKiAgICAgICAgICAgICAgbGF0ZSBidXMgY29tcGxldGlvbiB0byBjYWxsIHJlZ21hcF9hc3lu Y19jb21wbGV0ZV9jYiBvbiB0aGUKICogICAgICAgICAgICAgIGZyZWVkIG1hcC4gIEV4cGVjdGVk OiBLQVNBTiBVQUYgYXQgc3Bpbl9sb2NrKCZtYXAtPmFzeW5jX2xvY2spLgogKgogKiAgIGVjaG8g aHYxYSAgICAgICAgPiBhY3Rpb24gOiBIVi0xIGZvcm0gMSAobmFycm93IHRhaWwgd2luZG93LAog KiAgICAgICAgICAgICAgY29udHJvbGxlZCB3aW5kb3cgdmlhIGtwcm9iZSk6IGEga3Byb2JlIGlz IHBsYWNlZCBvbiB0aGUKICogICAgICAgICAgICAgICJqbXAgX193YWtlX3VwIiB0YWlsIGluc2lk ZSByZWdtYXBfYXN5bmNfY29tcGxldGVfY2IKICogICAgICAgICAgICAgIChvZmZzZXQgd2FrZV9v ZmYsIGNvbXB1dGVkIGZyb20gdGhlIHJ1bm5pbmcgdm1saW51eCkgYW5kCiAqICAgICAgICAgICAg ICBzdGFsbHMgdGhlIGNhbGxiYWNrIEFGVEVSIGl0IHJlbGVhc2VkIG1hcC0+YXN5bmNfbG9jayBh bmQKICogICAgICAgICAgICAgIG1vdmVkIHRoZSBub2RlIG9mZiBhc3luY19saXN0LCBidXQgQkVG T1JFIHdha2VfdXAoKS4gIFRoZQogKiAgICAgICAgICAgICAgdGVzdCB0aHJlYWQgdGhlbiBydW5z IHJlZ21hcF9hc3luY19jb21wbGV0ZSgpIChyZXR1cm5zIHZpYQogKiAgICAgICAgICAgICAgdGhl IHdhaXRfZXZlbnQgZmFzdCBwYXRoIHdoaWxlIHRoZSBjYWxsYmFjayBpcyBzdGFsbGVkKSwKICog ICAgICAgICAgICAgIHJlZ21hcF9leGl0KCkgKGZyZWVzIG1hcCArIHRoZSBhc3luYyBub2RlKSwg YW5kIGZpbmFsbHkgdGhlCiAqICAgICAgICAgICAgICBzdGFsbCByZWxlYXNlcyAtPiB3YWtlX3Vw KCkgb24gZnJlZWQgbWFwLgogKiAgICAgICAgICAgICAgRXhwZWN0ZWQ6IEtBU0FOIFVBRiBpbnNp ZGUgX193YWtlX3VwIHBhdGggb24gdGhlIGZyZWVkIG1hcC4KICoKICogICBlY2hvIHN0YXR1cyAg ICAgID4gYWN0aW9uIDogc3RhdHMuCiAqLwojZGVmaW5lIHByX2ZtdChmbXQpICJSRUdNQVBSQUNF OiAiIGZtdAoKI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgojaW5jbHVkZSA8bGludXgvaW5pdC5o PgojaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiNpbmNsdWRlIDxsaW51eC9rcHJvYmVzLmg+CiNp bmNsdWRlIDxsaW51eC9kZWxheS5oPgojaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CiNpbmNs dWRlIDxsaW51eC9zbGFiLmg+CiNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KI2luY2x1ZGUgIi4u Ly4uL2xpbnV4L2RyaXZlcnMvYmFzZS9yZWdtYXAvaW50ZXJuYWwuaCIKI2luY2x1ZGUgPGxpbnV4 L2t0aW1lLmg+CiNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+CiNpbmNsdWRlIDxsaW51eC9zY2hl ZC5oPgojaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CiNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4K CnN0YXRpYyBpbnQgZGVsYXlfbXMgPSAzMDA7Cm1vZHVsZV9wYXJhbShkZWxheV9tcywgaW50LCAw NjAwKTsKTU9EVUxFX1BBUk1fREVTQyhkZWxheV9tcywgImZha2UtYnVzIGFzeW5jIGNvbXBsZXRp b24gZGVsYXkgaW4gbXMiKTsKCnN0YXRpYyBpbnQgc3RhbGxfdXMgPSA1MDAwMDA7Cm1vZHVsZV9w YXJhbShzdGFsbF91cywgaW50LCAwNjAwKTsKTU9EVUxFX1BBUk1fREVTQyhzdGFsbF91cywgImh2 MWEgY29udHJvbGxlZC13aW5kb3cgc3RhbGwgaW4gdXMiKTsKCnN0YXRpYyB1bG9uZyB3YWtlX29m ZiA9IDB4MTk1Owptb2R1bGVfcGFyYW0od2FrZV9vZmYsIHVsb25nLCAwNjAwKTsKTU9EVUxFX1BB Uk1fREVTQyh3YWtlX29mZiwgIm9mZnNldCBvZiB0aGUgJ2ptcCBfX3dha2VfdXAnIHRhaWwgaW5z aWRlIHJlZ21hcF9hc3luY19jb21wbGV0ZV9jYiAocGVyLWJ1aWxkLCBmcm9tIG9iamR1bXApIik7 CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gKi8KLyogZmFrZSByZWdtYXAgYnVzOiBhc3luYyBjb21wbGV0aW9uIGlz IGRlZmVycmVkIG9udG8gc3lzdGVtIHdvcmsgICAgICAqLwoKc3RydWN0IGZiX2FzeW5jIHsKCXN0 cnVjdCByZWdtYXBfYXN5bmMgY29yZTsKCXN0cnVjdCBkZWxheWVkX3dvcmsgZHdvcms7Cn07Cgpz dGF0aWMgYXRvbWljX2xvbmdfdCBzdGF0X2FzeW5jX3N1Ym1pdCA9IEFUT01JQ19MT05HX0lOSVQo MCk7CnN0YXRpYyBhdG9taWNfbG9uZ190IHN0YXRfYXN5bmNfZmlyZSA9IEFUT01JQ19MT05HX0lO SVQoMCk7CgpzdGF0aWMgdm9pZCBmYl9jb21wbGV0ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCnsK CXN0cnVjdCBmYl9hc3luYyAqZmEgPSBjb250YWluZXJfb2Yodywgc3RydWN0IGZiX2FzeW5jLCBk d29yay53b3JrKTsKCglhdG9taWNfbG9uZ19pbmMoJnN0YXRfYXN5bmNfZmlyZSk7Cglwcl9pbmZv KCJGQlVTOiBjb21wbGV0aW9uIEZJUklORyBhc3luYz0lcHggbWFwPSVweCAoYnVzIGNvbnRleHQp XG4iLAoJCSZmYS0+Y29yZSwgZmEtPmNvcmUubWFwKTsKCglyZWdtYXBfYXN5bmNfY29tcGxldGVf Y2IoJmZhLT5jb3JlLCAwKTsKCglwcl9pbmZvKCJGQlVTOiBjb21wbGV0aW9uIFJFVFVSTkVEIGFz eW5jPSVweFxuIiwgJmZhLT5jb3JlKTsKfQoKc3RhdGljIHN0cnVjdCByZWdtYXBfYXN5bmMgKmZi X2FzeW5jX2FsbG9jKHZvaWQpCnsKCXN0cnVjdCBmYl9hc3luYyAqZmE7CgoJZmEgPSBremFsbG9j KHNpemVvZigqZmEpLCBHRlBfS0VSTkVMKTsKCWlmICghZmEpCgkJcmV0dXJuIE5VTEw7CglJTklU X0RFTEFZRURfV09SSygmZmEtPmR3b3JrLCBmYl9jb21wbGV0ZSk7CglyZXR1cm4gJmZhLT5jb3Jl Owp9CgpzdGF0aWMgaW50IHVzZV9rdGhyZWFkX2NvbXBsZXRlOwkvKiBodjFhOiBjb21wbGV0ZSBm cm9tIGEgZGVkaWNhdGVkCgkJCQkJICoga2VybmVsIHRocmVhZCAoYnVzICJjb250cm9sbGVyIgoJ CQkJCSAqIGNvbnRleHQgd2UgZnVsbHkgY29udHJvbCkgKi8Kc3RhdGljIHN0cnVjdCB0YXNrX3N0 cnVjdCAqZmJfdGhyZWFkOwpzdGF0aWMgc3RydWN0IGZiX2FzeW5jICpwZW5kaW5nX2ZhOwpzdGF0 aWMgREVDTEFSRV9DT01QTEVUSU9OKGZiX2dvKTsKc3RhdGljIERFQ0xBUkVfQ09NUExFVElPTihm Yl90aHJlYWRfdXApOwoKc3RhdGljIGludCBmYl90aHJlYWRfZm4odm9pZCAqdW51c2VkKQp7Cglj b21wbGV0ZSgmZmJfdGhyZWFkX3VwKTsKCXdoaWxlICgha3RocmVhZF9zaG91bGRfc3RvcCgpKSB7 CgkJd2FpdF9mb3JfY29tcGxldGlvbigmZmJfZ28pOwoJCWlmIChrdGhyZWFkX3Nob3VsZF9zdG9w KCkpCgkJCWJyZWFrOwoJCWF0b21pY19sb25nX2luYygmc3RhdF9hc3luY19maXJlKTsKCQlwcl9p bmZvKCJGQlVTOiBjb21wbGV0aW9uIEZJUklORyBhc3luYz0lcHggbWFwPSVweCAoYnVzIGt0aHJl YWQgY29udGV4dClcbiIsCgkJCSZwZW5kaW5nX2ZhLT5jb3JlLCBwZW5kaW5nX2ZhLT5jb3JlLm1h cCk7CgkJcmVnbWFwX2FzeW5jX2NvbXBsZXRlX2NiKCZwZW5kaW5nX2ZhLT5jb3JlLCAwKTsKCQlw cl9pbmZvKCJGQlVTOiBjb21wbGV0aW9uIFJFVFVSTkVEIGFzeW5jPSVweFxuIiwgJnBlbmRpbmdf ZmEtPmNvcmUpOwoJfQoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQgZmJfYXN5bmNfd3JpdGUodm9p ZCAqY29udGV4dCwgY29uc3Qgdm9pZCAqcmVnLCBzaXplX3QgcmVnX2xlbiwKCQkJICBjb25zdCB2 b2lkICp2YWwsIHNpemVfdCB2YWxfbGVuLAoJCQkgIHN0cnVjdCByZWdtYXBfYXN5bmMgKmEpCnsK CXN0cnVjdCBmYl9hc3luYyAqZmEgPSBjb250YWluZXJfb2YoYSwgc3RydWN0IGZiX2FzeW5jLCBj b3JlKTsKCglhdG9taWNfbG9uZ19pbmMoJnN0YXRfYXN5bmNfc3VibWl0KTsKCWlmICh1c2Vfa3Ro cmVhZF9jb21wbGV0ZSkgewoJCXByX2luZm8oIkZCVVM6IGFzeW5jX3dyaXRlIHF1ZXVlZCBhc3lu Yz0lcHggKGt0aHJlYWQgY29tcGxldGlvbilcbiIsCgkJCSZmYS0+Y29yZSk7CgkJcGVuZGluZ19m YSA9IGZhOwoJCWNvbXBsZXRlKCZmYl9nbyk7CgkJcmV0dXJuIDA7Cgl9Cglwcl9pbmZvKCJGQlVT OiBhc3luY193cml0ZSBxdWV1ZWQgYXN5bmM9JXB4IGRlbGF5PSVkbXNcbiIsCgkJJmZhLT5jb3Jl LCBkZWxheV9tcyk7CglzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmZhLT5kd29yaywgbXNlY3NfdG9f amlmZmllcyhkZWxheV9tcykpOwoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB1OCBmYl9zY3JhdGNoWzI1 Nl07CgpzdGF0aWMgaW50IGZiX3dyaXRlKHZvaWQgKmNvbnRleHQsIGNvbnN0IHZvaWQgKmRhdGEs IHNpemVfdCBjb3VudCkKewoJbWVtY3B5KGZiX3NjcmF0Y2gsIGRhdGEsIG1pbihjb3VudCwgc2l6 ZW9mKGZiX3NjcmF0Y2gpKSk7CglyZXR1cm4gMDsKfQoKc3RhdGljIGludCBmYl9yZWFkKHZvaWQg KmNvbnRleHQsIGNvbnN0IHZvaWQgKnJlZywgc2l6ZV90IHJlZ19zaXplLAoJCSAgIHZvaWQgKnZh bCwgc2l6ZV90IHZhbF9zaXplKQp7CgltZW1zZXQodmFsLCAweDVhLCB2YWxfc2l6ZSk7CglyZXR1 cm4gMDsKfQoKc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYnVzIGZiX2J1cyA9IHsKCS53cml0 ZSA9IGZiX3dyaXRlLAoJLnJlYWQgPSBmYl9yZWFkLAoJLmFzeW5jX3dyaXRlID0gZmJfYXN5bmNf d3JpdGUsCgkuYXN5bmNfYWxsb2MgPSBmYl9hc3luY19hbGxvYywKfTsKCnN0YXRpYyBjb25zdCBz dHJ1Y3QgcmVnbWFwX2NvbmZpZyBmYl9jZmcgPSB7CgkucmVnX2JpdHMgPSA4LAoJLnZhbF9iaXRz ID0gOCwKCS5jYWNoZV90eXBlID0gUkVHQ0FDSEVfTk9ORSwKfTsKCnN0YXRpYyBzdHJ1Y3QgbG9j a19jbGFzc19rZXkgZmJfbG9ja19rZXk7CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogSFYtMSBmb3JtIDI6 IGV4aXQgd2l0aCBpbi1mbGlnaHQgYXN5bmMgKGRldm0tc3R5bGUgdGVhcmRvd24pICAgICAgICAq LwoKc3RhdGljIHZvaWQgZG9faHYxYih2b2lkKQp7CglzdHJ1Y3QgcmVnbWFwICptYXA7CglpbnQg cmV0OwoKCW1hcCA9IF9fcmVnbWFwX2luaXQoTlVMTCwgJmZiX2J1cywgTlVMTCwgJmZiX2NmZywK CQkJICAgICZmYl9sb2NrX2tleSwgImZibWFwIik7CglpZiAoSVNfRVJSKG1hcCkpIHsKCQlwcl9l cnIoImh2MWI6IF9fcmVnbWFwX2luaXQgZmFpbGVkICVsZFxuIiwgUFRSX0VSUihtYXApKTsKCQly ZXR1cm47Cgl9Cglwcl9pbmZvKCJIVjFCOiBtYXA9JXB4IGNyZWF0ZWQ7IHN1Ym1pdHRpbmcgYXN5 bmMgd3JpdGUgdGhlbiByZWdtYXBfZXhpdCBJTU1FRElBVEVMWSAobm8gZHJhaW4sIGRldm0tc3R5 bGUpXG4iLAoJCW1hcCk7CgoJcmV0ID0gcmVnbWFwX3dyaXRlX2FzeW5jKG1hcCwgMHgxMCwgMHhB QSk7Cglwcl9pbmZvKCJIVjFCOiByZWdtYXBfd3JpdGVfYXN5bmMgcmV0PSVkOyBjYWxsaW5nIHJl Z21hcF9leGl0IE5PV1xuIiwgcmV0KTsKCglyZWdtYXBfZXhpdChtYXApOwoJcHJfaW5mbygiSFYx QjogcmVnbWFwX2V4aXQgcmV0dXJuZWQgKG1hcCBmcmVlZCk7IGxhdGUgYnVzIGNvbXBsZXRpb24g ZmlyZXMgaW4gfiVkbXMgLi4uXG4iLAoJCWRlbGF5X21zKTsKCgltc2xlZXAoZGVsYXlfbXMgKyAy NTAwKTsKCXByX2luZm8oIkhWMUI6IGRvbmVcbiIpOwp9CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogSFYt MSBmb3JtIDE6IGNvbnRyb2xsZWQgc3RhbGwgYXQgdGhlIHdha2VfdXAgdGFpbCAgICAgICAgICAg ICAgICAgICAqLwoKc3RhdGljIGF0b21pY190IHdha2Vfc3RhdGUgPSBBVE9NSUNfSU5JVCgwKTsg LyogMD1pZGxlIDE9c3RhbGxlZCAyPXJlbGVhc2VkICovCnN0YXRpYyBpbnQgcHJvYmVfYXJtZWQ7 CgpzdGF0aWMgaW50IHdha2Vfc3RhbGxfcHJlKHN0cnVjdCBrcHJvYmUgKnAsIHN0cnVjdCBwdF9y ZWdzICpyZWdzKQp7CgkvKiBPbmx5IHRoZSBidXMtY29tcGxldGlvbiBrdGhyZWFkIGlzIHN0YWxs ZWQsIGF0IF9fd2FrZV91cCgpIGVudHJ5OgoJICogaS5lLiBBRlRFUiB0aGUgY2FsbGJhY2sgcmVs ZWFzZWQgbWFwLT5hc3luY19sb2NrIGFuZCBtb3ZlZCB0aGUgbm9kZQoJICogb2ZmIGFzeW5jX2xp c3QgKHByZWRpY2F0ZSB0cnVlKSwgQkVGT1JFIHdha2VfdXAoKSB0b3VjaGVzIHRoZQoJICogd2Fp dHF1ZXVlIGhlYWQuICBUaGlzIGlzIGV4YWN0bHkgdGhlIGF1ZGl0ZWQgdGFpbCB3aW5kb3c7IG5v CgkgKiBpbnN0cnVjdGlvbi1vZmZzZXQgbWF0aCBpcyBuZWVkZWQsIHNvIGl0IGlzIEtBU0xSLXJv YnVzdC4gKi8KCWlmIChmYl90aHJlYWQgJiYgY3VycmVudCA9PSBmYl90aHJlYWQgJiYKCSAgICBh dG9taWNfeGNoZygmd2FrZV9zdGF0ZSwgMSkgPT0gMCkgewoJCXByX2luZm8oIkhWMUE6IGNhbGxi YWNrIFNUQUxMRUQgYXQgX193YWtlX3VwIGVudHJ5ICh0YWlsIHdpbmRvdykgZm9yICVkIHVzXG4i LAoJCQlzdGFsbF91cyk7CgkJdWRlbGF5KHN0YWxsX3VzKTsKCQlhdG9taWNfc2V0KCZ3YWtlX3N0 YXRlLCAyKTsKCQlwcl9pbmZvKCJIVjFBOiBzdGFsbCByZWxlYXNlZCwgY2FsbGJhY2sgcHJvY2Vl ZHMgaW50byB3YWtlX3VwIG9uIHRoZSB3YWl0cXVldWVcbiIpOwoJfQoJcmV0dXJuIDA7Cn0KCnN0 YXRpYyBzdHJ1Y3Qga3Byb2JlIHdha2Vfa3AgPSB7Cgkuc3ltYm9sX25hbWUgPSAiX193YWtlX3Vw IiwKCS5wcmVfaGFuZGxlciA9IHdha2Vfc3RhbGxfcHJlLAp9OwoKX19tYXliZV91bnVzZWQgc3Rh dGljIHVuc2lnbmVkIGxvbmcgc3ltX2FkZHIoY29uc3QgY2hhciAqbmFtZSkKewoJc3RydWN0IGtw cm9iZSBwcm9iZSA9IHsgLnN5bWJvbF9uYW1lID0gbmFtZSwgfTsKCXVuc2lnbmVkIGxvbmcgYWRk ciA9IDA7CgoJaWYgKHJlZ2lzdGVyX2twcm9iZSgmcHJvYmUpID09IDApIHsKCQlhZGRyID0gKHVu c2lnbmVkIGxvbmcpcHJvYmUuYWRkcjsKCQl1bnJlZ2lzdGVyX2twcm9iZSgmcHJvYmUpOwoJfQoJ cmV0dXJuIGFkZHI7Cn0KCnN0YXRpYyB2b2lkIGRvX2h2MWEodm9pZCkKewoJc3RydWN0IHJlZ21h cCAqbWFwOwoJdTY0IHQwLCB0MTsKCWludCByZXQsIGk7CgoJaWYgKHJlZ2lzdGVyX2twcm9iZSgm d2FrZV9rcCkpIHsKCQlwcl9lcnIoImh2MWE6IGNhbm5vdCByZWdpc3RlciBrcHJvYmUgb24gX193 YWtlX3VwXG4iKTsKCQlyZXR1cm47Cgl9Cglwcm9iZV9hcm1lZCA9IDE7CglhdG9taWNfc2V0KCZ3 YWtlX3N0YXRlLCAwKTsKCglmYl90aHJlYWQgPSBrdGhyZWFkX3J1bihmYl90aHJlYWRfZm4sIE5V TEwsICJmYl9jYiIpOwoJaWYgKElTX0VSUihmYl90aHJlYWQpKSB7CgkJcHJfZXJyKCJodjFhOiBr dGhyZWFkIGZhaWxlZFxuIik7CgkJZmJfdGhyZWFkID0gTlVMTDsKCQl1bnJlZ2lzdGVyX2twcm9i ZSgmd2FrZV9rcCk7CgkJcHJvYmVfYXJtZWQgPSAwOwoJCXJldHVybjsKCX0KCXdhaXRfZm9yX2Nv bXBsZXRpb24oJmZiX3RocmVhZF91cCk7CgoJdXNlX2t0aHJlYWRfY29tcGxldGUgPSAxOwoJbWFw ID0gX19yZWdtYXBfaW5pdChOVUxMLCAmZmJfYnVzLCBOVUxMLCAmZmJfY2ZnLAoJCQkgICAgJmZi X2xvY2tfa2V5LCAiZmJtYXAxIik7CglpZiAoSVNfRVJSKG1hcCkpIHsKCQlwcl9lcnIoImh2MWE6 IF9fcmVnbWFwX2luaXQgZmFpbGVkICVsZFxuIiwgUFRSX0VSUihtYXApKTsKCQlnb3RvIG91dDsK CX0KCXByX2luZm8oIkhWMUE6IG1hcD0lcHggY3JlYXRlZDsgc3VibWl0dGluZyBhc3luYyB3cml0 ZSAoa3RocmVhZCBjb21wbGV0aW9uLCBzdGFsbD0lZCB1cylcbiIsCgkJbWFwLCBzdGFsbF91cyk7 CgoJcmV0ID0gcmVnbWFwX3dyaXRlX2FzeW5jKG1hcCwgMHgyMCwgMHhCQik7CglpZiAocmV0KQoJ CXByX2VycigiaHYxYTogd3JpdGVfYXN5bmMgcmV0PSVkXG4iLCByZXQpOwoKCS8qIHdhaXQgdW50 aWwgdGhlIGJ1cy1jb21wbGV0aW9uIGt0aHJlYWQgaXMgc3RhbGxlZCBpbnNpZGUgdGhlCgkgKiB0 YWlsIHdpbmRvdyAocmlnaHQgYmVmb3JlIHdha2VfdXApICovCglmb3IgKGkgPSAwOyBpIDwgNTAw MCAmJiBhdG9taWNfcmVhZCgmd2FrZV9zdGF0ZSkgIT0gMTsgaSsrKQoJCW1zbGVlcCgxKTsKCWlm IChhdG9taWNfcmVhZCgmd2FrZV9zdGF0ZSkgIT0gMSkgewoJCXByX2VycigiSFYxQTogY2FsbGJh Y2sgbmV2ZXIgcmVhY2hlZCB0aGUgd2FrZSB0YWlsXG4iKTsKCQlyZWdtYXBfYXN5bmNfY29tcGxl dGUobWFwKTsKCQlyZWdtYXBfZXhpdChtYXApOwoJCWdvdG8gb3V0OwoJfQoKCS8qCgkgKiBOb2Rl IGlzIG9mZiBhc3luY19saXN0LCBhc3luY19sb2NrIHJlbGVhc2VkLCBidXMgY2FsbGJhY2sgc3Rh bGxlZAoJICogYmVmb3JlIHdha2VfdXAoKTogcmVnbWFwX2FzeW5jX2NvbXBsZXRlKCkgbXVzdCBy ZXR1cm4gdmlhIHRoZQoJICogd2FpdF9ldmVudCBmYXN0IHBhdGggd2hpbGUgdGhlIGNhbGxiYWNr IGlzIHN0aWxsIHJ1bm5pbmcuCgkgKi8KCXQwID0ga3RpbWVfZ2V0X25zKCk7CglyZXQgPSByZWdt YXBfYXN5bmNfY29tcGxldGUobWFwKTsKCXQxID0ga3RpbWVfZ2V0X25zKCk7Cglwcl9pbmZvKCJI VjFBOiByZWdtYXBfYXN5bmNfY29tcGxldGUgUkVUVVJORUQgcmV0PSVkIGluICVsbHUgbnMgV0hJ TEUgYnVzIGNhbGxiYWNrIHN0YWxsZWQgaW4gdGFpbCB3aW5kb3dcbiIsCgkJcmV0LCB0MSAtIHQw KTsKCglyZWdtYXBfZXhpdChtYXApOwoJcHJfaW5mbygiSFYxQTogcmVnbWFwX2V4aXQgcmV0dXJu ZWQgKG1hcCBmcmVlZCwgYXN5bmMgbm9kZSBmcmVlZCk7IHN0YWxsIHJlbGVhc2VzIGluIDw9JWQg dXMgLT4gd2FrZV91cCBvbiBmcmVlZCBtYXBcbiIsCgkJc3RhbGxfdXMpOwoKCS8qIGxldCB0aGUg c3RhbGwgZXhwaXJlIGFuZCB0aGUgKG5vdyBmcmVlZCkgd2FrZV91cCBmaXJlICovCglmb3IgKGkg PSAwOyBpIDwgMzAwMCAmJiBhdG9taWNfcmVhZCgmd2FrZV9zdGF0ZSkgIT0gMjsgaSsrKQoJCW1z bGVlcCgxKTsKCW1zbGVlcCg1MDApOwoJcHJfaW5mbygiSFYxQTogZG9uZVxuIik7CgpvdXQ6Cgl1 c2Vfa3RocmVhZF9jb21wbGV0ZSA9IDA7CglpZiAoZmJfdGhyZWFkKSB7CgkJa3RocmVhZF9zdG9w KGZiX3RocmVhZCk7CgkJZmJfdGhyZWFkID0gTlVMTDsKCX0KCWlmIChwcm9iZV9hcm1lZCkgewoJ CXVucmVnaXN0ZXJfa3Byb2JlKCZ3YWtlX2twKTsKCQlwcm9iZV9hcm1lZCA9IDA7Cgl9Cn0KCi8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAqLwovKiBhY3Rpb24gcGx1bWJpbmcgKHNhbWUgcGF0dGVybiBhcyBwbXVfcmFj ZS5jKSAgICAgICAgICAgICAgICAgICAgICAgICovCgpzdGF0aWMgY2hhciBhY3Rpb25fY21kWzY0 XTsKCnN0YXRpYyB2b2lkIGFjdGlvbl93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3KQp7Cglj aGFyIGNtZFs2NF07CgljaGFyICpwLCAqY3A7CgoJc3Ryc2NweShjbWQsIHN0cnN0cmlwKGFjdGlv bl9jbWQpLCBzaXplb2YoY21kKSk7CgljcCA9IGNtZDsKCXAgPSBzdHJzZXAoJmNwLCAiICIpOwoK CWlmICghc3RyY21wKHAsICJodjFiIikpCgkJZG9faHYxYigpOwoJZWxzZSBpZiAoIXN0cmNtcChw LCAiaHYxYSIpKQoJCWRvX2h2MWEoKTsKCWVsc2UgaWYgKCFzdHJjbXAocCwgInN0YXR1cyIpKQoJ CXByX2luZm8oInN0YXR1czogYXN5bmNfc3VibWl0PSVsZCBhc3luY19maXJlPSVsZCBwcm9iZV9h cm1lZD0lZCB3YWtlX3N0YXRlPSVkIGRlbGF5X21zPSVkIHN0YWxsX3VzPSVkXG4iLAoJCQlhdG9t aWNfbG9uZ19yZWFkKCZzdGF0X2FzeW5jX3N1Ym1pdCksCgkJCWF0b21pY19sb25nX3JlYWQoJnN0 YXRfYXN5bmNfZmlyZSksIHByb2JlX2FybWVkLAoJCQlhdG9taWNfcmVhZCgmd2FrZV9zdGF0ZSks IGRlbGF5X21zLCBzdGFsbF91cyk7CgllbHNlCgkJcHJfaW5mbygidW5rbm93biBhY3Rpb24gJyVz J1xuIiwgcCk7CgoJcHJfaW5mbygiQUNUSU9OX0NPTVBMRVRFXG4iKTsKfQoKc3RhdGljIERFQ0xB UkVfV09SSyhhY3Rpb25fd29yaywgYWN0aW9uX3dvcmtmbik7CgpzdGF0aWMgaW50IGFjdGlvbl9z ZXQoY29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCkKewoJaW50 IHJldCA9IHBhcmFtX3NldF9jb3B5c3RyaW5nKHZhbCwga3ApOwoKCWlmIChyZXQgPT0gMCkKCQlz Y2hlZHVsZV93b3JrKCZhY3Rpb25fd29yayk7CglyZXR1cm4gcmV0Owp9CgpzdGF0aWMgY29uc3Qg c3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgYWN0aW9uX29wcyA9IHsKCS5zZXQgPSBhY3Rpb25fc2V0 LAoJLmdldCA9IHBhcmFtX2dldF9zdHJpbmcsCn07CnN0YXRpYyBzdHJ1Y3Qga3BhcmFtX3N0cmlu ZyBhY3Rpb25fcGFyYW0gPSB7CgkubWF4bGVuID0gc2l6ZW9mKGFjdGlvbl9jbWQpLAoJLnN0cmlu ZyA9IGFjdGlvbl9jbWQsCn07Cm1vZHVsZV9wYXJhbV9jYihhY3Rpb24sICZhY3Rpb25fb3BzLCAm YWN0aW9uX3BhcmFtLCAwMjAwKTsKTU9EVUxFX1BBUk1fREVTQyhhY3Rpb24sICJodjFiIDxtcz4g fCBodjFhIHwgc3RhdHVzIik7CgpzdGF0aWMgaW50IF9faW5pdCByZWdtYXBfcmFjZV9pbml0KHZv aWQpCnsKCXByX2luZm8oImxvYWRlZCAoZGVsYXlfbXM9JWQgc3RhbGxfdXM9JWQgd2FrZV9vZmY9 JSNseClcbiIsCgkJZGVsYXlfbXMsIHN0YWxsX3VzLCB3YWtlX29mZik7CglyZXR1cm4gMDsKfQoK c3RhdGljIHZvaWQgX19leGl0IHJlZ21hcF9yYWNlX2V4aXQodm9pZCkKewoJaWYgKHByb2JlX2Fy bWVkKQoJCXVucmVnaXN0ZXJfa3Byb2JlKCZ3YWtlX2twKTsKCXByX2luZm8oInJlbW92ZWRcbiIp Owp9Cgptb2R1bGVfaW5pdChyZWdtYXBfcmFjZV9pbml0KTsKbW9kdWxlX2V4aXQocmVnbWFwX3Jh Y2VfZXhpdCk7Ck1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKTU9EVUxFX0RFU0NSSVBUSU9OKCJIVi0x IHZlcmlmaWNhdGlvbjogcmVnbWFwIGFzeW5jIGNvbXBsZXRpb24gdnMgbWFwIGxpZmV0aW1lIik7 Cg== ------=_Part_283724_1237872205.1792677152320--