From nobody Sun Feb 8 19:43:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1670339901; cv=none; d=zohomail.com; s=zohoarc; b=N6wyJ4foWNCZwVdHIcVIHWSZE+s7WXAVREsAArM2/dwqjJz5XFkzENmyFN2KS0AbZYDIE0guAUJDrK/WtEpCxVk//q/QS8+SWe/jTJJGhzU2sJBAhF0s2T0hXYDnWwARM+lip3Pf5F/Ou3iK9jjpqhdpphInSCdxHrrUFW26Uvo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670339901; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=CHTDlzgPJ/rUa/O8rInlgx9BEEW0QE8kC90nX0IeAic=; b=hv0+EXnpSg7dCYESMQNQijCcmM9Zz1bFNnSjdGHvkaQj/CkxuUjuWEm6o9k9uiLAALA69Qd48J5ZZYIR8lQ9/uuzrrlJJGqfprxmyC/VK9311y7WLxro0nXNNo/EkMAsfrjA86QV70irQlgKg85VYIr5Y7en6qYyZUSCB9zvl6o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1670339901602618.2967727154781; Tue, 6 Dec 2022 07:18:21 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.455048.712651 (Exim 4.92) (envelope-from ) id 1p2Zhd-0000v6-7g; Tue, 06 Dec 2022 15:17:49 +0000 Received: by outflank-mailman (output) from mailman id 455048.712651; Tue, 06 Dec 2022 15:17:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1p2Zhd-0000uz-4W; Tue, 06 Dec 2022 15:17:49 +0000 Received: by outflank-mailman (input) for mailman id 455048; Tue, 06 Dec 2022 15:17:47 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1p2Zhb-0000rw-1r for xen-devel@lists.xen.org; Tue, 06 Dec 2022 15:17:47 +0000 Received: from mail.xenproject.org (mail.xenproject.org [104.130.215.37]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 20962fc8-7579-11ed-8fd2-01056ac49cbb; Tue, 06 Dec 2022 16:17:45 +0100 (CET) Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1p2ZhM-0002EK-HA; Tue, 06 Dec 2022 15:17:32 +0000 Received: from julieng by xenbits.xenproject.org with local (Exim 4.92) (envelope-from ) id 1p2ZhM-0005Wc-FV; Tue, 06 Dec 2022 15:17:32 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 20962fc8-7579-11ed-8fd2-01056ac49cbb DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=Date:Message-Id:Subject:CC:From:To:MIME-Version: Content-Transfer-Encoding:Content-Type; bh=CHTDlzgPJ/rUa/O8rInlgx9BEEW0QE8kC90nX0IeAic=; b=ZL2gYAN0ixOZyNsQ3XrQgXIts+ +1+bbmm7vN9FmasyhQC81hxkftWITZbhvKEgRc4CtFYCdHRgQGpWSzOSz2sCwAd1jMk+SapYumN20 h047O3RdyzOR3fbTyLYPlHizangzjUxxc0TrMlmlMybFwVUE4dvdLoFCfn6HoerbCnkg=; Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8" Content-Transfer-Encoding: binary MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) To: xen-announce@lists.xen.org, xen-devel@lists.xen.org, xen-users@lists.xen.org, oss-security@lists.openwall.com From: Xen.org security team CC: Xen.org security team Subject: Xen Security Advisory 423 v1 (CVE-2022-3643) - Guests can trigger NIC interface reset/abort/crash via netback Message-Id: Date: Tue, 06 Dec 2022 15:17:32 +0000 X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity @xen.org) X-ZM-MESSAGEID: 1670339901983100001 --=separator Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Reviewed-by: Paul Durrant -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Xen Security Advisory CVE-2022-3643 / XSA-423 Guests can trigger NIC interface reset/abort/crash via netback ISSUE DESCRIPTION =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D It is possible for a guest to trigger a NIC interface reset/abort/crash in a Linux based network backend by sending certain kinds of packets. It appears to be an (unwritten?) assumption in the rest of the Linux network stack that packet protocol headers are all contained within the linear section of the SKB and some NICs behave badly if this is not the case. This has been reported to occur with Cisco (enic) and Broadcom NetXtrem II BCM5780 (bnx2x) though it may be an issue with other NICs/drivers as well. In case the frontend is sending requests with split headers, netback will forward those violating above mentioned assumption to the networking core, resulting in said misbehavior. IMPACT =3D=3D=3D=3D=3D=3D An unprivileged guest can cause network Denial of Service (DoS) of the host by sending network packets to the backend causing the related physical NIC to reset, abort, or crash. Data corruption or privilege escalation seem unlikely but have not been ruled out. VULNERABLE SYSTEMS =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D All systems using a Linux based network backend with kernel 3.19 and newer are vulnerable. Systems using other network backends are not known to be vulnerable. Systems using Cisco (enic driver) and Broadcom NetXtrem II BCM5780 (bnx2x driver) NICs for guest network access are known to be vulnerable. Systems using other NICs for guest network access cannot be ruled out to be vulnerable. MITIGATION =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Using another PV network backend (e.g. the qemu based "qnic" backend) will mitigate the problem. Using a dedicated network driver domain per guest will mitigate the problem. NOTE REGARDING LACK OF EMBARGO =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D This issue was discussed in public already. RESOLUTION =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Applying the attached patch resolves this issue. xsa423-linux.patch Linux 4.14 - 6.1-rc $ sha256sum xsa423* 6b11934a428ca990ee870b793c700064342b8d83bd6632a4c417de05d5c95dad xsa423-li= nux.patch $ -----BEGIN PGP SIGNATURE----- iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmOPXKAMHHBncEB4ZW4u b3JnAAoJEIP+FMlX6CvZptEIAI2kIbKXbZNr3k0riwXxH2tV4i6Ja9ad7to7CrGN VSCOG8S5+wBhI92RnVjkifFyA4FGdHaob7AYw7X5R43rLsFKEzw06R4pP0elsGoz w/ieETiUrdwmzIA3wx0p14kLIZdT2MWPtjuczbBYTWXVN9LGvUkIkuXLwZLOK5O5 HT2oAJhvgemcW8ThBBK0kI5Y1GxBlJ32hbQGBi6Wut6LUprZ+b3No3+/ylOfHRQG y0vgJ5TtjdIBcJ+xY97mgmMbIRW4lI54ju4G7D6QrGl3IAPD666y2u97QwefuK4V YigMIXIv2+PsCdo/6Vv/Fwt5g5C2PiFDr6Lx+pRNZcVIRl4=3D =3DpbpP -----END PGP SIGNATURE----- --=separator Content-Type: application/octet-stream; name="xsa423-linux.patch" Content-Disposition: attachment; filename="xsa423-linux.patch" Content-Transfer-Encoding: base64 RnJvbSAwZjA1ZDE3YjZlZDBiYTVlNzFiOGVhNzMxNmIxZmU1ZDcwZDVjNzkx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSb3NzIExhZ2Vyd2Fs bCA8cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4KRGF0ZTogVHVlLCAyMiBO b3YgMjAyMiAwOToxNjo1OSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIHhlbi9u ZXRiYWNrOiBFbnN1cmUgcHJvdG9jb2wgaGVhZGVycyBkb24ndCBmYWxsIGlu IHRoZQogbm9uLWxpbmVhciBhcmVhCgpJbiBzb21lIGNhc2VzLCB0aGUgZnJv bnRlbmQgbWF5IHNlbmQgYSBwYWNrZXQgd2hlcmUgdGhlIHByb3RvY29sIGhl YWRlcnMKYXJlIHNwcmVhZCBhY3Jvc3MgbXVsdGlwbGUgc2xvdHMuIFRoaXMg d291bGQgcmVzdWx0IGluIG5ldGJhY2sgY3JlYXRpbmcKYW4gc2tiIHdoZXJl IHRoZSBwcm90b2NvbCBoZWFkZXJzIHNwaWxsIG92ZXIgaW50byB0aGUgbm9u LWxpbmVhciBhcmVhLgpTb21lIGRyaXZlcnMgYW5kIE5JQ3MgZG9uJ3QgaGFu ZGxlIHRoaXMgcHJvcGVybHkgcmVzdWx0aW5nIGluIGFuCmludGVyZmFjZSBy ZXNldCBvciB3b3JzZS4KClRoaXMgaXNzdWUgd2FzIGludHJvZHVjZWQgYnkg dGhlIHJlbW92YWwgb2YgYW4gdW5jb25kaXRpb25hbCBza2IgcHVsbCBpbgp0 aGUgdHggcGF0aCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLiAgRml4IHRoaXMg d2l0aG91dCByZWludHJvZHVjaW5nIHRoZQpwdWxsIGJ5IHNldHRpbmcgdXAg Z3JhbnQgY29weSBvcHMgZm9yIGFzIG1hbnkgc2xvdHMgYXMgbmVlZGVkIHRv IHJlYWNoCnRoZSBYRU5fTkVUQkFDS19UWF9DT1BZX0xFTiBzaXplLiBBZGp1 c3QgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgdG8gaGFuZGxlCm11bHRpcGxlIGNv cHkgb3BlcmF0aW9ucyBwZXIgc2tiLgoKVGhpcyBpcyBYU0EtNDIzIC8gQ1ZF LTIwMjItMzY0My4KCkZpeGVzOiA3ZTVkNzc1Mzk1NmIgKCJ4ZW4tbmV0YmFj azogcmVtb3ZlIHVuY29uZGl0aW9uYWwgX19wc2tiX3B1bGxfdGFpbCgpIGlu IGd1ZXN0IFR4IHBhdGgiKQpTaWduZWQtb2ZmLWJ5OiBSb3NzIExhZ2Vyd2Fs bCA8cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IFBh dWwgRHVycmFudCA8cGF1bEB4ZW4ub3JnPgpTaWduZWQtb2ZmLWJ5OiBKdWVy Z2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQogZHJpdmVycy9uZXQv eGVuLW5ldGJhY2svbmV0YmFjay5jIHwgMjIzICsrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25z KCspLCAxMDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQveGVuLW5ldGJhY2svbmV0YmFjay5jIGIvZHJpdmVycy9uZXQveGVuLW5l dGJhY2svbmV0YmFjay5jCmluZGV4IDNkMjA4MWJiYmM4Ni4uMDU0YWMwZTg5 N2Y2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRi YWNrLmMKKysrIGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5j CkBAIC0zMzIsMTAgKzMzMiwxMyBAQCBzdGF0aWMgaW50IHhlbnZpZl9jb3Vu dF9yZXF1ZXN0cyhzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwKIAogCiBz dHJ1Y3QgeGVudmlmX3R4X2NiIHsKLQl1MTYgcGVuZGluZ19pZHg7CisJdTE2 IGNvcHlfcGVuZGluZ19pZHhbWEVOX05FVEJLX0xFR0FDWV9TTE9UU19NQVgg KyAxXTsKKwl1OCBjb3B5X2NvdW50OwogfTsKIAogI2RlZmluZSBYRU5WSUZf VFhfQ0Ioc2tiKSAoKHN0cnVjdCB4ZW52aWZfdHhfY2IgKikoc2tiKS0+Y2Ip CisjZGVmaW5lIGNvcHlfcGVuZGluZ19pZHgoc2tiLCBpKSAoWEVOVklGX1RY X0NCKHNrYiktPmNvcHlfcGVuZGluZ19pZHhbaV0pCisjZGVmaW5lIGNvcHlf Y291bnQoc2tiKSAoWEVOVklGX1RYX0NCKHNrYiktPmNvcHlfY291bnQpCiAK IHN0YXRpYyBpbmxpbmUgdm9pZCB4ZW52aWZfdHhfY3JlYXRlX21hcF9vcChz dHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwKIAkJCQkJICAgdTE2IHBlbmRp bmdfaWR4LApAQCAtMzcwLDMxICszNzMsOTMgQEAgc3RhdGljIGlubGluZSBz dHJ1Y3Qgc2tfYnVmZiAqeGVudmlmX2FsbG9jX3NrYih1bnNpZ25lZCBpbnQg c2l6ZSkKIAlyZXR1cm4gc2tiOwogfQogCi1zdGF0aWMgc3RydWN0IGdudHRh Yl9tYXBfZ3JhbnRfcmVmICp4ZW52aWZfZ2V0X3JlcXVlc3RzKHN0cnVjdCB4 ZW52aWZfcXVldWUgKnF1ZXVlLAotCQkJCQkJCXN0cnVjdCBza19idWZmICpz a2IsCi0JCQkJCQkJc3RydWN0IHhlbl9uZXRpZl90eF9yZXF1ZXN0ICp0eHAs Ci0JCQkJCQkJc3RydWN0IGdudHRhYl9tYXBfZ3JhbnRfcmVmICpnb3AsCi0J CQkJCQkJdW5zaWduZWQgaW50IGZyYWdfb3ZlcmZsb3csCi0JCQkJCQkJc3Ry dWN0IHNrX2J1ZmYgKm5za2IpCitzdGF0aWMgdm9pZCB4ZW52aWZfZ2V0X3Jl cXVlc3RzKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAorCQkJCXN0cnVj dCBza19idWZmICpza2IsCisJCQkJc3RydWN0IHhlbl9uZXRpZl90eF9yZXF1 ZXN0ICpmaXJzdCwKKwkJCQlzdHJ1Y3QgeGVuX25ldGlmX3R4X3JlcXVlc3Qg KnR4ZnJhZ3MsCisJCQkgICAgICAgIHVuc2lnbmVkICpjb3B5X29wcywKKwkJ CSAgICAgICAgdW5zaWduZWQgKm1hcF9vcHMsCisJCQkJdW5zaWduZWQgaW50 IGZyYWdfb3ZlcmZsb3csCisJCQkJc3RydWN0IHNrX2J1ZmYgKm5za2IsCisJ CQkJdW5zaWduZWQgaW50IGV4dHJhX2NvdW50LAorCQkJCXVuc2lnbmVkIGlu dCBkYXRhX2xlbikKIHsKIAlzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvICpzaGlu Zm8gPSBza2Jfc2hpbmZvKHNrYik7CiAJc2tiX2ZyYWdfdCAqZnJhZ3MgPSBz aGluZm8tPmZyYWdzOwotCXUxNiBwZW5kaW5nX2lkeCA9IFhFTlZJRl9UWF9D Qihza2IpLT5wZW5kaW5nX2lkeDsKLQlpbnQgc3RhcnQ7CisJdTE2IHBlbmRp bmdfaWR4OwogCXBlbmRpbmdfcmluZ19pZHhfdCBpbmRleDsKIAl1bnNpZ25l ZCBpbnQgbnJfc2xvdHM7CisJc3RydWN0IGdudHRhYl9jb3B5ICpjb3AgPSBx dWV1ZS0+dHhfY29weV9vcHMgKyAqY29weV9vcHM7CisJc3RydWN0IGdudHRh Yl9tYXBfZ3JhbnRfcmVmICpnb3AgPSBxdWV1ZS0+dHhfbWFwX29wcyArICpt YXBfb3BzOworCXN0cnVjdCB4ZW5fbmV0aWZfdHhfcmVxdWVzdCAqdHhwID0g Zmlyc3Q7CisKKwlucl9zbG90cyA9IHNoaW5mby0+bnJfZnJhZ3MgKyAxOwor CisJY29weV9jb3VudChza2IpID0gMDsKKworCS8qIENyZWF0ZSBjb3B5IG9w cyBmb3IgZXhhY3RseSBkYXRhX2xlbiBieXRlcyBpbnRvIHRoZSBza2IgaGVh ZC4gKi8KKwlfX3NrYl9wdXQoc2tiLCBkYXRhX2xlbik7CisJd2hpbGUgKGRh dGFfbGVuID4gMCkgeworCQlpbnQgYW1vdW50ID0gZGF0YV9sZW4gPiB0eHAt PnNpemUgPyB0eHAtPnNpemUgOiBkYXRhX2xlbjsKKworCQljb3AtPnNvdXJj ZS51LnJlZiA9IHR4cC0+Z3JlZjsKKwkJY29wLT5zb3VyY2UuZG9taWQgPSBx dWV1ZS0+dmlmLT5kb21pZDsKKwkJY29wLT5zb3VyY2Uub2Zmc2V0ID0gdHhw LT5vZmZzZXQ7CisKKwkJY29wLT5kZXN0LmRvbWlkID0gRE9NSURfU0VMRjsK KwkJY29wLT5kZXN0Lm9mZnNldCA9IChvZmZzZXRfaW5fcGFnZShza2ItPmRh dGEgKworCQkJCQkJICAgc2tiX2hlYWRsZW4oc2tiKSAtCisJCQkJCQkgICBk YXRhX2xlbikpICYgflhFTl9QQUdFX01BU0s7CisJCWNvcC0+ZGVzdC51Lmdt Zm4gPSB2aXJ0X3RvX2dmbihza2ItPmRhdGEgKyBza2JfaGVhZGxlbihza2Ip CisJCQkJICAgICAgICAgICAgICAgLSBkYXRhX2xlbik7CisKKwkJY29wLT5s ZW4gPSBhbW91bnQ7CisJCWNvcC0+ZmxhZ3MgPSBHTlRDT1BZX3NvdXJjZV9n cmVmOwogCi0JbnJfc2xvdHMgPSBzaGluZm8tPm5yX2ZyYWdzOworCQlpbmRl eCA9IHBlbmRpbmdfaW5kZXgocXVldWUtPnBlbmRpbmdfY29ucyk7CisJCXBl bmRpbmdfaWR4ID0gcXVldWUtPnBlbmRpbmdfcmluZ1tpbmRleF07CisJCWNh bGxiYWNrX3BhcmFtKHF1ZXVlLCBwZW5kaW5nX2lkeCkuY3R4ID0gTlVMTDsK KwkJY29weV9wZW5kaW5nX2lkeChza2IsIGNvcHlfY291bnQoc2tiKSkgPSBw ZW5kaW5nX2lkeDsKKwkJY29weV9jb3VudChza2IpKys7CisKKwkJY29wKys7 CisJCWRhdGFfbGVuIC09IGFtb3VudDsKIAotCS8qIFNraXAgZmlyc3Qgc2ti IGZyYWdtZW50IGlmIGl0IGlzIG9uIHNhbWUgcGFnZSBhcyBoZWFkZXIgZnJh Z21lbnQuICovCi0Jc3RhcnQgPSAoZnJhZ19nZXRfcGVuZGluZ19pZHgoJnNo aW5mby0+ZnJhZ3NbMF0pID09IHBlbmRpbmdfaWR4KTsKKwkJaWYgKGFtb3Vu dCA9PSB0eHAtPnNpemUpIHsKKwkJCS8qIFRoZSBjb3B5IG9wIGNvdmVyZWQg dGhlIGZ1bGwgdHhfcmVxdWVzdCAqLworCisJCQltZW1jcHkoJnF1ZXVlLT5w ZW5kaW5nX3R4X2luZm9bcGVuZGluZ19pZHhdLnJlcSwKKwkJCSAgICAgICB0 eHAsIHNpemVvZigqdHhwKSk7CisJCQlxdWV1ZS0+cGVuZGluZ190eF9pbmZv W3BlbmRpbmdfaWR4XS5leHRyYV9jb3VudCA9CisJCQkJKHR4cCA9PSBmaXJz dCkgPyBleHRyYV9jb3VudCA6IDA7CisKKwkJCWlmICh0eHAgPT0gZmlyc3Qp CisJCQkJdHhwID0gdHhmcmFnczsKKwkJCWVsc2UKKwkJCQl0eHArKzsKKwkJ CXF1ZXVlLT5wZW5kaW5nX2NvbnMrKzsKKwkJCW5yX3Nsb3RzLS07CisJCX0g ZWxzZSB7CisJCQkvKiBUaGUgY29weSBvcCBwYXJ0aWFsbHkgY292ZXJlZCB0 aGUgdHhfcmVxdWVzdC4KKwkJCSAqIFRoZSByZW1haW5kZXIgd2lsbCBiZSBt YXBwZWQuCisJCQkgKi8KKwkJCXR4cC0+b2Zmc2V0ICs9IGFtb3VudDsKKwkJ CXR4cC0+c2l6ZSAtPSBhbW91bnQ7CisJCX0KKwl9CiAKLQlmb3IgKHNoaW5m by0+bnJfZnJhZ3MgPSBzdGFydDsgc2hpbmZvLT5ucl9mcmFncyA8IG5yX3Ns b3RzOwotCSAgICAgc2hpbmZvLT5ucl9mcmFncysrLCB0eHArKywgZ29wKysp IHsKKwlmb3IgKHNoaW5mby0+bnJfZnJhZ3MgPSAwOyBzaGluZm8tPm5yX2Zy YWdzIDwgbnJfc2xvdHM7CisJICAgICBzaGluZm8tPm5yX2ZyYWdzKyssIGdv cCsrKSB7CiAJCWluZGV4ID0gcGVuZGluZ19pbmRleChxdWV1ZS0+cGVuZGlu Z19jb25zKyspOwogCQlwZW5kaW5nX2lkeCA9IHF1ZXVlLT5wZW5kaW5nX3Jp bmdbaW5kZXhdOwotCQl4ZW52aWZfdHhfY3JlYXRlX21hcF9vcChxdWV1ZSwg cGVuZGluZ19pZHgsIHR4cCwgMCwgZ29wKTsKKwkJeGVudmlmX3R4X2NyZWF0 ZV9tYXBfb3AocXVldWUsIHBlbmRpbmdfaWR4LCB0eHAsCisJCQkJICAgICAg ICB0eHAgPT0gZmlyc3QgPyBleHRyYV9jb3VudCA6IDAsIGdvcCk7CiAJCWZy YWdfc2V0X3BlbmRpbmdfaWR4KCZmcmFnc1tzaGluZm8tPm5yX2ZyYWdzXSwg cGVuZGluZ19pZHgpOworCisJCWlmICh0eHAgPT0gZmlyc3QpCisJCQl0eHAg PSB0eGZyYWdzOworCQllbHNlCisJCQl0eHArKzsKIAl9CiAKIAlpZiAoZnJh Z19vdmVyZmxvdykgewpAQCAtNDE1LDcgKzQ4MCw4IEBAIHN0YXRpYyBzdHJ1 Y3QgZ250dGFiX21hcF9ncmFudF9yZWYgKnhlbnZpZl9nZXRfcmVxdWVzdHMo c3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVlCiAJCXNrYl9zaGluZm8oc2tiKS0+ ZnJhZ19saXN0ID0gbnNrYjsKIAl9CiAKLQlyZXR1cm4gZ29wOworCSgqY29w eV9vcHMpID0gY29wIC0gcXVldWUtPnR4X2NvcHlfb3BzOworCSgqbWFwX29w cykgPSBnb3AgLSBxdWV1ZS0+dHhfbWFwX29wczsKIH0KIAogc3RhdGljIGlu bGluZSB2b2lkIHhlbnZpZl9ncmFudF9oYW5kbGVfc2V0KHN0cnVjdCB4ZW52 aWZfcXVldWUgKnF1ZXVlLApAQCAtNDUxLDcgKzUxNyw3IEBAIHN0YXRpYyBp bnQgeGVudmlmX3R4X2NoZWNrX2dvcChzdHJ1Y3QgeGVudmlmX3F1ZXVlICpx dWV1ZSwKIAkJCSAgICAgICBzdHJ1Y3QgZ250dGFiX2NvcHkgKipnb3BwX2Nv cHkpCiB7CiAJc3RydWN0IGdudHRhYl9tYXBfZ3JhbnRfcmVmICpnb3BfbWFw ID0gKmdvcHBfbWFwOwotCXUxNiBwZW5kaW5nX2lkeCA9IFhFTlZJRl9UWF9D Qihza2IpLT5wZW5kaW5nX2lkeDsKKwl1MTYgcGVuZGluZ19pZHg7CiAJLyog VGhpcyBhbHdheXMgcG9pbnRzIHRvIHRoZSBzaGluZm8gb2YgdGhlIHNrYiBi ZWluZyBjaGVja2VkLCB3aGljaAogCSAqIGNvdWxkIGJlIGVpdGhlciB0aGUg Zmlyc3Qgb3IgdGhlIG9uZSBvbiB0aGUgZnJhZ19saXN0CiAJICovCkBAIC00 NjIsMjQgKzUyOCwzNyBAQCBzdGF0aWMgaW50IHhlbnZpZl90eF9jaGVja19n b3Aoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUsCiAJc3RydWN0IHNrYl9z aGFyZWRfaW5mbyAqZmlyc3Rfc2hpbmZvID0gTlVMTDsKIAlpbnQgbnJfZnJh Z3MgPSBzaGluZm8tPm5yX2ZyYWdzOwogCWNvbnN0IGJvb2wgc2hhcmVkc2xv dCA9IG5yX2ZyYWdzICYmCi0JCQkJZnJhZ19nZXRfcGVuZGluZ19pZHgoJnNo aW5mby0+ZnJhZ3NbMF0pID09IHBlbmRpbmdfaWR4OworCQkJCWZyYWdfZ2V0 X3BlbmRpbmdfaWR4KCZzaGluZm8tPmZyYWdzWzBdKSA9PQorCQkJCSAgICBj b3B5X3BlbmRpbmdfaWR4KHNrYiwgY29weV9jb3VudChza2IpIC0gMSk7CiAJ aW50IGksIGVycjsKIAotCS8qIENoZWNrIHN0YXR1cyBvZiBoZWFkZXIuICov Ci0JZXJyID0gKCpnb3BwX2NvcHkpLT5zdGF0dXM7Ci0JaWYgKHVubGlrZWx5 KGVycikpIHsKLQkJaWYgKG5ldF9yYXRlbGltaXQoKSkKLQkJCW5ldGRldl9k YmcocXVldWUtPnZpZi0+ZGV2LAotCQkJCSAgICJHcmFudCBjb3B5IG9mIGhl YWRlciBmYWlsZWQhIHN0YXR1czogJWQgcGVuZGluZ19pZHg6ICV1IHJlZjog JXVcbiIsCi0JCQkJICAgKCpnb3BwX2NvcHkpLT5zdGF0dXMsCi0JCQkJICAg cGVuZGluZ19pZHgsCi0JCQkJICAgKCpnb3BwX2NvcHkpLT5zb3VyY2UudS5y ZWYpOwotCQkvKiBUaGUgZmlyc3QgZnJhZyBtaWdodCBzdGlsbCBoYXZlIHRo aXMgc2xvdCBtYXBwZWQgKi8KLQkJaWYgKCFzaGFyZWRzbG90KQotCQkJeGVu dmlmX2lkeF9yZWxlYXNlKHF1ZXVlLCBwZW5kaW5nX2lkeCwKLQkJCQkJICAg WEVOX05FVElGX1JTUF9FUlJPUik7CisJZm9yIChpID0gMDsgaSA8IGNvcHlf Y291bnQoc2tiKTsgaSsrKSB7CisJCWludCBuZXdlcnI7CisKKwkJLyogQ2hl Y2sgc3RhdHVzIG9mIGhlYWRlci4gKi8KKwkJcGVuZGluZ19pZHggPSBjb3B5 X3BlbmRpbmdfaWR4KHNrYiwgaSk7CisKKwkJbmV3ZXJyID0gKCpnb3BwX2Nv cHkpLT5zdGF0dXM7CisJCWlmIChsaWtlbHkoIW5ld2VycikpIHsKKwkJCS8q IFRoZSBmaXJzdCBmcmFnIG1pZ2h0IHN0aWxsIGhhdmUgdGhpcyBzbG90IG1h cHBlZCAqLworCQkJaWYgKGkgPCBjb3B5X2NvdW50KHNrYikgLSAxIHx8ICFz aGFyZWRzbG90KQorCQkJCXhlbnZpZl9pZHhfcmVsZWFzZShxdWV1ZSwgcGVu ZGluZ19pZHgsCisJCQkJCQkgICBYRU5fTkVUSUZfUlNQX09LQVkpOworCQl9 IGVsc2UgeworCQkJZXJyID0gbmV3ZXJyOworCQkJaWYgKG5ldF9yYXRlbGlt aXQoKSkKKwkJCQluZXRkZXZfZGJnKHF1ZXVlLT52aWYtPmRldiwKKwkJCQkJ ICAgIkdyYW50IGNvcHkgb2YgaGVhZGVyIGZhaWxlZCEgc3RhdHVzOiAlZCBw ZW5kaW5nX2lkeDogJXUgcmVmOiAldVxuIiwKKwkJCQkJICAgKCpnb3BwX2Nv cHkpLT5zdGF0dXMsCisJCQkJCSAgIHBlbmRpbmdfaWR4LAorCQkJCQkgICAo KmdvcHBfY29weSktPnNvdXJjZS51LnJlZik7CisJCQkvKiBUaGUgZmlyc3Qg ZnJhZyBtaWdodCBzdGlsbCBoYXZlIHRoaXMgc2xvdCBtYXBwZWQgKi8KKwkJ CWlmIChpIDwgY29weV9jb3VudChza2IpIC0gMSB8fCAhc2hhcmVkc2xvdCkK KwkJCQl4ZW52aWZfaWR4X3JlbGVhc2UocXVldWUsIHBlbmRpbmdfaWR4LAor CQkJCQkJICAgWEVOX05FVElGX1JTUF9FUlJPUik7CisJCX0KKwkJKCpnb3Bw X2NvcHkpKys7CiAJfQotCSgqZ29wcF9jb3B5KSsrOwogCiBjaGVja19mcmFn czoKIAlmb3IgKGkgPSAwOyBpIDwgbnJfZnJhZ3M7IGkrKywgZ29wX21hcCsr KSB7CkBAIC01MjYsMTQgKzYwNSw2IEBAIHN0YXRpYyBpbnQgeGVudmlmX3R4 X2NoZWNrX2dvcChzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwKIAkJaWYg KGVycikKIAkJCWNvbnRpbnVlOwogCi0JCS8qIEZpcnN0IGVycm9yOiBpZiB0 aGUgaGVhZGVyIGhhdmVuJ3Qgc2hhcmVkIGEgc2xvdCB3aXRoIHRoZQotCQkg KiBmaXJzdCBmcmFnLCByZWxlYXNlIGl0IGFzIHdlbGwuCi0JCSAqLwotCQlp ZiAoIXNoYXJlZHNsb3QpCi0JCQl4ZW52aWZfaWR4X3JlbGVhc2UocXVldWUs Ci0JCQkJCSAgIFhFTlZJRl9UWF9DQihza2IpLT5wZW5kaW5nX2lkeCwKLQkJ CQkJICAgWEVOX05FVElGX1JTUF9PS0FZKTsKLQogCQkvKiBJbnZhbGlkYXRl IHByZWNlZGluZyBmcmFnbWVudHMgb2YgdGhpcyBza2IuICovCiAJCWZvciAo aiA9IDA7IGogPCBpOyBqKyspIHsKIAkJCXBlbmRpbmdfaWR4ID0gZnJhZ19n ZXRfcGVuZGluZ19pZHgoJnNoaW5mby0+ZnJhZ3Nbal0pOwpAQCAtODAzLDcg Kzg3NCw2IEBAIHN0YXRpYyB2b2lkIHhlbnZpZl90eF9idWlsZF9nb3BzKHN0 cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAogCQkJCSAgICAgdW5zaWduZWQg KmNvcHlfb3BzLAogCQkJCSAgICAgdW5zaWduZWQgKm1hcF9vcHMpCiB7Ci0J c3RydWN0IGdudHRhYl9tYXBfZ3JhbnRfcmVmICpnb3AgPSBxdWV1ZS0+dHhf bWFwX29wczsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqbnNrYjsKIAlpbnQg cmV0OwogCXVuc2lnbmVkIGludCBmcmFnX292ZXJmbG93OwpAQCAtODg1LDgg Kzk1NSwxMiBAQCBzdGF0aWMgdm9pZCB4ZW52aWZfdHhfYnVpbGRfZ29wcyhz dHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwKIAkJCWNvbnRpbnVlOwogCQl9 CiAKKwkJZGF0YV9sZW4gPSAodHhyZXEuc2l6ZSA+IFhFTl9ORVRCQUNLX1RY X0NPUFlfTEVOKSA/CisJCQlYRU5fTkVUQkFDS19UWF9DT1BZX0xFTiA6IHR4 cmVxLnNpemU7CisKIAkJcmV0ID0geGVudmlmX2NvdW50X3JlcXVlc3RzKHF1 ZXVlLCAmdHhyZXEsIGV4dHJhX2NvdW50LAogCQkJCQkgICAgdHhmcmFncywg d29ya190b19kbyk7CisKIAkJaWYgKHVubGlrZWx5KHJldCA8IDApKQogCQkJ YnJlYWs7CiAKQEAgLTkxMiw5ICs5ODYsOCBAQCBzdGF0aWMgdm9pZCB4ZW52 aWZfdHhfYnVpbGRfZ29wcyhzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwK IAkJaW5kZXggPSBwZW5kaW5nX2luZGV4KHF1ZXVlLT5wZW5kaW5nX2NvbnMp OwogCQlwZW5kaW5nX2lkeCA9IHF1ZXVlLT5wZW5kaW5nX3JpbmdbaW5kZXhd OwogCi0JCWRhdGFfbGVuID0gKHR4cmVxLnNpemUgPiBYRU5fTkVUQkFDS19U WF9DT1BZX0xFTiAmJgotCQkJICAgIHJldCA8IFhFTl9ORVRCS19MRUdBQ1lf U0xPVFNfTUFYKSA/Ci0JCQlYRU5fTkVUQkFDS19UWF9DT1BZX0xFTiA6IHR4 cmVxLnNpemU7CisJCWlmIChyZXQgPj0gWEVOX05FVEJLX0xFR0FDWV9TTE9U U19NQVggLSAxICYmIGRhdGFfbGVuIDwgdHhyZXEuc2l6ZSkKKwkJCWRhdGFf bGVuID0gdHhyZXEuc2l6ZTsKIAogCQlza2IgPSB4ZW52aWZfYWxsb2Nfc2ti KGRhdGFfbGVuKTsKIAkJaWYgKHVubGlrZWx5KHNrYiA9PSBOVUxMKSkgewpA QCAtOTI1LDggKzk5OCw2IEBAIHN0YXRpYyB2b2lkIHhlbnZpZl90eF9idWls ZF9nb3BzKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAogCQl9CiAKIAkJ c2tiX3NoaW5mbyhza2IpLT5ucl9mcmFncyA9IHJldDsKLQkJaWYgKGRhdGFf bGVuIDwgdHhyZXEuc2l6ZSkKLQkJCXNrYl9zaGluZm8oc2tiKS0+bnJfZnJh Z3MrKzsKIAkJLyogQXQgdGhpcyBwb2ludCBzaGluZm8tPm5yX2ZyYWdzIGlz IGluIGZhY3QgdGhlIG51bWJlciBvZgogCQkgKiBzbG90cywgd2hpY2ggY2Fu IGJlIGFzIGxhcmdlIGFzIFhFTl9ORVRCS19MRUdBQ1lfU0xPVFNfTUFYLgog CQkgKi8KQEAgLTk4OCw1NCArMTA1OSwxOSBAQCBzdGF0aWMgdm9pZCB4ZW52 aWZfdHhfYnVpbGRfZ29wcyhzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwK IAkJCQkJICAgICB0eXBlKTsKIAkJfQogCi0JCVhFTlZJRl9UWF9DQihza2Ip LT5wZW5kaW5nX2lkeCA9IHBlbmRpbmdfaWR4OwotCi0JCV9fc2tiX3B1dChz a2IsIGRhdGFfbGVuKTsKLQkJcXVldWUtPnR4X2NvcHlfb3BzWypjb3B5X29w c10uc291cmNlLnUucmVmID0gdHhyZXEuZ3JlZjsKLQkJcXVldWUtPnR4X2Nv cHlfb3BzWypjb3B5X29wc10uc291cmNlLmRvbWlkID0gcXVldWUtPnZpZi0+ ZG9taWQ7Ci0JCXF1ZXVlLT50eF9jb3B5X29wc1sqY29weV9vcHNdLnNvdXJj ZS5vZmZzZXQgPSB0eHJlcS5vZmZzZXQ7Ci0KLQkJcXVldWUtPnR4X2NvcHlf b3BzWypjb3B5X29wc10uZGVzdC51LmdtZm4gPQotCQkJdmlydF90b19nZm4o c2tiLT5kYXRhKTsKLQkJcXVldWUtPnR4X2NvcHlfb3BzWypjb3B5X29wc10u ZGVzdC5kb21pZCA9IERPTUlEX1NFTEY7Ci0JCXF1ZXVlLT50eF9jb3B5X29w c1sqY29weV9vcHNdLmRlc3Qub2Zmc2V0ID0KLQkJCW9mZnNldF9pbl9wYWdl KHNrYi0+ZGF0YSkgJiB+WEVOX1BBR0VfTUFTSzsKLQotCQlxdWV1ZS0+dHhf Y29weV9vcHNbKmNvcHlfb3BzXS5sZW4gPSBkYXRhX2xlbjsKLQkJcXVldWUt PnR4X2NvcHlfb3BzWypjb3B5X29wc10uZmxhZ3MgPSBHTlRDT1BZX3NvdXJj ZV9ncmVmOwotCi0JCSgqY29weV9vcHMpKys7Ci0KLQkJaWYgKGRhdGFfbGVu IDwgdHhyZXEuc2l6ZSkgewotCQkJZnJhZ19zZXRfcGVuZGluZ19pZHgoJnNr Yl9zaGluZm8oc2tiKS0+ZnJhZ3NbMF0sCi0JCQkJCSAgICAgcGVuZGluZ19p ZHgpOwotCQkJeGVudmlmX3R4X2NyZWF0ZV9tYXBfb3AocXVldWUsIHBlbmRp bmdfaWR4LCAmdHhyZXEsCi0JCQkJCQlleHRyYV9jb3VudCwgZ29wKTsKLQkJ CWdvcCsrOwotCQl9IGVsc2UgewotCQkJZnJhZ19zZXRfcGVuZGluZ19pZHgo JnNrYl9zaGluZm8oc2tiKS0+ZnJhZ3NbMF0sCi0JCQkJCSAgICAgSU5WQUxJ RF9QRU5ESU5HX0lEWCk7Ci0JCQltZW1jcHkoJnF1ZXVlLT5wZW5kaW5nX3R4 X2luZm9bcGVuZGluZ19pZHhdLnJlcSwKLQkJCSAgICAgICAmdHhyZXEsIHNp emVvZih0eHJlcSkpOwotCQkJcXVldWUtPnBlbmRpbmdfdHhfaW5mb1twZW5k aW5nX2lkeF0uZXh0cmFfY291bnQgPQotCQkJCWV4dHJhX2NvdW50OwotCQl9 Ci0KLQkJcXVldWUtPnBlbmRpbmdfY29ucysrOwotCi0JCWdvcCA9IHhlbnZp Zl9nZXRfcmVxdWVzdHMocXVldWUsIHNrYiwgdHhmcmFncywgZ29wLAotCQkJ CSAgICAgICAgICBmcmFnX292ZXJmbG93LCBuc2tiKTsKKwkJeGVudmlmX2dl dF9yZXF1ZXN0cyhxdWV1ZSwgc2tiLCAmdHhyZXEsIHR4ZnJhZ3MsIGNvcHlf b3BzLAorCQkJCSAgICBtYXBfb3BzLCBmcmFnX292ZXJmbG93LCBuc2tiLCBl eHRyYV9jb3VudCwKKwkJCQkgICAgZGF0YV9sZW4pOwogCiAJCV9fc2tiX3F1 ZXVlX3RhaWwoJnF1ZXVlLT50eF9xdWV1ZSwgc2tiKTsKIAogCQlxdWV1ZS0+ dHgucmVxX2NvbnMgPSBpZHg7CiAKLQkJaWYgKCgoZ29wLXF1ZXVlLT50eF9t YXBfb3BzKSA+PSBBUlJBWV9TSVpFKHF1ZXVlLT50eF9tYXBfb3BzKSkgfHwK KwkJaWYgKCgqbWFwX29wcyA+PSBBUlJBWV9TSVpFKHF1ZXVlLT50eF9tYXBf b3BzKSkgfHwKIAkJICAgICgqY29weV9vcHMgPj0gQVJSQVlfU0laRShxdWV1 ZS0+dHhfY29weV9vcHMpKSkKIAkJCWJyZWFrOwogCX0KIAotCSgqbWFwX29w cykgPSBnb3AgLSBxdWV1ZS0+dHhfbWFwX29wczsKIAlyZXR1cm47CiB9CiAK QEAgLTExMTQsOSArMTE1MCw4IEBAIHN0YXRpYyBpbnQgeGVudmlmX3R4X3N1 Ym1pdChzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSkKIAl3aGlsZSAoKHNr YiA9IF9fc2tiX2RlcXVldWUoJnF1ZXVlLT50eF9xdWV1ZSkpICE9IE5VTEwp IHsKIAkJc3RydWN0IHhlbl9uZXRpZl90eF9yZXF1ZXN0ICp0eHA7CiAJCXUx NiBwZW5kaW5nX2lkeDsKLQkJdW5zaWduZWQgZGF0YV9sZW47CiAKLQkJcGVu ZGluZ19pZHggPSBYRU5WSUZfVFhfQ0Ioc2tiKS0+cGVuZGluZ19pZHg7CisJ CXBlbmRpbmdfaWR4ID0gY29weV9wZW5kaW5nX2lkeChza2IsIDApOwogCQl0 eHAgPSAmcXVldWUtPnBlbmRpbmdfdHhfaW5mb1twZW5kaW5nX2lkeF0ucmVx OwogCiAJCS8qIENoZWNrIHRoZSByZW1hcCBlcnJvciBjb2RlLiAqLwpAQCAt MTEzNSwxOCArMTE3MCw2IEBAIHN0YXRpYyBpbnQgeGVudmlmX3R4X3N1Ym1p dChzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSkKIAkJCWNvbnRpbnVlOwog CQl9CiAKLQkJZGF0YV9sZW4gPSBza2ItPmxlbjsKLQkJY2FsbGJhY2tfcGFy YW0ocXVldWUsIHBlbmRpbmdfaWR4KS5jdHggPSBOVUxMOwotCQlpZiAoZGF0 YV9sZW4gPCB0eHAtPnNpemUpIHsKLQkJCS8qIEFwcGVuZCB0aGUgcGFja2V0 IHBheWxvYWQgYXMgYSBmcmFnbWVudC4gKi8KLQkJCXR4cC0+b2Zmc2V0ICs9 IGRhdGFfbGVuOwotCQkJdHhwLT5zaXplIC09IGRhdGFfbGVuOwotCQl9IGVs c2UgewotCQkJLyogU2NoZWR1bGUgYSByZXNwb25zZSBpbW1lZGlhdGVseS4g Ki8KLQkJCXhlbnZpZl9pZHhfcmVsZWFzZShxdWV1ZSwgcGVuZGluZ19pZHgs Ci0JCQkJCSAgIFhFTl9ORVRJRl9SU1BfT0tBWSk7Ci0JCX0KLQogCQlpZiAo dHhwLT5mbGFncyAmIFhFTl9ORVRUWEZfY3N1bV9ibGFuaykKIAkJCXNrYi0+ aXBfc3VtbWVkID0gQ0hFQ0tTVU1fUEFSVElBTDsKIAkJZWxzZSBpZiAodHhw LT5mbGFncyAmIFhFTl9ORVRUWEZfZGF0YV92YWxpZGF0ZWQpCkBAIC0xMzMy LDcgKzEzNTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgeGVudmlmX3R4X2Rl YWxsb2NfYWN0aW9uKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlKQogLyog Q2FsbGVkIGFmdGVyIG5ldGZyb250IGhhcyB0cmFuc21pdHRlZCAqLwogaW50 IHhlbnZpZl90eF9hY3Rpb24oc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUs IGludCBidWRnZXQpCiB7Ci0JdW5zaWduZWQgbnJfbW9wcywgbnJfY29wcyA9 IDA7CisJdW5zaWduZWQgbnJfbW9wcyA9IDAsIG5yX2NvcHMgPSAwOwogCWlu dCB3b3JrX2RvbmUsIHJldDsKIAogCWlmICh1bmxpa2VseSghdHhfd29ya190 b2RvKHF1ZXVlKSkpCi0tIAoyLjM1LjMKCg== --=separator--