From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 8296 invoked from network); 11 Apr 2021 08:20:25 -0000 Received: from 1ess.inri.net (216.126.196.35) by inbox.vuxu.org with ESMTPUTF8; 11 Apr 2021 08:20:25 -0000 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]) by 1ess; Sat Apr 10 13:01:05 -0400 2021 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 41A691032 for <9front@9front.org>; Sat, 10 Apr 2021 12:50:17 -0400 (EDT) Received: from imap21 ([10.202.2.71]) by compute2.internal (MEProxy); Sat, 10 Apr 2021 12:50:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=biobuf.link; h= mime-version:message-id:in-reply-to:references:date:from:to :subject:content-type; s=fm2; bh=tbMZB5hOOCvOpkhZN/N9ZaTD3mq8WE4 CqksXKu89zVE=; b=uB91sd7kJWloM04qPG6vg7MdehaQWQlgpdRHG04bVqxJOOq I4S56pzibRzi1A0v1aUuJSydOk73/kR9YKtlS7s3Cgrcr+oVpJSFvwqnbJHYR8t1 LB4uE1hEmFMKaWIStzHi/ZK0TCILDfTz93vvuRRDVjRT85JseYmoMKN32ZpsUiFD JIm/U69wEh23TDCop4nxcZGolQ0JZ34rw1ULtQmG3btzkJPquiIXQ2Khrp2rqo8v zrC0MM3mbl9rLHLVllNWMN4kIKRu6qv3hck9Da498QFkUivMT2FAMb5XR/MuyWU4 NG7PSZ1D4TTAnW8OCeY3TeGeK3eiEa/nrw+wVMA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=tbMZB5 hOOCvOpkhZN/N9ZaTD3mq8WE4CqksXKu89zVE=; b=MUBZRWQqjLYwricoJq1FQ+ th5Z5rql2bTe1IuMgXVkAD0uqstX7TzsvZjLDWCpEQdvIR7z5W1XIRL6lXsz1AG7 CM4+unJWoS4uef9m8T7stnx0wpeo5vU9ExdfOuhAxDyyNRgkzdCtaodyiGhTn+j8 iHvuXczM3tsldo2/Z4vDK6ySH9X3ldsbF+ucklQM67oxYMw1XmweHthR1gK7jsic s7zfw1Im2jVLTTS6byUoRTwEPT0R8Ri6jvRPhTTRGf5X2/CITfokOXNKWp1/xu0V /EpdtMAQK44Y9ethacYWWJOwMRluH2zBfkbjQPOceOGLjMRmlRXb2/eVYVDFihEA == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudekfedguddtjecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefofgggkfgjfhffhffvufgtsehmtderreerreejnecuhfhrohhmpedfjhgr mhgvshcuphgrlhhmvghrfdcuoehjrghmvghssegsihhosghufhdrlhhinhhkqeenucggtf frrghtthgvrhhnpefghfdtgfefudehveeuvdevgeekheeludefkeegveehhfeguedttdeh teetudeigeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhroh hmpehjrghmvghssegsihhosghufhdrlhhinhhk X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id 8E3B551C005F; Sat, 10 Apr 2021 12:50:16 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.5.0-alpha0-273-g8500d2492d-fm-20210323.002-g8500d249 Mime-Version: 1.0 Message-Id: <931c5ae7-0800-4ec5-aecd-cf7bc6204827@www.fastmail.com> In-Reply-To: References: Date: Sat, 10 Apr 2021 17:49:43 +0100 From: "james palmer" To: "9front mailing list" <9front@9front.org> Content-Type: multipart/mixed; boundary=92de94d6e2174d2c8f02c45716b7c241 List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: progressive module-scale WEB2.0 storage-based software Subject: [9front] =?UTF-8?Q?Re:_[patch]_aux/wacom:_prevent_"no_concurrent_reads_please"_er?= =?UTF-8?Q?ror_when_moving_the_pen_too_fast_and_support_screen_tilt?= Reply-To: 9front@9front.org Precedence: bulk --92de94d6e2174d2c8f02c45716b7c241 Content-Type: text/plain ok, i promise this is the last bugfix. now handling 9p requests in their own proc. the problem was the read from aux/tablet was blocking, preventing further requests from being answered. - james --92de94d6e2174d2c8f02c45716b7c241 Content-Type: multipart/mixed; boundary="upas-tymrfvhcwdsxibzfwstzridigv" Content-Disposition: inline This is a multi-part message in MIME format. --upas-tymrfvhcwdsxibzfwstzridigv Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit from postmaster@1ess: The following attachment had content that we can't prove to be harmless. To avoid possible automatic execution, we changed the content headers. The original header was: Content-Disposition: attachment;filename="wacom.diff" Content-Type: text/x-patch; name="wacom.diff" Content-Transfer-Encoding: BASE64 --upas-tymrfvhcwdsxibzfwstzridigv Content-Type: application/octet-stream Content-Disposition: attachment; filename="wacom.diff.suspect" Content-Transfer-Encoding: base64 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIGZvdXJhIDxqYW1lc0BiaW9idWYubGluaz4K IyBEYXRlIDE2MTgwNjk2NTIgLTM2MDAKIyBOb2RlIElEIDBjZTdjZmM5NThkZjhhZTBkMmZm NjQxZjE1MjUxNjAwNzk1YTQ4YjUKIyBQYXJlbnQgIDkzNmVkYTgwYTUyZjY1OTk0NzEzZmMw MTdkMjZiZWMzZjZkNzJjOGMKYXV4L3dhY29tOiByZXdyaXRlIHRvIHVzZSBtdWx0aXBsZSBw cm9jcyBhbmQgc3VwcG9ydCBzY3JlZW4gdGlsdC4KCmRpZmYgLXIgOTM2ZWRhODBhNTJmIC1y IDBjZTdjZmM5NThkZiBzeXMvc3JjL2NtZC9hdXgvd2Fjb20uYwotLS0gYS9zeXMvc3JjL2Nt ZC9hdXgvd2Fjb20uYwlTYXQgQXByIDEwIDE1OjAxOjA5IDIwMjEgKzAyMDAKKysrIGIvc3lz L3NyYy9jbWQvYXV4L3dhY29tLmMJU2F0IEFwciAxMCAxNjo0NzozMiAyMDIxICswMTAwCkBA IC0xLDM1MiArMSwzMzUgQEAKICNpbmNsdWRlIDx1Lmg+CiAjaW5jbHVkZSA8bGliYy5oPgor I2luY2x1ZGUgPGJpby5oPgorI2luY2x1ZGUgPHRocmVhZC5oPgogI2luY2x1ZGUgPGZjYWxs Lmg+Ci0jaW5jbHVkZSA8dGhyZWFkLmg+CiAjaW5jbHVkZSA8OXAuaD4KIAotdHlwZWRlZiBz dHJ1Y3QgVGFibGV0IFRhYmxldDsKLXR5cGVkZWYgc3RydWN0IE1lc3NhZ2UgTWVzc2FnZTsK LXR5cGVkZWYgc3RydWN0IFFJdGVtIFFJdGVtOwotdHlwZWRlZiBzdHJ1Y3QgUXVldWUgUXVl dWU7Ci10eXBlZGVmIHN0cnVjdCBSZWFkZXIgUmVhZGVyOworZW51bSB7CisJTm9uZSwKKwlM ZWZ0LAorCVJpZ2h0LAorCUludmVydGVkLAogCi0KLWVudW0geyBNQVggPSAxMDAwIH07Ci0K LXN0cnVjdCBUYWJsZXQgewotCWludCBzZXI7Ci0JaW50IHhtYXgsIHltYXgsIHBtYXgsIHZl cnNpb247Ci0JaW50IHN4LCBzeTsKKwlNQVggPSAxMDAwLAorCVNUQUNLID0gMjA0OCwKIH07 CiAKLXN0cnVjdCBNZXNzYWdlIHsKLQlSZWY7Ci0JaW50IGIsIHgsIHksIHA7Ci0JY2hhciAq bXNnOwordHlwZWRlZiBzdHJ1Y3QgVGFibGV0IFRhYmxldDsKK3N0cnVjdCBUYWJsZXQgewor CisJaW50IGZkOworCWNoYXIgZGV2WzY0XTsKKwlpbnQgdmVyc2lvbjsKKworCWludCB4LCB5 LCBiLCBwOworCWludCB4bWF4LCB5bWF4LCBwbWF4OworCisJaW50IHN4LCBzeSwgc3JvdDsK IH07CiAKLVRhYmxldCoKLW5ld3RhYmxldChjaGFyKiBkZXYpCit2b2lkCit0aHJlYWRmYXRh bChjaGFyICpmbXQsIC4uLikKIHsKLQlpbnQgc2VyY3RsOwotCWNoYXIqIGN0bDsKLQlUYWJs ZXQqIHQ7CisJdmFfbGlzdCBhcmc7CisJY2hhciBidWZbMTAyNF07CisJCisJdmFfc3RhcnQo YXJnLCBmbXQpOworCXZzZXByaW50KGJ1ZiwgYnVmK3NpemVvZihidWYpLCBmbXQsIGFyZyk7 CisJdmFfZW5kKGFyZyk7CiAKLQljdGwgPSBzbXByaW50KCIlc2N0bCIsIGRldik7Ci0JdCA9 IGNhbGxvYyhzaXplb2YoVGFibGV0KSwgMSk7Ci0JdC0+c2VyID0gb3BlbihkZXYsIE9SRFdS KTsKLQlpZih0LT5zZXIgPCAwKSB7Ci0JCWZyZWUodCk7Ci0JCXJldHVybiAwOwotCX0KLQlz ZXJjdGwgPSBvcGVuKGN0bCwgT1dSSVRFKTsKKwlpZihhcmd2MCkKKwkJZnByaW50KDIsICIl czogJXNcbiIsIGFyZ3YwLCBidWYpOworCWVsc2UKKwkJZnByaW50KDIsICIlczogJXNcbiIs IGFyZ3YwLCBidWYpOworCisJdGhyZWFkZXhpdHNhbGwoYnVmKTsKK30KKwordm9pZAorc2V0 dXB0YWJsZXQoVGFibGV0ICp0KQoreworCWludCBjdGxmZDsKKwljaGFyICpjdGw7CisJCisJ Y3RsID0gc21wcmludCgiJXNjdGwiLCB0LT5kZXYpOworCXQtPmZkID0gb3Blbih0LT5kZXYs IE9SRFdSKTsKKwlpZih0LT5mZCA8IDApCisJCXRocmVhZGZhdGFsKCIlciIsIHQtPmRldik7 CisJCisJY3RsZmQgPSBvcGVuKGN0bCwgT1dSSVRFKTsKKwlpZihjdGxmZCA8IDApCisJCXRo cmVhZGZhdGFsKCIlciIsIGN0bCk7CiAJZnJlZShjdGwpOwotCWlmKHNlcmN0bCA8IDApIHsK LQkJZnJlZSh0KTsKLQkJY2xvc2UodC0+c2VyKTsKLQkJcmV0dXJuIDA7Ci0JfQotCWlmKGZw cmludChzZXJjdGwsICJiMTkyMDBcbiIpIDwgMCkgewotCQlmcmVlKHQpOwotCQljbG9zZSh0 LT5zZXIpOwotCQljbG9zZShzZXJjdGwpOwotCQlyZXR1cm4gMDsKLQl9Ci0JY2xvc2Uoc2Vy Y3RsKTsKLQlyZXR1cm4gdDsKKworCWlmKGZwcmludChjdGxmZCwgImIxOTIwMFxuIikgPCAw KQorCQl0aHJlYWRmYXRhbCgic2V0IGJhdWQgcmF0ZTogJXIiKTsKIH0KIAogaW50Ci1xdWVy eShUYWJsZXQqIHQpCitxdWVyeShUYWJsZXQgKnQpCiB7CiAJdWNoYXIgYnVmWzExXTsKIAot CWlmKHdyaXRlKHQtPnNlciwgIiYwKiIsIDMpIDwgMykgcmV0dXJuIC0xOworCWlmKHdyaXRl KHQtPmZkLCAiJjAqIiwgMykgPCAzKSByZXR1cm4gMDsKIAlkbyB7Ci0JCWlmKHJlYWQodC0+ c2VyLCBidWYsIDEpIDwgMSkgcmV0dXJuIC0xOworCQlpZihyZWFkKHQtPmZkLCBidWYsIDEp IDwgMSkgcmV0dXJuIDA7CiAJfSB3aGlsZShidWZbMF0gIT0gMHhDMCk7Ci0JaWYocmVhZG4o dC0+c2VyLCBidWYrMSwgMTApIDwgMTApIHJldHVybiAtMTsKKworCWlmKHJlYWRuKHQtPmZk LCBidWYrMSwgMTApIDwgMTApIHJldHVybiAwOworCiAJdC0+eG1heCA9IChidWZbMV0gPDwg OSkgfCAoYnVmWzJdIDw8IDIpIHwgKChidWZbNl0gPj4gNSkgJiAzKTsKIAl0LT55bWF4ID0g KGJ1ZlszXSA8PCA5KSB8IChidWZbNF0gPDwgMikgfCAoKGJ1Zls2XSA+PiAzKSAmIDMpOwog CXQtPnBtYXggPSBidWZbNV0gfCAoYnVmWzZdICYgNyk7CiAJdC0+dmVyc2lvbiA9IChidWZb OV0gPDwgNykgfCBidWZbMTBdOwotCWlmKHdyaXRlKHQtPnNlciwgIjEiLCAxKSA8IDEpIHJl dHVybiAtMTsKLQlyZXR1cm4gMDsKKworCWlmKHdyaXRlKHQtPmZkLCAiMSIsIDEpIDwgMSkg cmV0dXJuIDA7CisJcmV0dXJuIDE7CiB9CiAKIGludAotc2NyZWVuc2l6ZShUYWJsZXQqIHQp CitmaW5kaGVhZGVyKFRhYmxldCAqdCkKK3sKKwl1Y2hhciBjOworCisJZG8geworCQlpZihy ZWFkKHQtPmZkLCAmYywgMSkgPCAxKSByZXR1cm4gLTE7CisJfSB3aGlsZSgoYyAmIDB4ODAp ID09IDApOworCisJcmV0dXJuIGM7Cit9CisKK3ZvaWQKK3JlYWRwYWNrZXQoVGFibGV0ICp0 KQoreworCXVjaGFyIGJ1Zls5XTsKKwlpbnQgaGVhZDsKKworCWhlYWQgPSBmaW5kaGVhZGVy KHQpOworCWlmKGhlYWQgPCAwKSB0aHJlYWRmYXRhbCgiJXIiKTsKKwlpZihyZWFkbih0LT5m ZCwgYnVmLCA5KSA8IDkpIHRocmVhZGZhdGFsKCIlciIpOworCisJdC0+YiA9IGhlYWQgJiA3 OworCXQtPnggPSAoYnVmWzBdIDw8IDkpIHwgKGJ1ZlsxXSA8PCAyKSB8ICgoYnVmWzVdID4+ IDUpICYgMyk7CisJdC0+eSA9IChidWZbMl0gPDwgOSkgfCAoYnVmWzNdIDw8IDIpIHwgKChi dWZbNV0gPj4gMykgJiAzKTsKKwl0LT5wID0gKChidWZbNV0gJiA3KSA8PCA3KSB8IGJ1Zls0 XTsKK30KKwordm9pZAorc2NyZWVuc2l6ZShUYWJsZXQgKnQpCiB7CiAJaW50IGZkOwogCWNo YXIgYnVmWzE4OV0sIGJ1ZjJbMTJdLCAqcDsKLQkKKwogCWZkID0gb3BlbigiL2Rldi9kcmF3 L25ldyIsIE9SRUFEKTsKLQlpZihmZCA8IDApIHJldHVybiAtMTsKKwlpZihmZCA8IDApIHRo cmVhZGZhdGFsKCIlciIpOwogCXJlYWQoZmQsIGJ1ZiwgMTg5KTsKKwogCW1lbWNweShidWYy LCBidWYgKyA3MiwgMTEpOwogCWJ1ZjJbMTFdID0gMDsKIAlmb3IocCA9IGJ1ZjI7ICpwID09 ICcgJzsgcCsrKTsKIAl0LT5zeCA9IGF0b2kocCk7CisKIAltZW1jcHkoYnVmMiwgYnVmICsg ODQsIDExKTsKIAlmb3IocCA9IGJ1ZjI7ICpwID09ICcgJzsgcCsrKTsKIAl0LT5zeSA9IGF0 b2kocCk7CisKIAlpZih0LT5zeCA9PSAwIHx8IHQtPnN5ID09IDApIHsKLQkJY2xvc2UoZmQp OwotCQl3ZXJyc3RyKCJpbnZhbGlkIHJlc29sdXRpb24gcmVhZCBmcm9tIC9kZXYvZHJhdy9u ZXciKTsKLQkJcmV0dXJuIC0xOworCQl0aHJlYWRmYXRhbCgiaW52YWxpZCByZXNvbHV0aW9u IHJlYWQgZnJvbSAvZGV2L2RyYXcvbmV3Iik7CiAJfQotCQorCiAJY2xvc2UoZmQpOwotCXJl dHVybiAwOwotfQotCi1pbnQKLWZpbmRoZWFkZXIoVGFibGV0KiB0KQotewotCXVjaGFyIGM7 Ci0JCi0JZG8gewotCQlpZihyZWFkKHQtPnNlciwgJmMsIDEpIDwgMSkgcmV0dXJuIC0xOwot CX0gd2hpbGUoKGMgJiAweDgwKSA9PSAwKTsKLQlyZXR1cm4gYzsKLX0KLQotTWVzc2FnZSoK LXJlYWRwYWNrZXQoVGFibGV0KiB0KQotewotCXVjaGFyIGJ1Zls5XTsKLQlpbnQgaGVhZDsK LQlNZXNzYWdlICptOwotCi0JaGVhZCA9IGZpbmRoZWFkZXIodCk7Ci0JaWYoaGVhZCA8IDAp IHJldHVybiAwOwotCWlmKHJlYWRuKHQtPnNlciwgYnVmLCA5KSA8IDkpIHJldHVybiAwOwot CQotCW0gPSBjYWxsb2Moc2l6ZW9mKE1lc3NhZ2UpLCAxKTsKLQlpbmNyZWYobSk7Ci0JCi0J bS0+YiA9IGhlYWQgJiA3OwotCW0tPnggPSAoYnVmWzBdIDw8IDkpIHwgKGJ1ZlsxXSA8PCAy KSB8ICgoYnVmWzVdID4+IDUpICYgMyk7Ci0JbS0+eSA9IChidWZbMl0gPDwgOSkgfCAoYnVm WzNdIDw8IDIpIHwgKChidWZbNV0gPj4gMykgJiAzKTsKLQltLT5wID0gKChidWZbNV0gJiA3 KSA8PCA3KSB8IGJ1Zls0XTsKLQkKLQltLT5wICo9IE1BWDsKLQltLT5wIC89IHQtPnBtYXg7 Ci0JbS0+eCAqPSB0LT5zeDsKLQltLT54IC89IHQtPnhtYXg7Ci0JbS0+eSAqPSB0LT5zeTsK LQltLT55IC89IHQtPnltYXg7Ci0JCi0JbS0+bXNnID0gc21wcmludCgibSAlZCAlZCAlZCAl ZFxuIiwgbS0+eCwgbS0+eSwgbS0+YiwgbS0+cCk7Ci0JcmV0dXJuIG07CiB9CiAKIHZvaWQK LW1zZ2RlY3JlZihNZXNzYWdlICptKQorc2NyZWVucm90KFRhYmxldCAqdCkKIHsKLQlpZihk ZWNyZWYobSkgPT0gMCkgewotCQlmcmVlKG0tPm1zZyk7Ci0JCWZyZWUobSk7CisJY2hhciAq bG47CisJQmlvYnVmICpmZDsKKworCWZkID0gQm9wZW4oIi9kZXYvdmdhY3RsIiwgT1JFQUQp OworCWlmKCFmZCkgeworCQl0LT5zcm90ID0gTm9uZTsKKwkJcmV0dXJuOwogCX0KLX0KIAot c3RydWN0IFFJdGVtIHsKLQlNZXNzYWdlICptOwotCVFJdGVtICpuZXh0OwotfTsKLQotc3Ry dWN0IFF1ZXVlIHsKLQlMb2NrOwotCVFJdGVtICpmaXJzdCwgKmxhc3Q7Ci19OwotCi12b2lk Ci1xcHV0KFF1ZXVlKiBxLCBNZXNzYWdlKiBtKQotewotCVFJdGVtICppOwotCQotCWxvY2so cSk7Ci0JaSA9IG1hbGxvYyhzaXplb2YoUUl0ZW0pKTsKLQlpLT5tID0gbTsKLQlpLT5uZXh0 ID0gMDsKLQlpZihxLT5sYXN0ID09IG5pbCkgewotCQlxLT5sYXN0ID0gcS0+Zmlyc3QgPSBp OwotCX0gZWxzZSB7Ci0JCXEtPmxhc3QtPm5leHQgPSBpOwotCQlxLT5sYXN0ID0gaTsKKwl3 aGlsZShsbiA9IEJyZHN0cihmZCwgJ1xuJywgMSkpIHsKKwkJaWYoc3RybmNtcCgidGlsdCAi LCBsbiwgNSkgPT0gMCkKKwkJCXN3aXRjaChsbls1XSkgeworCQkJY2FzZSAnbCc6CisJCQkJ dC0+c3JvdCA9IExlZnQ7CisJCQkJYnJlYWs7CisJCQljYXNlICdyJzoKKwkJCQl0LT5zcm90 ID0gUmlnaHQ7CisJCQkJYnJlYWs7CisJCQljYXNlICdpJzoKKwkJCQl0LT5zcm90ID0gSW52 ZXJ0ZWQ7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXQtPnNyb3QgPSBOb25lOwor CQkJfQorCQlmcmVlKGxuKTsKIAl9Ci0JdW5sb2NrKHEpOwotfQotCi1NZXNzYWdlKgotcWdl dChRdWV1ZSogcSkKLXsKLQlRSXRlbSAqaTsKLQlNZXNzYWdlICptOwotCQotCWlmKHEtPmZp cnN0ID09IG5pbCkgcmV0dXJuIG5pbDsKLQlsb2NrKHEpOwotCWkgPSBxLT5maXJzdDsKLQlp ZihxLT5maXJzdCA9PSBxLT5sYXN0KSB7Ci0JCXEtPmZpcnN0ID0gcS0+bGFzdCA9IG5pbDsK LQl9IGVsc2UgewotCQlxLT5maXJzdCA9IGktPm5leHQ7Ci0JfQotCW0gPSBpLT5tOwotCWZy ZWUoaSk7Ci0JdW5sb2NrKHEpOwotCXJldHVybiBtOworCUJ0ZXJtKGZkKTsKIH0KIAogdm9p ZAotZnJlZXF1ZXVlKFF1ZXVlICpxKQordXBkYXRlcHJvYyh2b2lkICphdXgpCiB7Ci0JTWVz c2FnZSAqbTsKLQkKLQl3aGlsZShtID0gcWdldChxKSkKLQkJbXNnZGVjcmVmKG0pOwotCWZy ZWUocSk7Ci19CisJVGFibGV0IHQ7CisJQ2hhbm5lbCAqYzsKIAotc3RydWN0IFJlYWRlciB7 Ci0JUXVldWUgKmU7Ci0JUmVhZGVyICpwcmV2LCAqbmV4dDsKLQlSZXEqIHJlcTsKLX07CisJ YyA9IGF1eDsKKwlyZWN2KGMsICZ0KTsKKwl0LmIgPSAwOworCXQueCA9IDA7CisJdC55ID0g MDsKKwl0LnAgPSAwOwogCi1Mb2NrIHJlYWRlcnM7Ci1SZWFkZXIgKnJmaXJzdCwgKnJsYXN0 OworCXNldHVwdGFibGV0KCZ0KTsKKwlxdWVyeSgmdCk7CiAKLXZvaWQKLXJlcGx5KFJlcSAq cmVxLCBNZXNzYWdlICptKQotewotCXJlcS0+b2ZjYWxsLmNvdW50ID0gc3RybGVuKG0tPm1z Zyk7Ci0JaWYocmVxLT5vZmNhbGwuY291bnQgPiByZXEtPmlmY2FsbC5jb3VudCkKLQkJcmVx LT5vZmNhbGwuY291bnQgPSByZXEtPmlmY2FsbC5jb3VudDsKLQltZW1tb3ZlKHJlcS0+b2Zj YWxsLmRhdGEsIG0tPm1zZywgcmVxLT5vZmNhbGwuY291bnQpOwotCXJlc3BvbmQocmVxLCBu aWwpOwotfQotCi12b2lkCi1zZW5kb3V0KE1lc3NhZ2UgKm0pCi17Ci0JUmVhZGVyICpyOwot CQotCWxvY2soJnJlYWRlcnMpOwotCWZvcihyID0gcmZpcnN0OyByOyByID0gci0+bmV4dCkg ewotCQlpZihyLT5yZXEpIHsKLQkJCXJlcGx5KHItPnJlcSwgbSk7Ci0JCQlyLT5yZXEgPSBu aWw7Ci0JCX0gZWxzZSB7Ci0JCQlpbmNyZWYobSk7Ci0JCQlxcHV0KHItPmUsIG0pOwotCQl9 Ci0JfQotCXVubG9jaygmcmVhZGVycyk7Ci19Ci0KLXZvaWQKLXRhYmxldG9wZW4oUmVxICpy ZXEpCi17Ci0JUmVhZGVyICpyOwotCQotCWxvY2soJnJlYWRlcnMpOwotCXIgPSBjYWxsb2Mo c2l6ZW9mKFJlYWRlciksIDEpOwotCXItPmUgPSBjYWxsb2Moc2l6ZW9mKFF1ZXVlKSwgMSk7 Ci0JaWYocmxhc3QpIHJsYXN0LT5uZXh0ID0gcjsKLQlyLT5wcmV2ID0gcmxhc3Q7Ci0Jcmxh c3QgPSByOwotCWlmKHJmaXJzdCA9PSBuaWwpIHJmaXJzdCA9IHI7Ci0JdW5sb2NrKCZyZWFk ZXJzKTsKLQlyZXEtPmZpZC0+YXV4ID0gcjsKLQlyZXNwb25kKHJlcSwgbmlsKTsKLX0KLQot dm9pZAotdGFibGV0ZGVzdHJveWZpZChGaWQgKmZpZCkKLXsKLQlSZWFkZXIgKnI7Ci0KLQly ID0gZmlkLT5hdXg7Ci0JaWYociA9PSBuaWwpIHJldHVybjsKLQlsb2NrKCZyZWFkZXJzKTsK LQlpZihyLT5wcmV2KSByLT5wcmV2LT5uZXh0ID0gci0+bmV4dDsKLQlpZihyLT5uZXh0KSBy LT5uZXh0LT5wcmV2ID0gci0+cHJldjsKLQlpZihyID09IHJmaXJzdCkgcmZpcnN0ID0gci0+ bmV4dDsKLQlpZihyID09IHJsYXN0KSBybGFzdCA9IHItPnByZXY7Ci0JZnJlZXF1ZXVlKHIt PmUpOwotCWZyZWUocik7Ci0JdW5sb2NrKCZyZWFkZXJzKTsKLX0KLQotdm9pZAotdGFibGV0 ZGVzdHJveXJlcShSZXEgKnJlcSkKLXsKLQlSZWFkZXIgKnI7Ci0JCi0JaWYocmVxLT5maWQg PT0gbmlsKSByZXR1cm47Ci0JciA9IHJlcS0+ZmlkLT5hdXg7Ci0JaWYociA9PSBuaWwpIHJl dHVybjsKLQlpZihyZXEgPT0gci0+cmVxKSB7Ci0JCXItPnJlcSA9IG5pbDsKKwlmb3IoOzsp IHsKKwkJc2NyZWVuc2l6ZSgmdCk7CisJCXNjcmVlbnJvdCgmdCk7CisJCXJlYWRwYWNrZXQo JnQpOworCQlzZW5kKGMsICZ0KTsKIAl9CiB9CiAKIHZvaWQKLXRhYmxldHJlYWQoUmVxKiBy ZXEpCitzY2FsZWlucHV0KFRhYmxldCAqdCkKIHsKLQlSZWFkZXIgKnI7Ci0JTWVzc2FnZSAq bTsKLQkKLQlyID0gcmVxLT5maWQtPmF1eDsKLQlpZihtID0gcWdldChyLT5lKSkgewotCQly ZXBseShyZXEsIG0pOwotCQltc2dkZWNyZWYobSk7Ci0JfSBlbHNlIHsKLQkJaWYoci0+cmVx KSB7Ci0JCQlyZXNwb25kKHJlcSwgIm5vIGNvbmN1cnJlbnQgcmVhZHMsIHBsZWFzZSIpOwot CQl9IGVsc2UgewotCQkJci0+cmVxID0gcmVxOwotCQl9CisJaW50IHRlbXA7CisKKwl0LT5w ICo9IE1BWDsKKwl0LT5wIC89IHQtPnBtYXg7CisKKwlzd2l0Y2godC0+c3JvdCkgeworCWNh c2UgTGVmdDoKKwkJLyogZmxpcCAqLworCQl0LT55ID0gdC0+eW1heCAtIHQtPnk7CisJCS8q IHNjYWxlICovCisJCXQtPnggKj0gdC0+c3g7CisJCXQtPnggLz0gdC0+eW1heDsKKwkJdC0+ eSAqPSB0LT5zeTsKKwkJdC0+eSAvPSB0LT54bWF4OworCQkvKiBzd2FwICovCisJCXRlbXAg PSB0LT54OworCQl0LT54ID0gdC0+eTsKKwkJdC0+eSA9IHRlbXA7CisJCWJyZWFrOworCWNh c2UgUmlnaHQ6CisJCS8qIGZsaXAgKi8KKwkJdC0+eCA9IHQtPnhtYXggLSB0LT54OworCQkv KiBzY2FsZSAqLworCQl0LT54ICo9IHQtPnN4OworCQl0LT54IC89IHQtPnltYXg7CisJCXQt PnkgKj0gdC0+c3k7CisJCXQtPnkgLz0gdC0+eG1heDsKKwkJLyogc3dhcCAqLworCQl0ZW1w ID0gdC0+eDsKKwkJdC0+eCA9IHQtPnk7CisJCXQtPnkgPSB0ZW1wOworCQlicmVhazsKKwlj YXNlIEludmVydGVkOgorCQkvKiBmbGlwICovCisJCXQtPnkgPSB0LT55bWF4IC0gdC0+eTsK KwkJdC0+eCA9IHQtPnhtYXggLSB0LT54OworCQkvKiBzY2FsZSAqLworCQl0LT54ICo9IHQt PnN4OworCQl0LT54IC89IHQtPnhtYXg7CisJCXQtPnkgKj0gdC0+c3k7CisJCXQtPnkgLz0g dC0+eW1heDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJLyogc2NhbGUgKi8KKwkJdC0+eCAq PSB0LT5zeDsKKwkJdC0+eCAvPSB0LT54bWF4OworCQl0LT55ICo9IHQtPnN5OworCQl0LT55 IC89IHQtPnltYXg7CiAJfQogfQogCi1TcnYgdGFibGV0c3J2ID0gewotCS5vcGVuID0gdGFi bGV0b3BlbiwJCi0JLnJlYWQgPSB0YWJsZXRyZWFkLAotCS5kZXN0cm95ZmlkID0gdGFibGV0 ZGVzdHJveWZpZCwKLQkuZGVzdHJveXJlcSA9IHRhYmxldGRlc3Ryb3lyZXEsCit2b2lkCity ZXBseXByb2Modm9pZCAqYXV4KQoreworCVJlcSAqcmVxOworCUNoYW5uZWwgKmM7CisJVGFi bGV0IHQ7CisJY2hhciAqcmVwbHk7CisKKwlyZXEgPSBhdXg7CisJYyA9IHJlcS0+c3J2LT5h dXg7CisJcmVjdihjLCAmdCk7CisJc2NhbGVpbnB1dCgmdCk7CisKKwlyZXBseSA9IHNtcHJp bnQoIm0gJWQgJWQgJWQgJWRcbiIsCisJCXQueCwgdC55LCB0LmIsIHQucCk7CisKKwlyZXEt Pm9mY2FsbC5jb3VudCA9IHN0cmxlbihyZXBseSk7CisJaWYocmVxLT5vZmNhbGwuY291bnQg PiByZXEtPmlmY2FsbC5jb3VudCkKKwkJcmVxLT5vZmNhbGwuY291bnQgPSByZXEtPmlmY2Fs bC5jb3VudDsKKwltZW1tb3ZlKHJlcS0+b2ZjYWxsLmRhdGEsIHJlcGx5LCByZXEtPm9mY2Fs bC5jb3VudCk7CisJcmVzcG9uZChyZXEsIG5pbCk7CisKKwlmcmVlKHJlcGx5KTsKK30KKwor dm9pZAorZnNyZWFkKFJlcSAqcmVxKQoreworCXByb2NjcmVhdGUocmVwbHlwcm9jLCByZXEs IFNUQUNLKTsKK30KKwordm9pZAorZnNmbHVzaChSZXEgKnJlcSkKK3sKKwlwcm9jY3JlYXRl KHJlcGx5cHJvYywgcmVxLT5vbGRyZXEsIFNUQUNLKTsKK30KKworU3J2IGZzID0geworCS5y ZWFkID0gZnNyZWFkLAorCS5mbHVzaCA9IGZzZmx1c2gsCiB9OwogCi1GaWxlICp0ZmlsZTsK K3ZvaWQKK3NydnByb2Modm9pZCAqYXV4KQoreworCUNoYW5uZWwgKmM7CisJCisJYyA9IGF1 eDsKKwlmcy5hdXggPSBjOworCWZzLnRyZWUgPSBhbGxvY3RyZWUoZ2V0dXNlcigpLCBnZXR1 c2VyKCksIDA1NTUsIG5pbCk7CisJY3JlYXRlZmlsZShmcy50cmVlLT5yb290LCAidGFibGV0 IiwgZ2V0dXNlcigpLCAwNDAwLCBuaWwpOworCXRocmVhZHBvc3Rtb3VudHNydigmZnMsIG5p bCwgIi9kZXYiLCBNQUZURVIpOworfQogCiB2b2lkCi1tYWluKCkKK3VzYWdlKHZvaWQpCiB7 Ci0JVGFibGV0ICp0OwotCU1lc3NhZ2UgKm07Ci0JaW50IGZkWzJdOwotCQotCXBpcGUoZmQp OwotCXRhYmxldHNydi5pbmZkID0gdGFibGV0c3J2Lm91dGZkID0gZmRbMF07Ci0JdGFibGV0 c3J2LnNydmZkID0gZmRbMV07Ci0JdGFibGV0c3J2LnRyZWUgPSBhbGxvY3RyZWUoZ2V0dXNl cigpLCBnZXR1c2VyKCksIDA1NTUsIDApOwotCXRmaWxlID0gY3JlYXRlZmlsZSh0YWJsZXRz cnYudHJlZS0+cm9vdCwgInRhYmxldCIsIGdldHVzZXIoKSwgMDQwMCwgMCk7Ci0JaWYocmZv cmsoUkZQUk9DIHwgUkZNRU0gfCBSRk5PV0FJVCB8IFJGTk9URUcpID4gMCkgZXhpdHMobmls KTsKLQlpZihyZm9yayhSRlBST0MgfCBSRk1FTSkgPT0gMCkgewotCQlzcnYoJnRhYmxldHNy dik7Ci0JCWV4aXRzKG5pbCk7Ci0JfQotCW1vdW50KGZkWzFdLCAtMSwgIi9kZXYiLCBNQUZU RVIsICIiKTsKLQkKLQl0ID0gbmV3dGFibGV0KCIvZGV2L2VpYTIiKTsKLQlpZighdCkgc3lz ZmF0YWwoIiVyIik7Ci0JaWYoc2NyZWVuc2l6ZSh0KSA8IDApIHN5c2ZhdGFsKCIlciIpOwot CWlmKHF1ZXJ5KHQpIDwgMCkgc3lzZmF0YWwoIiVyIik7Ci0Jd2hpbGUoMSkgewotCQltID0g cmVhZHBhY2tldCh0KTsKLQkJaWYoIW0pIHN5c2ZhdGFsKCIlciIpOwotCQlzZW5kb3V0KG0p OwotCQltc2dkZWNyZWYobSk7Ci0JfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK KwlmcHJpbnQoMiwgInVzYWdlOiAlcyBbLWQgZGV2XVxuIiwgYXJndjApOworCWV4aXRzKCJ1 c2FnZSIpOworfQorCit2b2lkCit0aHJlYWRtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p Cit7CisJQ2hhbm5lbCAqYzsKKwlUYWJsZXQgdDsKKworCUFSR0JFR0lOIHsKKwljYXNlICdk JzoKKwkJc3RybmNtcCh0LmRldiwgRUFSR0YodXNhZ2UoKSksIHNpemVvZih0LmRldikpOwor CQlicmVhazsKKwlkZWZhdWx0OgorCQl1c2FnZSgpOworCX0gQVJHRU5ECisKKwljID0gY2hh bmNyZWF0ZShzaXplb2YoVGFibGV0KSwgMTApOworCXN0cm5jcHkodC5kZXYsICIvZGV2L2Vp YTIiLCBzaXplb2YodC5kZXYpKTsKKworCXByb2NjcmVhdGUodXBkYXRlcHJvYywgYywgU1RB Q0spOworCXNlbmQoYywgJnQpOworCXByb2NjcmVhdGUoc3J2cHJvYywgYywgU1RBQ0spOwor fQo= --upas-tymrfvhcwdsxibzfwstzridigv-- --92de94d6e2174d2c8f02c45716b7c241--