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 3F236C44501 for ; Thu, 9 Jul 2026 17:59:55 +0000 (UTC) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 7F55D3E1CDF for ; Thu, 9 Jul 2026 19:59:53 +0200 (CEST) Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [IPv6:2001:4b78:1:20::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 298103C72CA for ; Thu, 9 Jul 2026 19:59:38 +0200 (CEST) Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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-7.smtp.seeweb.it (Postfix) with ESMTPS id 1A9B820025E for ; Thu, 9 Jul 2026 19:59:36 +0200 (CEST) Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 669HmhGj2223997; Thu, 9 Jul 2026 17:59:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=pp1; bh=FccoWvJx6Vk6q3EUzscxCz8InR7D S2LmDB5yVOorAGE=; b=qL5L2mtjVBBKPjyLjBTHeFbD9Ef1YTjbN13F0zmJGe9J Z5b1f8bBPOROoHc29rFg17NXpoB5Wnyl07NiisX2Ib4OQ/077AwDTgaxLKTIly0T VF+rBo/ctWeqTPWteL5RdmnvfzEFWL46Wbt+Y3tpFNCS1aXRvzkGGupLDYib8fD+ 9j/M4gzrVK7p4JeHbOKrmpehUrGzlN2YBq3vpYIS3N7uTSRi/ItDxtBkdnrcJvCy JHJSF3giw53FrytZ54ufovDsiRcaeO4d0vN90S3dUBoOIZ+zNvLyt81ZXz9vFsg2 3XwQPosItkR6ugzld87+djuggSK6d/YTWR21hLIn5Q== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4f6rke3b9y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Jul 2026 17:59:35 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 669HnjIn027864; Thu, 9 Jul 2026 17:59:34 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4f7f6ydyjb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Jul 2026 17:59:34 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 669HxUdJ13566262 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 9 Jul 2026 17:59:30 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 19A4620043; Thu, 9 Jul 2026 17:59:30 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E5B0A20040; Thu, 9 Jul 2026 17:59:29 +0000 (GMT) Received: from li-276bd24c-2dcc-11b2-a85c-945b6f05615c.ehn-de.ibm.com (unknown [9.224.74.129]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 9 Jul 2026 17:59:29 +0000 (GMT) From: Jan Polensky To: ltp@lists.linux.it Date: Thu, 9 Jul 2026 19:59:27 +0200 Message-ID: <20260709175927.268677-1-japo@linux.ibm.com> X-Mailer: git-send-email 2.55.0 MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=M7J97Sws c=1 sm=1 tr=0 ts=6a4fe187 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=jl3wzsYOvEUkMG4QHxUA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA5MDE3NSBTYWx0ZWRfX1brdP2MBCyVz oNjugbE2g4wJaSabbemTHdD3nXbfrFzo2ANna1+suv89tf3FT9Z3wOnaAFc3FvZz7XgNzkW8mIS Nv8qr6SJ4kHVIWqA6H3XTqNrVAylo7T+/SjvyfuqkSGEadz/D6uIOjWw13sOsrOP571O7qBnjmI F4u78/aHMdle1JmhxqdWhAt4d3sjfayh0YExTnkJPsCXKGbOyTHFcC+cxnGcHf0Z6Fnwrt5lssR XtGpdzeqVXoLEa3bMTHYqWbsOpHkkDf5a9lIoxtOfWaTp2BpSlB5CzjvJ4v4sADfMzkh/HA5dzI mrBW89rbBFZy85ebD3o+AvZp3KHwzwPBLtY0dR89fTn3C1+0ymmjYqFvEpeNEdnH+9UDFqH2alP /p4AbSeNwlexKX8mOxHp6SqvcjzPzPQadyrJJdXBr5xdFHV7k7HNFDAXhMZqGRCzV1pK7Xx+xuS OdAqR3F57/oeXhjBHAg== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA5MDE3NSBTYWx0ZWRfXw9qcwcnHM1c0 2efizezJo9HmbZ1ggau26pt2Evq5Tcf97ttWd5rjnUIynuZKErFRl+eDjhfb/r/77usrs4TslAU Z1NU84taR+rL5zR/OMhIUuR114VVTxE= X-Proofpoint-GUID: rzh4ODPpjr4ak5gE0ZpzH0Hs6SAWNgZx X-Proofpoint-ORIG-GUID: rzh4ODPpjr4ak5gE0ZpzH0Hs6SAWNgZx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-09_04,2026-07-09_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 adultscore=0 priorityscore=1501 bulkscore=0 spamscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607090175 X-Virus-Scanned: clamav-milter 1.0.9 at in-7.smtp.seeweb.it X-Virus-Status: Clean Subject: [LTP] [PATCH v6 1/1] thp04: Add ptrace mode and fix tracee stop synchronization 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" VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIENPTkZJR19QUk9DX01FTV9GT1JDRV9QVFJBQ0U9 eSBrZXJuZWxzIHdoZXJlCmRpcmVjdCB3cml0ZXMgdG8gL3Byb2Mvc2VsZi9tZW0gYXJlIGRpc2Fi bGVkLiBUaGUgdGVzdCBub3cgcHJvYmVzIHRoZQprZXJuZWwgcG9saWN5IGF0IHJ1bnRpbWUgYW5k IGFkYXB0cyBpdHMgZXhlY3V0aW9uIHN0cmF0ZWd5IGFjY29yZGluZ2x5LgoKVGVzdCBNb2RlczoK ClBST0NfTUVNX0FMV0FZUyAoZGVmYXVsdCBvbiBtb3N0IHN5c3RlbXMpOgotIENoaWxkIHByb2Nl c3Mgd3JpdGVzIHRvIGl0cyBvd24gbWVtb3J5IHZpYSAvcHJvYy9zZWxmL21lbQotIENvbmN1cnJl bnQgZXhlY3V0aW9uOiB3cml0ZXMgcmFjZSB3aXRoIG1hZHZpc2UoKSBjYWxscwotIFVzZXMgZnV6 enktc3luYyB0byBtYXhpbWl6ZSByYWNlIHdpbmRvdwotIFRoaXMgaXMgdGhlIG9yaWdpbmFsIENW RS0yMDE3LTEwMDA0MDUgcmFjZSBjb25kaXRpb24gdGVzdAoKUFJPQ19NRU1fUFRSQUNFIChDT05G SUdfUFJPQ19NRU1fRk9SQ0VfUFRSQUNFPXkpOgotIFBhcmVudCB3cml0ZXMgdG8gdHJhY2VlJ3Mg bWVtb3J5IHZpYSAvcHJvYy9waWQvbWVtCi0gV3JpdGUtc3RvcC1jb250aW51ZSBjeWNsZTogdHJh Y2VlIG11c3QgYmUgU1RPUFBFRCBmb3Igd3JpdGVzCi0gQWx0ZXJuYXRpbmcgZXhlY3V0aW9uOiBw YXJlbnQgd3JpdGVzIOKGkiB0cmFjZWUgcnVucyBtYWR2aXNlIOKGkiBzdG9wcwotIFJlcXVpcmVk IGJlY2F1c2UgL3Byb2MvcGlkL21lbSB3cml0ZXMgbmVlZCBQVFJBQ0VfTU9ERV9BVFRBQ0gKLSBO b3RlOiBTZXJpYWxpemF0aW9uIGVsaW1pbmF0ZXMgdGhlIHJhY2U7IHRlc3RzIHdyaXRlIGZ1bmN0 aW9uYWxpdHkKClRoZSB0ZXN0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB3aGljaCBtb2RlIHRvIHVz ZSBieSBhdHRlbXB0aW5nIGEgZGlyZWN0CndyaXRlIHRvIC9wcm9jL3NlbGYvbWVtIGR1cmluZyBz ZXR1cC4gSWYgdGhhdCBmYWlscyB3aXRoIEVJTywgaXQgZmFsbHMKYmFjayB0byBwdHJhY2UgbW9k ZS4KCktlcm5lbCBjb21tYW5kIGxpbmUgb3ZlcnJpZGU6IHByb2NfbWVtLmZvcmNlX292ZXJyaWRl PWFsd2F5c3xwdHJhY2V8bmV2ZXIKClNpZ25lZC1vZmYtYnk6IEphbiBQb2xlbnNreSA8amFwb0Bs aW51eC5pYm0uY29tPgotLS0KTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjYw NzA5MTQzNTUxLjE0NzI2OC0xLWphcG9AbGludXguaWJtLmNvbS8KCkNoYW5nZXMgc2luY2UgdjU6 Ci0gUmVtb3ZlIHVucmVhY2hhYmxlIHRzdF9icmsoKSBpbiBzZXR1cCgpIChkZWFkIGNvZGUpCi0g Rml4IG1pc2xlYWRpbmcgVEJST0sgd2hlbiB0cmFjZWUgZXhpdHMgd2l0aCBURkFJTAogIEFkZCBl eHBsaWNpdCBXSUZFWElURUQgY2hlY2sgaW4gcnVuX3Byb2NfbWVtX3B0cmFjZV9zZXJpYWxpemVk KCkKICB0byBkaXN0aW5ndWlzaCB0ZXN0IGZhaWx1cmVzIGZyb20gaW5mcmFzdHJ1Y3R1cmUgcHJv YmxlbXMKCkNoYW5nZXMgc2luY2UgdjQ6Ci0gRml4IHB0cmFjZSBjbGVhbnVwIG93bmVyc2hpcCBi eSBmcmVlaW5nIG9ubHkgc2hhcmVkIHBhcmVudCBzdGF0ZS4KLSBBZGQgc2Vjb25kIGNoZWNrcG9p bnQgdG8gc2VyaWFsaXplIFBUUkFDRV9TRUlaRSBiZWZvcmUgdHJhY2VlIFNJR1NUT1AuCi0gUmVu YW1lIHB0cmFjZSBydW5uZXIgdG8gcmVmbGVjdCBzZXJpYWxpemVkIGV4ZWN1dGlvbi4KLSBDbGFy aWZ5IHN1YmplY3QgYW5kIGNvbW1pdCB0ZXh0IGFyb3VuZCB0cmFjZWUtc3RvcCBzeW5jaHJvbml6 YXRpb24uCi0gRml4IExUUCBkb2N1bWVudGF0aW9uIGJsb2NrIG9wZW5pbmcgZm9yIGNhdGFsb2cg ZXhwb3J0LgoKQ2hhbmdlcyBzaW5jZSB2MzoKLSBNb3ZlIHRyYWNlZSBsaWZlY3ljbGUgaW50byBy dW4oKSB0byBzdXBwb3J0IHJlLWludm9jYXRpb24gd2l0aCAtaSBOIChBbmRyZWEgQ2VydmVzYXRv KQogICogRWFjaCBydW4oKSBpbnZvY2F0aW9uIHNwYXducyBmcmVzaCB0cmFjZWUgdmlhIHNldHVw X3B0cmFjZV90cmFjZWUoKQogICogVHJhY2VlIHJ1bnMgaW5maW5pdGUgbG9vcCwgcGFyZW50IGNv bnRyb2xzIHRlcm1pbmF0aW9uCiAgKiBBZnRlciAxMDAwIGl0ZXJhdGlvbnM6IFBUUkFDRV9ERVRB Q0gg4oaSIFNJR0tJTEwg4oaSIFNBRkVfV0FJVFBJRAogICogY2xlYW51cCgpIG9ubHkgaGFuZGxl cyBlcnJvciBjYXNlcyAodXNlcyB0c3RfcmVhcF9jaGlsZHJlbigpKQotIFZhbGlkYXRlZCBvbiBz MzkweCB3aXRoIC1pIDIgYW5kIC1pIDUgKGJvdGggUEFTUykKCkNoYW5nZXMgc2luY2UgdjI6Ci0g QWRkZWQgZG9jdW1lbnRhdGlvbiBjbGFyaWZ5aW5nIHRoYXQgcHRyYWNlIG1vZGUgc2VyaWFsaXph dGlvbiBlbGltaW5hdGVzIHRoZSBDVkUgcmFjZQotIEZpeGVkIG1pc3NpbmcgbmV3bGluZSBhdCBl bmQgb2YgZmlsZQotIEFkZHJlc3NlZCByZXZpZXcgZmVlZGJhY2sgb24gcmFjZSBjb25kaXRpb24g dGVzdGluZyBsaW1pdGF0aW9ucwoKQ2hhbmdlcyBzaW5jZSB2MToKLSBkZXRlY3QgcHJvY19tZW0u Zm9yY2Vfb3ZlcnJpZGUgLyBrZXJuZWwgY29uZmlnIGluc3RlYWQgb2YgcmVseWluZyBvbmx5IG9u IGEgcHJvYmUgd3JpdGUKLSBmaXgga2VybmVsIHBhcmFtZXRlciBuYW1pbmcgcGVyIHJldmlldwot IGFkZHJlc3MgZmVlZGJhY2sgZnJvbSBDeXJpbCBIcnViaXMgaW4gcHJldmlvdXMgdGhyZWFkCgog dGVzdGNhc2VzL2tlcm5lbC9tZW0vdGhwL3RocDA0LmMgfCA0MzQgKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDM4MSBpbnNlcnRpb25zKCspLCA1MyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL21lbS90aHAvdGhwMDQuYyBi L3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3RocC90aHAwNC5jCmluZGV4IDE2ZDc2NmMzNDliNy4uZGJh NDdlMjk1ZDljIDEwMDY0NAotLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS90aHAvdGhwMDQuYwor KysgYi90ZXN0Y2FzZXMva2VybmVsL21lbS90aHAvdGhwMDQuYwpAQCAtMyw3ICszLDcgQEAKICAq IENvcHlyaWdodCAoYykgMjAxOSBTVVNFIExMQyA8bWRvdWNoYUBzdXNlLmN6PgogICovCgotLyoK Ky8qXAogICogQ1ZFLTIwMTctMTAwMDQwNQogICoKICAqIENoZWNrIGZvciB0aGUgSHVnZSBEaXJ0 eSBDb3cgdnVsbmVyYWJpbGl0eSB3aGljaCBhbGxvd3MgYSB1c2Vyc3BhY2UgcHJvY2VzcwpAQCAt MjEsMjcgKzIxLDY3IEBACiAgKiBPbiBvbGQga2VybmVsIHN1Y2ggYXMgNC45LCBpdCBoYXMgZml4 ZWQgdGhlIERpcnR5IENvdyBidWcgYnV0IGEgc2ltaWxhciBjaGVjawogICogaW4gaHVnZV9tZW1v cnkuYyB3YXMgZm9yZ290dGVuLiAgQXMgYSByZXN1bHQsIHJlbW90ZSBtZW1vcnkgd3JpdGVzIHRv IHJvIHJlZ2lvbnMKICAqIG9mIG1lbW9yeSBiYWNrZWQgYnkgdHJhbnNwYXJlbnQgaHVnZSBwYWdl cyBjYXVzZSBhbiBpbmZpbml0ZSBsb29wIGluIHRoZSBrZXJuZWwuCi0gKiBXaGlsZSBpbiB0aGlz IHN0YXRlIHRoZSBwcm9jZXNzIGlzIHN0aWwgU0lHS0lMTGFibGUsIGJ1dCBsaXR0bGUgZWxzZSB3 b3Jrcy4KKyAqIFdoaWxlIGluIHRoaXMgc3RhdGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwgU0lHS0lM TGFibGUsIGJ1dCBsaXR0bGUgZWxzZSB3b3Jrcy4KICAqIEl0IGlzIGFsc28gYSByZWdyZXNzaW9u IHRlc3QgYWJvdXQga2VybmVsCiAgKiBjb21taXQgODMxMGQ0OGIxMjVkKCJodWdlX21lbW9yeS5j OiByZXNwZWN0IEZPTExfRk9SQ0UvRk9MTF9DT1cgZm9yIHRocCIpLgorICoKKyAqIFRlc3QgTW9k ZXMgKGNvbnRyb2xsZWQgYnkgcHJvY19tZW0uZm9yY2Vfb3ZlcnJpZGU9YWx3YXlzfHB0cmFjZXxu ZXZlcik6CisgKgorICogUFJPQ19NRU1fQUxXQVlTOiBEaXJlY3Qgd3JpdGVzIHRvIC9wcm9jL3Nl bGYvbWVtIChkZWZhdWx0IG9uIG1vc3Qgc3lzdGVtcykKKyAqICAgLSBDaGlsZCBwcm9jZXNzIHdy aXRlcyB0byBpdHMgb3duIG1lbW9yeSB2aWEgL3Byb2Mvc2VsZi9tZW0KKyAqICAgLSBDb25jdXJy ZW50IGV4ZWN1dGlvbjogd3JpdGVzIHJhY2Ugd2l0aCBtYWR2aXNlKCkgY2FsbHMKKyAqICAgLSBV c2VzIGZ1enp5LXN5bmMgdG8gbWF4aW1pemUgcmFjZSB3aW5kb3cKKyAqCisgKiBQUk9DX01FTV9Q VFJBQ0U6IFB0cmFjZS1iYXNlZCB3cml0ZXMgdG8gL3Byb2MvcGlkL21lbSAoQ09ORklHX1BST0Nf TUVNX0ZPUkNFX1BUUkFDRT15KQorICogICAtIFBhcmVudCB3cml0ZXMgdG8gdHJhY2VlJ3MgbWVt b3J5IHZpYSAvcHJvYy9waWQvbWVtCisgKiAgIC0gV3JpdGUtc3RvcC1jb250aW51ZSBjeWNsZTog dHJhY2VlIG11c3QgYmUgU1RPUFBFRCBmb3Igd3JpdGVzIHRvIHN1Y2NlZWQKKyAqICAgLSBBbHRl cm5hdGluZyBleGVjdXRpb246IHBhcmVudCB3cml0ZXMg4oaSIHRyYWNlZSBydW5zIG1hZHZpc2Ug 4oaSIHRyYWNlZSBzdG9wcyDihpIgcmVwZWF0CisgKiAgIC0gUmVxdWlyZWQgYmVjYXVzZSAvcHJv Yy9waWQvbWVtIHdyaXRlcyBuZWVkIFBUUkFDRV9NT0RFX0FUVEFDSCAoc3RvcHBlZCBzdGF0ZSkK KyAqICAgLSBOb3RlOiBTZXJpYWxpemF0aW9uIGVsaW1pbmF0ZXMgdGhlIHJhY2U7IHRlc3RzIHdy aXRlIGZ1bmN0aW9uYWxpdHksIG5vdCB0aGUgQ1ZFIHJhY2UKICAqLwoKLSNpbmNsdWRlICJ0c3Rf dGVzdC5oIgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KKyNp bmNsdWRlIDxzeXMvd2FpdC5oPgorCiAjaW5jbHVkZSAibGFwaS9tbWFwLmgiCisKKy8qIFBUUkFD RSBtb2RlIGlzIHNlcmlhbGl6ZWQgYW5kIHRoZXJlZm9yZSB1c2VzIGZld2VyIGl0ZXJhdGlvbnMu ICovCisjZGVmaW5lIFBUUkFDRV9URVNUX0lURVJBVElPTlMgMTAwMAorI2luY2x1ZGUgInRzdF9j aGVja3BvaW50LmgiCiAjaW5jbHVkZSAidHN0X2Z1enp5X3N5bmMuaCIKKyNpbmNsdWRlICJ0c3Rf a2NvbmZpZy5oIgorI2luY2x1ZGUgInRzdF90ZXN0LmgiCgotc3RhdGljIGNoYXIgKndyaXRlX3Ro cCwgKnJlYWRfdGhwOwotc3RhdGljIGludCAqd3JpdGVfcHRyLCAqcmVhZF9wdHI7Ci1zdGF0aWMg c2l6ZV90IHRocF9zaXplOwotc3RhdGljIGludCB3cml0ZWZkID0gLTEsIHJlYWRmZCA9IC0xOwot c3RhdGljIHN0cnVjdCB0c3RfZnpzeW5jX3BhaXIgZnpzeW5jX3BhaXI7CitlbnVtIHByb2NfbWVt X21vZGUgeworCVBST0NfTUVNX0FMV0FZUywKKwlQUk9DX01FTV9QVFJBQ0UsCisJUFJPQ19NRU1f TkVWRVIsCit9OwoKLXN0YXRpYyB2b2lkICphbGxvY196ZXJvX3BhZ2Uodm9pZCAqYmFzZWFkZHIp CitzdHJ1Y3QgY2hpbGRfc3RhdGUgeworCWNoYXIgKndyaXRlX3RocDsKKwljaGFyICpyZWFkX3Ro cDsKKwlpbnQgKndyaXRlX3B0cjsKKwlpbnQgKnJlYWRfcHRyOworCXNpemVfdCB0aHBfc2l6ZTsK KwlpbnQgd3JpdGVmZDsKKwlpbnQgcmVhZGZkOworCXN0cnVjdCB0c3RfZnpzeW5jX3BhaXIgZnpz eW5jX3BhaXI7Cit9OworCitzdGF0aWMgcGlkX3QgdHJhY2VlX3BpZDsKKy8qIE1vZGUgcmVxdWVz dGVkIGJ5IGtlcm5lbCBjb21tYW5kIGxpbmUgcGFyc2luZy4gRG8gbm90IG11dGF0ZSBkdXJpbmcg cHJvYmluZy4gKi8KK3N0YXRpYyBlbnVtIHByb2NfbWVtX21vZGUgdXNlcl9tb2RlID0gUFJPQ19N RU1fQUxXQVlTOworLyogUnVudGltZSBtb2RlIHNlbGVjdGVkIGFmdGVyIGNoZWNraW5nIHdoZXRo ZXIgZGlyZWN0IC9wcm9jL3NlbGYvbWVtIHdyaXRlcyB3b3JrLiAqLworc3RhdGljIGVudW0gcHJv Y19tZW1fbW9kZSBlZmZlY3RpdmVfbW9kZSA9IFBST0NfTUVNX0FMV0FZUzsKK3N0YXRpYyBzdHJ1 Y3QgY2hpbGRfc3RhdGUgKmNoaWxkOworCitzdGF0aWMgdm9pZCAqYWxsb2NfemVyb19wYWdlKHZv aWQgKmJhc2VhZGRyLCBzaXplX3QgdGhwX3NpemUpCiB7CiAJaW50IGk7CiAJdm9pZCAqcmV0OwoK LQkvKiBGaW5kIGFsaWduZWQgY2h1bmsgb2YgYWRkcmVzcyBzcGFjZS4gTUFQX0hVR0VUTEIgZG9l c24ndCB3b3JrLiAqLwogCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrLCBiYXNlYWRkciArPSB0aHBf c2l6ZSkgewogCQlyZXQgPSBtbWFwKGJhc2VhZGRyLCB0aHBfc2l6ZSwgUFJPVF9SRUFELAogCQkJ TUFQX1BSSVZBVEUgfCBNQVBfQU5PTllNT1VTLCAtMSwgMCk7CkBAIC02Nyw0NyArMTA3LDg2IEBA IHN0YXRpYyB2b2lkICphbGxvY196ZXJvX3BhZ2Uodm9pZCAqYmFzZWFkZHIpCiAJfQoKIAl0c3Rf YnJrKFRCUk9LLCAiQ2Fubm90IG1hcCBodWdlIHplcm8gcGFnZSBuZWFyIHRoZSBzcGVjaWZpZWQg YWRkcmVzcyIpOwotCXJldHVybiBOVUxMOwkvKiBTaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8K KwlyZXR1cm4gTlVMTDsKIH0KCi1zdGF0aWMgdm9pZCBzZXR1cCh2b2lkKQorc3RhdGljIHZvaWQg ZnJlZV9jaGlsZF9zdGF0ZSh2b2lkKQoreworCWlmIChjaGlsZCkgeworCQlTQUZFX01VTk1BUChj aGlsZCwgc2l6ZW9mKCpjaGlsZCkpOworCQljaGlsZCA9IE5VTEw7CisJfQorfQorCitzdGF0aWMg dm9pZCBjaGlsZF9jbGVhbnVwKHZvaWQpCit7CisJaWYgKCFjaGlsZCkKKwkJcmV0dXJuOworCisJ aWYgKGVmZmVjdGl2ZV9tb2RlID09IFBST0NfTUVNX0FMV0FZUykKKwkJdHN0X2Z6c3luY19wYWly X2NsZWFudXAoJmNoaWxkLT5menN5bmNfcGFpcik7CisKKwlpZiAoY2hpbGQtPnJlYWRmZCA+PSAw KQorCQlTQUZFX0NMT1NFKGNoaWxkLT5yZWFkZmQpOworCisJaWYgKGNoaWxkLT53cml0ZWZkID49 IDApCisJCVNBRkVfQ0xPU0UoY2hpbGQtPndyaXRlZmQpOworCisJaWYgKGNoaWxkLT5yZWFkX3Ro cCkKKwkJU0FGRV9NVU5NQVAoY2hpbGQtPnJlYWRfdGhwLCBjaGlsZC0+dGhwX3NpemUpOworCisJ aWYgKGNoaWxkLT53cml0ZV90aHApCisJCVNBRkVfTVVOTUFQKGNoaWxkLT53cml0ZV90aHAsIGNo aWxkLT50aHBfc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNoaWxkX3NldHVwKHZvaWQpCiB7CiAJ c2l6ZV90IGk7CgotCXRocF9zaXplID0gdHN0X2dldF9odWdlcGFnZV9zaXplKCk7CisJY2hpbGQt PnRocF9zaXplID0gdHN0X2dldF9odWdlcGFnZV9zaXplKCk7CgotCWlmICghdGhwX3NpemUpCisJ aWYgKCFjaGlsZC0+dGhwX3NpemUpCiAJCXRzdF9icmsoVENPTkYsICJLZXJuZWwgZG9lcyBub3Qg c3VwcG9ydCBodWdlIHBhZ2VzIik7CgotCXdyaXRlX3RocCA9IGFsbG9jX3plcm9fcGFnZSgodm9p ZCAqKXRocF9zaXplKTsKKwljaGlsZC0+d3JpdGVfdGhwID0gYWxsb2NfemVyb19wYWdlKCh2b2lk ICopY2hpbGQtPnRocF9zaXplLAorCQljaGlsZC0+dGhwX3NpemUpOwoKLQlmb3IgKGkgPSAwOyBp IDwgdGhwX3NpemU7IGkrKykgewotCQlpZiAod3JpdGVfdGhwW2ldKQorCWZvciAoaSA9IDA7IGkg PCBjaGlsZC0+dGhwX3NpemU7IGkrKykgeworCQlpZiAoY2hpbGQtPndyaXRlX3RocFtpXSkKIAkJ CXRzdF9icmsoVENPTkYsICJIdWdlIHplcm8gcGFnZSBpcyBwcmUtcG9sbHV0ZWQiKTsKIAl9Cgot CS8qIGxlYXZlIGEgaG9sZSBiZXR3ZWVuIHJlYWQgYW5kIHdyaXRlIFRIUCB0byBwcmV2ZW50IG1l cmdlICovCi0JcmVhZF90aHAgPSBhbGxvY196ZXJvX3BhZ2Uod3JpdGVfdGhwICsgMiAqIHRocF9z aXplKTsKLQl3cml0ZV9wdHIgPSAoaW50ICopKHdyaXRlX3RocCArIHRocF9zaXplIC0gc2l6ZW9m KGludCkpOwotCXJlYWRfcHRyID0gKGludCAqKShyZWFkX3RocCArIHRocF9zaXplIC0gc2l6ZW9m KGludCkpOwotCXdyaXRlZmQgPSBTQUZFX09QRU4oIi9wcm9jL3NlbGYvbWVtIiwgT19SRFdSKTsK LQlyZWFkZmQgPSBTQUZFX09QRU4oIi9wcm9jL3NlbGYvbWVtIiwgT19SRFdSKTsKKwljaGlsZC0+ cmVhZF90aHAgPSBhbGxvY196ZXJvX3BhZ2UoY2hpbGQtPndyaXRlX3RocCArIDIgKiBjaGlsZC0+ dGhwX3NpemUsCisJCWNoaWxkLT50aHBfc2l6ZSk7CisJLyogd3JpdGVfcHRyIHBvaW50cyB0byBs YXN0IGludCBpbiB3cml0ZV90aHAgcGFnZSAqLworCWNoaWxkLT53cml0ZV9wdHIgPSAoaW50ICop KGNoaWxkLT53cml0ZV90aHAgKyBjaGlsZC0+dGhwX3NpemUgLSBzaXplb2YoaW50KSk7CisJLyog cmVhZF9wdHIgcG9pbnRzIHRvIGxhc3QgaW50IGluIHJlYWRfdGhwIHBhZ2UgKi8KKwljaGlsZC0+ cmVhZF9wdHIgPSAoaW50ICopKGNoaWxkLT5yZWFkX3RocCArIGNoaWxkLT50aHBfc2l6ZSAtIHNp emVvZihpbnQpKTsKCi0JZnpzeW5jX3BhaXIuZXhlY19sb29wcyA9IDEwMDAwMDsKLQl0c3RfZnpz eW5jX3BhaXJfaW5pdCgmZnpzeW5jX3BhaXIpOworCS8qIEluIHB0cmFjZSBtb2RlLCBwYXJlbnQg b3BlbnMgL3Byb2MvPHBpZD4vbWVtLCBub3QgY2hpbGQgKi8KKwlpZiAoZWZmZWN0aXZlX21vZGUg PT0gUFJPQ19NRU1fQUxXQVlTKSB7CisJCWNoaWxkLT53cml0ZWZkID0gU0FGRV9PUEVOKCIvcHJv Yy9zZWxmL21lbSIsIE9fUkRXUik7CisJCWNoaWxkLT5yZWFkZmQgPSBTQUZFX09QRU4oIi9wcm9j L3NlbGYvbWVtIiwgT19SRFdSKTsKKwkJY2hpbGQtPmZ6c3luY19wYWlyLmV4ZWNfbG9vcHMgPSAx MDAwMDA7CisJCXRzdF9menN5bmNfcGFpcl9pbml0KCZjaGlsZC0+ZnpzeW5jX3BhaXIpOworCX0g ZWxzZSB7CisJCWNoaWxkLT53cml0ZWZkID0gLTE7CisJCWNoaWxkLT5yZWFkZmQgPSAtMTsKKwl9 CiB9Cgotc3RhdGljIHZvaWQgKnRocmVhZF9ydW4odm9pZCAqYXJnKQorLyogUHJlc2VydmUgdGhl IG9yaWdpbmFsIGZ1enp5LXN5bmMgcmFjZTogdGhpcyBpcyB0aGUgYWN0dWFsIENWRSB0cmlnZ2Vy IG1lY2hhbmlzbS4gKi8KK3N0YXRpYyB2b2lkICp0aHJlYWRfcnVuX2Fsd2F5cyh2b2lkICphcmcp CiB7CiAJaW50IGM7CgotCXdoaWxlICh0c3RfZnpzeW5jX3J1bl9iKCZmenN5bmNfcGFpcikpIHsK LQkJdHN0X2Z6c3luY19zdGFydF9yYWNlX2IoJmZ6c3luY19wYWlyKTsKLQkJbWFkdmlzZSh3cml0 ZV90aHAsIHRocF9zaXplLCBNQURWX0RPTlRORUVEKTsKLQkJbWVtY3B5KCZjLCB3cml0ZV9wdHIs IHNpemVvZihjKSk7Ci0JCVNBRkVfTFNFRUsocmVhZGZkLCAob2ZmX3Qpd3JpdGVfcHRyLCBTRUVL X1NFVCk7Ci0JCVNBRkVfUkVBRCgxLCByZWFkZmQsICZjLCBzaXplb2YoaW50KSk7Ci0JCXRzdF9m enN5bmNfZW5kX3JhY2VfYigmZnpzeW5jX3BhaXIpOworCXdoaWxlICh0c3RfZnpzeW5jX3J1bl9i KCZjaGlsZC0+ZnpzeW5jX3BhaXIpKSB7CisJCXRzdF9menN5bmNfc3RhcnRfcmFjZV9iKCZjaGls ZC0+ZnpzeW5jX3BhaXIpOworCQltYWR2aXNlKGNoaWxkLT53cml0ZV90aHAsIGNoaWxkLT50aHBf c2l6ZSwgTUFEVl9ET05UTkVFRCk7CisJCW1lbWNweSgmYywgY2hpbGQtPndyaXRlX3B0ciwgc2l6 ZW9mKGMpKTsKKwkJU0FGRV9MU0VFSyhjaGlsZC0+cmVhZGZkLCAob2ZmX3QpY2hpbGQtPndyaXRl X3B0ciwgU0VFS19TRVQpOworCQlTQUZFX1JFQUQoMSwgY2hpbGQtPnJlYWRmZCwgJmMsIHNpemVv ZihpbnQpKTsKKwkJdHN0X2Z6c3luY19lbmRfcmFjZV9iKCZjaGlsZC0+ZnpzeW5jX3BhaXIpOwog CQkvKiBXYWl0IGZvciBkaXJ0eSBwYWdlIGhhbmRsaW5nIGJlZm9yZSBuZXh0IG1hZHZpc2UoKSAq LwogCQl1c2xlZXAoMTApOwogCX0KQEAgLTExNSwyNCArMTk0LDI0IEBAIHN0YXRpYyB2b2lkICp0 aHJlYWRfcnVuKHZvaWQgKmFyZykKIAlyZXR1cm4gYXJnOwogfQoKLXN0YXRpYyB2b2lkIHJ1bih2 b2lkKQorc3RhdGljIHZvaWQgcnVuX3Byb2NfbWVtX2Fsd2F5c19yYWNlKHZvaWQpCiB7CiAJaW50 IGMgPSAweGRlYWRiZWVmOwoKLQl0c3RfZnpzeW5jX3BhaXJfcmVzZXQoJmZ6c3luY19wYWlyLCB0 aHJlYWRfcnVuKTsKKwl0c3RfZnpzeW5jX3BhaXJfcmVzZXQoJmNoaWxkLT5menN5bmNfcGFpciwg dGhyZWFkX3J1bl9hbHdheXMpOwoKLQl3aGlsZSAodHN0X2Z6c3luY19ydW5fYSgmZnpzeW5jX3Bh aXIpKSB7CisJd2hpbGUgKHRzdF9menN5bmNfcnVuX2EoJmNoaWxkLT5menN5bmNfcGFpcikpIHsK IAkJLyogV3JpdGUgaW50byB0aGUgbWFpbiBodWdlIHBhZ2UgKi8KLQkJdHN0X2Z6c3luY19zdGFy dF9yYWNlX2EoJmZ6c3luY19wYWlyKTsKLQkJU0FGRV9MU0VFSyh3cml0ZWZkLCAob2ZmX3Qpd3Jp dGVfcHRyLCBTRUVLX1NFVCk7Ci0JCW1hZHZpc2Uod3JpdGVfdGhwLCB0aHBfc2l6ZSwgTUFEVl9E T05UTkVFRCk7Ci0JCVNBRkVfV1JJVEUoU0FGRV9XUklURV9BTEwsIHdyaXRlZmQsICZjLCBzaXpl b2YoaW50KSk7Ci0JCXRzdF9menN5bmNfZW5kX3JhY2VfYSgmZnpzeW5jX3BhaXIpOworCQl0c3Rf ZnpzeW5jX3N0YXJ0X3JhY2VfYSgmY2hpbGQtPmZ6c3luY19wYWlyKTsKKwkJU0FGRV9MU0VFSyhj aGlsZC0+d3JpdGVmZCwgKG9mZl90KWNoaWxkLT53cml0ZV9wdHIsIFNFRUtfU0VUKTsKKwkJbWFk dmlzZShjaGlsZC0+d3JpdGVfdGhwLCBjaGlsZC0+dGhwX3NpemUsIE1BRFZfRE9OVE5FRUQpOwor CQlTQUZFX1dSSVRFKFNBRkVfV1JJVEVfQUxMLCBjaGlsZC0+d3JpdGVmZCwgJmMsIHNpemVvZihp bnQpKTsKKwkJdHN0X2Z6c3luY19lbmRfcmFjZV9hKCZjaGlsZC0+ZnpzeW5jX3BhaXIpOwoKIAkJ LyogQ2hlY2sgdGhlIG90aGVyIGh1Z2UgemVybyBwYWdlIGZvciBwb2xsdXRpb24gKi8KLQkJbWFk dmlzZShyZWFkX3RocCwgdGhwX3NpemUsIE1BRFZfRE9OVE5FRUQpOworCQltYWR2aXNlKGNoaWxk LT5yZWFkX3RocCwgY2hpbGQtPnRocF9zaXplLCBNQURWX0RPTlRORUVEKTsKCi0JCWlmICgqcmVh ZF9wdHIgIT0gMCkgeworCQlpZiAoKmNoaWxkLT5yZWFkX3B0ciAhPSAwKSB7CiAJCQl0c3RfcmVz KFRGQUlMLCAiSHVnZSB6ZXJvIHBhZ2Ugd2FzIHBvbGx1dGVkIik7CiAJCQlyZXR1cm47CiAJCX0K QEAgLTE0MSwyMCArMjIwLDI2NyBAQCBzdGF0aWMgdm9pZCBydW4odm9pZCkKIAl0c3RfcmVzKFRQ QVNTLCAiSHVnZSB6ZXJvIHBhZ2UgaXMgc3RpbGwgY2xlYW4iKTsKIH0KCitzdGF0aWMgdm9pZCB0 cmFjZWVfbWFpbih2b2lkKQoreworCS8qIGNoaWxkIHN0cnVjdCBpcyBhbHJlYWR5IG1hcHBlZCBi eSBwYXJlbnQgYmVmb3JlIGZvcmsgKi8KKwljaGlsZC0+d3JpdGVmZCA9IC0xOworCWNoaWxkLT5y ZWFkZmQgPSAtMTsKKworCWNoaWxkX3NldHVwKCk7CisKKwlUU1RfQ0hFQ0tQT0lOVF9XQUtFKDAp OworCisJLyogV2FpdCBmb3IgcGFyZW50IHRvIGNvbXBsZXRlIFBUUkFDRV9TRUlaRSBiZWZvcmUg Zmlyc3QgcmFpc2UoU0lHU1RPUCkgKi8KKwlUU1RfQ0hFQ0tQT0lOVF9XQUlUKDEpOworCisJLyoK KwkgKiBQdHJhY2UgbW9kZTogd3JpdGVzIGFuZCBtYWR2aXNlIGFyZSBzZXJpYWxpemVkIChubyBy YWNlKS4KKwkgKiBUZXN0cyBrZXJuZWwgaGFuZGxpbmcgb2Ygd3JpdGVzIHRvIHN0b3BwZWQgcHJv Y2Vzc2VzLCBub3QgdGhlIENWRSByYWNlLgorCSAqIFRoZSBzdG9wL2NvbnRpbnVlIGN5Y2xlIGlz IHJlcXVpcmVkIGJlY2F1c2UgL3Byb2MvcGlkL21lbSB3cml0ZXMgbmVlZAorCSAqIFBUUkFDRV9N T0RFX0FUVEFDSCAodHJhY2VlIG11c3QgYmUgaW4gc3RvcHBlZCBzdGF0ZSkuCisJICoKKwkgKiBS dW4gaW5kZWZpbml0ZWx5IC0gcGFyZW50IGNvbnRyb2xzIHRlcm1pbmF0aW9uIHZpYSBQVFJBQ0Vf REVUQUNILgorCSAqLworCWZvciAoOzspIHsKKwkJbWFkdmlzZShjaGlsZC0+d3JpdGVfdGhwLCBj aGlsZC0+dGhwX3NpemUsIE1BRFZfRE9OVE5FRUQpOworCQltYWR2aXNlKGNoaWxkLT5yZWFkX3Ro cCwgY2hpbGQtPnRocF9zaXplLCBNQURWX0RPTlRORUVEKTsKKworCQlpZiAoKmNoaWxkLT5yZWFk X3B0ciAhPSAwKSB7CisJCQl0c3RfcmVzKFRGQUlMLCAiSHVnZSB6ZXJvIHBhZ2Ugd2FzIHBvbGx1 dGVkIik7CisJCQljaGlsZF9jbGVhbnVwKCk7CisJCQlleGl0KDEpOworCQl9CisKKwkJLyogU3Rv cCBzZWxmIHRvIGxldCBwYXJlbnQgd3JpdGUgbmV4dCBpdGVyYXRpb24gKi8KKwkJcmFpc2UoU0lH U1RPUCk7CisJfQorfQorCitzdGF0aWMgaW50IHNldHVwX3B0cmFjZV90cmFjZWUodm9pZCkKK3sK KwlpbnQgc3RhdHVzOworCisJLyogVGVzdC1sb29wIHN0YXRlIGlzIGluaXRpYWxpemVkIG9uY2Ug YW5kIHJlYWQtb25seSBhZnRlcndhcmRzLiAqLworCWNoaWxkID0gU0FGRV9NTUFQKE5VTEwsIHNp emVvZigqY2hpbGQpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorCQlNQVBfU0hBUkVEIHwgTUFQ X0FOT05ZTU9VUywgLTEsIDApOworCW1lbXNldChjaGlsZCwgMCwgc2l6ZW9mKCpjaGlsZCkpOwor CWNoaWxkLT53cml0ZWZkID0gLTE7CisJY2hpbGQtPnJlYWRmZCA9IC0xOworCisJdHJhY2VlX3Bp ZCA9IFNBRkVfRk9SSygpOworCWlmICghdHJhY2VlX3BpZCkgeworCQl0cmFjZWVfbWFpbigpOwor CQlleGl0KDApOworCX0KKworCVRTVF9DSEVDS1BPSU5UX1dBSVQoMCk7CisKKwlTQUZFX1BUUkFD RShQVFJBQ0VfU0VJWkUsIHRyYWNlZV9waWQsIE5VTEwsIE5VTEwpOworCisJLyogU2lnbmFsIHRy YWNlZSB0aGF0IFBUUkFDRV9TRUlaRSBjb21wbGV0ZWQgLSBzYWZlIHRvIHJhaXNlKFNJR1NUT1Ap IG5vdyAqLworCVRTVF9DSEVDS1BPSU5UX1dBS0UoMSk7CisKKwkvKgorCSAqIFRyYWNlZSB3aWxs IHJ1biBmaXJzdCBpdGVyYXRpb24gKG1hZHZpc2UgKyBjaGVjaykgYW5kIHNlbGYtc3RvcCB3aXRo IHJhaXNlKFNJR1NUT1ApLgorCSAqIFdhaXQgZm9yIHRoYXQgU0lHU1RPUCAtIHRoaXMgaXMgaXRl cmF0aW9uIDAuCisJICovCisJU0FGRV9XQUlUUElEKHRyYWNlZV9waWQsICZzdGF0dXMsIDApOwor CisJaWYgKFdJRkVYSVRFRChzdGF0dXMpKSB7CisJCWlmIChXRVhJVFNUQVRVUyhzdGF0dXMpICE9 IDApIHsKKwkJCS8qIFRyYWNlZSByZXBvcnRlZCByZXN1bHQgYW5kIGV4aXRlZCBlYXJseSAtIGFs cmVhZHkgaGFuZGxlZCAqLworCQkJdHJhY2VlX3BpZCA9IDA7CisJCQlmcmVlX2NoaWxkX3N0YXRl KCk7CisJCQlyZXR1cm4gMTsKKwkJfQorCQl0c3RfYnJrKFRCUk9LLCAiVHJhY2VlIGV4aXRlZCB1 bmV4cGVjdGVkbHkgYmVmb3JlIGZpcnN0IFNJR1NUT1A6ICVzIiwKKwkJCXRzdF9zdHJzdGF0dXMo c3RhdHVzKSk7CisJfQorCisJaWYgKFdJRlNJR05BTEVEKHN0YXR1cykpCisJCXRzdF9icmsoVEJS T0ssICJUcmFjZWUgd2FzIGtpbGxlZCBieSBzaWduYWwgYmVmb3JlIGZpcnN0IFNJR1NUT1A6ICVz IiwKKwkJCXRzdF9zdHJzdGF0dXMoc3RhdHVzKSk7CisKKwlpZiAoIVdJRlNUT1BQRUQoc3RhdHVz KSB8fCBXU1RPUFNJRyhzdGF0dXMpICE9IFNJR1NUT1ApCisJCXRzdF9icmsoVEJST0ssICJUcmFj ZWUgZGlkIG5vdCBzZWxmLXN0b3Agd2l0aCBTSUdTVE9QOiAlcyIsCisJCQl0c3Rfc3Ryc3RhdHVz KHN0YXR1cykpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHNldHVwKHZvaWQpCit7 CisJaW50IHRlc3RfdmFsID0gMDsKKwlpbnQgZXhwbGljaXRfbW9kZSA9IDA7CisKKwlzdGF0aWMg c3RydWN0IHRzdF9rY21kbGluZV92YXIgcGFyYW1zW10gPSB7CisJCVRTVF9LQ01ETElORV9JTklU KCJwcm9jX21lbS5mb3JjZV9vdmVycmlkZSIpLAorCX07CisKKwl0c3Rfa2NtZGxpbmVfcGFyc2Uo cGFyYW1zLCBBUlJBWV9TSVpFKHBhcmFtcykpOworCisJaWYgKHBhcmFtc1swXS5mb3VuZCkgewor CQlleHBsaWNpdF9tb2RlID0gMTsKKworCQlpZiAoIXN0cmNtcChwYXJhbXNbMF0udmFsdWUsICJh bHdheXMiKSkgeworCQkJdXNlcl9tb2RlID0gUFJPQ19NRU1fQUxXQVlTOworCQl9IGVsc2UgaWYg KCFzdHJjbXAocGFyYW1zWzBdLnZhbHVlLCAicHRyYWNlIikpIHsKKwkJCXVzZXJfbW9kZSA9IFBS T0NfTUVNX1BUUkFDRTsKKwkJfSBlbHNlIHsKKwkJCXVzZXJfbW9kZSA9IFBST0NfTUVNX05FVkVS OworCQkJdHN0X2JyayhUQ09ORiwKKwkJCQkiV3JpdGVzIHRvIC9wcm9jL3NlbGYvbWVtIGRpc2Fi bGVkIG9uIGtlcm5lbCBjbWRsaW5lIik7CisJCX0KKwl9CisKKwllZmZlY3RpdmVfbW9kZSA9IHVz ZXJfbW9kZTsKKworCS8qIFByb2JlIGRpcmVjdCAvcHJvYy9zZWxmL21lbSB3cml0ZXMgb25seSBp ZiBub3QgZXhwbGljaXRseSBzZXQgdG8gcHRyYWNlICovCisJaWYgKCFleHBsaWNpdF9tb2RlIHx8 IHVzZXJfbW9kZSA9PSBQUk9DX01FTV9BTFdBWVMpIHsKKwkJY2hpbGQgPSBTQUZFX01NQVAoTlVM TCwgc2l6ZW9mKCpjaGlsZCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQlNQVBfU0hBUkVE IHwgTUFQX0FOT05ZTU9VUywgLTEsIDApOworCQltZW1zZXQoY2hpbGQsIDAsIHNpemVvZigqY2hp bGQpKTsKKwkJY2hpbGQtPndyaXRlZmQgPSAtMTsKKwkJY2hpbGQtPnJlYWRmZCA9IC0xOworCisJ CWNoaWxkX3NldHVwKCk7CisKKwkJVEVTVChsc2VlayhjaGlsZC0+d3JpdGVmZCwgKG9mZl90KWNo aWxkLT53cml0ZV9wdHIsIFNFRUtfU0VUKSk7CisJCWlmIChUU1RfUkVUID09IC0xKQorCQkJdHN0 X2JyayhUQlJPSyB8IFRURVJSTk8sICJsc2VlayBvbiAvcHJvYy9zZWxmL21lbSBmYWlsZWQiKTsK KworCQlURVNUKHdyaXRlKGNoaWxkLT53cml0ZWZkLCAmdGVzdF92YWwsIHNpemVvZih0ZXN0X3Zh bCkpKTsKKworCQlpZiAoVFNUX1JFVCA9PSBzaXplb2YodGVzdF92YWwpKSB7CisJCQkvKiBEaXJl Y3Qgd3JpdGUgc3VjY2VlZGVkICovCisJCQllZmZlY3RpdmVfbW9kZSA9IFBST0NfTUVNX0FMV0FZ UzsKKwkJCXJldHVybjsKKwkJfQorCisJCWlmIChUU1RfUkVUID09IC0xICYmIFRTVF9FUlIgIT0g RUlPKQorCQkJdHN0X2JyayhUQlJPSyB8IFRURVJSTk8sICJ0ZXN0IHdyaXRlIHRvIC9wcm9jL3Nl bGYvbWVtIGZhaWxlZCIpOworCisJCWlmIChUU1RfUkVUICE9IC0xKQorCQkJdHN0X2JyayhUQlJP SywgInNob3J0IHdyaXRlIHRvIC9wcm9jL3NlbGYvbWVtOiAlbGQgYnl0ZXMiLCBUU1RfUkVUKTsK KworCQkvKiAvcHJvYy9zZWxmL21lbSB3cml0ZSBmYWlsZWQsIGNsZWFudXAgYW5kIHRyeSBwdHJh Y2UgbW9kZSAqLworCQljaGlsZF9jbGVhbnVwKCk7CisJCVNBRkVfTVVOTUFQKGNoaWxkLCBzaXpl b2YoKmNoaWxkKSk7CisJCWNoaWxkID0gTlVMTDsKKworCQlpZiAoZXhwbGljaXRfbW9kZSAmJiB1 c2VyX21vZGUgPT0gUFJPQ19NRU1fQUxXQVlTKQorCQkJdHN0X2JyayhUQ09ORiwKKwkJCQkiV3Jp dGVzIHRvIC9wcm9jL3NlbGYvbWVtIGRpc2FibGVkIGRlc3BpdGUgYWx3YXlzIG1vZGUiKTsKKwor CQllZmZlY3RpdmVfbW9kZSA9IFBST0NfTUVNX1BUUkFDRTsKKwl9CisKKwkvKiBQdHJhY2UgbW9k ZTogdHJhY2VlIHdpbGwgYmUgc3Bhd25lZCBpbiBydW4oKSBmb3IgZWFjaCBpdGVyYXRpb24gKi8K KwlpZiAoZWZmZWN0aXZlX21vZGUgPT0gUFJPQ19NRU1fUFRSQUNFKQorCQlyZXR1cm47Cit9CisK K3N0YXRpYyB2b2lkIHJ1bl9wcm9jX21lbV9wdHJhY2Vfc2VyaWFsaXplZCh2b2lkKQoreworCWNo YXIgcGF0aFs2NF07CisJaW50IHdyaXRlZmQ7CisJaW50IGMgPSAweGRlYWRiZWVmOworCWludCBp OworCWludCBzdGF0dXM7CisJaW50IHRyYWNlZV9leGl0ZWQgPSAwOworCisJc25wcmludGYocGF0 aCwgc2l6ZW9mKHBhdGgpLCAiL3Byb2MvJWQvbWVtIiwgdHJhY2VlX3BpZCk7CisJd3JpdGVmZCA9 IFNBRkVfT1BFTihwYXRoLCBPX1JEV1IpOworCisJLyoKKwkgKiBUcmFjZWUgaXMgYWxyZWFkeSBp biBTSUdTVE9QIHN0YXRlIGZyb20gc2V0dXBfcHRyYWNlX3RyYWNlZSgpLgorCSAqIFdyaXRlLXN0 b3AtY29udGludWUgY3ljbGU6IHRyYWNlZSBpcyBzdG9wcGVkLCByZWFkeSBmb3Igd3JpdGVzLgor CSAqLworCWZvciAoaSA9IDA7IGkgPCBQVFJBQ0VfVEVTVF9JVEVSQVRJT05TOyBpKyspIHsKKwkJ LyogV3JpdGUgdG8gL3Byb2MvcGlkL21lbSB3aGlsZSB0cmFjZWUgaXMgc3RvcHBlZCAqLworCQlT QUZFX0xTRUVLKHdyaXRlZmQsIChvZmZfdCljaGlsZC0+d3JpdGVfcHRyLCBTRUVLX1NFVCk7CisJ CVNBRkVfV1JJVEUoU0FGRV9XUklURV9BTEwsIHdyaXRlZmQsICZjLCBzaXplb2YoaW50KSk7CisK KwkJLyogTGV0IHRyYWNlZSBydW4gb25lIGl0ZXJhdGlvbiAobWFkdmlzZSArIGNoZWNrICsgcmFp c2UoU0lHU1RPUCkpICovCisJCVNBRkVfUFRSQUNFKFBUUkFDRV9DT05ULCB0cmFjZWVfcGlkLCBO VUxMLCBOVUxMKTsKKworCQkvKiBXYWl0IGZvciB0cmFjZWUgdG8gc3RvcCBpdHNlbGYgd2l0aCBy YWlzZShTSUdTVE9QKSAqLworCQlTQUZFX1dBSVRQSUQodHJhY2VlX3BpZCwgJnN0YXR1cywgMCk7 CisKKwkJaWYgKFdJRkVYSVRFRChzdGF0dXMpKSB7CisJCQlpZiAoV0VYSVRTVEFUVVMoc3RhdHVz KSA9PSAwKQorCQkJCXRzdF9icmsoVEJST0ssICJUcmFjZWUgZXhpdGVkIHVuZXhwZWN0ZWRseTog JXMiLAorCQkJCQkJdHN0X3N0cnN0YXR1cyhzdGF0dXMpKTsKKworCQkJLyogVHJhY2VlIHJlcG9y dGVkIHJlc3VsdCBhbmQgZXhpdGVkLCB0aGlzIGlzIGV4cGVjdGVkIGZvciBURkFJTCAqLworCQkJ dHJhY2VlX2V4aXRlZCA9IDE7CisJCQlicmVhazsKKwkJfQorCisJCWlmIChXSUZTSUdOQUxFRChz dGF0dXMpKQorCQkJdHN0X2JyayhUQlJPSywgIlRyYWNlZSB3YXMga2lsbGVkIGJ5IHNpZ25hbDog JXMiLAorCQkJCXRzdF9zdHJzdGF0dXMoc3RhdHVzKSk7CisKKwkJaWYgKCFXSUZTVE9QUEVEKHN0 YXR1cykgfHwgV1NUT1BTSUcoc3RhdHVzKSAhPSBTSUdTVE9QKQorCQkJdHN0X2JyayhUQlJPSywg IlRyYWNlZSBkaWQgbm90IHN0b3Agd2l0aCBTSUdTVE9QOiAlcyIsCisJCQkJdHN0X3N0cnN0YXR1 cyhzdGF0dXMpKTsKKwl9CisKKwlTQUZFX0NMT1NFKHdyaXRlZmQpOworCisJaWYgKHRyYWNlZV9l eGl0ZWQpIHsKKwkJLyogVHJhY2VlIGFscmVhZHkgcmVwb3J0ZWQgaXRzIHJlc3VsdCBhbmQgZXhp dGVkIC0gY2xlYW51cCBhbmQgcmV0dXJuICovCisJCXRyYWNlZV9waWQgPSAwOworCQlmcmVlX2No aWxkX3N0YXRlKCk7CisJCXJldHVybjsKKwl9CisKKwkvKiBUZXN0IHBhc3NlZCAtIGh1Z2UgemVy byBwYWdlIHJlbWFpbmVkIGNsZWFuIHRocm91Z2ggUFRSQUNFX1RFU1RfSVRFUkFUSU9OUyBpdGVy YXRpb25zICovCisJdHN0X3JlcyhUUEFTUywgIkh1Z2UgemVybyBwYWdlIGlzIHN0aWxsIGNsZWFu IGFmdGVyIHNlcmlhbGl6ZWQgcHRyYWNlIHdyaXRlcyIpOworCisJLyogRGV0YWNoIGFuZCB0ZXJt aW5hdGUgdHJhY2VlICovCisJU0FGRV9QVFJBQ0UoUFRSQUNFX0RFVEFDSCwgdHJhY2VlX3BpZCwg TlVMTCwgTlVMTCk7CisJU0FGRV9XQUlUUElEKHRyYWNlZV9waWQsICZzdGF0dXMsIFdOT0hBTkcp OworCVNBRkVfS0lMTCh0cmFjZWVfcGlkLCBTSUdLSUxMKTsKKwlTQUZFX1dBSVRQSUQodHJhY2Vl X3BpZCwgJnN0YXR1cywgMCk7CisJdHJhY2VlX3BpZCA9IDA7CisKKwkvKiBUcmFjZWUgaXMgZnVs bHkgcmVhcGVkIC0gZnJlZSBzaGFyZWQgY2hpbGQgc3RhdGUgKi8KKwlmcmVlX2NoaWxkX3N0YXRl KCk7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bih2b2lkKQoreworCWlmIChlZmZlY3RpdmVfbW9kZSA9 PSBQUk9DX01FTV9BTFdBWVMpIHsKKwkJcnVuX3Byb2NfbWVtX2Fsd2F5c19yYWNlKCk7CisJfSBl bHNlIGlmIChlZmZlY3RpdmVfbW9kZSA9PSBQUk9DX01FTV9QVFJBQ0UpIHsKKwkJLyogU3Bhd24g ZnJlc2ggdHJhY2VlIGZvciBlYWNoIGl0ZXJhdGlvbiAqLworCQlpZiAoc2V0dXBfcHRyYWNlX3Ry YWNlZSgpKQorCQkJcmV0dXJuOyAvKiBUcmFjZWUgZXhpdGVkIGVhcmx5LCBhbHJlYWR5IHJlcG9y dGVkIHJlc3VsdCAqLworCQlydW5fcHJvY19tZW1fcHRyYWNlX3NlcmlhbGl6ZWQoKTsKKwl9IGVs c2UgeworCQl0c3RfYnJrKFRCUk9LLCAiVW5rbm93biBwcm9jIG1lbSBtb2RlIik7CisJfQorfQor CiBzdGF0aWMgdm9pZCBjbGVhbnVwKHZvaWQpCiB7Ci0JdHN0X2Z6c3luY19wYWlyX2NsZWFudXAo JmZ6c3luY19wYWlyKTsKKwlpZiAodHJhY2VlX3BpZCA+IDApIHsKKwkJLyoKKwkJICogVHJhY2Vl IGlzIG5vcm1hbGx5IHJlYXBlZCBpbiBydW5fcHJvY19tZW1fcHRyYWNlX3NlcmlhbGl6ZWQoKS4K KwkJICogT25seSBraWxsIGlmIHN0aWxsIGFsaXZlIChlLmcuLCB0ZXN0IGFib3J0ZWQgd2l0aCBU QlJPSykuCisJCSAqLworCQlpZiAoa2lsbCh0cmFjZWVfcGlkLCAwKSA9PSAwKSB7CisJCQlTQUZF X0tJTEwodHJhY2VlX3BpZCwgU0lHS0lMTCk7CisJCQl0c3RfcmVhcF9jaGlsZHJlbigpOworCQl9 CisJCXRyYWNlZV9waWQgPSAwOworCX0KCi0JaWYgKHJlYWRmZCA+PSAwKQotCQlTQUZFX0NMT1NF KHJlYWRmZCk7CisJaWYgKGVmZmVjdGl2ZV9tb2RlID09IFBST0NfTUVNX0FMV0FZUykKKwkJY2hp bGRfY2xlYW51cCgpOwoKLQlpZiAod3JpdGVmZCA+PSAwKQotCQlTQUZFX0NMT1NFKHdyaXRlZmQp OwotCi0JaWYgKHJlYWRfdGhwKQotCQlTQUZFX01VTk1BUChyZWFkX3RocCwgdGhwX3NpemUpOwot CWlmICh3cml0ZV90aHApCi0JCVNBRkVfTVVOTUFQKHdyaXRlX3RocCwgdGhwX3NpemUpOworCWZy ZWVfY2hpbGRfc3RhdGUoKTsKIH0KCiBzdGF0aWMgc3RydWN0IHRzdF90ZXN0IHRlc3QgPSB7CkBA IC0xNjIsNiArNDg4LDggQEAgc3RhdGljIHN0cnVjdCB0c3RfdGVzdCB0ZXN0ID0gewogCS5zZXR1 cCA9IHNldHVwLAogCS5jbGVhbnVwID0gY2xlYW51cCwKIAkucnVudGltZSA9IDE1MCwKKwkuZm9y a3NfY2hpbGQgPSAxLAorCS5uZWVkc19jaGVja3BvaW50cyA9IDEsCiAJLnRhZ3MgPSAoY29uc3Qg c3RydWN0IHRzdF90YWdbXSkgewogCQl7ImxpbnV4LWdpdCIsICJhOGY5NzM2NjQ1MmUifSwKIAkJ eyJsaW51eC1naXQiLCAiODMxMGQ0OGIxMjVkIn0sCi0tCjIuNTUuMAoKCi0tIApNYWlsaW5nIGxp c3QgaW5mbzogaHR0cHM6Ly9saXN0cy5saW51eC5pdC9saXN0aW5mby9sdHAK