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 X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 098D5C2D0CF for ; Tue, 24 Dec 2019 15:20:14 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C6F7B206D3 for ; Tue, 24 Dec 2019 15:20:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="XDCWq1vQ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C6F7B206D3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ijlyO-0000DW-Eb; Tue, 24 Dec 2019 15:19:48 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ijlyN-0000DB-7n for xen-devel@lists.xenproject.org; Tue, 24 Dec 2019 15:19:47 +0000 X-Inumbo-ID: cc7907fe-2660-11ea-a914-bc764e2007e4 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id cc7907fe-2660-11ea-a914-bc764e2007e4; Tue, 24 Dec 2019 15:19:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1577200778; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=HBWvN/EhXh572ocYjiir/jQ4OyA62+y9bdVvZ/ZLnsc=; b=XDCWq1vQyC0f2bSMru07O6LyPQAfQrQWCVgi7XDhwDb679GIjHw+K5G/ MBgTx7BHWrn+hGHbpH6zKnLuCX8XJ3tMb41fCeSl7TJF0QwJP3+ad6BJF oCCym5eYhWL1RnC2ls/QflpEGv0v7/rNMMKxGm4yv6+r2NPWIfWaEdUA2 Y=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=andrew.cooper3@citrix.com; spf=Pass smtp.mailfrom=Andrew.Cooper3@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender authenticity information available from domain of andrew.cooper3@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="andrew.cooper3@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa5.hc3370-68.iphmx.com: domain of Andrew.Cooper3@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="Andrew.Cooper3@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: jlcK4XYV93j2noYofxyQVYWbymQUK14GnAWhir2QgB251jPXiDpYqYNZhIo2NY3diwakCma+Sp LxVeaqenpIecwSctgRuXASuiLLAqzyqo2/3rh97HEhFlFpTDfFQKXpX2p2yciDtMcjAeETKeTv BnCnNDp8/ZgHxIrNbQZYg9meiuz+zcyNRaZ3faRMf1slW92Vt/lkm83Vt/UAyFXBIbam0eYJ82 BmagAMjct6tOHr4MAVsq3/r0VwfzesEPydI1P34mneal/n3YKi4UVcbNjNVqTO/PCYz8WH+RiI pQ8= X-SBRS: 2.7 X-MesageID: 10482746 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.69,351,1571716800"; d="scan'208";a="10482746" From: Andrew Cooper To: Xen-devel Date: Tue, 24 Dec 2019 15:19:22 +0000 Message-ID: <20191224151932.6304-3-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20191224151932.6304-1-andrew.cooper3@citrix.com> References: <20191224151932.6304-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 02/12] libxc/restore: Introduce functionality to simplify blob handling X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Andrew Cooper , Wei Liu , Ian Jackson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" RHVyaW5nIG1pZ3JhdGlvbiwgd2UgYnVmZmVyIHNldmVyYWwgYmxvYnMgb2YgZGF0YSB3aGljaCB1 bHRpbWF0ZWx5IG5lZWQKaGFuZGluZyBiYWNrIHRvIFhlbiBhdCBhbiBhcHByb3ByaWF0ZSB0aW1l LgoKQ3VycmVudGx5LCB0aGlzIGlzIGFsbCBoYW5kbGVkIGluIGFuIGFkLWhvYyBtYW5uZXIsIGJ1 dCBtb3JlIGJsb2JzIGFyZSBzb29uCmdvaW5nIHRvIGJlIGFkZGVkLiAgSW50cm9kdWNlIHhjX3Ny X2Jsb2IgdG8gZW5jYXBzdWxhdGUgYSBwdHIvc2l6ZSBwYWlyLCBhbmQKdXBkYXRlX2Jsb2IoKSB0 byBoYW5kbGUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGFzcGVjdHMuCgpTd2l0Y2ggdGhlIEhWTV9D T05URVhUIGFuZCB0aGUgZm91ciBQVl9WQ1BVXyogYmxvYnMgb3ZlciB0byB0aGlzIG5ldwppbmZy YXN0cnVjdHVyZS4KClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIz QGNpdHJpeC5jb20+Ci0tLQpDQzogSWFuIEphY2tzb24gPElhbi5KYWNrc29uQGNpdHJpeC5jb20+ CkNDOiBXZWkgTGl1IDx3bEB4ZW4ub3JnPgotLS0KIHRvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5o ICAgICAgICAgIHwgNDUgKysrKysrKysrKysrKysrKysrKystLS0tLQogdG9vbHMvbGlieGMveGNf c3JfcmVzdG9yZV94ODZfaHZtLmMgfCAyMSArKysrLS0tLS0tLS0KIHRvb2xzL2xpYnhjL3hjX3Ny X3Jlc3RvcmVfeDg2X3B2LmMgIHwgNjcgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19zcl9jb21tb24uaCBiL3Rvb2xzL2xpYnhjL3hj X3NyX2NvbW1vbi5oCmluZGV4IGI2NmQ3ODVlNTAuLjE5YjA1MzkxMWYgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5o CkBAIC0xNjUsMTMgKzE2NSw0MCBAQCBzdHJ1Y3QgeGNfc3JfcmVzdG9yZV9vcHMKICAgICBpbnQg KCpjbGVhbnVwKShzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KTsKIH07CiAKLS8qIHg4NiBQViBw ZXItdmNwdSBzdG9yYWdlIHN0cnVjdHVyZSBmb3IgYmxvYnMgaGVhZGluZyBYZW4td2FyZHMuICov Ci1zdHJ1Y3QgeGNfc3JfeDg2X3B2X3Jlc3RvcmVfdmNwdQorLyogV3JhcHBlciBmb3IgYmxvYnMg b2YgZGF0YSBoZWFkaW5nIFhlbi13YXJkcy4gKi8KK3N0cnVjdCB4Y19zcl9ibG9iCiB7Ci0gICAg dm9pZCAqYmFzaWMsICpleHRkLCAqeHNhdmUsICptc3I7Ci0gICAgc2l6ZV90IGJhc2ljc3osIGV4 dGRzeiwgeHNhdmVzeiwgbXNyc3o7CisgICAgdm9pZCAqcHRyOworICAgIHNpemVfdCBzaXplOwog fTsKIAorLyoKKyAqIFVwZGF0ZSBhIGJsb2IuICBEdXBsaWNhdGUgc3JjL3NpemUsIGZyZWVpbmcg dGhlIG9sZCBibG9iIGlmIG5lY2Vzc2FyeS4gIE1heQorICogZmFpbCBkdWUgdG8gbWVtb3J5IGFs bG9jYXRpb24uCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHVwZGF0ZV9ibG9iKHN0cnVjdCB4Y19z cl9ibG9iICpibG9iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq c3JjLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICB2b2lkICpwdHI7CisKKyAgICBpZiAoICFzcmMgfHwg IXNpemUgKQorICAgIHsKKyAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgIHJldHVybiAt MTsKKyAgICB9CisKKyAgICBpZiAoIChwdHIgPSBtYWxsb2Moc2l6ZSkpID09IE5VTEwgKQorICAg ICAgICByZXR1cm4gLTE7CisKKyAgICBtZW1jcHkocHRyLCBzcmMsIHNpemUpOworCisgICAgZnJl ZShibG9iLT5wdHIpOworICAgIGJsb2ItPnB0ciA9IG1lbWNweShwdHIsIHNyYywgc2l6ZSk7Cisg ICAgYmxvYi0+c2l6ZSA9IHNpemU7CisKKyAgICByZXR1cm4gMDsKK30KKwogc3RydWN0IHhjX3Ny X2NvbnRleHQKIHsKICAgICB4Y19pbnRlcmZhY2UgKnhjaDsKQEAgLTMwNiw4ICszMzMsMTEgQEAg c3RydWN0IHhjX3NyX2NvbnRleHQKICAgICAgICAgICAgICAgICAgICAgLyogVHlwZXMgZm9yIGVh Y2ggcGFnZSAoYm91bmRlZCBieSBtYXhfcGZuKS4gKi8KICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgKnBmbl90eXBlczsKIAotICAgICAgICAgICAgICAgICAgICAvKiBWY3B1IGNvbnRleHQg YmxvYnMuICovCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19zcl94ODZfcHZfcmVzdG9y ZV92Y3B1ICp2Y3B1czsKKyAgICAgICAgICAgICAgICAgICAgLyogeDg2IFBWIHBlci12Y3B1IHN0 b3JhZ2Ugc3RydWN0dXJlIGZvciBibG9icy4gKi8KKyAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHhjX3NyX3g4Nl9wdl9yZXN0b3JlX3ZjcHUKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHhjX3NyX2Jsb2IgYmFzaWMsIGV4dGQsIHhzYXZlLCBt c3I7CisgICAgICAgICAgICAgICAgICAgIH0gKnZjcHVzOwogICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgbnJfdmNwdXM7CiAgICAgICAgICAgICAgICAgfSByZXN0b3JlOwogICAgICAg ICAgICAgfTsKQEAgLTMyNyw4ICszNTcsNyBAQCBzdHJ1Y3QgeGNfc3JfY29udGV4dAogICAgICAg ICAgICAgICAgIHN0cnVjdAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg LyogSFZNIGNvbnRleHQgYmxvYi4gKi8KLSAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29udGV4 dDsKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbnRleHRzejsKKyAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHhjX3NyX2Jsb2IgY29udGV4dDsKICAgICAgICAgICAgICAgICB9IHJlc3Rv cmU7CiAgICAgICAgICAgICB9OwogICAgICAgICB9IHg4Nl9odm07CmRpZmYgLS1naXQgYS90b29s cy9saWJ4Yy94Y19zcl9yZXN0b3JlX3g4Nl9odm0uYyBiL3Rvb2xzL2xpYnhjL3hjX3NyX3Jlc3Rv cmVfeDg2X2h2bS5jCmluZGV4IDRhMjRkYzAxMzcuLmZlN2JlOWJkZTYgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnhjL3hjX3NyX3Jlc3RvcmVfeDg2X2h2bS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Ny X3Jlc3RvcmVfeDg2X2h2bS5jCkBAIC0xMCwyMSArMTAsMTIgQEAgc3RhdGljIGludCBoYW5kbGVf aHZtX2NvbnRleHQoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB4Y19zcl9yZWNvcmQgKnJlYykKIHsKICAgICB4Y19pbnRlcmZh Y2UgKnhjaCA9IGN0eC0+eGNoOwotICAgIHZvaWQgKnA7CisgICAgaW50IHJjID0gdXBkYXRlX2Js b2IoJmN0eC0+eDg2X2h2bS5yZXN0b3JlLmNvbnRleHQsIHJlYy0+ZGF0YSwgcmVjLT5sZW5ndGgp OwogCi0gICAgcCA9IG1hbGxvYyhyZWMtPmxlbmd0aCk7Ci0gICAgaWYgKCAhcCApCi0gICAgewor ICAgIGlmICggcmMgKQogICAgICAgICBFUlJPUigiVW5hYmxlIHRvIGFsbG9jYXRlICV1IGJ5dGVz IGZvciBodm0gY29udGV4dCIsIHJlYy0+bGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAg IH0KIAotICAgIGZyZWUoY3R4LT54ODZfaHZtLnJlc3RvcmUuY29udGV4dCk7Ci0KLSAgICBjdHgt Png4Nl9odm0ucmVzdG9yZS5jb250ZXh0ID0gbWVtY3B5KHAsIHJlYy0+ZGF0YSwgcmVjLT5sZW5n dGgpOwotICAgIGN0eC0+eDg2X2h2bS5yZXN0b3JlLmNvbnRleHRzeiA9IHJlYy0+bGVuZ3RoOwot Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCiAvKgpAQCAtMjEwLDggKzIwMSw4 IEBAIHN0YXRpYyBpbnQgeDg2X2h2bV9zdHJlYW1fY29tcGxldGUoc3RydWN0IHhjX3NyX2NvbnRl eHQgKmN0eCkKICAgICB9CiAKICAgICByYyA9IHhjX2RvbWFpbl9odm1fc2V0Y29udGV4dCh4Y2gs IGN0eC0+ZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT54ODZf aHZtLnJlc3RvcmUuY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dHgtPng4Nl9odm0ucmVzdG9yZS5jb250ZXh0c3opOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC0+eDg2X2h2bS5yZXN0b3JlLmNvbnRleHQucHRyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN0eC0+eDg2X2h2bS5yZXN0b3JlLmNvbnRleHQuc2l6ZSk7 CiAgICAgaWYgKCByYyA8IDAgKQogICAgIHsKICAgICAgICAgUEVSUk9SKCJVbmFibGUgdG8gcmVz dG9yZSBIVk0gY29udGV4dCIpOwpAQCAtMjM0LDcgKzIyNSw3IEBAIHN0YXRpYyBpbnQgeDg2X2h2 bV9zdHJlYW1fY29tcGxldGUoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKIAogc3RhdGljIGlu dCB4ODZfaHZtX2NsZWFudXAoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKIHsKLSAgICBmcmVl KGN0eC0+eDg2X2h2bS5yZXN0b3JlLmNvbnRleHQpOworICAgIGZyZWUoY3R4LT54ODZfaHZtLnJl c3RvcmUuY29udGV4dC5wdHIpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS90b29s cy9saWJ4Yy94Y19zcl9yZXN0b3JlX3g4Nl9wdi5jIGIvdG9vbHMvbGlieGMveGNfc3JfcmVzdG9y ZV94ODZfcHYuYwppbmRleCBjMDU5OGFmOGI3Li4wZWM1MDY2MzJhIDEwMDY0NAotLS0gYS90b29s cy9saWJ4Yy94Y19zcl9yZXN0b3JlX3g4Nl9wdi5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX3Jl c3RvcmVfeDg2X3B2LmMKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgaW50IHByb2Nlc3NfdmNw dV9iYXNpYyhzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHZjcHVpZCkKIHsKICAgICB4Y19pbnRlcmZhY2UgKnhjaCA9 IGN0eC0+eGNoOwotICAgIHZjcHVfZ3Vlc3RfY29udGV4dF9hbnlfdCAqdmNwdSA9IGN0eC0+eDg2 X3B2LnJlc3RvcmUudmNwdXNbdmNwdWlkXS5iYXNpYzsKKyAgICB2Y3B1X2d1ZXN0X2NvbnRleHRf YW55X3QgKnZjcHUgPSBjdHgtPng4Nl9wdi5yZXN0b3JlLnZjcHVzW3ZjcHVpZF0uYmFzaWMucHRy OwogICAgIHhlbl9wZm5fdCBwZm4sIG1mbjsKICAgICB1bnNpZ25lZCBpbnQgaSwgZ2R0X2NvdW50 OwogICAgIGludCByYyA9IC0xOwpAQCAtMzgwLDcgKzM4MCw3IEBAIHN0YXRpYyBpbnQgcHJvY2Vz c192Y3B1X2V4dGVuZGVkKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsCiAKICAgICBkb21jdGwu Y21kID0gWEVOX0RPTUNUTF9zZXRfZXh0X3ZjcHVjb250ZXh0OwogICAgIGRvbWN0bC5kb21haW4g PSBjdHgtPmRvbWlkOwotICAgIG1lbWNweSgmZG9tY3RsLnUuZXh0X3ZjcHVjb250ZXh0LCB2Y3B1 LT5leHRkLCB2Y3B1LT5leHRkc3opOworICAgIG1lbWNweSgmZG9tY3RsLnUuZXh0X3ZjcHVjb250 ZXh0LCB2Y3B1LT5leHRkLnB0ciwgdmNwdS0+ZXh0ZC5zaXplKTsKIAogICAgIGlmICggeGNfZG9t Y3RsKHhjaCwgJmRvbWN0bCkgIT0gMCApCiAgICAgewpAQCAtNDA0LDIxICs0MDQsMjEgQEAgc3Rh dGljIGludCBwcm9jZXNzX3ZjcHVfeHNhdmUoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwKICAg ICBERUNMQVJFX0RPTUNUTDsKICAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIodm9pZCwgYnVm ZmVyKTsKIAotICAgIGJ1ZmZlciA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNoLCBidWZm ZXIsIHZjcHUtPnhzYXZlc3opOworICAgIGJ1ZmZlciA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxs b2MoeGNoLCBidWZmZXIsIHZjcHUtPnhzYXZlLnNpemUpOwogICAgIGlmICggIWJ1ZmZlciApCiAg ICAgewogICAgICAgICBFUlJPUigiVW5hYmxlIHRvIGFsbG9jYXRlICV6dSBieXRlcyBmb3IgeHNh dmUgaHlwZXJjYWxsIGJ1ZmZlciIsCi0gICAgICAgICAgICAgIHZjcHUtPnhzYXZlc3opOworICAg ICAgICAgICAgICB2Y3B1LT54c2F2ZS5zaXplKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0K IAogICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9NQ1RMX3NldHZjcHVleHRzdGF0ZTsKICAgICBkb21j dGwuZG9tYWluID0gY3R4LT5kb21pZDsKICAgICBkb21jdGwudS52Y3B1ZXh0c3RhdGUudmNwdSA9 IHZjcHVpZDsKLSAgICBkb21jdGwudS52Y3B1ZXh0c3RhdGUuc2l6ZSA9IHZjcHUtPnhzYXZlc3o7 CisgICAgZG9tY3RsLnUudmNwdWV4dHN0YXRlLnNpemUgPSB2Y3B1LT54c2F2ZS5zaXplOwogICAg IHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGRvbWN0bC51LnZjcHVleHRzdGF0ZS5idWZmZXIsIGJ1ZmZl cik7CiAKLSAgICBtZW1jcHkoYnVmZmVyLCB2Y3B1LT54c2F2ZSwgdmNwdS0+eHNhdmVzeik7Cisg ICAgbWVtY3B5KGJ1ZmZlciwgdmNwdS0+eHNhdmUucHRyLCB2Y3B1LT54c2F2ZS5zaXplKTsKIAog ICAgIHJjID0geGNfZG9tY3RsKHhjaCwgJmRvbWN0bCk7CiAgICAgaWYgKCByYyApCkBAIC00NDIs MjEgKzQ0MiwyMSBAQCBzdGF0aWMgaW50IHByb2Nlc3NfdmNwdV9tc3JzKHN0cnVjdCB4Y19zcl9j b250ZXh0ICpjdHgsCiAgICAgREVDTEFSRV9ET01DVEw7CiAgICAgREVDTEFSRV9IWVBFUkNBTExf QlVGRkVSKHZvaWQsIGJ1ZmZlcik7CiAKLSAgICBidWZmZXIgPSB4Y19oeXBlcmNhbGxfYnVmZmVy X2FsbG9jKHhjaCwgYnVmZmVyLCB2Y3B1LT5tc3Jzeik7CisgICAgYnVmZmVyID0geGNfaHlwZXJj YWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGJ1ZmZlciwgdmNwdS0+bXNyLnNpemUpOwogICAgIGlmICgg IWJ1ZmZlciApCiAgICAgewogICAgICAgICBFUlJPUigiVW5hYmxlIHRvIGFsbG9jYXRlICV6dSBi eXRlcyBmb3IgbXNyIGh5cGVyY2FsbCBidWZmZXIiLAotICAgICAgICAgICAgICB2Y3B1LT5tc3Jz eik7CisgICAgICAgICAgICAgIHZjcHUtPm1zci5zaXplKTsKICAgICAgICAgcmV0dXJuIC0xOwog ICAgIH0KIAogICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9NQ1RMX3NldF92Y3B1X21zcnM7CiAgICAg ZG9tY3RsLmRvbWFpbiA9IGN0eC0+ZG9taWQ7CiAgICAgZG9tY3RsLnUudmNwdV9tc3JzLnZjcHUg PSB2Y3B1aWQ7Ci0gICAgZG9tY3RsLnUudmNwdV9tc3JzLm1zcl9jb3VudCA9IHZjcHUtPm1zcnN6 IC8gc2l6ZW9mKHhlbl9kb21jdGxfdmNwdV9tc3JfdCk7CisgICAgZG9tY3RsLnUudmNwdV9tc3Jz Lm1zcl9jb3VudCA9IHZjcHUtPm1zci5zaXplIC8gc2l6ZW9mKHhlbl9kb21jdGxfdmNwdV9tc3Jf dCk7CiAgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUoZG9tY3RsLnUudmNwdV9tc3JzLm1zcnMsIGJ1 ZmZlcik7CiAKLSAgICBtZW1jcHkoYnVmZmVyLCB2Y3B1LT5tc3IsIHZjcHUtPm1zcnN6KTsKKyAg ICBtZW1jcHkoYnVmZmVyLCB2Y3B1LT5tc3IucHRyLCB2Y3B1LT5tc3Iuc2l6ZSk7CiAKICAgICBy YyA9IHhjX2RvbWN0bCh4Y2gsICZkb21jdGwpOwogICAgIGlmICggcmMgKQpAQCAtNDgxLDcgKzQ4 MSw3IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3ZjcHVfY29udGV4dChzdHJ1Y3QgeGNfc3JfY29udGV4 dCAqY3R4KQogICAgIHsKICAgICAgICAgdmNwdSA9ICZjdHgtPng4Nl9wdi5yZXN0b3JlLnZjcHVz W2ldOwogCi0gICAgICAgIGlmICggdmNwdS0+YmFzaWMgKQorICAgICAgICBpZiAoIHZjcHUtPmJh c2ljLnB0ciApCiAgICAgICAgIHsKICAgICAgICAgICAgIHJjID0gcHJvY2Vzc192Y3B1X2Jhc2lj KGN0eCwgaSk7CiAgICAgICAgICAgICBpZiAoIHJjICkKQEAgLTQ5MywyMSArNDkzLDIxIEBAIHN0 YXRpYyBpbnQgdXBkYXRlX3ZjcHVfY29udGV4dChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQog ICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCB2Y3B1LT5l eHRkICkKKyAgICAgICAgaWYgKCB2Y3B1LT5leHRkLnB0ciApCiAgICAgICAgIHsKICAgICAgICAg ICAgIHJjID0gcHJvY2Vzc192Y3B1X2V4dGVuZGVkKGN0eCwgaSk7CiAgICAgICAgICAgICBpZiAo IHJjICkKICAgICAgICAgICAgICAgICByZXR1cm4gcmM7CiAgICAgICAgIH0KIAotICAgICAgICBp ZiAoIHZjcHUtPnhzYXZlICkKKyAgICAgICAgaWYgKCB2Y3B1LT54c2F2ZS5wdHIgKQogICAgICAg ICB7CiAgICAgICAgICAgICByYyA9IHByb2Nlc3NfdmNwdV94c2F2ZShjdHgsIGkpOwogICAgICAg ICAgICAgaWYgKCByYyApCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAgICB9CiAK LSAgICAgICAgaWYgKCB2Y3B1LT5tc3IgKQorICAgICAgICBpZiAoIHZjcHUtPm1zci5wdHIgKQog ICAgICAgICB7CiAgICAgICAgICAgICByYyA9IHByb2Nlc3NfdmNwdV9tc3JzKGN0eCwgaSk7CiAg ICAgICAgICAgICBpZiAoIHJjICkKQEAgLTczOCw3ICs3MzgsNyBAQCBzdGF0aWMgaW50IGhhbmRs ZV94ODZfcHZfdmNwdV9ibG9iKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsCiAgICAgc3RydWN0 IHhjX3NyX3g4Nl9wdl9yZXN0b3JlX3ZjcHUgKnZjcHU7CiAgICAgY29uc3QgY2hhciAqcmVjX25h bWU7CiAgICAgc2l6ZV90IGJsb2JzejsKLSAgICB2b2lkICpibG9iOworICAgIHN0cnVjdCB4Y19z cl9ibG9iICpibG9iOwogICAgIGludCByYyA9IC0xOwogCiAgICAgc3dpdGNoICggcmVjLT50eXBl ICkKQEAgLTgxMiw2ICs4MTIsNyBAQCBzdGF0aWMgaW50IGhhbmRsZV94ODZfcHZfdmNwdV9ibG9i KHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICByZWNfbmFtZSwg c2l6ZW9mKCp2aGRyKSArIHZjcHVzeiwgcmVjLT5sZW5ndGgpOwogICAgICAgICAgICAgZ290byBv dXQ7CiAgICAgICAgIH0KKyAgICAgICAgYmxvYiA9ICZ2Y3B1LT5iYXNpYzsKICAgICAgICAgYnJl YWs7CiAgICAgfQogCkBAIC04MjIsNiArODIzLDcgQEAgc3RhdGljIGludCBoYW5kbGVfeDg2X3B2 X3ZjcHVfYmxvYihzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAg cmVjX25hbWUsIHNpemVvZigqdmhkcikgKyAxMjgsIHJlYy0+bGVuZ3RoKTsKICAgICAgICAgICAg IGdvdG8gb3V0OwogICAgICAgICB9CisgICAgICAgIGJsb2IgPSAmdmNwdS0+ZXh0ZDsKICAgICAg ICAgYnJlYWs7CiAKICAgICBjYXNlIFJFQ19UWVBFX1g4Nl9QVl9WQ1BVX1hTQVZFOgpAQCAtODMx LDYgKzgzMyw3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3g4Nl9wdl92Y3B1X2Jsb2Ioc3RydWN0IHhj X3NyX2NvbnRleHQgKmN0eCwKICAgICAgICAgICAgICAgICAgIHJlY19uYW1lLCBzaXplb2YoKnZo ZHIpICsgMTI4LCByZWMtPmxlbmd0aCk7CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAg fQorICAgICAgICBibG9iID0gJnZjcHUtPnhzYXZlOwogICAgICAgICBicmVhazsKIAogICAgIGNh c2UgUkVDX1RZUEVfWDg2X1BWX1ZDUFVfTVNSUzoKQEAgLTg0MCwzNCArODQzLDE0IEBAIHN0YXRp YyBpbnQgaGFuZGxlX3g4Nl9wdl92Y3B1X2Jsb2Ioc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwK ICAgICAgICAgICAgICAgICAgIHJlY19uYW1lLCBibG9ic3osIHNpemVvZih4ZW5fZG9tY3RsX3Zj cHVfbXNyX3QpKTsKICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICB9CisgICAgICAgIGJs b2IgPSAmdmNwdS0+bXNyOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICAvKiBBbGxvY2F0 ZSBtZW1vcnkuICovCi0gICAgYmxvYiA9IG1hbGxvYyhibG9ic3opOwotICAgIGlmICggIWJsb2Ig KQotICAgIHsKKyAgICByYyA9IHVwZGF0ZV9ibG9iKGJsb2IsIHZoZHItPmNvbnRleHQsIGJsb2Jz eik7CisgICAgaWYgKCByYyApCiAgICAgICAgIEVSUk9SKCJVbmFibGUgdG8gYWxsb2NhdGUgJXp1 IGJ5dGVzIGZvciB2Y3B1JXUgJXMgYmxvYiIsCiAgICAgICAgICAgICAgIGJsb2Jzeiwgdmhkci0+ dmNwdV9pZCwgcmVjX25hbWUpOwotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0KLSAgICBtZW1j cHkoYmxvYiwgJnZoZHItPmNvbnRleHQsIGJsb2Jzeik7Ci0KLSAgICAvKiBTdGFzaCBzaWRld2F5 cyBmb3IgbGF0ZXIuICovCi0gICAgc3dpdGNoICggcmVjLT50eXBlICkKLSAgICB7Ci0jZGVmaW5l IFJFQ1NUT1JFKHgsIHkpIGNhc2UgUkVDX1RZUEVfWDg2X1BWXyAjIyB4OiBcCi0gICAgICAgIGZy ZWUoeSk7ICh5KSA9IGJsb2I7ICh5ICMjIHN6KSA9IGJsb2JzejsgYnJlYWsKLQotICAgICAgICBS RUNTVE9SRShWQ1BVX0JBU0lDLCAgICB2Y3B1LT5iYXNpYyk7Ci0gICAgICAgIFJFQ1NUT1JFKFZD UFVfRVhURU5ERUQsIHZjcHUtPmV4dGQpOwotICAgICAgICBSRUNTVE9SRShWQ1BVX1hTQVZFLCAg ICB2Y3B1LT54c2F2ZSk7Ci0gICAgICAgIFJFQ1NUT1JFKFZDUFVfTVNSUywgICAgIHZjcHUtPm1z cik7Ci0jdW5kZWYgUkVDU1RPUkUKLSAgICB9Ci0KLSAgICByYyA9IDA7CiAKICBvdXQ6CiAgICAg cmV0dXJuIHJjOwpAQCAtMTE1OSwxMCArMTE0MiwxMCBAQCBzdGF0aWMgaW50IHg4Nl9wdl9jbGVh bnVwKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCiAgICAgICAgICAgICBzdHJ1Y3QgeGNfc3Jf eDg2X3B2X3Jlc3RvcmVfdmNwdSAqdmNwdSA9CiAgICAgICAgICAgICAgICAgJmN0eC0+eDg2X3B2 LnJlc3RvcmUudmNwdXNbaV07CiAKLSAgICAgICAgICAgIGZyZWUodmNwdS0+YmFzaWMpOwotICAg ICAgICAgICAgZnJlZSh2Y3B1LT5leHRkKTsKLSAgICAgICAgICAgIGZyZWUodmNwdS0+eHNhdmUp OwotICAgICAgICAgICAgZnJlZSh2Y3B1LT5tc3IpOworICAgICAgICAgICAgZnJlZSh2Y3B1LT5i YXNpYy5wdHIpOworICAgICAgICAgICAgZnJlZSh2Y3B1LT5leHRkLnB0cik7CisgICAgICAgICAg ICBmcmVlKHZjcHUtPnhzYXZlLnB0cik7CisgICAgICAgICAgICBmcmVlKHZjcHUtPm1zci5wdHIp OwogICAgICAgICB9CiAKICAgICAgICAgZnJlZShjdHgtPng4Nl9wdi5yZXN0b3JlLnZjcHVzKTsK LS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=