From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6F3D3CD98C5 for ; Mon, 15 Jun 2026 05:30:36 +0000 (UTC) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 819F83E2348 for ; Mon, 15 Jun 2026 07:30:34 +0200 (CEST) Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [217.194.8.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id E609C3E2334 for ; Mon, 15 Jun 2026 07:30:03 +0200 (CEST) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 75F1410005FC for ; Mon, 15 Jun 2026 07:30:02 +0200 (CEST) Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65F1mwOa980566; Mon, 15 Jun 2026 05:30:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=SN3r+c D4R0kMFsFKtApZpi8OtkxZvQlXnjfZvPZc9qo=; b=kr8IKVJ75/VVGeUTP0+X1+ eSfwfKdiwkaLmFG2UL0Dpkrst4/y4ddqYQh++b6WBzISl2JjXHjR5sb5Lg4vJdqS UkdORLQWleCv8rH11pD2CSHQCR+5W7QPpqjWjKvdFLy/uY1+m+xjsZ/JUYDo2NDV RU0KjSP6j6mJ0PU6C2i/jGIofvDz1XiMErjj9S+yXU4Nc3kZ6lwMBsdbTjMDVSBZ qGWnaSyZAcy+JTmXhBue6mynn2J289rxF98OqS0duTIN/cTmH+bjrgY6MrDzXuW0 i6461juzlSJjpuutljGGlGbfziZ8qkdhlmdIws4etYU2kJw9Qj+QnwDDrwJ6Tu1Q == Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4es1h7y2ff-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 15 Jun 2026 05:30:00 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 65F5Jbnd022493; Mon, 15 Jun 2026 05:29:59 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4esk1gw2rg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 15 Jun 2026 05:29:58 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65F5TuE641091408 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Jun 2026 05:29:57 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DA0E32004F; Mon, 15 Jun 2026 05:29:56 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9803A2004B; Mon, 15 Jun 2026 05:29:55 +0000 (GMT) Received: from localhost.localdomain (unknown [9.43.52.62]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 15 Jun 2026 05:29:55 +0000 (GMT) From: Sachin Sant To: ltp@lists.linux.it Date: Mon, 15 Jun 2026 10:59:46 +0530 Message-Id: <20260615052953.18183-2-sachinp@linux.ibm.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20260615052953.18183-1-sachinp@linux.ibm.com> References: <20260615052953.18183-1-sachinp@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE1MDA1MyBTYWx0ZWRfXwxjRjuuVvaeC qmsqDdvyIclY/6w7ayy5voSY8yVzvhf4ZwpmTWnDamwwMCFJy/FT76bw8nUE0colMpgQLLA+/WO Aihz2EUoPipbbSJ4Ow02bfUZbjh3Pb0= X-Proofpoint-ORIG-GUID: 32cVcRJB68IAEbrFxWmk7kCNRyaiPDBE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE1MDA1MyBTYWx0ZWRfX9YJ+Byy8Z5gd rriiu5472VVUJstBKeoRG6eI+9MbBKnRs2HH3z2AQ5mwC+gklsPJ5Mt0BxyPIHMAXpo3aemfdTL VhyvGu+APJcK6A1ZQ6+PZXQMjC1kv/39YB1ZXoAAhAivli52QUOe4REiiykwlEDqPesC+plsvKM BMGnhY+amhm+0E5+eaSMY+oXvvvjBhJB39RmkVimTi6prRWFhd8Cr402SZs75HllF3tLCpM7Y71 jq0AhDI8b0hkAx+iJf9pRY6EMgCqjRf5pEERoTvJvFb1LUMUUXc45t+PdkvF/6ns1aqmYzXfCGG UZlTRW0ba/+kjGKYNFmNrhDrZGN7iYKVsFh0wpnqeMQl087+vaL/FZC9EuL1afL35nW/V0B4/VN pjIhztHorIDKUbfLBsqp8HgPRPjTxeFVsLDlpW1CUZkt0Yf+kEetEdJTiMgEJjV8dk7EkINIJ2T pSq9oKyC4njwoDNLS1Q== X-Authority-Analysis: v=2.4 cv=U9uiy+ru c=1 sm=1 tr=0 ts=6a2f8dd8 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=ZJEMAUhidu7nXVqH2UMA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: 32cVcRJB68IAEbrFxWmk7kCNRyaiPDBE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-15_01,2026-06-12_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 phishscore=0 priorityscore=1501 clxscore=1015 adultscore=0 malwarescore=0 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606040000 definitions=main-2606150053 X-Virus-Scanned: clamav-milter 1.0.9 at in-4.smtp.seeweb.it X-Virus-Status: Clean Subject: [LTP] [PATCH v9 1/8] fs/acl: Add ACL_USER_OBJ permission test X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ltp-bounces+ltp=archiver.kernel.org@lists.linux.it Sender: "ltp" QWRkIGFjbF91c2VyX29iajAxIHRlc3QgdG8gdmFsaWRhdGUgQUNMX1VTRVJfT0JKIHBlcm1pc3Np b25zOgotIE93bmVyIHBlcm1pc3Npb25zIGNvcnJlY3RseSBjb250cm9sIGZpbGUvZGlyZWN0b3J5 IGFjY2VzcwotIEFDTF9VU0VSX09CSj1yd3ggdmlhIHNldHhhdHRyKCkgb3ZlcnJpZGVzIGNobW9k IHJlc3RyaWN0aW9ucwotIE93bmVyIHBlcm1pc3Npb25zIHdvcmsgaW5kZXBlbmRlbnRseSBvZiBn cm91cC9vdGhlciBwZXJtaXNzaW9ucwotIFRlc3RzIHVzZSBhcmJpdHJhcnkgVUlEcyB3aXRob3V0 IHJlcXVpcmluZyBhY3R1YWwgdXNlciBjcmVhdGlvbgoKVGhlIHBhdGNoIGFsc28gYWRkcyBhY2xf bGliLmggY29udGFpbmluZyBzaGFyZWQgaGVscGVycyBmb3IgQUNMCm1hbmlwdWxhdGlvbiB2aWEg eGF0dHIgQVBJLCBpbmNsdWRpbmc6Ci0gQUNMIHN0cnVjdHVyZSBtYW5hZ2VtZW50IChhY2xfaW5p dCwgYWNsX2ZyZWUsIGFjbF9hZGRfZW50cnkpCi0gQUNMIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxp emF0aW9uIGZvciBrZXJuZWwgeGF0dHIgZm9ybWF0Ci0gQUNMIGdldC9zZXQgb3BlcmF0aW9ucyB1 c2luZyBnZXR4YXR0ci9zZXR4YXR0cgotIHBlcm1pc3Npb24gdGVzdGluZyBhbmQgZmlsZSBvcGVy YXRpb25zCi0gU3VwcG9ydCBmb3IgYm90aCBBQ0NFU1MgYW5kIERFRkFVTFQgQUNMIHR5cGVzCgpU aGUgaW1wbGVtZW50YXRpb24gdXNlcyBkaXJlY3QgeGF0dHIgQVBJIChnZXR4YXR0ci9zZXR4YXR0 cikgdG8KdGVzdCBrZXJuZWwgQUNMIGJlaGF2aW9yIGRpcmVjdGx5LiBUZXN0cyBydW4gb24gZXh0 Mi8zLzQsClhGUywgYW5kIEJ0cmZzIGZpbGVzeXN0ZW1zIHdpdGggQUNMIHN1cHBvcnQuCgpTdWdn ZXN0ZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgpTaWduZWQtb2ZmLWJ5OiBT YWNoaW4gU2FudCA8c2FjaGlucEBsaW51eC5pYm0uY29tPgotLS0KVjkgY2hhbmdlczoKLSBVc2Ug UlNUIG1hbnBhZ2UgZm9ybWF0dGVkIGRvY3VtZW50YXRpb24KLSB2OCBsaW5rIGh0dHBzOi8vbG9y ZS5rZXJuZWwub3JnL2x0cC8yMDI2MDYxMzA5MDU0My43ODY0My0xLXNhY2hpbnBAbGludXguaWJt LmNvbS9ULyN0CgpWOCBjaGFuZ2VzOgotIFJlbW92ZWQgbm8gY2hvd24gdmFyaWFudCBvZiByZXNl dF90ZXN0X3BhdGgKLSBVc2UgUlNUIG1hbnBhZ2UgZm9ybWF0dGVkIGRvY3VtZW50YXRpb24KLSB2 NyBsaW5rIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2x0cC8yMDI2MDYxMjE3MTkzMC4xMTk2NC0x LXNhY2hpbnBAbGludXguaWJtLmNvbS9ULyN0CgpWNyBjaGFuZ2VzOgotIFVzZSBTQUZFXyB2YXJp YW50cyBvZiBzZXRyZXNnaWQvc2V0cmVzdWlkCi0gUmVwbGFjZSBUU1RfRVhQX0ZBSUwgd2l0aCBU U1RfRVhQX0ZBSUwyCi0gdjYgbGluayBodHRwczovL2xvcmUua2VybmVsLm9yZy9sdHAvMjAyNjA2 MTIxMDI1MDIuMjQwNzEtMS1zYWNoaW5wQGxpbnV4LmlibS5jb20vVC8jdAoKVjYgY2hhbmdlczoK LSBBZGRlZCBIQVZFX1NZU19YQVRUUl9IIGd1YXJkcyBmb3Igc3lzdGVtcyB3aXRob3V0IHhhdHRy IHN1cHBvcnQKLSBSZW1vdmVkIHVubmVjZXNzYXJ5IGVycm9yIHBhdGhzIGFuZCBtYW51YWwgc3Rh dHVzIGNoZWNraW5nCi0gVXNlcyBTQUZFX01BTExPQygpIGFuZCBuZXcgaGVscGVyIG1hY3Jvcwot IEFkZGVkIGFjbF90eXBlX3RvX25hbWUoKSBoZWxwZXIgdG8gZWxpbWluYXRlIGR1cGxpY2F0aW9u Ci0gdjUgbGluayBodHRwczovL2xvcmUua2VybmVsLm9yZy9sdHAvMjAyNjA2MDgwOTIyMDAuOTI4 MjctMS1zYWNoaW5wQGxpbnV4LmlibS5jb20vVC8jdAoKVjUgY2hhbmdlczoKLSBTd2l0Y2ggdG8g a2VybmVsIG9ubHkgdGVzdCB2YWxpZGF0aW9uIHRvIHJlbW92ZSBkZXBlbmRlbmN5IG9uIGxpYmFj bAogIGFuZCB1c2VyYWRkL2RlbCBjb21tYW5kcy4KLSB2NCBsaW5rIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2x0cC8yMDI2MDYwNDA2NTQxNy4yNTkyNC0xLXNhY2hpbnBAbGludXguaWJtLmNvbS9U LyN0CgpWNCBjaGFuZ2VzOgotIEFkZMKgLVXCoGZsYWcgaW4gY3JlYXRlX3VzZXJfaWZfbmVlZGVk KCnCoHRvIHVzZXJhZGQgZm9yIGd1YXJhbnRlZWQKICB1c2VyLXByaXZhdGUgZ3JvdXBzLgotIE1v dmUgRU9QTk9UU1VQUCBoYW5kbGluZyBpbnRvwqBzZXRfYWNsX2ZpbGUoKcKgaGVscGVyCi0gdjMg bGluayBodHRwczovL2xvcmUua2VybmVsLm9yZy9sdHAvMjAyNjA2MDMxNDAxNDcuNTA3MzgtMS1z YWNoaW5wQGxpbnV4LmlibS5jb20vVC8jdAoKVjMgY2hhbmdlczoKLSBVcGRhdGVkIGNvcHlyaWdo dCBoZWFkZXIgYXMgcGVyIExUUCBmb3JtYXQuCi0gdjIgbGluayBodHRwczovL2xvcmUua2VybmVs Lm9yZy9sdHAvMjAyNjA2MDMwNjU3NDQuNDcxMDYtMS1zYWNoaW5wQGxpbnV4LmlibS5jb20vVC8j dAoKVjIgY2hhbmdlczoKLSBBZGRlZCBubyBjaG93biB2YXJpYW50IG9mIHJlc2V0X3Rlc3RfcGF0 aCB0byBza2lwIGNob3duIHN0ZXAuCiAgYWNsX2xpbmswMSBhbmQgeGF0dHJfdGVzdDAxIHRlc3Rz IGFyZSB1cGRhdGVkIHRvIHVzZSB0aGlzCiAgdmFyaWFudC4KLSBVcGRhdGVkIGFjbF91c2VyX29i ajAxLmMgdG8gY29ycmVjdCBpbmNvcnJlY3QgZGVzY3JpcHRpb24KLSB2MSBsaW5rIGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2x0cC8yMDI2MDYwMjEyMTk1OC4yNzQ5NC0xLXNhY2hpbnBAbGludXgu aWJtLmNvbS9ULyN0CgpWMSBjaGFuZ2VzOgotIFVzZSBBQ0xfTElCUyB2YXJpYWJsZSBpbnN0ZWFk IG9mIGhhcmRjb2RlZCAtbGFjbCBpbiBNYWtlZmlsZQotIE1vdmUgQUNMIGhlYWRlciBpbmNsdWRl cyBpbnNpZGUgZmVhdHVyZSBndWFyZHMgaW4gYWNsX2xpYi5oCi0gVXNlIEhBVkVfTElCQUNMIGd1 YXJkcyBpbiAuYyBjb2RlCi0gUmVwb3J0IFRDT05GIHdoZW4gbGliYWNsIGlzIG5vdCBhdmFpbGFi bGUKLSByZmMgbGluayBodHRwczovL2xvcmUua2VybmVsLm9yZy9sdHAvNDc3ODM2ZmQtODBjOC00 MTY4LWJmZTYtMDBiMzc0YmIyNTM0QGxpbnV4LmlibS5jb20vVC8jdAoKLS0tCiBydW50ZXN0L2Zz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHRlc3RjYXNlcy9rZXJuZWwv ZnMvYWNsLy5naXRpZ25vcmUgICAgICAgfCAgIDEgKwogdGVzdGNhc2VzL2tlcm5lbC9mcy9hY2wv TWFrZWZpbGUgICAgICAgICB8ICAgOCArCiB0ZXN0Y2FzZXMva2VybmVsL2ZzL2FjbC9hY2xfbGli LmggICAgICAgIHwgNTA3ICsrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0Y2FzZXMva2VybmVs L2ZzL2FjbC9hY2xfdXNlcl9vYmowMS5jIHwgMTI3ICsrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA2 NDYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RjYXNlcy9rZXJuZWwvZnMv YWNsLy5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0Y2FzZXMva2VybmVsL2ZzL2Fj bC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RjYXNlcy9rZXJuZWwvZnMvYWNsL2Fj bF9saWIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RjYXNlcy9rZXJuZWwvZnMvYWNsL2FjbF91 c2VyX29iajAxLmMKCmRpZmYgLS1naXQgYS9ydW50ZXN0L2ZzIGIvcnVudGVzdC9mcwppbmRleCAx ZDc1M2UwZGQuLjJhODc4NzQ0YiAxMDA2NDQKLS0tIGEvcnVudGVzdC9mcworKysgYi9ydW50ZXN0 L2ZzCkBAIC04NywzICs4Nyw2IEBAIGJpbmZtdF9taXNjMDEgYmluZm10X21pc2MwMS5zaAogYmlu Zm10X21pc2MwMiBiaW5mbXRfbWlzYzAyLnNoCiAKIHNxdWFzaGZzMDEgc3F1YXNoZnMwMQorCisj IFJ1biB0aGUgYWNsIHRlc3RzCithY2xfdXNlcl9vYmowMSBhY2xfdXNlcl9vYmowMQpkaWZmIC0t Z2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9mcy9hY2wvLmdpdGlnbm9yZSBiL3Rlc3RjYXNlcy9rZXJu ZWwvZnMvYWNsLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw Li5kOWM0NmRiMTEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0Y2FzZXMva2VybmVsL2ZzL2FjbC8u Z2l0aWdub3JlCkBAIC0wLDAgKzEgQEAKKy9hY2xfdXNlcl9vYmowMQpkaWZmIC0tZ2l0IGEvdGVz dGNhc2VzL2tlcm5lbC9mcy9hY2wvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL2ZzL2FjbC9N YWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjJkOWNiYTQ2ZAot LS0gL2Rldi9udWxsCisrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvZnMvYWNsL01ha2VmaWxlCkBAIC0w LDAgKzEsOCBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgor IyBDb3B5cmlnaHQgKGMpIDIwMjYgSUJNCisKK3RvcF9zcmNkaXIJCT89IC4uLy4uLy4uLy4uCisK K2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL3Rlc3RjYXNlcy5taworCitpbmNsdWRl ICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCmRpZmYgLS1n aXQgYS90ZXN0Y2FzZXMva2VybmVsL2ZzL2FjbC9hY2xfbGliLmggYi90ZXN0Y2FzZXMva2VybmVs L2ZzL2FjbC9hY2xfbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi43 ZmU2OGFhNTkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0Y2FzZXMva2VybmVsL2ZzL2FjbC9hY2xf bGliLmgKQEAgLTAsMCArMSw1MDcgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wLW9yLWxhdGVyICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDI2IElCTQorICogT3JpZ2lu YWwgc2hlbGwgdGVzdCBieSBLYWkgWmhhbyAobHRjZDNAY24uaWJtLmNvbSkKKyAqIENvbnZlcnRl ZCB0byBDIGJ5IFNhY2hpbiBTYW50IDxzYWNoaW5wQGxpbnV4LmlibS5jb20+CisgKgorICogQ29t bW9uIGxpYnJhcnkgZm9yIEFDTCBhbmQgZXh0ZW5kZWQgYXR0cmlidXRlIHRlc3RzIHVzaW5nIHhh dHRyIEFQSQorICovCisKKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyNkZWZpbmUgX0dOVV9TT1VSQ0UK KyNlbmRpZgorCisjaWZuZGVmIEFDTF9MSUJfSAorI2RlZmluZSBBQ0xfTElCX0gKKworI2luY2x1 ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8cHdkLmg+CisjaW5jbHVkZSA8Z3JwLmg+CisjaW5j bHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgor I2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGVuZGlhbi5oPgorI2luY2x1ZGUgPHN5cy9m c3VpZC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj aW5jbHVkZSA8c3lzL3dhaXQuaD4KKworI2lmZGVmIEhBVkVfU1lTX1hBVFRSX0gKKyNpbmNsdWRl IDxzeXMveGF0dHIuaD4KKyNlbmRpZgorI2luY2x1ZGUgInRzdF90ZXN0LmgiCisjaW5jbHVkZSAi dHN0X3NhZmVfc3RkaW8uaCIKKyNpbmNsdWRlICJ0c3RfY2FwYWJpbGl0eS5oIgorCisjZGVmaW5l IE1OVFBPSU5UCSJtbnRwb2ludCIKKyNkZWZpbmUgVEVTVERJUgkJTU5UUE9JTlQgIi90ZXN0ZGly IgorI2RlZmluZSBURVNURklMRQlURVNURElSICIvdGVzdGZpbGUiCisjZGVmaW5lIFRFU1RTWU1M SU5LCVRFU1RESVIgIi90ZXN0c3ltbGluayIKKyNkZWZpbmUgWEFUVFJfQkFDS1VQX0ZJTEUgTU5U UE9JTlQgIi94YXR0cl9iYWNrdXAudHh0IgorCisvKiBFeHRlbmRlZCBhdHRyaWJ1dGUgdGVzdCB2 YWx1ZXMgKi8KKyNkZWZpbmUgWEFUVFJfVEVTVF9ESVJfTkFNRQkidXNlci50ZXN0X2F0dHIiCisj ZGVmaW5lIFhBVFRSX1RFU1RfRElSX1ZBTFVFCSJ0ZXN0X3ZhbHVlIgorI2RlZmluZSBYQVRUUl9U RVNUX0RJUl9TSVpFCTEwCisjZGVmaW5lIFhBVFRSX1RFU1RfRklMRV9OQU1FCSJ1c2VyLmZpbGVf YXR0ciIKKyNkZWZpbmUgWEFUVFJfVEVTVF9GSUxFX1ZBTFVFCSJmaWxlX3ZhbCIKKyNkZWZpbmUg WEFUVFJfVEVTVF9GSUxFX1NJWkUJOAorI2RlZmluZSBYQVRUUl9URVNUMV9OQU1FCSJ1c2VyLnRl c3QxIgorI2RlZmluZSBYQVRUUl9URVNUMV9WQUxVRQkidmFsdWUxIgorI2RlZmluZSBYQVRUUl9U RVNUMV9TSVpFCTYKKyNkZWZpbmUgWEFUVFJfVEVTVDJfTkFNRQkidXNlci50ZXN0MiIKKyNkZWZp bmUgWEFUVFJfVEVTVDJfVkFMVUUJInZhbHVlMiIKKyNkZWZpbmUgWEFUVFJfVEVTVDJfU0laRQk2 CisKKy8qCisgKiBQT1NJWCBBQ0wgeGF0dHIgZm9ybWF0IGRlZmluaXRpb25zCisgKiBUaGVzZSBt YXRjaCB0aGUga2VybmVsJ3MgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24KKyAqLworI2RlZmluZSBQ T1NJWF9BQ0xfWEFUVFJfVkVSU0lPTgkweDAwMDIKKworLyogQUNMIGVudHJ5IHRhZyB0eXBlcyAq LworI2RlZmluZSBBQ0xfVU5ERUZJTkVEX1RBRwkweDAwCisjZGVmaW5lIEFDTF9VU0VSX09CSgkJ MHgwMQorI2RlZmluZSBBQ0xfVVNFUgkJMHgwMgorI2RlZmluZSBBQ0xfR1JPVVBfT0JKCQkweDA0 CisjZGVmaW5lIEFDTF9HUk9VUAkJMHgwOAorI2RlZmluZSBBQ0xfTUFTSwkJMHgxMAorI2RlZmlu ZSBBQ0xfT1RIRVIJCTB4MjAKKworLyogQUNMIHBlcm1pc3Npb25zICovCisjZGVmaW5lIEFDTF9S RUFECQkweDA0CisjZGVmaW5lIEFDTF9XUklURQkJMHgwMgorI2RlZmluZSBBQ0xfRVhFQ1VURQkJ MHgwMQorCisvKiBBQ0wgeGF0dHIgbmFtZXMgKi8KKyNkZWZpbmUgWEFUVFJfTkFNRV9QT1NJWF9B Q0xfQUNDRVNTCSJzeXN0ZW0ucG9zaXhfYWNsX2FjY2VzcyIKKyNkZWZpbmUgWEFUVFJfTkFNRV9Q T1NJWF9BQ0xfREVGQVVMVAkic3lzdGVtLnBvc2l4X2FjbF9kZWZhdWx0IgorCisvKiBBQ0wgdHlw ZSBmb3Igc2V0L2dldCBvcGVyYXRpb25zICovCisjZGVmaW5lIEFDTF9UWVBFX0FDQ0VTUwkJMQor I2RlZmluZSBBQ0xfVFlQRV9ERUZBVUxUCTIKKworLyogQ29udmVydCBob3N0IHRvIGxpdHRsZS1l bmRpYW4gKi8KKyNpZiBfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOCisjZGVmaW5lIGNw dV90b19sZTE2KHgpICh4KQorI2RlZmluZSBjcHVfdG9fbGUzMih4KSAoeCkKKyNkZWZpbmUgbGUx Nl90b19jcHUoeCkgKHgpCisjZGVmaW5lIGxlMzJfdG9fY3B1KHgpICh4KQorI2Vsc2UKKyNkZWZp bmUgY3B1X3RvX2xlMTYoeCkgX19idWlsdGluX2Jzd2FwMTYoeCkKKyNkZWZpbmUgY3B1X3RvX2xl MzIoeCkgX19idWlsdGluX2Jzd2FwMzIoeCkKKyNkZWZpbmUgbGUxNl90b19jcHUoeCkgX19idWls dGluX2Jzd2FwMTYoeCkKKyNkZWZpbmUgbGUzMl90b19jcHUoeCkgX19idWlsdGluX2Jzd2FwMzIo eCkKKyNlbmRpZgorCisvKgorICogUE9TSVggQUNMIHhhdHRyIGZvcm1hdCBhcyBzdG9yZWQgaW4g a2VybmVsCisgKiBUaGlzIGlzIHRoZSBvbi1kaXNrL2luLXhhdHRyIHJlcHJlc2VudGF0aW9uCisg Ki8KK3N0cnVjdCBwb3NpeF9hY2xfeGF0dHJfaGVhZGVyIHsKKwl1aW50MzJfdCBhX3ZlcnNpb247 Cit9OworCitzdHJ1Y3QgcG9zaXhfYWNsX3hhdHRyX2VudHJ5IHsKKwl1aW50MTZfdCBlX3RhZzsK Kwl1aW50MTZfdCBlX3Blcm07CisJdWludDMyX3QgZV9pZDsKK307CisKKy8qCisgKiBDb21iaW5l ZCB4YXR0ciBzdHJ1Y3R1cmUgZm9yIEFDTCBvcGVyYXRpb25zCisgKi8KK3N0cnVjdCBhY2xfeGF0 dHIgeworCXN0cnVjdCBwb3NpeF9hY2xfeGF0dHJfaGVhZGVyIGhlYWRlcjsKKwlzdHJ1Y3QgcG9z aXhfYWNsX3hhdHRyX2VudHJ5IGVudHJpZXNbXTsKK307CisKKy8qCisgKiBJbi1tZW1vcnkgQUNM IHJlcHJlc2VudGF0aW9uIGZvciBidWlsZGluZyBBQ0xzCisgKi8KKyNkZWZpbmUgTUFYX0FDTF9F TlRSSUVTIDMyCisKK3N0cnVjdCBhY2xfZW50cnkgeworCXVpbnQxNl90IHRhZzsKKwl1aW50MTZf dCBwZXJtOworCXVpbnQzMl90IGlkOworfTsKKworc3RydWN0IGFjbCB7CisJaW50IGNvdW50Owor CXN0cnVjdCBhY2xfZW50cnkgZW50cmllc1tNQVhfQUNMX0VOVFJJRVNdOworfTsKKworLyoKKyAq IFNBRkVfVFJZX1VOTElOSyAtIHVubGluayBhIGZpbGUsIGlnbm9yaW5nIEVOT0VOVAorICogV29u J3QgVEJST0sgaWYgZmlsZSBkb2Vzbid0IGV4aXN0CisgKi8KKyNkZWZpbmUgU0FGRV9UUllfVU5M SU5LKHBhdGgpIGRvIHsgXAorCWlmICh1bmxpbmsocGF0aCkgPT0gLTEgJiYgZXJybm8gIT0gRU5P RU5UKSBcCisJCXRzdF9icmsoVEJST0sgfCBURVJSTk8sICJ1bmxpbmsoJXMpIGZhaWxlZCIsIHBh dGgpOyBcCit9IHdoaWxlICgwKQorCisvKgorICogU0FGRV9UUllfUk1ESVIgLSByZW1vdmUgYSBk aXJlY3RvcnksIGlnbm9yaW5nIEVOT0VOVAorICogV29uJ3QgVEJST0sgaWYgZGlyZWN0b3J5IGRv ZXNuJ3QgZXhpc3QKKyAqLworI2RlZmluZSBTQUZFX1RSWV9STURJUihwYXRoKSBkbyB7IFwKKwlp ZiAocm1kaXIocGF0aCkgPT0gLTEgJiYgZXJybm8gIT0gRU5PRU5UKSBcCisJCXRzdF9icmsoVEJS T0sgfCBURVJSTk8sICJybWRpciglcykgZmFpbGVkIiwgcGF0aCk7IFwKK30gd2hpbGUgKDApCisK K3N0YXRpYyBpbmxpbmUgdm9pZCByZXNldF90ZXN0X3BhdGgodm9pZCkKK3sKKwlTQUZFX1RSWV9V TkxJTksoVEVTVFNZTUxJTkspOworCVNBRkVfVFJZX1VOTElOSyhURVNURklMRSk7CisJU0FGRV9U UllfUk1ESVIoVEVTVERJUik7CisKKwlTQUZFX01LRElSKFRFU1RESVIsIDA3NTUpOworfQorCitz dGF0aWMgaW5saW5lIHZvaWQgY2xlYW51cF90ZXN0ZmlsZSh2b2lkKQoreworCVNBRkVfVFJZX1VO TElOSyhURVNURklMRSk7Cit9CisKKyNpZmRlZiBIQVZFX1NZU19YQVRUUl9ICisKKy8qCisgKiBJ bml0aWFsaXplIGFuIGVtcHR5IEFDTCBzdHJ1Y3R1cmUKKyAqLworc3RhdGljIGlubGluZSBzdHJ1 Y3QgYWNsICphY2xfaW5pdCh2b2lkKQoreworCXN0cnVjdCBhY2wgKmFjbCA9IFNBRkVfTUFMTE9D KHNpemVvZihzdHJ1Y3QgYWNsKSk7CisKKwlhY2wtPmNvdW50ID0gMDsKKwlyZXR1cm4gYWNsOwor fQorCisvKgorICogRnJlZSBhbiBBQ0wgc3RydWN0dXJlCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9p ZCBhY2xfZnJlZShzdHJ1Y3QgYWNsICphY2wpCit7CisJZnJlZShhY2wpOworfQorCisvKgorICog QWRkIGFuIEFDTCBlbnRyeSB0byB0aGUgQUNMIHN0cnVjdHVyZQorICovCitzdGF0aWMgaW5saW5l IGludCBhY2xfYWRkX2VudHJ5KHN0cnVjdCBhY2wgKmFjbCwgdWludDE2X3QgdGFnLCB1aW50MTZf dCBwZXJtLAorCQkJCXVpbnQzMl90IGlkKQoreworCWlmIChhY2wtPmNvdW50ID49IE1BWF9BQ0xf RU5UUklFUykgeworCQllcnJubyA9IEVOT01FTTsKKwkJcmV0dXJuIC0xOworCX0KKworCWFjbC0+ ZW50cmllc1thY2wtPmNvdW50XS50YWcgPSB0YWc7CisJYWNsLT5lbnRyaWVzW2FjbC0+Y291bnRd LnBlcm0gPSBwZXJtOworCWFjbC0+ZW50cmllc1thY2wtPmNvdW50XS5pZCA9IGlkOworCWFjbC0+ Y291bnQrKzsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIENvbnZlcnQgQUNMIHR5cGUgdG8geGF0 dHIgbmFtZQorICovCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKmFjbF90eXBlX3RvX25hbWUo aW50IHR5cGUpCit7CisJaWYgKHR5cGUgPT0gQUNMX1RZUEVfQUNDRVNTKQorCQlyZXR1cm4gWEFU VFJfTkFNRV9QT1NJWF9BQ0xfQUNDRVNTOworCWVsc2UgaWYgKHR5cGUgPT0gQUNMX1RZUEVfREVG QVVMVCkKKwkJcmV0dXJuIFhBVFRSX05BTUVfUE9TSVhfQUNMX0RFRkFVTFQ7CisJZWxzZQorCQly ZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFNldCBBQ0wgb24gYSBmaWxlIHVzaW5nIHhhdHRyLgor ICoKKyAqIFRoZSBrZXJuZWwgc3RvcmVzIGFjY2VzcyBBQ0xzIG9ubHkgd2hlbiB0aGV5IGRpZmZl ciBmcm9tIHRoZSBmaWxlIG1vZGUuCisgKiBJZiB0aGUgQUNMIGlzIGVxdWl2YWxlbnQgdG8gc3Rf bW9kZSwgdGhlIHhhdHRyIGlzIHJlbW92ZWQgYW5kIGZ1dHVyZQorICogZ2V0eGF0dHIoKSBjYWxs cyByZXR1cm4gRU5PREFUQS4gTWlycm9yIGxpYmFjbCBzZW1hbnRpY3MgYnkgdHJlYXRpbmcKKyAq IEVOT0RBVEEgYXMgYSB2YWxpZCBtaW5pbWFsIEFDTCBkZXJpdmVkIGZyb20gc3RfbW9kZS4KKyAq Lworc3RhdGljIGlubGluZSBpbnQgYWNsX3NldF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGludCB0 eXBlLCBzdHJ1Y3QgYWNsICphY2wpCit7CisJY29uc3QgY2hhciAqeGF0dHJfbmFtZTsKKwlzaXpl X3Qgc2l6ZTsKKwljaGFyICpidWY7CisJc3RydWN0IHBvc2l4X2FjbF94YXR0cl9oZWFkZXIgKmhl YWRlcjsKKwlzdHJ1Y3QgcG9zaXhfYWNsX3hhdHRyX2VudHJ5ICplbnRyaWVzOworCWludCBpLCBy ZXQ7CisKKwl4YXR0cl9uYW1lID0gYWNsX3R5cGVfdG9fbmFtZSh0eXBlKTsKKwlpZiAoIXhhdHRy X25hbWUpIHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAtMTsKKwl9CisKKwlzaXplID0g c2l6ZW9mKHN0cnVjdCBwb3NpeF9hY2xfeGF0dHJfaGVhZGVyKSArCisJICAgICAgIGFjbC0+Y291 bnQgKiBzaXplb2Yoc3RydWN0IHBvc2l4X2FjbF94YXR0cl9lbnRyeSk7CisKKwlidWYgPSBtYWxs b2Moc2l6ZSk7CisJaWYgKCFidWYpCisJCXJldHVybiAtMTsKKworCWhlYWRlciA9IChzdHJ1Y3Qg cG9zaXhfYWNsX3hhdHRyX2hlYWRlciAqKWJ1ZjsKKwloZWFkZXItPmFfdmVyc2lvbiA9IGNwdV90 b19sZTMyKFBPU0lYX0FDTF9YQVRUUl9WRVJTSU9OKTsKKworCWVudHJpZXMgPSAoc3RydWN0IHBv c2l4X2FjbF94YXR0cl9lbnRyeSAqKShidWYgKyBzaXplb2YoKmhlYWRlcikpOworCisJZm9yIChp ID0gMDsgaSA8IGFjbC0+Y291bnQ7IGkrKykgeworCQllbnRyaWVzW2ldLmVfdGFnID0gY3B1X3Rv X2xlMTYoYWNsLT5lbnRyaWVzW2ldLnRhZyk7CisJCWVudHJpZXNbaV0uZV9wZXJtID0gY3B1X3Rv X2xlMTYoYWNsLT5lbnRyaWVzW2ldLnBlcm0pOworCQllbnRyaWVzW2ldLmVfaWQgPSBjcHVfdG9f bGUzMihhY2wtPmVudHJpZXNbaV0uaWQpOworCX0KKworCXJldCA9IHNldHhhdHRyKHBhdGgsIHhh dHRyX25hbWUsIGJ1Ziwgc2l6ZSwgMCk7CisJZnJlZShidWYpOworCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIGlubGluZSB2b2lkIGFjbF9hZGRfbW9kZV9lbnRyaWVzKHN0cnVjdCBhY2wgKmFj bCwgbW9kZV90IG1vZGUpCit7CisJYWNsX2FkZF9lbnRyeShhY2wsIEFDTF9VU0VSX09CSiwgKG1v ZGUgPj4gNikgJiAwNywgMCk7CisJYWNsX2FkZF9lbnRyeShhY2wsIEFDTF9HUk9VUF9PQkosICht b2RlID4+IDMpICYgMDcsIDApOworCWFjbF9hZGRfZW50cnkoYWNsLCBBQ0xfT1RIRVIsIG1vZGUg JiAwNywgMCk7Cit9CisKKy8qCisgKiBTeW50aGVzaXplIGFuIEFDTCBmcm9tIGZpbGUgbW9kZSBi aXRzLgorICogVXNlZCB3aGVuIG5vIHhhdHRyIGV4aXN0cyBmb3IgYW4gYWNjZXNzIEFDTC4KKyAq Lworc3RhdGljIGlubGluZSBzdHJ1Y3QgYWNsICphY2xfZnJvbV9tb2RlKGNvbnN0IGNoYXIgKnBh dGgpCit7CisJc3RydWN0IGFjbCAqYWNsOworCXN0cnVjdCBzdGF0IHN0OworCisJaWYgKHN0YXQo cGF0aCwgJnN0KSA8IDApCisJCXJldHVybiBOVUxMOworCisJYWNsID0gYWNsX2luaXQoKTsKKwlh Y2xfYWRkX21vZGVfZW50cmllcyhhY2wsIHN0LnN0X21vZGUpOworCisJcmV0dXJuIGFjbDsKK30K KworLyoKKyAqIEdldCBBQ0wgZnJvbSBhIGZpbGUgdXNpbmcgeGF0dHIuCisgKgorICogQWNjZXNz IEFDTHMgZXF1aXZhbGVudCB0byBmaWxlIG1vZGUgbWF5IG5vdCBoYXZlIGEgYmFja2luZyB4YXR0 ciBhdCBhbGwuCisgKiBJbiB0aGF0IGNhc2Ugc3ludGhlc2l6ZSB0aGUgYmFzZSBBQ0wgZnJvbSBz dF9tb2RlIHNvIGNhbGxlcnMgb2JzZXJ2ZSB0aGUKKyAqIHNhbWUgYmVoYXZpb3IgYXMgYWNsX2dl dF9maWxlKDMpLgorICovCitzdGF0aWMgaW5saW5lIHN0cnVjdCBhY2wgKmFjbF9nZXRfZmlsZShj b25zdCBjaGFyICpwYXRoLCBpbnQgdHlwZSkKK3sKKwljb25zdCBjaGFyICp4YXR0cl9uYW1lOwor CXNzaXplX3Qgc2l6ZTsKKwlzdHJ1Y3QgYWNsX3hhdHRyICpheDsKKwlzdHJ1Y3QgYWNsICphY2w7 CisJaW50IGksIGNvdW50OworCisJeGF0dHJfbmFtZSA9IGFjbF90eXBlX3RvX25hbWUodHlwZSk7 CisJaWYgKCF4YXR0cl9uYW1lKSB7CisJCWVycm5vID0gRUlOVkFMOworCQlyZXR1cm4gTlVMTDsK Kwl9CisKKwlzaXplID0gZ2V0eGF0dHIocGF0aCwgeGF0dHJfbmFtZSwgTlVMTCwgMCk7CisJaWYg KHNpemUgPCAwKSB7CisJCWlmIChlcnJubyAhPSBFTk9EQVRBIHx8IHR5cGUgIT0gQUNMX1RZUEVf QUNDRVNTKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJcmV0dXJuIGFjbF9mcm9tX21vZGUocGF0aCk7 CisJfQorCisJLyogSGFuZGxlIHJhY2U6IHhhdHRyIHJlbW92ZWQgYmV0d2VlbiBzaXplIGNoZWNr IGFuZCBhY3R1YWwgcmVhZCAqLworCWlmIChzaXplID09IDApCisJCXJldHVybiBhY2xfZnJvbV9t b2RlKHBhdGgpOworCisJYXggPSBtYWxsb2Moc2l6ZSk7CisJaWYgKCFheCkKKwkJcmV0dXJuIE5V TEw7CisKKwlzaXplID0gZ2V0eGF0dHIocGF0aCwgeGF0dHJfbmFtZSwgYXgsIHNpemUpOworCWlm IChzaXplIDwgMCkgeworCQlmcmVlKGF4KTsKKwkJLyogSGFuZGxlIHJhY2U6IHhhdHRyIHJlbW92 ZWQgYmV0d2VlbiBzaXplIGNoZWNrIGFuZCByZWFkICovCisJCWlmIChlcnJubyA9PSBFTk9EQVRB ICYmIHR5cGUgPT0gQUNMX1RZUEVfQUNDRVNTKQorCQkJcmV0dXJuIGFjbF9mcm9tX21vZGUocGF0 aCk7CisJCXJldHVybiBOVUxMOworCX0KKworCWlmIChsZTMyX3RvX2NwdShheC0+aGVhZGVyLmFf dmVyc2lvbikgIT0gUE9TSVhfQUNMX1hBVFRSX1ZFUlNJT04pIHsKKwkJZnJlZShheCk7CisJCWVy cm5vID0gRUlOVkFMOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwljb3VudCA9IChzaXplIC0gc2l6 ZW9mKGF4LT5oZWFkZXIpKSAvCisJCXNpemVvZihzdHJ1Y3QgcG9zaXhfYWNsX3hhdHRyX2VudHJ5 KTsKKworCWFjbCA9IGFjbF9pbml0KCk7CisJaWYgKCFhY2wpIHsKKwkJZnJlZShheCk7CisJCXJl dHVybiBOVUxMOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCXVpbnQx Nl90IHRhZyA9IGxlMTZfdG9fY3B1KGF4LT5lbnRyaWVzW2ldLmVfdGFnKTsKKwkJdWludDE2X3Qg cGVybSA9IGxlMTZfdG9fY3B1KGF4LT5lbnRyaWVzW2ldLmVfcGVybSk7CisJCXVpbnQzMl90IGlk ID0gbGUzMl90b19jcHUoYXgtPmVudHJpZXNbaV0uZV9pZCk7CisKKwkJaWYgKGFjbF9hZGRfZW50 cnkoYWNsLCB0YWcsIHBlcm0sIGlkKSA8IDApIHsKKwkJCWFjbF9mcmVlKGFjbCk7CisJCQlmcmVl KGF4KTsKKwkJCXJldHVybiBOVUxMOworCQl9CisJfQorCisJZnJlZShheCk7CisJcmV0dXJuIGFj bDsKK30KKworLyoKKyAqIENoZWNrIGlmIGFuIEFDTCBlbnRyeSBoYXMgYSBzcGVjaWZpYyBwZXJt aXNzaW9uCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGFjbF9lbnRyeV9oYXNfcGVybShzdHJ1Y3Qg YWNsX2VudHJ5ICplbnRyeSwgdWludDE2X3QgcGVybSkKK3sKKwlyZXR1cm4gKGVudHJ5LT5wZXJt ICYgcGVybSkgPT0gcGVybTsKK30KKworLyoKKyAqIENoZWNrIGlmIGFuIEFDTCBlbnRyeSBoYXMg YWxsIHJ3eCBwZXJtaXNzaW9ucworICovCitzdGF0aWMgaW5saW5lIGludCBhY2xfZW50cnlfaGFz X3J3eChzdHJ1Y3QgYWNsX2VudHJ5ICplbnRyeSkKK3sKKwlyZXR1cm4gYWNsX2VudHJ5X2hhc19w ZXJtKGVudHJ5LAorCQkJCSAgQUNMX1JFQUQgfCBBQ0xfV1JJVEUgfCBBQ0xfRVhFQ1VURSk7Cit9 CisKKy8qCisgKiBGaW5kIGFuIEFDTCBlbnRyeSBieSB0YWcgdHlwZQorICovCitzdGF0aWMgaW5s aW5lIHN0cnVjdCBhY2xfZW50cnkgKmFjbF9maW5kX2VudHJ5KHN0cnVjdCBhY2wgKmFjbCwgdWlu dDE2X3QgdGFnLAorCQkJCQkgICAgICAgdWludDMyX3QgaWQpCit7CisJaW50IGk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgYWNsLT5jb3VudDsgaSsrKSB7CisJCWlmIChhY2wtPmVudHJpZXNbaV0udGFn ID09IHRhZykgeworCQkJaWYgKHRhZyA9PSBBQ0xfVVNFUiB8fCB0YWcgPT0gQUNMX0dST1VQKSB7 CisJCQkJaWYgKGFjbC0+ZW50cmllc1tpXS5pZCA9PSBpZCkKKwkJCQkJcmV0dXJuICZhY2wtPmVu dHJpZXNbaV07CisJCQl9IGVsc2UgeworCQkJCXJldHVybiAmYWNsLT5lbnRyaWVzW2ldOworCQkJ fQorCQl9CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBVcGRhdGUgQUNMIG1hc2sg cGVybWlzc2lvbnMKKyAqLworc3RhdGljIGlubGluZSBpbnQgYWNsX3NldF9tYXNrX3Blcm1zKHN0 cnVjdCBhY2wgKmFjbCwgdWludDE2X3QgcGVybSkKK3sKKwlzdHJ1Y3QgYWNsX2VudHJ5ICptYXNr X2VudHJ5ID0gYWNsX2ZpbmRfZW50cnkoYWNsLCBBQ0xfTUFTSywgMCk7CisKKwlpZiAoIW1hc2tf ZW50cnkpIHsKKwkJZXJybm8gPSBFTk9FTlQ7CisJCXJldHVybiAtMTsKKwl9CisKKwltYXNrX2Vu dHJ5LT5wZXJtID0gcGVybTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNy ZWF0ZV9maWxlX2FzKHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBtb2RlX3QgbW9kZSwKKwkJCQkgICBp bnQgdXNlX3VtYXNrLCBtb2RlX3QgbWFzaywgaW50IGV4cF9lcnJubykKK3sKKwlwaWRfdCBwaWQ7 CisKKwlwaWQgPSBTQUZFX0ZPUksoKTsKKwlpZiAoIXBpZCkgeworCQl1aWRfdCBmc3VpZDsKKwkJ Z2lkX3QgZnNnaWQ7CisJCXN0cnVjdCB0c3RfY2FwX3VzZXJfaGVhZGVyIGhkciA9IHsKKwkJCS52 ZXJzaW9uID0gMHgyMDA4MDUyMiwKKwkJCS5waWQgPSAwLAorCQl9OworCQlzdHJ1Y3QgdHN0X2Nh cF91c2VyX2RhdGEgZGF0YVsyXSA9IHt9OworCisJCVNBRkVfU0VUR1JPVVBTKDAsIE5VTEwpOwor CQlTQUZFX1NFVFJFU0dJRChnaWQsIGdpZCwgZ2lkKTsKKwkJU0FGRV9TRVRSRVNVSUQodWlkLCB1 aWQsIHVpZCk7CisKKwkJLyogRHJvcCBhbGwgY2FwYWJpbGl0aWVzIHRvIGVuc3VyZSBEQUMgY2hl Y2tzIGFyZSBlbmZvcmNlZCAqLworCQlpZiAodHN0X2NhcHNldCgmaGRyLCBkYXRhKSA8IDApCisJ CQl0c3RfYnJrKFRCUk9LIHwgVEVSUk5PLCAiY2Fwc2V0IGZhaWxlZCIpOworCisJCS8qCisJCSAq IHNldGZzdWlkKCkvc2V0ZnNnaWQoKSByZXR1cm4gdGhlIHByZXZpb3VzIHZhbHVlLCBub3QgLTEg b24KKwkJICogZmFpbHVyZS4gVmVyaWZ5IHRoZSBlZmZlY3RpdmUgZmlsZXN5c3RlbSBjcmVkZW50 aWFscyBieQorCQkgKiByZWFkaW5nIHRoZW0gYmFjay4KKwkJICovCisJCXNldGZzdWlkKHVpZCk7 CisJCWZzdWlkID0gc2V0ZnN1aWQoKHVpZF90KS0xKTsKKwkJaWYgKGZzdWlkICE9IHVpZCkKKwkJ CXRzdF9icmsoVEJST0ssCisJCQkJInNldGZzdWlkIHZlcmlmaWNhdGlvbiBmYWlsZWQsIGV4cGVj dGVkICV1IGdvdCAldSIsCisJCQkJKHVuc2lnbmVkIGludCl1aWQsICh1bnNpZ25lZCBpbnQpZnN1 aWQpOworCisJCXNldGZzZ2lkKGdpZCk7CisJCWZzZ2lkID0gc2V0ZnNnaWQoKGdpZF90KS0xKTsK KwkJaWYgKGZzZ2lkICE9IGdpZCkKKwkJCXRzdF9icmsoVEJST0ssCisJCQkJInNldGZzZ2lkIHZl cmlmaWNhdGlvbiBmYWlsZWQsIGV4cGVjdGVkICV1IGdvdCAldSIsCisJCQkJKHVuc2lnbmVkIGlu dClnaWQsICh1bnNpZ25lZCBpbnQpZnNnaWQpOworCisJCWlmICh1c2VfdW1hc2spCisJCQl1bWFz ayhtYXNrKTsKKworCQlpZiAoZXhwX2Vycm5vKSB7CisJCQlUU1RfRVhQX0ZBSUwyKG9wZW4oVEVT VEZJTEUsIE9fQ1JFQVQgfCBPX1dST05MWSwgbW9kZSksCisJCQkJICAgICAgZXhwX2Vycm5vLCAi b3BlbiglcykiLCBURVNURklMRSk7CisJCX0gZWxzZSB7CisJCQlUU1RfRVhQX0ZEKG9wZW4oVEVT VEZJTEUsIE9fQ1JFQVQgfCBPX1dST05MWSwgbW9kZSksCisJCQkJICAgIm9wZW4oJXMpIiwgVEVT VEZJTEUpOworCQkJaWYgKFRTVF9SRVQgPj0gMCkKKwkJCQlTQUZFX0NMT1NFKFRTVF9SRVQpOwor CQl9CisKKwkJZXhpdCgwKTsKKwl9CisKKwl0c3RfcmVhcF9jaGlsZHJlbigpOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgdHJ5X2NyZWF0ZV9hcyh1aWRfdCB1aWQsIGdpZF90IGdpZCwgbW9kZV90 IG1vZGUsCisJCQkJICBpbnQgZXhwX2Vycm5vKQoreworCWNyZWF0ZV9maWxlX2FzKHVpZCwgZ2lk LCBtb2RlLCAwLCAwLCBleHBfZXJybm8pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY3JlYXRl X3dpdGhfdW1hc2tfYXModWlkX3QgdWlkLCBnaWRfdCBnaWQsIG1vZGVfdCBtb2RlLAorCQkJCQkg bW9kZV90IG1hc2ssIGludCBleHBfZXJybm8pCit7CisJY3JlYXRlX2ZpbGVfYXModWlkLCBnaWQs IG1vZGUsIDEsIG1hc2ssIGV4cF9lcnJubyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjbGVh bnVwX3Rlc3RfcGF0aHModm9pZCkKK3sKKwlTQUZFX1RSWV9VTkxJTksoVEVTVFNZTUxJTkspOwor CVNBRkVfVFJZX1VOTElOSyhURVNURklMRSk7CisJU0FGRV9UUllfUk1ESVIoVEVTVERJUik7Cit9 CisKKyNlbmRpZiAvKiBIQVZFX1NZU19YQVRUUl9IICovCisKKyNlbmRpZiAvKiBBQ0xfTElCX0gg Ki8KZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvZnMvYWNsL2FjbF91c2VyX29iajAxLmMg Yi90ZXN0Y2FzZXMva2VybmVsL2ZzL2FjbC9hY2xfdXNlcl9vYmowMS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uODkyOTFkMjc1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz dGNhc2VzL2tlcm5lbC9mcy9hY2wvYWNsX3VzZXJfb2JqMDEuYwpAQCAtMCwwICsxLDEyNyBAQAor Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKKy8qCisgKiBDb3B5 cmlnaHQgKGMpIDIwMjYgSUJNCisgKgorICogT3JpZ2luYWwgc2hlbGwgdGVzdCBieSBLYWkgWmhh byAobHRjZDNAY24uaWJtLmNvbSkKKyAqIENvbnZlcnRlZCB0byBDIGJ5IFNhY2hpbiBTYW50IDxz YWNoaW5wQGxpbnV4LmlibS5jb20+CisgKi8KKworLypcCisgKiBUZXN0IEFDTF9VU0VSX09CSiBw ZXJtaXNzaW9ucyB1c2luZyBkaXJlY3QgeGF0dHIgbWFuaXB1bGF0aW9uLgorICoKKyAqIFZlcmlm eSB0aGF0IG93bmVyIHBlcm1pc3Npb25zIChBQ0xfVVNFUl9PQkopIGNvcnJlY3RseSBjb250cm9s IGFjY2VzcworICogdG8gZmlsZXMgYW5kIGRpcmVjdG9yaWVzLiBUaGUgdGVzdCB2YWxpZGF0ZXMg dGhhdDoKKyAqCisgKiAtIEFDTF9VU0VSX09CSiBwZXJtaXNzaW9ucyBhcmUgYXBwbGllZCBkaXJl Y3RseSBhcyB0aGUgb3duZXIgYml0cworICogLSBTZXR0aW5nIEFDTF9VU0VSX09CSj1yd3ggdmlh IDptYW5wYWdlOmBzZXR4YXR0cigyKWAgb3ZlcnJpZGVzCisgKiAgIGEgcHJldmlvdXMgOm1hbnBh Z2U6YGNobW9kKDIpYCByZXN0cmljdGlvbgorICogLSBPd25lciBwZXJtaXNzaW9ucyB3b3JrIGlu ZGVwZW5kZW50bHkgb2YgZ3JvdXAgYW5kIG90aGVyIHBlcm1pc3Npb25zCisgKgorICogVGhpcyB0 ZXN0IHVzZXMgYXJiaXRyYXJ5IFVJRHMgd2l0aG91dCBjcmVhdGluZyBhY3R1YWwgdXNlcnMsIHRl c3RpbmcKKyAqIG9ubHkgdGhlIGtlcm5lbCBBQ0wgaW1wbGVtZW50YXRpb24uCisgKi8KKworI2lu Y2x1ZGUgImFjbF9saWIuaCIKKworI2lmZGVmIEhBVkVfU1lTX1hBVFRSX0gKKworI2RlZmluZSBU RVNUX1VJRCAxMDAwCisjZGVmaW5lIFRFU1RfR0lEIDEwMDAKKworLyoKKyAqIFRlc3QgcGVybWlz c2lvbiBiaXRzIGRlbnkgYWNjZXNzLgorICogT3duZXIgc2hvdWxkIGJlIGRlbmllZCBmaWxlIGNy ZWF0aW9uIHdoZW4gZGlyZWN0b3J5IG1vZGUgaXMgMDU1NS4KKyAqLworc3RhdGljIHZvaWQgdGVz dF9kZW55X2J5X21vZGUodm9pZCkKK3sKKwl0c3RfcmVzKFRJTkZPLCAiVGVzdGluZyBwZXJtaXNz aW9uIGJpdHMgZGVueSBhY2Nlc3MiKTsKKwlyZXNldF90ZXN0X3BhdGgoKTsKKworCVNBRkVfQ0hP V04oVEVTVERJUiwgVEVTVF9VSUQsIFRFU1RfR0lEKTsKKwlTQUZFX0NITU9EKFRFU1RESVIsIDA1 NTUpOworCisJdHJ5X2NyZWF0ZV9hcyhURVNUX1VJRCwgVEVTVF9HSUQsIDA2NDQsIEVBQ0NFUyk7 Cit9CisKKy8qCisgKiBUZXN0IEFDTF9VU0VSX09CSiBncmFudHMgYWNjZXNzLgorICogU2V0dGlu ZyBBQ0xfVVNFUl9PQko9cnd4IHNob3VsZCByZXN0b3JlIG93bmVyIHdyaXRlIHBlcm1pc3Npb24g YW5kCisgKiBhbGxvdyBmaWxlIGNyZWF0aW9uIGFmdGVyIHRoZSByZXN0cmljdGl2ZSBtb2RlIGJh c2VsaW5lLgorICovCitzdGF0aWMgdm9pZCB0ZXN0X2dyYW50X2J5X2FjbCh2b2lkKQoreworCXN0 cnVjdCBhY2wgKmFjbDsKKworCXRzdF9yZXMoVElORk8sICJUZXN0aW5nIEFDTF9VU0VSX09CSiBn cmFudHMgYWNjZXNzIik7CisJcmVzZXRfdGVzdF9wYXRoKCk7CisKKwlTQUZFX0NIT1dOKFRFU1RE SVIsIFRFU1RfVUlELCBURVNUX0dJRCk7CisJU0FGRV9DSE1PRChURVNURElSLCAwNTU1KTsKKwor CWFjbCA9IGFjbF9pbml0KCk7CisKKwlhY2xfYWRkX2VudHJ5KGFjbCwgQUNMX1VTRVJfT0JKLAor CQkgICAgICBBQ0xfUkVBRCB8IEFDTF9XUklURSB8IEFDTF9FWEVDVVRFLCAwKTsKKwlhY2xfYWRk X2VudHJ5KGFjbCwgQUNMX0dST1VQX09CSiwgMCwgMCk7CisJYWNsX2FkZF9lbnRyeShhY2wsIEFD TF9PVEhFUiwgMCwgMCk7CisKKwlpZiAoYWNsX3NldF9maWxlKFRFU1RESVIsIEFDTF9UWVBFX0FD Q0VTUywgYWNsKSA8IDApIHsKKwkJaWYgKGVycm5vID09IEVPUE5PVFNVUFApIHsKKwkJCWFjbF9m cmVlKGFjbCk7CisJCQl0c3RfYnJrKFRDT05GIHwgVEVSUk5PLCAiQUNMIG5vdCBzdXBwb3J0ZWQi KTsKKwkJfQorCQlhY2xfZnJlZShhY2wpOworCQl0c3RfYnJrKFRCUk9LIHwgVEVSUk5PLCAiQUNM IHNldHVwIGZhaWxlZCIpOworCX0KKworCWFjbF9mcmVlKGFjbCk7CisKKwl0cnlfY3JlYXRlX2Fz KFRFU1RfVUlELCBURVNUX0dJRCwgMDY0NCwgMCk7CisKKwljbGVhbnVwX3Rlc3RmaWxlKCk7Cit9 CisKK3N0YXRpYyB2b2lkIHJ1bih1bnNpZ25lZCBpbnQgbikKK3sKKwlzd2l0Y2ggKG4pIHsKKwlj YXNlIDA6CisJCXRlc3RfZGVueV9ieV9tb2RlKCk7CisJCWJyZWFrOworCWNhc2UgMToKKwkJdGVz dF9ncmFudF9ieV9hY2woKTsKKwkJYnJlYWs7CisJfQorfQorCitzdGF0aWMgdm9pZCBzZXR1cCh2 b2lkKQoreworCXJlc2V0X3Rlc3RfcGF0aCgpOworfQorCitzdGF0aWMgdm9pZCBjbGVhbnVwKHZv aWQpCit7CisJY2xlYW51cF90ZXN0X3BhdGhzKCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdHN0X3Rl c3QgdGVzdCA9IHsKKwkudGVzdCA9IHJ1biwKKwkudGNudCA9IDIsCisJLnNldHVwID0gc2V0dXAs CisJLmNsZWFudXAgPSBjbGVhbnVwLAorCS5uZWVkc19yb290ID0gMSwKKwkubW91bnRfZGV2aWNl ID0gMSwKKwkubW50cG9pbnQgPSBNTlRQT0lOVCwKKwkuZm9ya3NfY2hpbGQgPSAxLAorCS5maWxl c3lzdGVtcyA9IChzdHJ1Y3QgdHN0X2ZzW10pIHsKKwkJey50eXBlID0gImV4dDIiLCAubW50X2Rh dGEgPSAiYWNsIn0sCisJCXsudHlwZSA9ICJleHQzIiwgLm1udF9kYXRhID0gImFjbCJ9LAorCQl7 LnR5cGUgPSAiZXh0NCIsIC5tbnRfZGF0YSA9ICJhY2wifSwKKwkJey50eXBlID0gInhmcyJ9LAor CQl7LnR5cGUgPSAiYnRyZnMifSwKKwkJe30KKwl9Cit9OworCisjZWxzZQorCVRTVF9URVNUX1RD T05GKCJzeXMveGF0dHIuaCBpcyBub3QgYXZhaWxhYmxlIik7CisjZW5kaWYKLS0gCjIuMzkuMQoK Ci0tIApNYWlsaW5nIGxpc3QgaW5mbzogaHR0cHM6Ly9saXN0cy5saW51eC5pdC9saXN0aW5mby9s dHAK