From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH net-next v4 2/4] xen-netback: add control protocol implementation Date: Fri, 13 May 2016 09:37:27 +0100 Message-ID: <1463128649-20832-3-git-send-email-paul.durrant__25226.6375617639$1463129559$gmane$org@citrix.com> References: <1463128649-20832-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b18oW-0003zA-Ai for xen-devel@lists.xenproject.org; Fri, 13 May 2016 08:51:16 +0000 In-Reply-To: <1463128649-20832-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, netdev@vger.kernel.org Cc: Paul Durrant , Wei Liu List-Id: xen-devel@lists.xenproject.org TXkgcmVjZW50IHBhdGNoIHRvIGluY2x1ZGUveGVuL2ludGVyZmFjZS9pby9uZXRpZi5oIGRlZmlu ZXMgYSBuZXcgc2hhcmVkCnJpbmcgKGluIGFkZGl0aW9uIHRvIHRoZSByeCBhbmQgdHggcmluZ3Mp IGZvciBwYXNzaW5nIGNvbnRyb2wgbWVzc2FnZXMKZnJvbSBhIFZNIGZyb250ZW5kIGRyaXZlciB0 byBhIGJhY2tlbmQgZHJpdmVyLgoKQSBwcmV2aW91cyBwYXRjaCBhZGRlZCB0aGUgbmVjZXNzYXJ5 IGJvaWxlcnBsYXRlIGZvciBtYXBwaW5nIHRoZSBjb250cm9sCnJpbmcgZnJvbSB0aGUgZnJvbnRl bmQsIHNob3VsZCBpdCBiZSBjcmVhdGVkLiBUaGlzIHBhdGNoIGFkZHMKaW1wbGVtZW50YXRpb25z IGZvciBlYWNoIG9mIHRoZSBkZWZpbmVkIHByb3RvY29sIG1lc3NhZ2VzLgoKU2lnbmVkLW9mZi1i eTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KQ2M6IFdlaSBMaXUgPHdl aS5saXUyQGNpdHJpeC5jb20+Ci0tLQoKdjQ6CiAtIFJlbW92ZSBjYWxscyB0byBpbml0X3JjdV9o ZWFkKCkgYW5kIGRlc3Ryb3lfcmN1X2hlYWQoKQoKdjM6CiAtIFJlbW92ZSB1bmludGVudGlvbmFs IGxhYmVsIHJlbmFtZQoKdjI6CiAtIFVzZSBSQ1UgbGlzdCBmb3IgaGFzaCBjYWNoZQotLS0KIGRy aXZlcnMvbmV0L3hlbi1uZXRiYWNrL01ha2VmaWxlICAgIHwgICAyICstCiBkcml2ZXJzL25ldC94 ZW4tbmV0YmFjay9jb21tb24uaCAgICB8ICA0NiArKysrKwogZHJpdmVycy9uZXQveGVuLW5ldGJh Y2svaGFzaC5jICAgICAgfCAzODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYyB8ICAyNCArKysKIGRyaXZlcnMv bmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYyAgIHwgIDQ5ICsrKystCiA1IGZpbGVzIGNoYW5nZWQs IDUwMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvbmV0L3hlbi1uZXRiYWNrL2hhc2guYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3hl bi1uZXRiYWNrL01ha2VmaWxlIGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svTWFrZWZpbGUKaW5k ZXggZTM0NmU4MS4uMTFlMDJiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQveGVuLW5ldGJhY2sv TWFrZWZpbGUKKysrIGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svTWFrZWZpbGUKQEAgLTEsMyAr MSwzIEBACiBvYmotJChDT05GSUdfWEVOX05FVERFVl9CQUNLRU5EKSA6PSB4ZW4tbmV0YmFjay5v CiAKLXhlbi1uZXRiYWNrLXkgOj0gbmV0YmFjay5vIHhlbmJ1cy5vIGludGVyZmFjZS5vCit4ZW4t bmV0YmFjay15IDo9IG5ldGJhY2subyB4ZW5idXMubyBpbnRlcmZhY2UubyBoYXNoLm8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2NvbW1vbi5oIGIvZHJpdmVycy9uZXQveGVu LW5ldGJhY2svY29tbW9uLmgKaW5kZXggMDkzYTEyYS4uODRkNmNiZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmgKKysrIGIvZHJpdmVycy9uZXQveGVuLW5ldGJh Y2svY29tbW9uLmgKQEAgLTIyMCw2ICsyMjAsMzUgQEAgc3RydWN0IHhlbnZpZl9tY2FzdF9hZGRy IHsKIAogI2RlZmluZSBYRU5fTkVUQktfTUNBU1RfTUFYIDY0CiAKKyNkZWZpbmUgWEVOX05FVEJL X01BWF9IQVNIX0tFWV9TSVpFIDQwCisjZGVmaW5lIFhFTl9ORVRCS19NQVhfSEFTSF9NQVBQSU5H X1NJWkUgMTI4CisjZGVmaW5lIFhFTl9ORVRCS19IQVNIX1RBR19TSVpFIDQwCisKK3N0cnVjdCB4 ZW52aWZfaGFzaF9jYWNoZV9lbnRyeSB7CisJc3RydWN0IGxpc3RfaGVhZCBsaW5rOworCXN0cnVj dCByY3VfaGVhZCByY3U7CisJdTggdGFnW1hFTl9ORVRCS19IQVNIX1RBR19TSVpFXTsKKwl1bnNp Z25lZCBpbnQgbGVuOworCXUzMiB2YWw7CisJaW50IHNlcTsKK307CisKK3N0cnVjdCB4ZW52aWZf aGFzaF9jYWNoZSB7CisJc3BpbmxvY2tfdCBsb2NrOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsK Kwl1bnNpZ25lZCBpbnQgY291bnQ7CisJYXRvbWljX3Qgc2VxOworfTsKKworc3RydWN0IHhlbnZp Zl9oYXNoIHsKKwl1bnNpZ25lZCBpbnQgYWxnOworCXUzMiBmbGFnczsKKwl1OCBrZXlbWEVOX05F VEJLX01BWF9IQVNIX0tFWV9TSVpFXTsKKwl1MzIgbWFwcGluZ1tYRU5fTkVUQktfTUFYX0hBU0hf TUFQUElOR19TSVpFXTsKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKwlzdHJ1Y3QgeGVudmlmX2hhc2hf Y2FjaGUgY2FjaGU7Cit9OworCiBzdHJ1Y3QgeGVudmlmIHsKIAkvKiBVbmlxdWUgaWRlbnRpZmll ciBmb3IgdGhpcyBpbnRlcmZhY2UuICovCiAJZG9taWRfdCAgICAgICAgICBkb21pZDsKQEAgLTI1 MSw2ICsyODAsOCBAQCBzdHJ1Y3QgeGVudmlmIHsKIAl1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlczsg LyogYWN0aXZlIHF1ZXVlcywgcmVzb3VyY2UgYWxsb2NhdGVkICovCiAJdW5zaWduZWQgaW50IHN0 YWxsZWRfcXVldWVzOwogCisJc3RydWN0IHhlbnZpZl9oYXNoIGhhc2g7CisKIAlzdHJ1Y3QgeGVu YnVzX3dhdGNoIGNyZWRpdF93YXRjaDsKIAlzdHJ1Y3QgeGVuYnVzX3dhdGNoIG1jYXN0X2N0cmxf d2F0Y2g7CiAKQEAgLTM1Myw2ICszODQsNyBAQCBleHRlcm4gYm9vbCBzZXBhcmF0ZV90eF9yeF9p cnE7CiBleHRlcm4gdW5zaWduZWQgaW50IHJ4X2RyYWluX3RpbWVvdXRfbXNlY3M7CiBleHRlcm4g dW5zaWduZWQgaW50IHJ4X3N0YWxsX3RpbWVvdXRfbXNlY3M7CiBleHRlcm4gdW5zaWduZWQgaW50 IHhlbnZpZl9tYXhfcXVldWVzOworZXh0ZXJuIHVuc2lnbmVkIGludCB4ZW52aWZfaGFzaF9jYWNo ZV9zaXplOwogCiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCiBleHRlcm4gc3RydWN0IGRlbnRyeSAq eGVuX25ldGJhY2tfZGJnX3Jvb3Q7CkBAIC0zNjYsNCArMzk4LDE4IEBAIHZvaWQgeGVudmlmX3Nr Yl96ZXJvY29weV9jb21wbGV0ZShzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSk7CiBib29sIHhl bnZpZl9tY2FzdF9tYXRjaChzdHJ1Y3QgeGVudmlmICp2aWYsIGNvbnN0IHU4ICphZGRyKTsKIHZv aWQgeGVudmlmX21jYXN0X2FkZHJfbGlzdF9mcmVlKHN0cnVjdCB4ZW52aWYgKnZpZik7CiAKKy8q IEhhc2ggKi8KK3ZvaWQgeGVudmlmX2luaXRfaGFzaChzdHJ1Y3QgeGVudmlmICp2aWYpOwordm9p ZCB4ZW52aWZfZGVpbml0X2hhc2goc3RydWN0IHhlbnZpZiAqdmlmKTsKKwordTMyIHhlbnZpZl9z ZXRfaGFzaF9hbGcoc3RydWN0IHhlbnZpZiAqdmlmLCB1MzIgYWxnKTsKK3UzMiB4ZW52aWZfZ2V0 X2hhc2hfZmxhZ3Moc3RydWN0IHhlbnZpZiAqdmlmLCB1MzIgKmZsYWdzKTsKK3UzMiB4ZW52aWZf c2V0X2hhc2hfZmxhZ3Moc3RydWN0IHhlbnZpZiAqdmlmLCB1MzIgZmxhZ3MpOwordTMyIHhlbnZp Zl9zZXRfaGFzaF9rZXkoc3RydWN0IHhlbnZpZiAqdmlmLCB1MzIgZ3JlZiwgdTMyIGxlbik7Cit1 MzIgeGVudmlmX3NldF9oYXNoX21hcHBpbmdfc2l6ZShzdHJ1Y3QgeGVudmlmICp2aWYsIHUzMiBz aXplKTsKK3UzMiB4ZW52aWZfc2V0X2hhc2hfbWFwcGluZyhzdHJ1Y3QgeGVudmlmICp2aWYsIHUz MiBncmVmLCB1MzIgbGVuLAorCQkJICAgIHUzMiBvZmYpOworCit2b2lkIHhlbnZpZl9zZXRfc2ti X2hhc2goc3RydWN0IHhlbnZpZiAqdmlmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKwogI2VuZGlm IC8qIF9fWEVOX05FVEJBQ0tfX0NPTU1PTl9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3hlbi1uZXRiYWNrL2hhc2guYyBiL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2hhc2guYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTJlMzkyCi0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaGFzaC5jCkBAIC0wLDAgKzEsMzg0IEBACisvKgor ICogQ29weXJpZ2h0IChjKSAyMDE2IENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0YXJlIEZvdW5k YXRpb247IG9yLCB3aGVuIGRpc3RyaWJ1dGVkCisgKiBzZXBhcmF0ZWx5IGZyb20gdGhlIExpbnV4 IGtlcm5lbCBvciBpbmNvcnBvcmF0ZWQgaW50byBvdGhlcgorICogc29mdHdhcmUgcGFja2FnZXMs IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBsaWNlbnNlOgorICoKKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh IGNvcHkKKyAqIG9mIHRoaXMgc291cmNlIGZpbGUgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dAorICogcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwKKyAqIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLAorICogYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworICogdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBU SEUgU09GVFdBUkUuCisgKi8KKworI2RlZmluZSBYRU5fTkVUSUZfREVGSU5FX1RPRVBMSVRaCisK KyNpbmNsdWRlICJjb21tb24uaCIKKyNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CisjaW5jbHVk ZSA8bGludXgvcmN1bGlzdC5oPgorCitzdGF0aWMgdm9pZCB4ZW52aWZfZGVsX2hhc2goc3RydWN0 IHJjdV9oZWFkICpyY3UpCit7CisJc3RydWN0IHhlbnZpZl9oYXNoX2NhY2hlX2VudHJ5ICplbnRy eTsKKworCWVudHJ5ID0gY29udGFpbmVyX29mKHJjdSwgc3RydWN0IHhlbnZpZl9oYXNoX2NhY2hl X2VudHJ5LCByY3UpOworCisJa2ZyZWUoZW50cnkpOworfQorCitzdGF0aWMgdm9pZCB4ZW52aWZf YWRkX2hhc2goc3RydWN0IHhlbnZpZiAqdmlmLCBjb25zdCB1OCAqdGFnLAorCQkJICAgIHVuc2ln bmVkIGludCBsZW4sIHUzMiB2YWwpCit7CisJc3RydWN0IHhlbnZpZl9oYXNoX2NhY2hlX2VudHJ5 ICpuZXcsICplbnRyeSwgKm9sZGVzdDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWJvb2wgZm91 bmQ7CisKKwluZXcgPSBrbWFsbG9jKHNpemVvZigqZW50cnkpLCBHRlBfS0VSTkVMKTsKKwlpZiAo IW5ldykKKwkJcmV0dXJuOworCisJbWVtY3B5KG5ldy0+dGFnLCB0YWcsIGxlbik7CisJbmV3LT5s ZW4gPSBsZW47CisJbmV3LT52YWwgPSB2YWw7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdmlmLT5o YXNoLmNhY2hlLmxvY2ssIGZsYWdzKTsKKworCWZvdW5kID0gZmFsc2U7CisJb2xkZXN0ID0gTlVM TDsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlbnRyeSwgJnZpZi0+aGFzaC5jYWNoZS5saXN0 LCBsaW5rKSB7CisJCS8qIE1ha2Ugc3VyZSB3ZSBkb24ndCBhZGQgZHVwbGljYXRlIGVudHJpZXMg Ki8KKwkJaWYgKGVudHJ5LT5sZW4gPT0gbGVuICYmCisJCSAgICBtZW1jbXAoZW50cnktPnRhZywg dGFnLCBsZW4pID09IDApCisJCQlmb3VuZCA9IHRydWU7CisJCWlmICghb2xkZXN0IHx8IGVudHJ5 LT5zZXEgPCBvbGRlc3QtPnNlcSkKKwkJCW9sZGVzdCA9IGVudHJ5OworCX0KKworCWlmICghZm91 bmQpIHsKKwkJbmV3LT5zZXEgPSBhdG9taWNfaW5jX3JldHVybigmdmlmLT5oYXNoLmNhY2hlLnNl cSk7CisJCWxpc3RfYWRkX3JjdSgmbmV3LT5saW5rLCAmdmlmLT5oYXNoLmNhY2hlLmxpc3QpOwor CisJCWlmICgrK3ZpZi0+aGFzaC5jYWNoZS5jb3VudCA+IHhlbnZpZl9oYXNoX2NhY2hlX3NpemUp IHsKKwkJCWxpc3RfZGVsX3JjdSgmb2xkZXN0LT5saW5rKTsKKwkJCXZpZi0+aGFzaC5jYWNoZS5j b3VudC0tOworCQkJY2FsbF9yY3UoJm9sZGVzdC0+cmN1LCB4ZW52aWZfZGVsX2hhc2gpOworCQl9 CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmlmLT5oYXNoLmNhY2hlLmxvY2ssIGZs YWdzKTsKKworCWlmIChmb3VuZCkKKwkJa2ZyZWUobmV3KTsKK30KKworc3RhdGljIHUzMiB4ZW52 aWZfbmV3X2hhc2goc3RydWN0IHhlbnZpZiAqdmlmLCBjb25zdCB1OCAqZGF0YSwKKwkJCSAgIHVu c2lnbmVkIGludCBsZW4pCit7CisJdTMyIHZhbDsKKworCXZhbCA9IHhlbl9uZXRpZl90b2VwbGl0 el9oYXNoKHZpZi0+aGFzaC5rZXksCisJCQkJICAgICAgc2l6ZW9mKHZpZi0+aGFzaC5rZXkpLAor CQkJCSAgICAgIGRhdGEsIGxlbik7CisKKwlpZiAoeGVudmlmX2hhc2hfY2FjaGVfc2l6ZSAhPSAw KQorCQl4ZW52aWZfYWRkX2hhc2godmlmLCBkYXRhLCBsZW4sIHZhbCk7CisKKwlyZXR1cm4gdmFs OworfQorCitzdGF0aWMgdm9pZCB4ZW52aWZfZmx1c2hfaGFzaChzdHJ1Y3QgeGVudmlmICp2aWYp Cit7CisJc3RydWN0IHhlbnZpZl9oYXNoX2NhY2hlX2VudHJ5ICplbnRyeTsKKwl1bnNpZ25lZCBs b25nIGZsYWdzOworCisJaWYgKHhlbnZpZl9oYXNoX2NhY2hlX3NpemUgPT0gMCkKKwkJcmV0dXJu OworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnZpZi0+aGFzaC5jYWNoZS5sb2NrLCBmbGFncyk7CisK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlbnRyeSwgJnZpZi0+aGFzaC5jYWNoZS5saXN0LCBs aW5rKSB7CisJCWxpc3RfZGVsX3JjdSgmZW50cnktPmxpbmspOworCQl2aWYtPmhhc2guY2FjaGUu Y291bnQtLTsKKwkJY2FsbF9yY3UoJmVudHJ5LT5yY3UsIHhlbnZpZl9kZWxfaGFzaCk7CisJfQor CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmlmLT5oYXNoLmNhY2hlLmxvY2ssIGZsYWdzKTsK K30KKworc3RhdGljIHUzMiB4ZW52aWZfZmluZF9oYXNoKHN0cnVjdCB4ZW52aWYgKnZpZiwgY29u c3QgdTggKmRhdGEsCisJCQkgICAgdW5zaWduZWQgaW50IGxlbikKK3sKKwlzdHJ1Y3QgeGVudmlm X2hhc2hfY2FjaGVfZW50cnkgKmVudHJ5OworCXUzMiB2YWw7CisJYm9vbCBmb3VuZDsKKworCWlm IChsZW4gPj0gWEVOX05FVEJLX0hBU0hfVEFHX1NJWkUpCisJCXJldHVybiAwOworCisJaWYgKHhl bnZpZl9oYXNoX2NhY2hlX3NpemUgPT0gMCkKKwkJcmV0dXJuIHhlbnZpZl9uZXdfaGFzaCh2aWYs IGRhdGEsIGxlbik7CisKKwlyY3VfcmVhZF9sb2NrKCk7CisKKwlmb3VuZCA9IGZhbHNlOworCisJ bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZW50cnksICZ2aWYtPmhhc2guY2FjaGUubGlzdCwgbGlu aykgeworCQlpZiAoZW50cnktPmxlbiA9PSBsZW4gJiYKKwkJICAgIG1lbWNtcChlbnRyeS0+dGFn LCBkYXRhLCBsZW4pID09IDApIHsKKwkJCXZhbCA9IGVudHJ5LT52YWw7CisJCQllbnRyeS0+c2Vx ID0gYXRvbWljX2luY19yZXR1cm4oJnZpZi0+aGFzaC5jYWNoZS5zZXEpOworCQkJZm91bmQgPSB0 cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlyY3VfcmVhZF91bmxvY2soKTsKKworCWlmICgh Zm91bmQpCisJCXZhbCA9IHhlbnZpZl9uZXdfaGFzaCh2aWYsIGRhdGEsIGxlbik7CisKKwlyZXR1 cm4gdmFsOworfQorCit2b2lkIHhlbnZpZl9zZXRfc2tiX2hhc2goc3RydWN0IHhlbnZpZiAqdmlm LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCXN0cnVjdCBmbG93X2tleXMgZmxvdzsKKwl1MzIg aGFzaCA9IDA7CisJZW51bSBwa3RfaGFzaF90eXBlcyB0eXBlID0gUEtUX0hBU0hfVFlQRV9OT05F OworCXUzMiBmbGFncyA9IHZpZi0+aGFzaC5mbGFnczsKKwlib29sIGhhc190Y3BfaGRyOworCisJ LyogUXVpY2sgcmVqZWN0aW9uIHRlc3Q6IElmIHRoZSBuZXR3b3JrIHByb3RvY29sIGRvZXNuJ3QK KwkgKiBjb3JyZXNwb25kIHRvIGFueSBlbmFibGVkIGhhc2ggdHlwZSB0aGVuIHRoZXJlJ3Mgbm8g cG9pbnQKKwkgKiBpbiBwYXJzaW5nIHRoZSBwYWNrZXQgaGVhZGVyLgorCSAqLworCXN3aXRjaCAo c2tiLT5wcm90b2NvbCkgeworCWNhc2UgaHRvbnMoRVRIX1BfSVApOgorCQlpZiAoZmxhZ3MgJiAo WEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjRfVENQIHwKKwkJCSAgICAgWEVOX05FVElGX0NU UkxfSEFTSF9UWVBFX0lQVjQpKQorCQkJYnJlYWs7CisKKwkJZ290byBkb25lOworCisJY2FzZSBo dG9ucyhFVEhfUF9JUFY2KToKKwkJaWYgKGZsYWdzICYgKFhFTl9ORVRJRl9DVFJMX0hBU0hfVFlQ RV9JUFY2X1RDUCB8CisJCQkgICAgIFhFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9JUFY2KSkKKwkJ CWJyZWFrOworCisJCWdvdG8gZG9uZTsKKworCWRlZmF1bHQ6CisJCWdvdG8gZG9uZTsKKwl9CisK KwltZW1zZXQoJmZsb3csIDAsIHNpemVvZihmbG93KSk7CisJaWYgKCFza2JfZmxvd19kaXNzZWN0 X2Zsb3dfa2V5cyhza2IsICZmbG93LCAwKSkKKwkJZ290byBkb25lOworCisJaGFzX3RjcF9oZHIg PSAoZmxvdy5iYXNpYy5pcF9wcm90byA9PSBJUFBST1RPX1RDUCkgJiYKKwkJICAgICAgIShmbG93 LmNvbnRyb2wuZmxhZ3MgJiBGTE9XX0RJU19JU19GUkFHTUVOVCk7CisKKwlzd2l0Y2ggKHNrYi0+ cHJvdG9jb2wpIHsKKwljYXNlIGh0b25zKEVUSF9QX0lQKToKKwkJaWYgKGhhc190Y3BfaGRyICYm CisJCSAgICAoZmxhZ3MgJiBYRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNF9UQ1ApKSB7CisJ CQl1OCBkYXRhWzEyXTsKKworCQkJbWVtY3B5KCZkYXRhWzBdLCAmZmxvdy5hZGRycy52NGFkZHJz LnNyYywgNCk7CisJCQltZW1jcHkoJmRhdGFbNF0sICZmbG93LmFkZHJzLnY0YWRkcnMuZHN0LCA0 KTsKKwkJCW1lbWNweSgmZGF0YVs4XSwgJmZsb3cucG9ydHMuc3JjLCAyKTsKKwkJCW1lbWNweSgm ZGF0YVsxMF0sICZmbG93LnBvcnRzLmRzdCwgMik7CisKKwkJCWhhc2ggPSB4ZW52aWZfZmluZF9o YXNoKHZpZiwgZGF0YSwgc2l6ZW9mKGRhdGEpKTsKKwkJCXR5cGUgPSBQS1RfSEFTSF9UWVBFX0w0 OworCQl9IGVsc2UgaWYgKGZsYWdzICYgWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjQpIHsK KwkJCXU4IGRhdGFbOF07CisKKwkJCW1lbWNweSgmZGF0YVswXSwgJmZsb3cuYWRkcnMudjRhZGRy cy5zcmMsIDQpOworCQkJbWVtY3B5KCZkYXRhWzRdLCAmZmxvdy5hZGRycy52NGFkZHJzLmRzdCwg NCk7CisKKwkJCWhhc2ggPSB4ZW52aWZfZmluZF9oYXNoKHZpZiwgZGF0YSwgc2l6ZW9mKGRhdGEp KTsKKwkJCXR5cGUgPSBQS1RfSEFTSF9UWVBFX0wzOworCQl9CisKKwkJYnJlYWs7CisKKwljYXNl IGh0b25zKEVUSF9QX0lQVjYpOgorCQlpZiAoaGFzX3RjcF9oZHIgJiYKKwkJICAgIChmbGFncyAm IFhFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9JUFY2X1RDUCkpIHsKKwkJCXU4IGRhdGFbMzZdOwor CisJCQltZW1jcHkoJmRhdGFbMF0sICZmbG93LmFkZHJzLnY2YWRkcnMuc3JjLCAxNik7CisJCQlt ZW1jcHkoJmRhdGFbMTZdLCAmZmxvdy5hZGRycy52NmFkZHJzLmRzdCwgMTYpOworCQkJbWVtY3B5 KCZkYXRhWzMyXSwgJmZsb3cucG9ydHMuc3JjLCAyKTsKKwkJCW1lbWNweSgmZGF0YVszNF0sICZm bG93LnBvcnRzLmRzdCwgMik7CisKKwkJCWhhc2ggPSB4ZW52aWZfZmluZF9oYXNoKHZpZiwgZGF0 YSwgc2l6ZW9mKGRhdGEpKTsKKwkJCXR5cGUgPSBQS1RfSEFTSF9UWVBFX0w0OworCQl9IGVsc2Ug aWYgKGZsYWdzICYgWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjYpIHsKKwkJCXU4IGRhdGFb MzJdOworCisJCQltZW1jcHkoJmRhdGFbMF0sICZmbG93LmFkZHJzLnY2YWRkcnMuc3JjLCAxNik7 CisJCQltZW1jcHkoJmRhdGFbMTZdLCAmZmxvdy5hZGRycy52NmFkZHJzLmRzdCwgMTYpOworCisJ CQloYXNoID0geGVudmlmX2ZpbmRfaGFzaCh2aWYsIGRhdGEsIHNpemVvZihkYXRhKSk7CisJCQl0 eXBlID0gUEtUX0hBU0hfVFlQRV9MMzsKKwkJfQorCisJCWJyZWFrOworCX0KKworZG9uZToKKwlp ZiAodHlwZSA9PSBQS1RfSEFTSF9UWVBFX05PTkUpCisJCXNrYl9jbGVhcl9oYXNoKHNrYik7CisJ ZWxzZQorCQlfX3NrYl9zZXRfc3dfaGFzaChza2IsIGhhc2gsIHR5cGUgPT0gUEtUX0hBU0hfVFlQ RV9MNCk7Cit9CisKK3UzMiB4ZW52aWZfc2V0X2hhc2hfYWxnKHN0cnVjdCB4ZW52aWYgKnZpZiwg dTMyIGFsZykKK3sKKwlzd2l0Y2ggKGFsZykgeworCWNhc2UgWEVOX05FVElGX0NUUkxfSEFTSF9B TEdPUklUSE1fTk9ORToKKwljYXNlIFhFTl9ORVRJRl9DVFJMX0hBU0hfQUxHT1JJVEhNX1RPRVBM SVRaOgorCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXJldHVybiBYRU5fTkVUSUZfQ1RSTF9TVEFU VVNfSU5WQUxJRF9QQVJBTUVURVI7CisJfQorCisJdmlmLT5oYXNoLmFsZyA9IGFsZzsKKworCXJl dHVybiBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUzsKK30KKwordTMyIHhlbnZpZl9nZXRf aGFzaF9mbGFncyhzdHJ1Y3QgeGVudmlmICp2aWYsIHUzMiAqZmxhZ3MpCit7CisJaWYgKHZpZi0+ aGFzaC5hbGcgPT0gWEVOX05FVElGX0NUUkxfSEFTSF9BTEdPUklUSE1fTk9ORSkKKwkJcmV0dXJu IFhFTl9ORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEOworCisJKmZsYWdzID0gWEVOX05F VElGX0NUUkxfSEFTSF9UWVBFX0lQVjQgfAorCQkgWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQ VjRfVENQIHwKKwkJIFhFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9JUFY2IHwKKwkJIFhFTl9ORVRJ Rl9DVFJMX0hBU0hfVFlQRV9JUFY2X1RDUDsKKworCXJldHVybiBYRU5fTkVUSUZfQ1RSTF9TVEFU VVNfU1VDQ0VTUzsKK30KKwordTMyIHhlbnZpZl9zZXRfaGFzaF9mbGFncyhzdHJ1Y3QgeGVudmlm ICp2aWYsIHUzMiBmbGFncykKK3sKKwlpZiAoZmxhZ3MgJiB+KFhFTl9ORVRJRl9DVFJMX0hBU0hf VFlQRV9JUFY0IHwKKwkJICAgICAgWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjRfVENQIHwK KwkJICAgICAgWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQVjYgfAorCQkgICAgICBYRU5fTkVU SUZfQ1RSTF9IQVNIX1RZUEVfSVBWNl9UQ1ApKQorCQlyZXR1cm4gWEVOX05FVElGX0NUUkxfU1RB VFVTX0lOVkFMSURfUEFSQU1FVEVSOworCisJaWYgKHZpZi0+aGFzaC5hbGcgPT0gWEVOX05FVElG X0NUUkxfSEFTSF9BTEdPUklUSE1fTk9ORSkKKwkJcmV0dXJuIFhFTl9ORVRJRl9DVFJMX1NUQVRV U19JTlZBTElEX1BBUkFNRVRFUjsKKworCXZpZi0+aGFzaC5mbGFncyA9IGZsYWdzOworCisJcmV0 dXJuIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTOworfQorCit1MzIgeGVudmlmX3NldF9o YXNoX2tleShzdHJ1Y3QgeGVudmlmICp2aWYsIHUzMiBncmVmLCB1MzIgbGVuKQoreworCXU4ICpr ZXkgPSB2aWYtPmhhc2gua2V5OworCXN0cnVjdCBnbnR0YWJfY29weSBjb3B5X29wID0geworCQku c291cmNlLnUucmVmID0gZ3JlZiwKKwkJLnNvdXJjZS5kb21pZCA9IHZpZi0+ZG9taWQsCisJCS5k ZXN0LnUuZ21mbiA9IHZpcnRfdG9fZ2ZuKGtleSksCisJCS5kZXN0LmRvbWlkID0gRE9NSURfU0VM RiwKKwkJLmRlc3Qub2Zmc2V0ID0geGVuX29mZnNldF9pbl9wYWdlKGtleSksCisJCS5sZW4gPSBs ZW4sCisJCS5mbGFncyA9IEdOVENPUFlfc291cmNlX2dyZWYKKwl9OworCisJaWYgKGxlbiA+IFhF Tl9ORVRCS19NQVhfSEFTSF9LRVlfU0laRSkKKwkJcmV0dXJuIFhFTl9ORVRJRl9DVFJMX1NUQVRV U19JTlZBTElEX1BBUkFNRVRFUjsKKworCWlmIChsZW4gIT0gMCkgeworCQlnbnR0YWJfYmF0Y2hf Y29weSgmY29weV9vcCwgMSk7CisKKwkJaWYgKGNvcHlfb3Auc3RhdHVzICE9IEdOVFNUX29rYXkp CisJCQlyZXR1cm4gWEVOX05FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSOworCX0K KworCS8qIENsZWFyIGFueSByZW1haW5pbmcga2V5IG9jdGV0cyAqLworCWlmIChsZW4gPCBYRU5f TkVUQktfTUFYX0hBU0hfS0VZX1NJWkUpCisJCW1lbXNldChrZXkgKyBsZW4sIDAsIFhFTl9ORVRC S19NQVhfSEFTSF9LRVlfU0laRSAtIGxlbik7CisKKwl4ZW52aWZfZmx1c2hfaGFzaCh2aWYpOwor CisJcmV0dXJuIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTOworfQorCit1MzIgeGVudmlm X3NldF9oYXNoX21hcHBpbmdfc2l6ZShzdHJ1Y3QgeGVudmlmICp2aWYsIHUzMiBzaXplKQorewor CWlmIChzaXplID4gWEVOX05FVEJLX01BWF9IQVNIX01BUFBJTkdfU0laRSkKKwkJcmV0dXJuIFhF Tl9ORVRJRl9DVFJMX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUjsKKworCXZpZi0+aGFzaC5zaXpl ID0gc2l6ZTsKKwltZW1zZXQodmlmLT5oYXNoLm1hcHBpbmcsIDAsIHNpemVvZih1MzIpICogc2l6 ZSk7CisKKwlyZXR1cm4gWEVOX05FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3UzMiB4 ZW52aWZfc2V0X2hhc2hfbWFwcGluZyhzdHJ1Y3QgeGVudmlmICp2aWYsIHUzMiBncmVmLCB1MzIg bGVuLAorCQkJICAgIHUzMiBvZmYpCit7CisJdTMyICptYXBwaW5nID0gJnZpZi0+aGFzaC5tYXBw aW5nW29mZl07CisJc3RydWN0IGdudHRhYl9jb3B5IGNvcHlfb3AgPSB7CisJCS5zb3VyY2UudS5y ZWYgPSBncmVmLAorCQkuc291cmNlLmRvbWlkID0gdmlmLT5kb21pZCwKKwkJLmRlc3QudS5nbWZu ID0gdmlydF90b19nZm4obWFwcGluZyksCisJCS5kZXN0LmRvbWlkID0gRE9NSURfU0VMRiwKKwkJ LmRlc3Qub2Zmc2V0ID0geGVuX29mZnNldF9pbl9wYWdlKG1hcHBpbmcpLAorCQkubGVuID0gbGVu ICogc2l6ZW9mKHUzMiksCisJCS5mbGFncyA9IEdOVENPUFlfc291cmNlX2dyZWYKKwl9OworCisJ aWYgKChvZmYgKyBsZW4gPiB2aWYtPmhhc2guc2l6ZSkgfHwgY29weV9vcC5sZW4gPiBYRU5fUEFH RV9TSVpFKQorCQlyZXR1cm4gWEVOX05FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVS OworCisJd2hpbGUgKGxlbi0tICE9IDApCisJCWlmIChtYXBwaW5nW29mZisrXSA+PSB2aWYtPm51 bV9xdWV1ZXMpCisJCQlyZXR1cm4gWEVOX05FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1F VEVSOworCisJaWYgKGxlbiAhPSAwKSB7CisJCWdudHRhYl9iYXRjaF9jb3B5KCZjb3B5X29wLCAx KTsKKworCQlpZiAoY29weV9vcC5zdGF0dXMgIT0gR05UU1Rfb2theSkKKwkJCXJldHVybiBYRU5f TkVUSUZfQ1RSTF9TVEFUVVNfSU5WQUxJRF9QQVJBTUVURVI7CisJfQorCisJcmV0dXJuIFhFTl9O RVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTOworfQorCit2b2lkIHhlbnZpZl9pbml0X2hhc2goc3Ry dWN0IHhlbnZpZiAqdmlmKQoreworCWlmICh4ZW52aWZfaGFzaF9jYWNoZV9zaXplID09IDApCisJ CXJldHVybjsKKworCXNwaW5fbG9ja19pbml0KCZ2aWYtPmhhc2guY2FjaGUubG9jayk7CisJSU5J VF9MSVNUX0hFQUQoJnZpZi0+aGFzaC5jYWNoZS5saXN0KTsKK30KKwordm9pZCB4ZW52aWZfZGVp bml0X2hhc2goc3RydWN0IHhlbnZpZiAqdmlmKQoreworCXhlbnZpZl9mbHVzaF9oYXNoKHZpZik7 Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYyBiL2Ry aXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jCmluZGV4IDc4YTEwZDIuLjVhMzljZGIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jCisrKyBiL2Ry aXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jCkBAIC0xNTEsNiArMTUxLDI0IEBAIHZv aWQgeGVudmlmX3dha2VfcXVldWUoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpCiAJbmV0aWZf dHhfd2FrZV9xdWV1ZShuZXRkZXZfZ2V0X3R4X3F1ZXVlKGRldiwgaWQpKTsKIH0KIAorc3RhdGlj IHUxNiB4ZW52aWZfc2VsZWN0X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBz a19idWZmICpza2IsCisJCQkgICAgICAgdm9pZCAqYWNjZWxfcHJpdiwKKwkJCSAgICAgICBzZWxl Y3RfcXVldWVfZmFsbGJhY2tfdCBmYWxsYmFjaykKK3sKKwlzdHJ1Y3QgeGVudmlmICp2aWYgPSBu ZXRkZXZfcHJpdihkZXYpOworCXVuc2lnbmVkIGludCBzaXplID0gdmlmLT5oYXNoLnNpemU7CisK KwlpZiAodmlmLT5oYXNoLmFsZyA9PSBYRU5fTkVUSUZfQ1RSTF9IQVNIX0FMR09SSVRITV9OT05F KQorCQlyZXR1cm4gZmFsbGJhY2soZGV2LCBza2IpICUgZGV2LT5yZWFsX251bV90eF9xdWV1ZXM7 CisKKwl4ZW52aWZfc2V0X3NrYl9oYXNoKHZpZiwgc2tiKTsKKworCWlmIChzaXplID09IDApCisJ CXJldHVybiBza2JfZ2V0X2hhc2hfcmF3KHNrYikgJSBkZXYtPnJlYWxfbnVtX3R4X3F1ZXVlczsK KworCXJldHVybiB2aWYtPmhhc2gubWFwcGluZ1tza2JfZ2V0X2hhc2hfcmF3KHNrYikgJSBzaXpl XTsKK30KKwogc3RhdGljIGludCB4ZW52aWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2ti LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCB4ZW52aWYgKnZpZiA9IG5ldGRl dl9wcml2KGRldik7CkBAIC0zOTUsNiArNDEzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0 b29sX29wcyB4ZW52aWZfZXRodG9vbF9vcHMgPSB7CiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0 IG5ldF9kZXZpY2Vfb3BzIHhlbnZpZl9uZXRkZXZfb3BzID0geworCS5uZG9fc2VsZWN0X3F1ZXVl ID0geGVudmlmX3NlbGVjdF9xdWV1ZSwKIAkubmRvX3N0YXJ0X3htaXQJPSB4ZW52aWZfc3RhcnRf eG1pdCwKIAkubmRvX2dldF9zdGF0cwk9IHhlbnZpZl9nZXRfc3RhdHMsCiAJLm5kb19vcGVuCT0g eGVudmlmX29wZW4sCkBAIC01NjMsNiArNTgyLDggQEAgaW50IHhlbnZpZl9jb25uZWN0X2N0cmwo c3RydWN0IHhlbnZpZiAqdmlmLCBncmFudF9yZWZfdCByaW5nX3JlZiwKIAogCXZpZi0+Y3RybF9p cnEgPSBlcnI7CiAKKwl4ZW52aWZfaW5pdF9oYXNoKHZpZik7CisKIAl0YXNrID0ga3RocmVhZF9j cmVhdGUoeGVudmlmX2N0cmxfa3RocmVhZCwgKHZvaWQgKil2aWYsCiAJCQkgICAgICAiJXMtY29u dHJvbCIsIGRldi0+bmFtZSk7CiAJaWYgKElTX0VSUih0YXNrKSkgewpAQCAtNTc5LDYgKzYwMCw3 IEBAIGludCB4ZW52aWZfY29ubmVjdF9jdHJsKHN0cnVjdCB4ZW52aWYgKnZpZiwgZ3JhbnRfcmVm X3QgcmluZ19yZWYsCiAJcmV0dXJuIDA7CiAKIGVycl9kZWluaXQ6CisJeGVudmlmX2RlaW5pdF9o YXNoKHZpZik7CiAJdW5iaW5kX2Zyb21faXJxaGFuZGxlcih2aWYtPmN0cmxfaXJxLCB2aWYpOwog CXZpZi0+Y3RybF9pcnEgPSAwOwogCkBAIC03NDksNiArNzcxLDggQEAgdm9pZCB4ZW52aWZfZGlz Y29ubmVjdF9jdHJsKHN0cnVjdCB4ZW52aWYgKnZpZikKIAkJdmlmLT5jdHJsX3Rhc2sgPSBOVUxM OwogCX0KIAorCXhlbnZpZl9kZWluaXRfaGFzaCh2aWYpOworCiAJaWYgKHZpZi0+Y3RybF9pcnEp IHsKIAkJdW5iaW5kX2Zyb21faXJxaGFuZGxlcih2aWYtPmN0cmxfaXJxLCB2aWYpOwogCQl2aWYt PmN0cmxfaXJxID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJh Y2suYyBiL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYwppbmRleCA0NWFhNDBiLi42 NTA5ZDExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMKKysr IGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jCkBAIC04OSw2ICs4OSwxMSBAQCBt b2R1bGVfcGFyYW0oZmF0YWxfc2tiX3Nsb3RzLCB1aW50LCAwNDQ0KTsKICAqLwogI2RlZmluZSBY RU5fTkVUQkFDS19UWF9DT1BZX0xFTiAxMjgKIAorLyogVGhpcyBpcyB0aGUgbWF4aW11bSBudW1i ZXIgb2YgZmxvd3MgaW4gdGhlIGhhc2ggY2FjaGUuICovCisjZGVmaW5lIFhFTlZJRl9IQVNIX0NB Q0hFX1NJWkVfREVGQVVMVCA2NAordW5zaWduZWQgaW50IHhlbnZpZl9oYXNoX2NhY2hlX3NpemUg PSBYRU5WSUZfSEFTSF9DQUNIRV9TSVpFX0RFRkFVTFQ7Cittb2R1bGVfcGFyYW1fbmFtZWQoaGFz aF9jYWNoZV9zaXplLCB4ZW52aWZfaGFzaF9jYWNoZV9zaXplLCB1aW50LCAwNjQ0KTsKK01PRFVM RV9QQVJNX0RFU0MoaGFzaF9jYWNoZV9zaXplLCAiTnVtYmVyIG9mIGZsb3dzIGluIHRoZSBoYXNo IGNhY2hlIik7CiAKIHN0YXRpYyB2b2lkIHhlbnZpZl9pZHhfcmVsZWFzZShzdHJ1Y3QgeGVudmlm X3F1ZXVlICpxdWV1ZSwgdTE2IHBlbmRpbmdfaWR4LAogCQkJICAgICAgIHU4IHN0YXR1cyk7CkBA IC0yMTkxLDggKzIxOTYsNDggQEAgc3RhdGljIHZvaWQgcHVzaF9jdHJsX3Jlc3BvbnNlKHN0cnVj dCB4ZW52aWYgKnZpZikKIHN0YXRpYyB2b2lkIHByb2Nlc3NfY3RybF9yZXF1ZXN0KHN0cnVjdCB4 ZW52aWYgKnZpZiwKIAkJCQkgY29uc3Qgc3RydWN0IHhlbl9uZXRpZl9jdHJsX3JlcXVlc3QgKnJl cSkKIHsKLQltYWtlX2N0cmxfcmVzcG9uc2UodmlmLCByZXEsIFhFTl9ORVRJRl9DVFJMX1NUQVRV U19OT1RfU1VQUE9SVEVELAotCQkJICAgMCk7CisJdTMyIHN0YXR1cyA9IFhFTl9ORVRJRl9DVFJM X1NUQVRVU19OT1RfU1VQUE9SVEVEOworCXUzMiBkYXRhID0gMDsKKworCXN3aXRjaCAocmVxLT50 eXBlKSB7CisJY2FzZSBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX0FMR09SSVRITToKKwkJ c3RhdHVzID0geGVudmlmX3NldF9oYXNoX2FsZyh2aWYsIHJlcS0+ZGF0YVswXSk7CisJCWJyZWFr OworCisJY2FzZSBYRU5fTkVUSUZfQ1RSTF9UWVBFX0dFVF9IQVNIX0ZMQUdTOgorCQlzdGF0dXMg PSB4ZW52aWZfZ2V0X2hhc2hfZmxhZ3ModmlmLCAmZGF0YSk7CisJCWJyZWFrOworCisJY2FzZSBY RU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX0ZMQUdTOgorCQlzdGF0dXMgPSB4ZW52aWZfc2V0 X2hhc2hfZmxhZ3ModmlmLCByZXEtPmRhdGFbMF0pOworCQlicmVhazsKKworCWNhc2UgWEVOX05F VElGX0NUUkxfVFlQRV9TRVRfSEFTSF9LRVk6CisJCXN0YXR1cyA9IHhlbnZpZl9zZXRfaGFzaF9r ZXkodmlmLCByZXEtPmRhdGFbMF0sCisJCQkJCSAgICAgcmVxLT5kYXRhWzFdKTsKKwkJYnJlYWs7 CisKKwljYXNlIFhFTl9ORVRJRl9DVFJMX1RZUEVfR0VUX0hBU0hfTUFQUElOR19TSVpFOgorCQlz dGF0dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUzsKKwkJZGF0YSA9IFhFTl9ORVRC S19NQVhfSEFTSF9NQVBQSU5HX1NJWkU7CisJCWJyZWFrOworCisJY2FzZSBYRU5fTkVUSUZfQ1RS TF9UWVBFX1NFVF9IQVNIX01BUFBJTkdfU0laRToKKwkJc3RhdHVzID0geGVudmlmX3NldF9oYXNo X21hcHBpbmdfc2l6ZSh2aWYsCisJCQkJCQkgICAgICByZXEtPmRhdGFbMF0pOworCQlicmVhazsK KworCWNhc2UgWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9NQVBQSU5HOgorCQlzdGF0dXMg PSB4ZW52aWZfc2V0X2hhc2hfbWFwcGluZyh2aWYsIHJlcS0+ZGF0YVswXSwKKwkJCQkJCSByZXEt PmRhdGFbMV0sCisJCQkJCQkgcmVxLT5kYXRhWzJdKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0Ogor CQlicmVhazsKKwl9CisKKwltYWtlX2N0cmxfcmVzcG9uc2UodmlmLCByZXEsIHN0YXR1cywgZGF0 YSk7CiAJcHVzaF9jdHJsX3Jlc3BvbnNlKHZpZik7CiB9CiAKLS0gCjIuMS40CgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK