From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ankur Arora Subject: [RFC PATCH 14/16] xen/blk: gnttab, evtchn, xenbus API changes Date: Thu, 9 May 2019 10:25:38 -0700 Message-ID: <20190509172540.12398-15-ankur.a.arora__36498.1335633033$1557422927$gmane$org@oracle.com> References: <20190509172540.12398-1-ankur.a.arora@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hOmpl-0001q3-AU for xen-devel@lists.xenproject.org; Thu, 09 May 2019 17:27:53 +0000 In-Reply-To: <20190509172540.12398-1-ankur.a.arora@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org Cc: jgross@suse.com, sstabellini@kernel.org, konrad.wilk@oracle.com, ankur.a.arora@oracle.com, pbonzini@redhat.com, boris.ostrovsky@oracle.com, joao.m.martins@oracle.com List-Id: xen-devel@lists.xenproject.org Rm9yIHRoZSBtb3N0IHBhcnQsIHdlIG5vdyBwYXNzIHhlbmhvc3RfdCAqIGFzIGEgcGFyYW1ldGVy LgoKQ28tZGV2ZWxvcGVkLWJ5OiBKb2FvIE1hcnRpbnMgPGpvYW8ubS5tYXJ0aW5zQG9yYWNsZS5j b20+ClNpZ25lZC1vZmYtYnk6IEFua3VyIEFyb3JhIDxhbmt1ci5hLmFyb3JhQG9yYWNsZS5jb20+ Ci0tLQogZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMgfCAgMzQgKysrKystLS0t CiBkcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2NvbW1vbi5oICB8ICAgMiArLQogZHJpdmVycy9i bG9jay94ZW4tYmxrYmFjay94ZW5idXMuYyAgfCAgNjMgKysrKysrKystLS0tLS0tLS0KIGRyaXZl cnMvYmxvY2sveGVuLWJsa2Zyb250LmMgICAgICAgIHwgMTAzICsrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKyksIDk1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5jIGIv ZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKaW5kZXggN2FkNDQyM2MyNGI4Li5k MzY2YTE3YTRiZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFj ay5jCisrKyBiL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5jCkBAIC0xNDIsNyAr MTQyLDcgQEAgc3RhdGljIGlubGluZSBib29sIHBlcnNpc3RlbnRfZ250X3RpbWVvdXQoc3RydWN0 IHBlcnNpc3RlbnRfZ250ICpwZXJzaXN0ZW50X2dudCkKIAkJSFogKiB4ZW5fYmxraWZfcGdyYW50 X3RpbWVvdXQpOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBnZXRfZnJlZV9wYWdlKHN0cnVjdCB4 ZW5fYmxraWZfcmluZyAqcmluZywgc3RydWN0IHBhZ2UgKipwYWdlKQorc3RhdGljIGlubGluZSBp bnQgZ2V0X2ZyZWVfcGFnZSh4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcgKnJp bmcsIHN0cnVjdCBwYWdlICoqcGFnZSkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCkBAIC0x NTAsNyArMTUwLDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0X2ZyZWVfcGFnZShzdHJ1Y3QgeGVu X2Jsa2lmX3JpbmcgKnJpbmcsIHN0cnVjdCBwYWdlICoqcGFnZSkKIAlpZiAobGlzdF9lbXB0eSgm cmluZy0+ZnJlZV9wYWdlcykpIHsKIAkJQlVHX09OKHJpbmctPmZyZWVfcGFnZXNfbnVtICE9IDAp OwogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5nLT5mcmVlX3BhZ2VzX2xvY2ssIGZsYWdz KTsKLQkJcmV0dXJuIGdudHRhYl9hbGxvY19wYWdlcygxLCBwYWdlKTsKKwkJcmV0dXJuIGdudHRh Yl9hbGxvY19wYWdlcyh4aCwgMSwgcGFnZSk7CiAJfQogCUJVR19PTihyaW5nLT5mcmVlX3BhZ2Vz X251bSA9PSAwKTsKIAlwYWdlWzBdID0gbGlzdF9maXJzdF9lbnRyeSgmcmluZy0+ZnJlZV9wYWdl cywgc3RydWN0IHBhZ2UsIGxydSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIGlubGluZSB2 b2lkIHB1dF9mcmVlX3BhZ2VzKHN0cnVjdCB4ZW5fYmxraWZfcmluZyAqcmluZywgc3RydWN0IHBh Z2UgKipwYWcKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5nLT5mcmVlX3BhZ2VzX2xvY2ss IGZsYWdzKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNocmlua19mcmVlX3BhZ2Vwb29sKHN0 cnVjdCB4ZW5fYmxraWZfcmluZyAqcmluZywgaW50IG51bSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBz aHJpbmtfZnJlZV9wYWdlcG9vbCh4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeGVuX2Jsa2lmX3Jpbmcg KnJpbmcsIGludCBudW0pCiB7CiAJLyogUmVtb3ZlIHJlcXVlc3RlZCBwYWdlcyBpbiBiYXRjaGVz IG9mIE5VTV9CQVRDSF9GUkVFX1BBR0VTICovCiAJc3RydWN0IHBhZ2UgKnBhZ2VbTlVNX0JBVENI X0ZSRUVfUEFHRVNdOwpAQCAtMTkwLDE0ICsxOTAsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIHNo cmlua19mcmVlX3BhZ2Vwb29sKHN0cnVjdCB4ZW5fYmxraWZfcmluZyAqcmluZywgaW50IG51bSkK IAkJcmluZy0+ZnJlZV9wYWdlc19udW0tLTsKIAkJaWYgKCsrbnVtX3BhZ2VzID09IE5VTV9CQVRD SF9GUkVFX1BBR0VTKSB7CiAJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5nLT5mcmVlX3Bh Z2VzX2xvY2ssIGZsYWdzKTsKLQkJCWdudHRhYl9mcmVlX3BhZ2VzKG51bV9wYWdlcywgcGFnZSk7 CisJCQlnbnR0YWJfZnJlZV9wYWdlcyh4aCwgbnVtX3BhZ2VzLCBwYWdlKTsKIAkJCXNwaW5fbG9j a19pcnFzYXZlKCZyaW5nLT5mcmVlX3BhZ2VzX2xvY2ssIGZsYWdzKTsKIAkJCW51bV9wYWdlcyA9 IDA7CiAJCX0KIAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcmluZy0+ZnJlZV9wYWdlc19s b2NrLCBmbGFncyk7CiAJaWYgKG51bV9wYWdlcyAhPSAwKQotCQlnbnR0YWJfZnJlZV9wYWdlcyhu dW1fcGFnZXMsIHBhZ2UpOworCQlnbnR0YWJfZnJlZV9wYWdlcyh4aCwgbnVtX3BhZ2VzLCBwYWdl KTsKIH0KIAogI2RlZmluZSB2YWRkcihwYWdlKSAoKHVuc2lnbmVkIGxvbmcpcGZuX3RvX2thZGRy KHBhZ2VfdG9fcGZuKHBhZ2UpKSkKQEAgLTMwMSw4ICszMDEsOCBAQCBzdGF0aWMgdm9pZCBwdXRf cGVyc2lzdGVudF9nbnQoc3RydWN0IHhlbl9ibGtpZl9yaW5nICpyaW5nLAogCWF0b21pY19kZWMo JnJpbmctPnBlcnNpc3RlbnRfZ250X2luX3VzZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGZyZWVfcGVy c2lzdGVudF9nbnRzKHN0cnVjdCB4ZW5fYmxraWZfcmluZyAqcmluZywgc3RydWN0IHJiX3Jvb3Qg KnJvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnVt KQorc3RhdGljIHZvaWQgZnJlZV9wZXJzaXN0ZW50X2dudHMoeGVuaG9zdF90ICp4aCwgc3RydWN0 IHhlbl9ibGtpZl9yaW5nICpyaW5nLAorCQkJCXN0cnVjdCByYl9yb290ICpyb290LCB1bnNpZ25l ZCBpbnQgbnVtKQogewogCXN0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmIHVubWFwW0JMS0lG X01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07CiAJc3RydWN0IHBhZ2UgKnBhZ2VzW0JMS0lGX01B WF9TRUdNRU5UU19QRVJfUkVRVUVTVF07CkBAIC0zMTQsNiArMzE0LDcgQEAgc3RhdGljIHZvaWQg ZnJlZV9wZXJzaXN0ZW50X2dudHMoc3RydWN0IHhlbl9ibGtpZl9yaW5nICpyaW5nLCBzdHJ1Y3Qg cmJfcm9vdCAqcm8KIAl1bm1hcF9kYXRhLnBhZ2VzID0gcGFnZXM7CiAJdW5tYXBfZGF0YS51bm1h cF9vcHMgPSB1bm1hcDsKIAl1bm1hcF9kYXRhLmt1bm1hcF9vcHMgPSBOVUxMOworCXVubWFwX2Rh dGEueGggPSB4aDsKIAogCWZvcmVhY2hfZ3JhbnRfc2FmZShwZXJzaXN0ZW50X2dudCwgbiwgcm9v dCwgbm9kZSkgewogCQlCVUdfT04ocGVyc2lzdGVudF9nbnQtPmhhbmRsZSA9PQpAQCAtMzUxLDEw ICszNTIsMTIgQEAgdm9pZCB4ZW5fYmxrYmtfdW5tYXBfcHVyZ2VkX2dyYW50cyhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCiAJaW50IHNlZ3NfdG9fdW5tYXAgPSAwOwogCXN0cnVjdCB4ZW5fYmxr aWZfcmluZyAqcmluZyA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKnJpbmcpLCBwZXJzaXN0 ZW50X3B1cmdlX3dvcmspOwogCXN0cnVjdCBnbnRhYl91bm1hcF9xdWV1ZV9kYXRhIHVubWFwX2Rh dGE7CisJc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiA9IHhlbl9ibGtia194ZW5idXMocmluZy0+ YmxraWYtPmJlKTsKIAogCXVubWFwX2RhdGEucGFnZXMgPSBwYWdlczsKIAl1bm1hcF9kYXRhLnVu bWFwX29wcyA9IHVubWFwOwogCXVubWFwX2RhdGEua3VubWFwX29wcyA9IE5VTEw7CisJdW5tYXBf ZGF0YS54aCA9IGRldi0+eGg7CiAKIAl3aGlsZSghbGlzdF9lbXB0eSgmcmluZy0+cGVyc2lzdGVu dF9wdXJnZV9saXN0KSkgewogCQlwZXJzaXN0ZW50X2dudCA9IGxpc3RfZmlyc3RfZW50cnkoJnJp bmctPnBlcnNpc3RlbnRfcHVyZ2VfbGlzdCwKQEAgLTYxNSw2ICs2MTgsNyBAQCBpbnQgeGVuX2Js a2lmX3NjaGVkdWxlKHZvaWQgKmFyZykKIAlzdHJ1Y3QgeGVuX3ZiZCAqdmJkID0gJmJsa2lmLT52 YmQ7CiAJdW5zaWduZWQgbG9uZyB0aW1lb3V0OwogCWludCByZXQ7CisJc3RydWN0IHhlbmJ1c19k ZXZpY2UgKmRldiA9IHhlbl9ibGtia194ZW5idXMoYmxraWYtPmJlKTsKIAogCXNldF9mcmVlemFi bGUoKTsKIAl3aGlsZSAoIWt0aHJlYWRfc2hvdWxkX3N0b3AoKSkgewpAQCAtNjU3LDcgKzY2MSw3 IEBAIGludCB4ZW5fYmxraWZfc2NoZWR1bGUodm9pZCAqYXJnKQogCQl9CiAKIAkJLyogU2hyaW5r IGlmIHdlIGhhdmUgbW9yZSB0aGFuIHhlbl9ibGtpZl9tYXhfYnVmZmVyX3BhZ2VzICovCi0JCXNo cmlua19mcmVlX3BhZ2Vwb29sKHJpbmcsIHhlbl9ibGtpZl9tYXhfYnVmZmVyX3BhZ2VzKTsKKwkJ c2hyaW5rX2ZyZWVfcGFnZXBvb2woZGV2LT54aCwgcmluZywgeGVuX2Jsa2lmX21heF9idWZmZXJf cGFnZXMpOwogCiAJCWlmIChsb2dfc3RhdHMgJiYgdGltZV9hZnRlcihqaWZmaWVzLCByaW5nLT5z dF9wcmludCkpCiAJCQlwcmludF9zdGF0cyhyaW5nKTsKQEAgLTY3NywxOCArNjgxLDE4IEBAIGlu dCB4ZW5fYmxraWZfc2NoZWR1bGUodm9pZCAqYXJnKQogLyoKICAqIFJlbW92ZSBwZXJzaXN0ZW50 IGdyYW50cyBhbmQgZW1wdHkgdGhlIHBvb2wgb2YgZnJlZSBwYWdlcwogICovCi12b2lkIHhlbl9i bGtia19mcmVlX2NhY2hlcyhzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcgKnJpbmcpCit2b2lkIHhlbl9i bGtia19mcmVlX2NhY2hlcyh4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcgKnJp bmcpCiB7CiAJLyogRnJlZSBhbGwgcGVyc2lzdGVudCBncmFudCBwYWdlcyAqLwogCWlmICghUkJf RU1QVFlfUk9PVCgmcmluZy0+cGVyc2lzdGVudF9nbnRzKSkKLQkJZnJlZV9wZXJzaXN0ZW50X2du dHMocmluZywgJnJpbmctPnBlcnNpc3RlbnRfZ250cywKKwkJZnJlZV9wZXJzaXN0ZW50X2dudHMo eGgsIHJpbmcsICZyaW5nLT5wZXJzaXN0ZW50X2dudHMsCiAJCQlyaW5nLT5wZXJzaXN0ZW50X2du dF9jKTsKIAogCUJVR19PTighUkJfRU1QVFlfUk9PVCgmcmluZy0+cGVyc2lzdGVudF9nbnRzKSk7 CiAJcmluZy0+cGVyc2lzdGVudF9nbnRfYyA9IDA7CiAKIAkvKiBTaW5jZSB3ZSBhcmUgc2h1dHRp bmcgZG93biByZW1vdmUgYWxsIHBhZ2VzIGZyb20gdGhlIGJ1ZmZlciAqLwotCXNocmlua19mcmVl X3BhZ2Vwb29sKHJpbmcsIDAgLyogQWxsICovKTsKKwlzaHJpbmtfZnJlZV9wYWdlcG9vbCh4aCwg cmluZywgMCAvKiBBbGwgKi8pOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IHhlbl9ibGtia191 bm1hcF9wcmVwYXJlKApAQCAtNzg0LDYgKzc4OCw3IEBAIHN0YXRpYyB2b2lkIHhlbl9ibGtia191 bm1hcChzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcgKnJpbmcsCiAJc3RydWN0IGdudHRhYl91bm1hcF9n cmFudF9yZWYgdW5tYXBbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKIAlzdHJ1Y3Qg cGFnZSAqdW5tYXBfcGFnZXNbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKIAl1bnNp Z25lZCBpbnQgaW52Y291bnQgPSAwOworCXN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYgPSB4ZW5f YmxrYmtfeGVuYnVzKHJpbmctPmJsa2lmLT5iZSk7CiAJaW50IHJldDsKIAogCXdoaWxlIChudW0p IHsKQEAgLTc5Miw3ICs3OTcsNyBAQCBzdGF0aWMgdm9pZCB4ZW5fYmxrYmtfdW5tYXAoc3RydWN0 IHhlbl9ibGtpZl9yaW5nICpyaW5nLAogCQlpbnZjb3VudCA9IHhlbl9ibGtia191bm1hcF9wcmVw YXJlKHJpbmcsIHBhZ2VzLCBiYXRjaCwKIAkJCQkJCSAgIHVubWFwLCB1bm1hcF9wYWdlcyk7CiAJ CWlmIChpbnZjb3VudCkgewotCQkJcmV0ID0gZ250dGFiX3VubWFwX3JlZnModW5tYXAsIE5VTEws IHVubWFwX3BhZ2VzLCBpbnZjb3VudCk7CisJCQlyZXQgPSBnbnR0YWJfdW5tYXBfcmVmcyhkZXYt PnhoLCB1bm1hcCwgTlVMTCwgdW5tYXBfcGFnZXMsIGludmNvdW50KTsKIAkJCUJVR19PTihyZXQp OwogCQkJcHV0X2ZyZWVfcGFnZXMocmluZywgdW5tYXBfcGFnZXMsIGludmNvdW50KTsKIAkJfQpA QCAtODE1LDYgKzgyMCw3IEBAIHN0YXRpYyBpbnQgeGVuX2Jsa2JrX21hcChzdHJ1Y3QgeGVuX2Js a2lmX3JpbmcgKnJpbmcsCiAJaW50IGxhc3RfbWFwID0gMCwgbWFwX3VudGlsID0gMDsKIAlpbnQg dXNlX3BlcnNpc3RlbnRfZ250czsKIAlzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiA9IHJpbmctPmJs a2lmOworCXN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYgPSB4ZW5fYmxrYmtfeGVuYnVzKGJsa2lm LT5iZSk7IC8qIGZ1bmN0aW9uIGNhbGwgKi8KIAogCXVzZV9wZXJzaXN0ZW50X2dudHMgPSAoYmxr aWYtPnZiZC5mZWF0dXJlX2dudF9wZXJzaXN0ZW50KTsKIApAQCAtODQxLDcgKzg0Nyw3IEBAIHN0 YXRpYyBpbnQgeGVuX2Jsa2JrX21hcChzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcgKnJpbmcsCiAJCQlw YWdlc1tpXS0+cGFnZSA9IHBlcnNpc3RlbnRfZ250LT5wYWdlOwogCQkJcGFnZXNbaV0tPnBlcnNp c3RlbnRfZ250ID0gcGVyc2lzdGVudF9nbnQ7CiAJCX0gZWxzZSB7Ci0JCQlpZiAoZ2V0X2ZyZWVf cGFnZShyaW5nLCAmcGFnZXNbaV0tPnBhZ2UpKQorCQkJaWYgKGdldF9mcmVlX3BhZ2UoZGV2LT54 aCwgcmluZywgJnBhZ2VzW2ldLT5wYWdlKSkKIAkJCQlnb3RvIG91dF9vZl9tZW1vcnk7CiAJCQlh ZGRyID0gdmFkZHIocGFnZXNbaV0tPnBhZ2UpOwogCQkJcGFnZXNfdG9fZ250W3NlZ3NfdG9fbWFw XSA9IHBhZ2VzW2ldLT5wYWdlOwpAQCAtODU5LDcgKzg2NSw3IEBAIHN0YXRpYyBpbnQgeGVuX2Js a2JrX21hcChzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcgKnJpbmcsCiAJfQogCiAJaWYgKHNlZ3NfdG9f bWFwKSB7Ci0JCXJldCA9IGdudHRhYl9tYXBfcmVmcyhtYXAsIE5VTEwsIHBhZ2VzX3RvX2dudCwg c2Vnc190b19tYXApOworCQlyZXQgPSBnbnR0YWJfbWFwX3JlZnMoZGV2LT54aCwgbWFwLCBOVUxM LCBwYWdlc190b19nbnQsIHNlZ3NfdG9fbWFwKTsKIAkJQlVHX09OKHJldCk7CiAJfQogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2NvbW1vbi5oIGIvZHJpdmVycy9ibG9j ay94ZW4tYmxrYmFjay9jb21tb24uaAppbmRleCAxZDMwMDJkNzczZjcuLjYzMzExNTg4ODc2NSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9jb21tb24uaAorKysgYi9kcml2 ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2NvbW1vbi5oCkBAIC0zODIsNyArMzgyLDcgQEAgaW50IHhl bl9ibGtpZl94ZW5idXNfaW5pdCh2b2lkKTsKIGlycXJldHVybl90IHhlbl9ibGtpZl9iZV9pbnQo aW50IGlycSwgdm9pZCAqZGV2X2lkKTsKIGludCB4ZW5fYmxraWZfc2NoZWR1bGUodm9pZCAqYXJn KTsKIGludCB4ZW5fYmxraWZfcHVyZ2VfcGVyc2lzdGVudCh2b2lkICphcmcpOwotdm9pZCB4ZW5f YmxrYmtfZnJlZV9jYWNoZXMoc3RydWN0IHhlbl9ibGtpZl9yaW5nICpyaW5nKTsKK3ZvaWQgeGVu X2Jsa2JrX2ZyZWVfY2FjaGVzKHhlbmhvc3RfdCAqeGgsIHN0cnVjdCB4ZW5fYmxraWZfcmluZyAq cmluZyk7CiAKIGludCB4ZW5fYmxrYmtfZmx1c2hfZGlza2NhY2hlKHN0cnVjdCB4ZW5idXNfdHJh bnNhY3Rpb24geGJ0LAogCQkJICAgICAgc3RydWN0IGJhY2tlbmRfaW5mbyAqYmUsIGludCBzdGF0 ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jIGIvZHJp dmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYwppbmRleCBiZWVhNDI3MmNmZDMuLmEzZWQz NDI2OWIyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYwor KysgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jCkBAIC02NSw3ICs2NSw3IEBA IHN0YXRpYyBpbnQgYmxrYmFja19uYW1lKHN0cnVjdCB4ZW5fYmxraWYgKmJsa2lmLCBjaGFyICpi dWYpCiAJY2hhciAqZGV2cGF0aCwgKmRldm5hbWU7CiAJc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRl diA9IGJsa2lmLT5iZS0+ZGV2OwogCi0JZGV2cGF0aCA9IHhlbmJ1c19yZWFkKFhCVF9OSUwsIGRl di0+bm9kZW5hbWUsICJkZXYiLCBOVUxMKTsKKwlkZXZwYXRoID0geGVuYnVzX3JlYWQoZGV2LT54 aCwgWEJUX05JTCwgZGV2LT5ub2RlbmFtZSwgImRldiIsIE5VTEwpOwogCWlmIChJU19FUlIoZGV2 cGF0aCkpCiAJCXJldHVybiBQVFJfRVJSKGRldnBhdGgpOwogCkBAIC0yNDYsNiArMjQ2LDcgQEAg c3RhdGljIGludCB4ZW5fYmxraWZfZGlzY29ubmVjdChzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZikK IAlzdHJ1Y3QgcGVuZGluZ19yZXEgKnJlcSwgKm47CiAJdW5zaWduZWQgaW50IGosIHI7CiAJYm9v bCBidXN5ID0gZmFsc2U7CisJc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiA9IHhlbl9ibGtia194 ZW5idXMoYmxraWYtPmJlKTsKIAogCWZvciAociA9IDA7IHIgPCBibGtpZi0+bnJfcmluZ3M7IHIr KykgewogCQlzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcgKnJpbmcgPSAmYmxraWYtPnJpbmdzW3JdOwpA QCAtMjc5LDcgKzI4MCw3IEBAIHN0YXRpYyBpbnQgeGVuX2Jsa2lmX2Rpc2Nvbm5lY3Qoc3RydWN0 IHhlbl9ibGtpZiAqYmxraWYpCiAJCX0KIAogCQkvKiBSZW1vdmUgYWxsIHBlcnNpc3RlbnQgZ3Jh bnRzIGFuZCB0aGUgY2FjaGUgb2YgYmFsbG9vbmVkIHBhZ2VzLiAqLwotCQl4ZW5fYmxrYmtfZnJl ZV9jYWNoZXMocmluZyk7CisJCXhlbl9ibGtia19mcmVlX2NhY2hlcyhkZXYtPnhoLCByaW5nKTsK IAogCQkvKiBDaGVjayB0aGF0IHRoZXJlIGlzIG5vIHJlcXVlc3QgaW4gdXNlICovCiAJCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShyZXEsIG4sICZyaW5nLT5wZW5kaW5nX2ZyZWUsIGZyZWVfbGlz dCkgewpAQCAtNTA3LDcgKzUwOCw3IEBAIHN0YXRpYyBpbnQgeGVuX2Jsa2JrX3JlbW92ZShzdHJ1 Y3QgeGVuYnVzX2RldmljZSAqZGV2KQogCQl4ZW52YmRfc3lzZnNfZGVsaWYoZGV2KTsKIAogCWlm IChiZS0+YmFja2VuZF93YXRjaC5ub2RlKSB7Ci0JCXVucmVnaXN0ZXJfeGVuYnVzX3dhdGNoKCZi ZS0+YmFja2VuZF93YXRjaCk7CisJCXVucmVnaXN0ZXJfeGVuYnVzX3dhdGNoKGRldi0+eGgsICZi ZS0+YmFja2VuZF93YXRjaCk7CiAJCWtmcmVlKGJlLT5iYWNrZW5kX3dhdGNoLm5vZGUpOwogCQli ZS0+YmFja2VuZF93YXRjaC5ub2RlID0gTlVMTDsKIAl9CkBAIC01MzAsNyArNTMxLDcgQEAgaW50 IHhlbl9ibGtia19mbHVzaF9kaXNrY2FjaGUoc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB4YnQs CiAJc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiA9IGJlLT5kZXY7CiAJaW50IGVycjsKIAotCWVy ciA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAiZmVhdHVyZS1mbHVzaC1jYWNo ZSIsCisJZXJyID0geGVuYnVzX3ByaW50ZihkZXYtPnhoLCB4YnQsIGRldi0+bm9kZW5hbWUsICJm ZWF0dXJlLWZsdXNoLWNhY2hlIiwKIAkJCSAgICAiJWQiLCBzdGF0ZSk7CiAJaWYgKGVycikKIAkJ ZGV2X3dhcm4oJmRldi0+ZGV2LCAid3JpdGluZyBmZWF0dXJlLWZsdXNoLWNhY2hlICglZCkiLCBl cnIpOwpAQCAtNTQ3LDE4ICs1NDgsMTggQEAgc3RhdGljIHZvaWQgeGVuX2Jsa2JrX2Rpc2NhcmQo c3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB4YnQsIHN0cnVjdCBiYWNrZW5kX2luZm8KIAlzdHJ1 Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gYmUtPmJsa2lmLT52YmQuYmRldjsKIAlzdHJ1Y3QgcmVx dWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwogCi0JaWYgKCF4ZW5idXNfcmVh ZF91bnNpZ25lZChkZXYtPm5vZGVuYW1lLCAiZGlzY2FyZC1lbmFibGUiLCAxKSkKKwlpZiAoIXhl bmJ1c19yZWFkX3Vuc2lnbmVkKGRldi0+eGgsIGRldi0+bm9kZW5hbWUsICJkaXNjYXJkLWVuYWJs ZSIsIDEpKQogCQlyZXR1cm47CiAKIAlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQocSkpIHsKLQkJZXJy ID0geGVuYnVzX3ByaW50Zih4YnQsIGRldi0+bm9kZW5hbWUsCisJCWVyciA9IHhlbmJ1c19wcmlu dGYoZGV2LT54aCwgeGJ0LCBkZXYtPm5vZGVuYW1lLAogCQkJImRpc2NhcmQtZ3JhbnVsYXJpdHki LCAiJXUiLAogCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOwogCQlpZiAoZXJyKSB7 CiAJCQlkZXZfd2FybigmZGV2LT5kZXYsICJ3cml0aW5nIGRpc2NhcmQtZ3JhbnVsYXJpdHkgKCVk KSIsIGVycik7CiAJCQlyZXR1cm47CiAJCX0KLQkJZXJyID0geGVuYnVzX3ByaW50Zih4YnQsIGRl di0+bm9kZW5hbWUsCisJCWVyciA9IHhlbmJ1c19wcmludGYoZGV2LT54aCwgeGJ0LCBkZXYtPm5v ZGVuYW1lLAogCQkJImRpc2NhcmQtYWxpZ25tZW50IiwgIiV1IiwKIAkJCXEtPmxpbWl0cy5kaXNj YXJkX2FsaWdubWVudCk7CiAJCWlmIChlcnIpIHsKQEAgLTU2Nyw3ICs1NjgsNyBAQCBzdGF0aWMg dm9pZCB4ZW5fYmxrYmtfZGlzY2FyZChzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHhidCwgc3Ry dWN0IGJhY2tlbmRfaW5mbwogCQl9CiAJCXN0YXRlID0gMTsKIAkJLyogT3B0aW9uYWwuICovCi0J CWVyciA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLAorCQllcnIgPSB4ZW5idXNf cHJpbnRmKGRldi0+eGgsIHhidCwgZGV2LT5ub2RlbmFtZSwKIAkJCQkgICAgImRpc2NhcmQtc2Vj dXJlIiwgIiVkIiwKIAkJCQkgICAgYmxraWYtPnZiZC5kaXNjYXJkX3NlY3VyZSk7CiAJCWlmIChl cnIpIHsKQEAgLTU3NSw3ICs1NzYsNyBAQCBzdGF0aWMgdm9pZCB4ZW5fYmxrYmtfZGlzY2FyZChz dHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHhidCwgc3RydWN0IGJhY2tlbmRfaW5mbwogCQkJcmV0 dXJuOwogCQl9CiAJfQotCWVyciA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAi ZmVhdHVyZS1kaXNjYXJkIiwKKwllcnIgPSB4ZW5idXNfcHJpbnRmKGRldi0+eGgsIHhidCwgZGV2 LT5ub2RlbmFtZSwgImZlYXR1cmUtZGlzY2FyZCIsCiAJCQkgICAgIiVkIiwgc3RhdGUpOwogCWlm IChlcnIpCiAJCWRldl93YXJuKCZkZXYtPmRldiwgIndyaXRpbmcgZmVhdHVyZS1kaXNjYXJkICgl ZCkiLCBlcnIpOwpAQCAtNTg2LDcgKzU4Nyw3IEBAIGludCB4ZW5fYmxrYmtfYmFycmllcihzdHJ1 Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHhidCwKIAlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2ID0g YmUtPmRldjsKIAlpbnQgZXJyOwogCi0JZXJyID0geGVuYnVzX3ByaW50Zih4YnQsIGRldi0+bm9k ZW5hbWUsICJmZWF0dXJlLWJhcnJpZXIiLAorCWVyciA9IHhlbmJ1c19wcmludGYoZGV2LT54aCwg eGJ0LCBkZXYtPm5vZGVuYW1lLCAiZmVhdHVyZS1iYXJyaWVyIiwKIAkJCSAgICAiJWQiLCBzdGF0 ZSk7CiAJaWYgKGVycikKIAkJZGV2X3dhcm4oJmRldi0+ZGV2LCAid3JpdGluZyBmZWF0dXJlLWJh cnJpZXIgKCVkKSIsIGVycik7CkBAIC02MjUsNyArNjI2LDcgQEAgc3RhdGljIGludCB4ZW5fYmxr YmtfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKIAkJZ290byBmYWlsOwogCX0KIAot CWVyciA9IHhlbmJ1c19wcmludGYoWEJUX05JTCwgZGV2LT5ub2RlbmFtZSwKKwllcnIgPSB4ZW5i dXNfcHJpbnRmKGRldi0+eGgsIFhCVF9OSUwsIGRldi0+bm9kZW5hbWUsCiAJCQkgICAgImZlYXR1 cmUtbWF4LWluZGlyZWN0LXNlZ21lbnRzIiwgIiV1IiwKIAkJCSAgICBNQVhfSU5ESVJFQ1RfU0VH TUVOVFMpOwogCWlmIChlcnIpCkBAIC02MzQsNyArNjM1LDcgQEAgc3RhdGljIGludCB4ZW5fYmxr YmtfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKIAkJCSBkZXYtPm5vZGVuYW1lLCBl cnIpOwogCiAJLyogTXVsdGktcXVldWU6IGFkdmVydGlzZSBob3cgbWFueSBxdWV1ZXMgYXJlIHN1 cHBvcnRlZCBieSB1cy4qLwotCWVyciA9IHhlbmJ1c19wcmludGYoWEJUX05JTCwgZGV2LT5ub2Rl bmFtZSwKKwllcnIgPSB4ZW5idXNfcHJpbnRmKGRldi0+eGgsIFhCVF9OSUwsIGRldi0+bm9kZW5h bWUsCiAJCQkgICAgIm11bHRpLXF1ZXVlLW1heC1xdWV1ZXMiLCAiJXUiLCB4ZW5ibGtfbWF4X3F1 ZXVlcyk7CiAJaWYgKGVycikKIAkJcHJfd2FybigiRXJyb3Igd3JpdGluZyBtdWx0aS1xdWV1ZS1t YXgtcXVldWVzXG4iKTsKQEAgLTY0Nyw3ICs2NDgsNyBAQCBzdGF0aWMgaW50IHhlbl9ibGtia19w cm9iZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAogCWlmIChlcnIpCiAJCWdvdG8gZmFpbDsK IAotCWVyciA9IHhlbmJ1c19wcmludGYoWEJUX05JTCwgZGV2LT5ub2RlbmFtZSwgIm1heC1yaW5n LXBhZ2Utb3JkZXIiLCAiJXUiLAorCWVyciA9IHhlbmJ1c19wcmludGYoZGV2LT54aCwgWEJUX05J TCwgZGV2LT5ub2RlbmFtZSwgIm1heC1yaW5nLXBhZ2Utb3JkZXIiLCAiJXUiLAogCQkJICAgIHhl bl9ibGtpZl9tYXhfcmluZ19vcmRlcik7CiAJaWYgKGVycikKIAkJcHJfd2FybigiJXMgd3JpdGUg b3V0ICdtYXgtcmluZy1wYWdlLW9yZGVyJyBmYWlsZWRcbiIsIF9fZnVuY19fKTsKQEAgLTY4NSw3 ICs2ODYsNyBAQCBzdGF0aWMgdm9pZCBiYWNrZW5kX2NoYW5nZWQoc3RydWN0IHhlbmJ1c193YXRj aCAqd2F0Y2gsCiAKIAlwcl9kZWJ1ZygiJXMgJXAgJWRcbiIsIF9fZnVuY19fLCBkZXYsIGRldi0+ b3RoZXJlbmRfaWQpOwogCi0JZXJyID0geGVuYnVzX3NjYW5mKFhCVF9OSUwsIGRldi0+bm9kZW5h bWUsICJwaHlzaWNhbC1kZXZpY2UiLCAiJXg6JXgiLAorCWVyciA9IHhlbmJ1c19zY2FuZihkZXYt PnhoLCBYQlRfTklMLCBkZXYtPm5vZGVuYW1lLCAicGh5c2ljYWwtZGV2aWNlIiwgIiV4OiV4IiwK IAkJCSAgICZtYWpvciwgJm1pbm9yKTsKIAlpZiAoWEVOQlVTX0VYSVNUX0VSUihlcnIpKSB7CiAJ CS8qCkBAIC03MDcsNyArNzA4LDcgQEAgc3RhdGljIHZvaWQgYmFja2VuZF9jaGFuZ2VkKHN0cnVj dCB4ZW5idXNfd2F0Y2ggKndhdGNoLAogCQlyZXR1cm47CiAJfQogCi0JYmUtPm1vZGUgPSB4ZW5i dXNfcmVhZChYQlRfTklMLCBkZXYtPm5vZGVuYW1lLCAibW9kZSIsIE5VTEwpOworCWJlLT5tb2Rl ID0geGVuYnVzX3JlYWQoZGV2LT54aCwgWEJUX05JTCwgZGV2LT5ub2RlbmFtZSwgIm1vZGUiLCBO VUxMKTsKIAlpZiAoSVNfRVJSKGJlLT5tb2RlKSkgewogCQllcnIgPSBQVFJfRVJSKGJlLT5tb2Rl KTsKIAkJYmUtPm1vZGUgPSBOVUxMOwpAQCAtNzE1LDcgKzcxNiw3IEBAIHN0YXRpYyB2b2lkIGJh Y2tlbmRfY2hhbmdlZChzdHJ1Y3QgeGVuYnVzX3dhdGNoICp3YXRjaCwKIAkJcmV0dXJuOwogCX0K IAotCWRldmljZV90eXBlID0geGVuYnVzX3JlYWQoWEJUX05JTCwgZGV2LT5vdGhlcmVuZCwgImRl dmljZS10eXBlIiwgTlVMTCk7CisJZGV2aWNlX3R5cGUgPSB4ZW5idXNfcmVhZChkZXYtPnhoLCBY QlRfTklMLCBkZXYtPm90aGVyZW5kLCAiZGV2aWNlLXR5cGUiLCBOVUxMKTsKIAlpZiAoIUlTX0VS UihkZXZpY2VfdHlwZSkpIHsKIAkJY2Ryb20gPSBzdHJjbXAoZGV2aWNlX3R5cGUsICJjZHJvbSIp ID09IDA7CiAJCWtmcmVlKGRldmljZV90eXBlKTsKQEAgLTg0OSw3ICs4NTAsNyBAQCBzdGF0aWMg dm9pZCBjb25uZWN0KHN0cnVjdCBiYWNrZW5kX2luZm8gKmJlKQogCiAJLyogU3VwcGx5IHRoZSBp bmZvcm1hdGlvbiBhYm91dCB0aGUgZGV2aWNlIHRoZSBmcm9udGVuZCBuZWVkcyAqLwogYWdhaW46 Ci0JZXJyID0geGVuYnVzX3RyYW5zYWN0aW9uX3N0YXJ0KCZ4YnQpOworCWVyciA9IHhlbmJ1c190 cmFuc2FjdGlvbl9zdGFydChkZXYtPnhoLCAmeGJ0KTsKIAlpZiAoZXJyKSB7CiAJCXhlbmJ1c19k ZXZfZmF0YWwoZGV2LCBlcnIsICJzdGFydGluZyB0cmFuc2FjdGlvbiIpOwogCQlyZXR1cm47CkBA IC04NjIsMTQgKzg2MywxNCBAQCBzdGF0aWMgdm9pZCBjb25uZWN0KHN0cnVjdCBiYWNrZW5kX2lu Zm8gKmJlKQogCiAJeGVuX2Jsa2JrX2JhcnJpZXIoeGJ0LCBiZSwgYmUtPmJsa2lmLT52YmQuZmx1 c2hfc3VwcG9ydCk7CiAKLQllcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFtZSwg ImZlYXR1cmUtcGVyc2lzdGVudCIsICIldSIsIDEpOworCWVyciA9IHhlbmJ1c19wcmludGYoZGV2 LT54aCwgeGJ0LCBkZXYtPm5vZGVuYW1lLCAiZmVhdHVyZS1wZXJzaXN0ZW50IiwgIiV1IiwgMSk7 CiAJaWYgKGVycikgewogCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLCAid3JpdGluZyAlcy9m ZWF0dXJlLXBlcnNpc3RlbnQiLAogCQkJCSBkZXYtPm5vZGVuYW1lKTsKIAkJZ290byBhYm9ydDsK IAl9CiAKLQllcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFtZSwgInNlY3RvcnMi LCAiJWxsdSIsCisJZXJyID0geGVuYnVzX3ByaW50ZihkZXYtPnhoLCB4YnQsIGRldi0+bm9kZW5h bWUsICJzZWN0b3JzIiwgIiVsbHUiLAogCQkJICAgICh1bnNpZ25lZCBsb25nIGxvbmcpdmJkX3N6 KCZiZS0+YmxraWYtPnZiZCkpOwogCWlmIChlcnIpIHsKIAkJeGVuYnVzX2Rldl9mYXRhbChkZXYs IGVyciwgIndyaXRpbmcgJXMvc2VjdG9ycyIsCkBAIC04NzgsNyArODc5LDcgQEAgc3RhdGljIHZv aWQgY29ubmVjdChzdHJ1Y3QgYmFja2VuZF9pbmZvICpiZSkKIAl9CiAKIAkvKiBGSVhNRTogdXNl IGEgdHlwZW5hbWUgaW5zdGVhZCAqLwotCWVyciA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5v ZGVuYW1lLCAiaW5mbyIsICIldSIsCisJZXJyID0geGVuYnVzX3ByaW50ZihkZXYtPnhoLCB4YnQs IGRldi0+bm9kZW5hbWUsICJpbmZvIiwgIiV1IiwKIAkJCSAgICBiZS0+YmxraWYtPnZiZC50eXBl IHwKIAkJCSAgICAoYmUtPmJsa2lmLT52YmQucmVhZG9ubHkgPyBWRElTS19SRUFET05MWSA6IDAp KTsKIAlpZiAoZXJyKSB7CkBAIC04ODYsNyArODg3LDcgQEAgc3RhdGljIHZvaWQgY29ubmVjdChz dHJ1Y3QgYmFja2VuZF9pbmZvICpiZSkKIAkJCQkgZGV2LT5ub2RlbmFtZSk7CiAJCWdvdG8gYWJv cnQ7CiAJfQotCWVyciA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAic2VjdG9y LXNpemUiLCAiJWx1IiwKKwllcnIgPSB4ZW5idXNfcHJpbnRmKGRldi0+eGgsIHhidCwgZGV2LT5u b2RlbmFtZSwgInNlY3Rvci1zaXplIiwgIiVsdSIsCiAJCQkgICAgKHVuc2lnbmVkIGxvbmcpCiAJ CQkgICAgYmRldl9sb2dpY2FsX2Jsb2NrX3NpemUoYmUtPmJsa2lmLT52YmQuYmRldikpOwogCWlm IChlcnIpIHsKQEAgLTg5NCwxMyArODk1LDEzIEBAIHN0YXRpYyB2b2lkIGNvbm5lY3Qoc3RydWN0 IGJhY2tlbmRfaW5mbyAqYmUpCiAJCQkJIGRldi0+bm9kZW5hbWUpOwogCQlnb3RvIGFib3J0Owog CX0KLQllcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFtZSwgInBoeXNpY2FsLXNl Y3Rvci1zaXplIiwgIiV1IiwKKwllcnIgPSB4ZW5idXNfcHJpbnRmKGRldi0+eGgsIHhidCwgZGV2 LT5ub2RlbmFtZSwgInBoeXNpY2FsLXNlY3Rvci1zaXplIiwgIiV1IiwKIAkJCSAgICBiZGV2X3Bo eXNpY2FsX2Jsb2NrX3NpemUoYmUtPmJsa2lmLT52YmQuYmRldikpOwogCWlmIChlcnIpCiAJCXhl bmJ1c19kZXZfZXJyb3IoZGV2LCBlcnIsICJ3cml0aW5nICVzL3BoeXNpY2FsLXNlY3Rvci1zaXpl IiwKIAkJCQkgZGV2LT5ub2RlbmFtZSk7CiAKLQllcnIgPSB4ZW5idXNfdHJhbnNhY3Rpb25fZW5k KHhidCwgMCk7CisJZXJyID0geGVuYnVzX3RyYW5zYWN0aW9uX2VuZChkZXYtPnhoLCB4YnQsIDAp OwogCWlmIChlcnIgPT0gLUVBR0FJTikKIAkJZ290byBhZ2FpbjsKIAlpZiAoZXJyKQpAQCAtOTEz LDcgKzkxNCw3IEBAIHN0YXRpYyB2b2lkIGNvbm5lY3Qoc3RydWN0IGJhY2tlbmRfaW5mbyAqYmUp CiAKIAlyZXR1cm47CiAgYWJvcnQ6Ci0JeGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4YnQsIDEpOwor CXhlbmJ1c190cmFuc2FjdGlvbl9lbmQoZGV2LT54aCwgeGJ0LCAxKTsKIH0KIAogLyoKQEAgLTky OCw3ICs5MjksNyBAQCBzdGF0aWMgaW50IHJlYWRfcGVyX3JpbmdfcmVmcyhzdHJ1Y3QgeGVuX2Js a2lmX3JpbmcgKnJpbmcsIGNvbnN0IGNoYXIgKmRpcikKIAlzdHJ1Y3QgeGVuYnVzX2RldmljZSAq ZGV2ID0gYmxraWYtPmJlLT5kZXY7CiAJdW5zaWduZWQgaW50IHJpbmdfcGFnZV9vcmRlciwgbnJf Z3JlZnMsIGV2dGNobjsKIAotCWVyciA9IHhlbmJ1c19zY2FuZihYQlRfTklMLCBkaXIsICJldmVu dC1jaGFubmVsIiwgIiV1IiwKKwllcnIgPSB4ZW5idXNfc2NhbmYoZGV2LT54aCwgWEJUX05JTCwg ZGlyLCAiZXZlbnQtY2hhbm5lbCIsICIldSIsCiAJCQkgICZldnRjaG4pOwogCWlmIChlcnIgIT0g MSkgewogCQllcnIgPSAtRUlOVkFMOwpAQCAtOTM2LDEwICs5MzcsMTAgQEAgc3RhdGljIGludCBy ZWFkX3Blcl9yaW5nX3JlZnMoc3RydWN0IHhlbl9ibGtpZl9yaW5nICpyaW5nLCBjb25zdCBjaGFy ICpkaXIpCiAJCXJldHVybiBlcnI7CiAJfQogCi0JZXJyID0geGVuYnVzX3NjYW5mKFhCVF9OSUws IGRldi0+b3RoZXJlbmQsICJyaW5nLXBhZ2Utb3JkZXIiLCAiJXUiLAorCWVyciA9IHhlbmJ1c19z Y2FuZihkZXYtPnhoLCBYQlRfTklMLCBkZXYtPm90aGVyZW5kLCAicmluZy1wYWdlLW9yZGVyIiwg IiV1IiwKIAkJCSAgJnJpbmdfcGFnZV9vcmRlcik7CiAJaWYgKGVyciAhPSAxKSB7Ci0JCWVyciA9 IHhlbmJ1c19zY2FuZihYQlRfTklMLCBkaXIsICJyaW5nLXJlZiIsICIldSIsICZyaW5nX3JlZlsw XSk7CisJCWVyciA9IHhlbmJ1c19zY2FuZihkZXYtPnhoLCBYQlRfTklMLCBkaXIsICJyaW5nLXJl ZiIsICIldSIsICZyaW5nX3JlZlswXSk7CiAJCWlmIChlcnIgIT0gMSkgewogCQkJZXJyID0gLUVJ TlZBTDsKIAkJCXhlbmJ1c19kZXZfZmF0YWwoZGV2LCBlcnIsICJyZWFkaW5nICVzL3JpbmctcmVm IiwgZGlyKTsKQEAgLTk2Miw3ICs5NjMsNyBAQCBzdGF0aWMgaW50IHJlYWRfcGVyX3JpbmdfcmVm cyhzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcgKnJpbmcsIGNvbnN0IGNoYXIgKmRpcikKIAkJCWNoYXIg cmluZ19yZWZfbmFtZVtSSU5HUkVGX05BTUVfTEVOXTsKIAogCQkJc25wcmludGYocmluZ19yZWZf bmFtZSwgUklOR1JFRl9OQU1FX0xFTiwgInJpbmctcmVmJXUiLCBpKTsKLQkJCWVyciA9IHhlbmJ1 c19zY2FuZihYQlRfTklMLCBkaXIsIHJpbmdfcmVmX25hbWUsCisJCQllcnIgPSB4ZW5idXNfc2Nh bmYoZGV2LT54aCwgWEJUX05JTCwgZGlyLCByaW5nX3JlZl9uYW1lLAogCQkJCQkgICAiJXUiLCAm cmluZ19yZWZbaV0pOwogCQkJaWYgKGVyciAhPSAxKSB7CiAJCQkJZXJyID0gLUVJTlZBTDsKQEAg LTEwMzQsNyArMTAzNSw3IEBAIHN0YXRpYyBpbnQgY29ubmVjdF9yaW5nKHN0cnVjdCBiYWNrZW5k X2luZm8gKmJlKQogCXByX2RlYnVnKCIlcyAlc1xuIiwgX19mdW5jX18sIGRldi0+b3RoZXJlbmQp OwogCiAJYmUtPmJsa2lmLT5ibGtfcHJvdG9jb2wgPSBCTEtJRl9QUk9UT0NPTF9ERUZBVUxUOwot CWVyciA9IHhlbmJ1c19zY2FuZihYQlRfTklMLCBkZXYtPm90aGVyZW5kLCAicHJvdG9jb2wiLAor CWVyciA9IHhlbmJ1c19zY2FuZihkZXYtPnhoLCBYQlRfTklMLCBkZXYtPm90aGVyZW5kLCAicHJv dG9jb2wiLAogCQkJICAgIiU2M3MiLCBwcm90b2NvbCk7CiAJaWYgKGVyciA8PSAwKQogCQlzdHJj cHkocHJvdG9jb2wsICJ1bnNwZWNpZmllZCwgYXNzdW1pbmcgZGVmYXVsdCIpOwpAQCAtMTA0OCw3 ICsxMDQ5LDcgQEAgc3RhdGljIGludCBjb25uZWN0X3Jpbmcoc3RydWN0IGJhY2tlbmRfaW5mbyAq YmUpCiAJCXhlbmJ1c19kZXZfZmF0YWwoZGV2LCBlcnIsICJ1bmtub3duIGZlIHByb3RvY29sICVz IiwgcHJvdG9jb2wpOwogCQlyZXR1cm4gLUVOT1NZUzsKIAl9Ci0JcGVyc19ncmFudHMgPSB4ZW5i dXNfcmVhZF91bnNpZ25lZChkZXYtPm90aGVyZW5kLCAiZmVhdHVyZS1wZXJzaXN0ZW50IiwKKwlw ZXJzX2dyYW50cyA9IHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGRldi0+eGgsIGRldi0+b3RoZXJlbmQs ICJmZWF0dXJlLXBlcnNpc3RlbnQiLAogCQkJCQkgICAwKTsKIAliZS0+YmxraWYtPnZiZC5mZWF0 dXJlX2dudF9wZXJzaXN0ZW50ID0gcGVyc19ncmFudHM7CiAJYmUtPmJsa2lmLT52YmQub3ZlcmZs b3dfbWF4X2dyYW50cyA9IDA7CkBAIC0xMDU2LDcgKzEwNTcsNyBAQCBzdGF0aWMgaW50IGNvbm5l Y3RfcmluZyhzdHJ1Y3QgYmFja2VuZF9pbmZvICpiZSkKIAkvKgogCSAqIFJlYWQgdGhlIG51bWJl ciBvZiBoYXJkd2FyZSBxdWV1ZXMgZnJvbSBmcm9udGVuZC4KIAkgKi8KLQlyZXF1ZXN0ZWRfbnVt X3F1ZXVlcyA9IHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGRldi0+b3RoZXJlbmQsCisJcmVxdWVzdGVk X251bV9xdWV1ZXMgPSB4ZW5idXNfcmVhZF91bnNpZ25lZChkZXYtPnhoLCBkZXYtPm90aGVyZW5k LAogCQkJCQkJICAgICJtdWx0aS1xdWV1ZS1udW0tcXVldWVzIiwKIAkJCQkJCSAgICAxKTsKIAlp ZiAocmVxdWVzdGVkX251bV9xdWV1ZXMgPiB4ZW5ibGtfbWF4X3F1ZXVlcwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYyBiL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250 LmMKaW5kZXggYTA2NzE2NDI0MDIzLi4zOTI5MzcwZDFmMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv YmxvY2sveGVuLWJsa2Zyb250LmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYwpA QCAtMzQxLDEwICszNDEsMTEgQEAgc3RhdGljIHN0cnVjdCBncmFudCAqZ2V0X2ZyZWVfZ3JhbnQo c3RydWN0IGJsa2Zyb250X3JpbmdfaW5mbyAqcmluZm8pCiAJcmV0dXJuIGdudF9saXN0X2VudHJ5 OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZ3JhbnRfZm9yZWlnbl9hY2Nlc3MoY29uc3Qgc3Ry dWN0IGdyYW50ICpnbnRfbGlzdF9lbnRyeSwKK3N0YXRpYyBpbmxpbmUgdm9pZCBncmFudF9mb3Jl aWduX2FjY2Vzcyh4ZW5ob3N0X3QgKnhoLAorCQkJCQljb25zdCBzdHJ1Y3QgZ3JhbnQgKmdudF9s aXN0X2VudHJ5LAogCQkJCQljb25zdCBzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbykKIHsKLQln bnR0YWJfcGFnZV9ncmFudF9mb3JlaWduX2FjY2Vzc19yZWZfb25lKGdudF9saXN0X2VudHJ5LT5n cmVmLAorCWdudHRhYl9wYWdlX2dyYW50X2ZvcmVpZ25fYWNjZXNzX3JlZl9vbmUoeGgsIGdudF9s aXN0X2VudHJ5LT5ncmVmLAogCQkJCQkJIGluZm8tPnhiZGV2LT5vdGhlcmVuZF9pZCwKIAkJCQkJ CSBnbnRfbGlzdF9lbnRyeS0+cGFnZSwKIAkJCQkJCSAwKTsKQEAgLTM2MSwxMyArMzYyLDEzIEBA IHN0YXRpYyBzdHJ1Y3QgZ3JhbnQgKmdldF9ncmFudChncmFudF9yZWZfdCAqZ3JlZl9oZWFkLAog CQlyZXR1cm4gZ250X2xpc3RfZW50cnk7CiAKIAkvKiBBc3NpZ24gYSBncmVmIHRvIHRoaXMgcGFn ZSAqLwotCWdudF9saXN0X2VudHJ5LT5ncmVmID0gZ250dGFiX2NsYWltX2dyYW50X3JlZmVyZW5j ZShncmVmX2hlYWQpOworCWdudF9saXN0X2VudHJ5LT5ncmVmID0gZ250dGFiX2NsYWltX2dyYW50 X3JlZmVyZW5jZShpbmZvLT54YmRldi0+eGgsIGdyZWZfaGVhZCk7CiAJQlVHX09OKGdudF9saXN0 X2VudHJ5LT5ncmVmID09IC1FTk9TUEMpOwogCWlmIChpbmZvLT5mZWF0dXJlX3BlcnNpc3RlbnQp Ci0JCWdyYW50X2ZvcmVpZ25fYWNjZXNzKGdudF9saXN0X2VudHJ5LCBpbmZvKTsKKwkJZ3JhbnRf Zm9yZWlnbl9hY2Nlc3MoaW5mby0+eGJkZXYtPnhoLCBnbnRfbGlzdF9lbnRyeSwgaW5mbyk7CiAJ ZWxzZSB7CiAJCS8qIEdyYW50IGFjY2VzcyB0byB0aGUgR0ZOIHBhc3NlZCBieSB0aGUgY2FsbGVy ICovCi0JCWdudHRhYl9ncmFudF9mb3JlaWduX2FjY2Vzc19yZWYoZ250X2xpc3RfZW50cnktPmdy ZWYsCisJCWdudHRhYl9ncmFudF9mb3JlaWduX2FjY2Vzc19yZWYoaW5mby0+eGJkZXYtPnhoLCBn bnRfbGlzdF9lbnRyeS0+Z3JlZiwKIAkJCQkJCWluZm8tPnhiZGV2LT5vdGhlcmVuZF9pZCwKIAkJ CQkJCWdmbiwgMCk7CiAJfQpAQCAtMzg1LDcgKzM4Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgZ3JhbnQg KmdldF9pbmRpcmVjdF9ncmFudChncmFudF9yZWZfdCAqZ3JlZl9oZWFkLAogCQlyZXR1cm4gZ250 X2xpc3RfZW50cnk7CiAKIAkvKiBBc3NpZ24gYSBncmVmIHRvIHRoaXMgcGFnZSAqLwotCWdudF9s aXN0X2VudHJ5LT5ncmVmID0gZ250dGFiX2NsYWltX2dyYW50X3JlZmVyZW5jZShncmVmX2hlYWQp OworCWdudF9saXN0X2VudHJ5LT5ncmVmID0gZ250dGFiX2NsYWltX2dyYW50X3JlZmVyZW5jZShp bmZvLT54YmRldi0+eGgsIGdyZWZfaGVhZCk7CiAJQlVHX09OKGdudF9saXN0X2VudHJ5LT5ncmVm ID09IC1FTk9TUEMpOwogCWlmICghaW5mby0+ZmVhdHVyZV9wZXJzaXN0ZW50KSB7CiAJCXN0cnVj dCBwYWdlICppbmRpcmVjdF9wYWdlOwpAQCAtMzk3LDcgKzM5OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qg Z3JhbnQgKmdldF9pbmRpcmVjdF9ncmFudChncmFudF9yZWZfdCAqZ3JlZl9oZWFkLAogCQlsaXN0 X2RlbCgmaW5kaXJlY3RfcGFnZS0+bHJ1KTsKIAkJZ250X2xpc3RfZW50cnktPnBhZ2UgPSBpbmRp cmVjdF9wYWdlOwogCX0KLQlncmFudF9mb3JlaWduX2FjY2VzcyhnbnRfbGlzdF9lbnRyeSwgaW5m byk7CisJZ3JhbnRfZm9yZWlnbl9hY2Nlc3MoaW5mby0+eGJkZXYtPnhoLCBnbnRfbGlzdF9lbnRy eSwgaW5mbyk7CiAKIAlyZXR1cm4gZ250X2xpc3RfZW50cnk7CiB9CkBAIC03MjMsMTAgKzcyNCwx MCBAQCBzdGF0aWMgaW50IGJsa2lmX3F1ZXVlX3J3X3JlcShzdHJ1Y3QgcmVxdWVzdCAqcmVxLCBz dHJ1Y3QgYmxrZnJvbnRfcmluZ19pbmZvICpyaQogCWlmIChyaW5mby0+cGVyc2lzdGVudF9nbnRz X2MgPCBtYXhfZ3JlZnMpIHsKIAkJbmV3X3BlcnNpc3RlbnRfZ250cyA9IHRydWU7CiAKLQkJaWYg KGdudHRhYl9hbGxvY19ncmFudF9yZWZlcmVuY2VzKAorCQlpZiAoZ250dGFiX2FsbG9jX2dyYW50 X3JlZmVyZW5jZXMoaW5mby0+eGJkZXYtPnhoLAogCQkgICAgbWF4X2dyZWZzIC0gcmluZm8tPnBl cnNpc3RlbnRfZ250c19jLAogCQkgICAgJnNldHVwLmdyZWZfaGVhZCkgPCAwKSB7Ci0JCQlnbnR0 YWJfcmVxdWVzdF9mcmVlX2NhbGxiYWNrKAorCQkJZ250dGFiX3JlcXVlc3RfZnJlZV9jYWxsYmFj ayhpbmZvLT54YmRldi0+eGgsCiAJCQkJJnJpbmZvLT5jYWxsYmFjaywKIAkJCQlibGtpZl9yZXN0 YXJ0X3F1ZXVlX2NhbGxiYWNrLAogCQkJCXJpbmZvLApAQCAtODM1LDcgKzgzNiw3IEBAIHN0YXRp YyBpbnQgYmxraWZfcXVldWVfcndfcmVxKHN0cnVjdCByZXF1ZXN0ICpyZXEsIHN0cnVjdCBibGtm cm9udF9yaW5nX2luZm8gKnJpCiAJCXJpbmZvLT5zaGFkb3dbZXh0cmFfaWRdLnJlcSA9ICpleHRy YV9yaW5nX3JlcTsKIAogCWlmIChuZXdfcGVyc2lzdGVudF9nbnRzKQotCQlnbnR0YWJfZnJlZV9n cmFudF9yZWZlcmVuY2VzKHNldHVwLmdyZWZfaGVhZCk7CisJCWdudHRhYl9mcmVlX2dyYW50X3Jl ZmVyZW5jZXMoaW5mby0+eGJkZXYtPnhoLCBzZXR1cC5ncmVmX2hlYWQpOwogCiAJcmV0dXJuIDA7 CiB9CkBAIC0xMTk1LDcgKzExOTYsNyBAQCBzdGF0aWMgdm9pZCB4bHZiZF9yZWxlYXNlX2dlbmRp c2soc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAJCXN0cnVjdCBibGtmcm9udF9yaW5nX2lu Zm8gKnJpbmZvID0gJmluZm8tPnJpbmZvW2ldOwogCiAJCS8qIE5vIG1vcmUgZ250dGFiIGNhbGxi YWNrIHdvcmsuICovCi0JCWdudHRhYl9jYW5jZWxfZnJlZV9jYWxsYmFjaygmcmluZm8tPmNhbGxi YWNrKTsKKwkJZ250dGFiX2NhbmNlbF9mcmVlX2NhbGxiYWNrKGluZm8tPnhiZGV2LT54aCwgJnJp bmZvLT5jYWxsYmFjayk7CiAKIAkJLyogRmx1c2ggZ250dGFiIGNhbGxiYWNrIHdvcmsuIE11c3Qg YmUgZG9uZSB3aXRoIG5vIGxvY2tzIGhlbGQuICovCiAJCWZsdXNoX3dvcmsoJnJpbmZvLT53b3Jr KTsKQEAgLTEyNjUsNyArMTI2Niw3IEBAIHN0YXRpYyB2b2lkIGJsa2lmX2ZyZWVfcmluZyhzdHJ1 Y3QgYmxrZnJvbnRfcmluZ19pbmZvICpyaW5mbykKIAkJCQkJICZyaW5mby0+Z3JhbnRzLCBub2Rl KSB7CiAJCQlsaXN0X2RlbCgmcGVyc2lzdGVudF9nbnQtPm5vZGUpOwogCQkJaWYgKHBlcnNpc3Rl bnRfZ250LT5ncmVmICE9IEdSQU5UX0lOVkFMSURfUkVGKSB7Ci0JCQkJZ250dGFiX2VuZF9mb3Jl aWduX2FjY2VzcyhwZXJzaXN0ZW50X2dudC0+Z3JlZiwKKwkJCQlnbnR0YWJfZW5kX2ZvcmVpZ25f YWNjZXNzKGluZm8tPnhiZGV2LT54aCwgcGVyc2lzdGVudF9nbnQtPmdyZWYsCiAJCQkJCQkJICAw LCAwVUwpOwogCQkJCXJpbmZvLT5wZXJzaXN0ZW50X2dudHNfYy0tOwogCQkJfQpAQCAtMTI4OSw3 ICsxMjkwLDcgQEAgc3RhdGljIHZvaWQgYmxraWZfZnJlZV9yaW5nKHN0cnVjdCBibGtmcm9udF9y aW5nX2luZm8gKnJpbmZvKQogCQkgICAgICAgcmluZm8tPnNoYWRvd1tpXS5yZXEudS5ydy5ucl9z ZWdtZW50czsKIAkJZm9yIChqID0gMDsgaiA8IHNlZ3M7IGorKykgewogCQkJcGVyc2lzdGVudF9n bnQgPSByaW5mby0+c2hhZG93W2ldLmdyYW50c191c2VkW2pdOwotCQkJZ250dGFiX2VuZF9mb3Jl aWduX2FjY2VzcyhwZXJzaXN0ZW50X2dudC0+Z3JlZiwgMCwgMFVMKTsKKwkJCWdudHRhYl9lbmRf Zm9yZWlnbl9hY2Nlc3MoaW5mby0+eGJkZXYtPnhoLCBwZXJzaXN0ZW50X2dudC0+Z3JlZiwgMCwg MFVMKTsKIAkJCWlmIChpbmZvLT5mZWF0dXJlX3BlcnNpc3RlbnQpCiAJCQkJX19mcmVlX3BhZ2Uo cGVyc2lzdGVudF9nbnQtPnBhZ2UpOwogCQkJa2ZyZWUocGVyc2lzdGVudF9nbnQpOwpAQCAtMTMw NCw3ICsxMzA1LDcgQEAgc3RhdGljIHZvaWQgYmxraWZfZnJlZV9yaW5nKHN0cnVjdCBibGtmcm9u dF9yaW5nX2luZm8gKnJpbmZvKQogCiAJCWZvciAoaiA9IDA7IGogPCBJTkRJUkVDVF9HUkVGUyhz ZWdzKTsgaisrKSB7CiAJCQlwZXJzaXN0ZW50X2dudCA9IHJpbmZvLT5zaGFkb3dbaV0uaW5kaXJl Y3RfZ3JhbnRzW2pdOwotCQkJZ250dGFiX2VuZF9mb3JlaWduX2FjY2VzcyhwZXJzaXN0ZW50X2du dC0+Z3JlZiwgMCwgMFVMKTsKKwkJCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3MoaW5mby0+eGJk ZXYtPnhoLCBwZXJzaXN0ZW50X2dudC0+Z3JlZiwgMCwgMFVMKTsKIAkJCV9fZnJlZV9wYWdlKHBl cnNpc3RlbnRfZ250LT5wYWdlKTsKIAkJCWtmcmVlKHBlcnNpc3RlbnRfZ250KTsKIAkJfQpAQCAt MTMxOSw3ICsxMzIwLDcgQEAgc3RhdGljIHZvaWQgYmxraWZfZnJlZV9yaW5nKHN0cnVjdCBibGtm cm9udF9yaW5nX2luZm8gKnJpbmZvKQogCX0KIAogCS8qIE5vIG1vcmUgZ250dGFiIGNhbGxiYWNr IHdvcmsuICovCi0JZ250dGFiX2NhbmNlbF9mcmVlX2NhbGxiYWNrKCZyaW5mby0+Y2FsbGJhY2sp OworCWdudHRhYl9jYW5jZWxfZnJlZV9jYWxsYmFjayhpbmZvLT54YmRldi0+eGgsICZyaW5mby0+ Y2FsbGJhY2spOwogCiAJLyogRmx1c2ggZ250dGFiIGNhbGxiYWNrIHdvcmsuIE11c3QgYmUgZG9u ZSB3aXRoIG5vIGxvY2tzIGhlbGQuICovCiAJZmx1c2hfd29yaygmcmluZm8tPndvcmspOwpAQCAt MTMyNyw3ICsxMzI4LDcgQEAgc3RhdGljIHZvaWQgYmxraWZfZnJlZV9yaW5nKHN0cnVjdCBibGtm cm9udF9yaW5nX2luZm8gKnJpbmZvKQogCS8qIEZyZWUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0 aCBvbGQgZGV2aWNlIGNoYW5uZWwuICovCiAJZm9yIChpID0gMDsgaSA8IGluZm8tPm5yX3Jpbmdf cGFnZXM7IGkrKykgewogCQlpZiAocmluZm8tPnJpbmdfcmVmW2ldICE9IEdSQU5UX0lOVkFMSURf UkVGKSB7Ci0JCQlnbnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzKHJpbmZvLT5yaW5nX3JlZltpXSwg MCwgMCk7CisJCQlnbnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzKGluZm8tPnhiZGV2LT54aCwgcmlu Zm8tPnJpbmdfcmVmW2ldLCAwLCAwKTsKIAkJCXJpbmZvLT5yaW5nX3JlZltpXSA9IEdSQU5UX0lO VkFMSURfUkVGOwogCQl9CiAJfQpAQCAtMTQ5MSw3ICsxNDkyLDcgQEAgc3RhdGljIGJvb2wgYmxr aWZfY29tcGxldGlvbih1bnNpZ25lZCBsb25nICppZCwKIAl9CiAJLyogQWRkIHRoZSBwZXJzaXN0 ZW50IGdyYW50IGludG8gdGhlIGxpc3Qgb2YgZnJlZSBncmFudHMgKi8KIAlmb3IgKGkgPSAwOyBp IDwgbnVtX2dyYW50OyBpKyspIHsKLQkJaWYgKGdudHRhYl9xdWVyeV9mb3JlaWduX2FjY2Vzcyhz LT5ncmFudHNfdXNlZFtpXS0+Z3JlZikpIHsKKwkJaWYgKGdudHRhYl9xdWVyeV9mb3JlaWduX2Fj Y2VzcyhpbmZvLT54YmRldi0+eGgsIHMtPmdyYW50c191c2VkW2ldLT5ncmVmKSkgewogCQkJLyoK IAkJCSAqIElmIHRoZSBncmFudCBpcyBzdGlsbCBtYXBwZWQgYnkgdGhlIGJhY2tlbmQgKHRoZQog CQkJICogYmFja2VuZCBoYXMgY2hvc2VuIHRvIG1ha2UgdGhpcyBncmFudCBwZXJzaXN0ZW50KQpA QCAtMTUxMCwxNCArMTUxMSwxNCBAQCBzdGF0aWMgYm9vbCBibGtpZl9jb21wbGV0aW9uKHVuc2ln bmVkIGxvbmcgKmlkLAogCQkJICogc28gaXQgd2lsbCBub3QgYmUgcGlja2VkIGFnYWluIHVubGVz cyB3ZSBydW4gb3V0IG9mCiAJCQkgKiBwZXJzaXN0ZW50IGdyYW50cy4KIAkJCSAqLwotCQkJZ250 dGFiX2VuZF9mb3JlaWduX2FjY2VzcyhzLT5ncmFudHNfdXNlZFtpXS0+Z3JlZiwgMCwgMFVMKTsK KwkJCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3MoaW5mby0+eGJkZXYtPnhoLCBzLT5ncmFudHNf dXNlZFtpXS0+Z3JlZiwgMCwgMFVMKTsKIAkJCXMtPmdyYW50c191c2VkW2ldLT5ncmVmID0gR1JB TlRfSU5WQUxJRF9SRUY7CiAJCQlsaXN0X2FkZF90YWlsKCZzLT5ncmFudHNfdXNlZFtpXS0+bm9k ZSwgJnJpbmZvLT5ncmFudHMpOwogCQl9CiAJfQogCWlmIChzLT5yZXEub3BlcmF0aW9uID09IEJM S0lGX09QX0lORElSRUNUKSB7CiAJCWZvciAoaSA9IDA7IGkgPCBJTkRJUkVDVF9HUkVGUyhudW1f Z3JhbnQpOyBpKyspIHsKLQkJCWlmIChnbnR0YWJfcXVlcnlfZm9yZWlnbl9hY2Nlc3Mocy0+aW5k aXJlY3RfZ3JhbnRzW2ldLT5ncmVmKSkgeworCQkJaWYgKGdudHRhYl9xdWVyeV9mb3JlaWduX2Fj Y2VzcyhpbmZvLT54YmRldi0+eGgsIHMtPmluZGlyZWN0X2dyYW50c1tpXS0+Z3JlZikpIHsKIAkJ CQlpZiAoIWluZm8tPmZlYXR1cmVfcGVyc2lzdGVudCkKIAkJCQkJcHJfYWxlcnRfcmF0ZWxpbWl0 ZWQoImJhY2tlZCBoYXMgbm90IHVubWFwcGVkIGdyYW50OiAldVxuIiwKIAkJCQkJCQkgICAgIHMt PmluZGlyZWN0X2dyYW50c1tpXS0+Z3JlZik7CkBAIC0xNTI2LDcgKzE1MjcsNyBAQCBzdGF0aWMg Ym9vbCBibGtpZl9jb21wbGV0aW9uKHVuc2lnbmVkIGxvbmcgKmlkLAogCQkJfSBlbHNlIHsKIAkJ CQlzdHJ1Y3QgcGFnZSAqaW5kaXJlY3RfcGFnZTsKIAotCQkJCWdudHRhYl9lbmRfZm9yZWlnbl9h Y2Nlc3Mocy0+aW5kaXJlY3RfZ3JhbnRzW2ldLT5ncmVmLCAwLCAwVUwpOworCQkJCWdudHRhYl9l bmRfZm9yZWlnbl9hY2Nlc3MoaW5mby0+eGJkZXYtPnhoLCBzLT5pbmRpcmVjdF9ncmFudHNbaV0t PmdyZWYsIDAsIDBVTCk7CiAJCQkJLyoKIAkJCQkgKiBBZGQgdGhlIHVzZWQgaW5kaXJlY3QgcGFn ZSBiYWNrIHRvIHRoZSBsaXN0IG9mCiAJCQkJICogYXZhaWxhYmxlIHBhZ2VzIGZvciBpbmRpcmVj dCBncmVmcy4KQEAgLTE3MjYsOSArMTcyNywxMCBAQCBzdGF0aWMgaW50IHdyaXRlX3Blcl9yaW5n X25vZGVzKHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24geGJ0LAogCXVuc2lnbmVkIGludCBpOwog CWNvbnN0IGNoYXIgKm1lc3NhZ2UgPSBOVUxMOwogCXN0cnVjdCBibGtmcm9udF9pbmZvICppbmZv ID0gcmluZm8tPmRldl9pbmZvOworCXhlbmhvc3RfdCAqeGggPSBpbmZvLT54YmRldi0+eGg7CiAK IAlpZiAoaW5mby0+bnJfcmluZ19wYWdlcyA9PSAxKSB7Ci0JCWVyciA9IHhlbmJ1c19wcmludGYo eGJ0LCBkaXIsICJyaW5nLXJlZiIsICIldSIsIHJpbmZvLT5yaW5nX3JlZlswXSk7CisJCWVyciA9 IHhlbmJ1c19wcmludGYoeGgsIHhidCwgZGlyLCAicmluZy1yZWYiLCAiJXUiLCByaW5mby0+cmlu Z19yZWZbMF0pOwogCQlpZiAoZXJyKSB7CiAJCQltZXNzYWdlID0gIndyaXRpbmcgcmluZy1yZWYi OwogCQkJZ290byBhYm9ydF90cmFuc2FjdGlvbjsKQEAgLTE3MzgsNyArMTc0MCw3IEBAIHN0YXRp YyBpbnQgd3JpdGVfcGVyX3Jpbmdfbm9kZXMoc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB4YnQs CiAJCQljaGFyIHJpbmdfcmVmX25hbWVbUklOR1JFRl9OQU1FX0xFTl07CiAKIAkJCXNucHJpbnRm KHJpbmdfcmVmX25hbWUsIFJJTkdSRUZfTkFNRV9MRU4sICJyaW5nLXJlZiV1IiwgaSk7Ci0JCQll cnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGlyLCByaW5nX3JlZl9uYW1lLAorCQkJZXJyID0geGVu YnVzX3ByaW50Zih4aCwgeGJ0LCBkaXIsIHJpbmdfcmVmX25hbWUsCiAJCQkJCSAgICAiJXUiLCBy aW5mby0+cmluZ19yZWZbaV0pOwogCQkJaWYgKGVycikgewogCQkJCW1lc3NhZ2UgPSAid3JpdGlu ZyByaW5nLXJlZiI7CkBAIC0xNzQ3LDcgKzE3NDksNyBAQCBzdGF0aWMgaW50IHdyaXRlX3Blcl9y aW5nX25vZGVzKHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24geGJ0LAogCQl9CiAJfQogCi0JZXJy ID0geGVuYnVzX3ByaW50Zih4YnQsIGRpciwgImV2ZW50LWNoYW5uZWwiLCAiJXUiLCByaW5mby0+ ZXZ0Y2huKTsKKwllcnIgPSB4ZW5idXNfcHJpbnRmKHhoLCB4YnQsIGRpciwgImV2ZW50LWNoYW5u ZWwiLCAiJXUiLCByaW5mby0+ZXZ0Y2huKTsKIAlpZiAoZXJyKSB7CiAJCW1lc3NhZ2UgPSAid3Jp dGluZyBldmVudC1jaGFubmVsIjsKIAkJZ290byBhYm9ydF90cmFuc2FjdGlvbjsKQEAgLTE3NTYs NyArMTc1OCw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfcGVyX3Jpbmdfbm9kZXMoc3RydWN0IHhlbmJ1 c190cmFuc2FjdGlvbiB4YnQsCiAJcmV0dXJuIDA7CiAKIGFib3J0X3RyYW5zYWN0aW9uOgotCXhl bmJ1c190cmFuc2FjdGlvbl9lbmQoeGJ0LCAxKTsKKwl4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHho LCB4YnQsIDEpOwogCWlmIChtZXNzYWdlKQogCQl4ZW5idXNfZGV2X2ZhdGFsKGluZm8tPnhiZGV2 LCBlcnIsICIlcyIsIG1lc3NhZ2UpOwogCkBAIC0xNzgyLDcgKzE3ODQsNyBAQCBzdGF0aWMgaW50 IHRhbGtfdG9fYmxrYmFjayhzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAogCWlmICghaW5mbykK IAkJcmV0dXJuIC1FTk9ERVY7CiAKLQltYXhfcGFnZV9vcmRlciA9IHhlbmJ1c19yZWFkX3Vuc2ln bmVkKGluZm8tPnhiZGV2LT5vdGhlcmVuZCwKKwltYXhfcGFnZV9vcmRlciA9IHhlbmJ1c19yZWFk X3Vuc2lnbmVkKGRldi0+eGgsIGluZm8tPnhiZGV2LT5vdGhlcmVuZCwKIAkJCQkJICAgICAgIm1h eC1yaW5nLXBhZ2Utb3JkZXIiLCAwKTsKIAlyaW5nX3BhZ2Vfb3JkZXIgPSBtaW4oeGVuX2Jsa2lm X21heF9yaW5nX29yZGVyLCBtYXhfcGFnZV9vcmRlcik7CiAJaW5mby0+bnJfcmluZ19wYWdlcyA9 IDEgPDwgcmluZ19wYWdlX29yZGVyOwpAQCAtMTgwMSwxNCArMTgwMywxNCBAQCBzdGF0aWMgaW50 IHRhbGtfdG9fYmxrYmFjayhzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAogCX0KIAogYWdhaW46 Ci0JZXJyID0geGVuYnVzX3RyYW5zYWN0aW9uX3N0YXJ0KCZ4YnQpOworCWVyciA9IHhlbmJ1c190 cmFuc2FjdGlvbl9zdGFydChkZXYtPnhoLCAmeGJ0KTsKIAlpZiAoZXJyKSB7CiAJCXhlbmJ1c19k ZXZfZmF0YWwoZGV2LCBlcnIsICJzdGFydGluZyB0cmFuc2FjdGlvbiIpOwogCQlnb3RvIGRlc3Ry b3lfYmxrcmluZzsKIAl9CiAKIAlpZiAoaW5mby0+bnJfcmluZ19wYWdlcyA+IDEpIHsKLQkJZXJy ID0geGVuYnVzX3ByaW50Zih4YnQsIGRldi0+bm9kZW5hbWUsICJyaW5nLXBhZ2Utb3JkZXIiLCAi JXUiLAorCQllcnIgPSB4ZW5idXNfcHJpbnRmKGRldi0+eGgsIHhidCwgZGV2LT5ub2RlbmFtZSwg InJpbmctcGFnZS1vcmRlciIsICIldSIsCiAJCQkJICAgIHJpbmdfcGFnZV9vcmRlcik7CiAJCWlm IChlcnIpIHsKIAkJCW1lc3NhZ2UgPSAid3JpdGluZyByaW5nLXBhZ2Utb3JkZXIiOwpAQCAtMTgy NSw3ICsxODI3LDcgQEAgc3RhdGljIGludCB0YWxrX3RvX2Jsa2JhY2soc3RydWN0IHhlbmJ1c19k ZXZpY2UgKmRldiwKIAkJY2hhciAqcGF0aDsKIAkJc2l6ZV90IHBhdGhzaXplOwogCi0JCWVyciA9 IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAibXVsdGktcXVldWUtbnVtLXF1ZXVl cyIsICIldSIsCisJCWVyciA9IHhlbmJ1c19wcmludGYoZGV2LT54aCwgeGJ0LCBkZXYtPm5vZGVu YW1lLCAibXVsdGktcXVldWUtbnVtLXF1ZXVlcyIsICIldSIsCiAJCQkJICAgIGluZm8tPm5yX3Jp bmdzKTsKIAkJaWYgKGVycikgewogCQkJbWVzc2FnZSA9ICJ3cml0aW5nIG11bHRpLXF1ZXVlLW51 bS1xdWV1ZXMiOwpAQCAtMTg1MSwxOSArMTg1MywxOSBAQCBzdGF0aWMgaW50IHRhbGtfdG9fYmxr YmFjayhzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAogCQl9CiAJCWtmcmVlKHBhdGgpOwogCX0K LQllcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFtZSwgInByb3RvY29sIiwgIiVz IiwKKwllcnIgPSB4ZW5idXNfcHJpbnRmKGRldi0+eGgsIHhidCwgZGV2LT5ub2RlbmFtZSwgInBy b3RvY29sIiwgIiVzIiwKIAkJCSAgICBYRU5fSU9fUFJPVE9fQUJJX05BVElWRSk7CiAJaWYgKGVy cikgewogCQltZXNzYWdlID0gIndyaXRpbmcgcHJvdG9jb2wiOwogCQlnb3RvIGFib3J0X3RyYW5z YWN0aW9uOwogCX0KLQllcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFtZSwKKwll cnIgPSB4ZW5idXNfcHJpbnRmKGRldi0+eGgsIHhidCwgZGV2LT5ub2RlbmFtZSwKIAkJCSAgICAi ZmVhdHVyZS1wZXJzaXN0ZW50IiwgIiV1IiwgMSk7CiAJaWYgKGVycikKIAkJZGV2X3dhcm4oJmRl di0+ZGV2LAogCQkJICJ3cml0aW5nIHBlcnNpc3RlbnQgZ3JhbnRzIGZlYXR1cmUgdG8geGVuYnVz Iik7CiAKLQllcnIgPSB4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhidCwgMCk7CisJZXJyID0geGVu YnVzX3RyYW5zYWN0aW9uX2VuZChkZXYtPnhoLCB4YnQsIDApOwogCWlmIChlcnIpIHsKIAkJaWYg KGVyciA9PSAtRUFHQUlOKQogCQkJZ290byBhZ2FpbjsKQEAgLTE4ODQsNyArMTg4Niw3IEBAIHN0 YXRpYyBpbnQgdGFsa190b19ibGtiYWNrKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCiAJcmV0 dXJuIDA7CiAKICBhYm9ydF90cmFuc2FjdGlvbjoKLQl4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhi dCwgMSk7CisJeGVuYnVzX3RyYW5zYWN0aW9uX2VuZChkZXYtPnhoLCB4YnQsIDEpOwogCWlmICht ZXNzYWdlKQogCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLCAiJXMiLCBtZXNzYWdlKTsKICBk ZXN0cm95X2Jsa3Jpbmc6CkBAIC0xOTA3LDcgKzE5MDksNyBAQCBzdGF0aWMgaW50IG5lZ290aWF0 ZV9tcShzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbykKIAlCVUdfT04oaW5mby0+bnJfcmluZ3Mp OwogCiAJLyogQ2hlY2sgaWYgYmFja2VuZCBzdXBwb3J0cyBtdWx0aXBsZSBxdWV1ZXMuICovCi0J YmFja2VuZF9tYXhfcXVldWVzID0geGVuYnVzX3JlYWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm90 aGVyZW5kLAorCWJhY2tlbmRfbWF4X3F1ZXVlcyA9IHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGluZm8t PnhiZGV2LT54aCwgaW5mby0+eGJkZXYtPm90aGVyZW5kLAogCQkJCQkJICAibXVsdGktcXVldWUt bWF4LXF1ZXVlcyIsIDEpOwogCWluZm8tPm5yX3JpbmdzID0gbWluKGJhY2tlbmRfbWF4X3F1ZXVl cywgeGVuX2Jsa2lmX21heF9xdWV1ZXMpOwogCS8qIFdlIG5lZWQgYXQgbGVhc3Qgb25lIHJpbmcu ICovCkBAIC0xOTQ4LDExICsxOTUwLDExIEBAIHN0YXRpYyBpbnQgYmxrZnJvbnRfcHJvYmUoc3Ry dWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKIAlzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbzsKIAog CS8qIEZJWE1FOiBVc2UgZHluYW1pYyBkZXZpY2UgaWQgaWYgdGhpcyBpcyBub3Qgc2V0LiAqLwot CWVyciA9IHhlbmJ1c19zY2FuZihYQlRfTklMLCBkZXYtPm5vZGVuYW1lLAorCWVyciA9IHhlbmJ1 c19zY2FuZihkZXYtPnhoLCBYQlRfTklMLCBkZXYtPm5vZGVuYW1lLAogCQkJICAgInZpcnR1YWwt ZGV2aWNlIiwgIiVpIiwgJnZkZXZpY2UpOwogCWlmIChlcnIgIT0gMSkgewogCQkvKiBnbyBsb29r aW5nIGluIHRoZSBleHRlbmRlZCBhcmVhIGluc3RlYWQgKi8KLQkJZXJyID0geGVuYnVzX3NjYW5m KFhCVF9OSUwsIGRldi0+bm9kZW5hbWUsICJ2aXJ0dWFsLWRldmljZS1leHQiLAorCQllcnIgPSB4 ZW5idXNfc2NhbmYoZGV2LT54aCwgWEJUX05JTCwgZGV2LT5ub2RlbmFtZSwgInZpcnR1YWwtZGV2 aWNlLWV4dCIsCiAJCQkJICAgIiVpIiwgJnZkZXZpY2UpOwogCQlpZiAoZXJyICE9IDEpIHsKIAkJ CXhlbmJ1c19kZXZfZmF0YWwoZGV2LCBlcnIsICJyZWFkaW5nIHZpcnR1YWwtZGV2aWNlIik7CkBA IC0xOTgwLDcgKzE5ODIsNyBAQCBzdGF0aWMgaW50IGJsa2Zyb250X3Byb2JlKHN0cnVjdCB4ZW5i dXNfZGV2aWNlICpkZXYsCiAJCQl9CiAJCX0KIAkJLyogZG8gbm90IGNyZWF0ZSBhIFBWIGNkcm9t IGRldmljZSBpZiB3ZSBhcmUgYW4gSFZNIGd1ZXN0ICovCi0JCXR5cGUgPSB4ZW5idXNfcmVhZChY QlRfTklMLCBkZXYtPm5vZGVuYW1lLCAiZGV2aWNlLXR5cGUiLCAmbGVuKTsKKwkJdHlwZSA9IHhl bmJ1c19yZWFkKGRldi0+eGgsIFhCVF9OSUwsIGRldi0+bm9kZW5hbWUsICJkZXZpY2UtdHlwZSIs ICZsZW4pOwogCQlpZiAoSVNfRVJSKHR5cGUpKQogCQkJcmV0dXJuIC1FTk9ERVY7CiAJCWlmIChz dHJuY21wKHR5cGUsICJjZHJvbSIsIDUpID09IDApIHsKQEAgLTIxNzMsNyArMjE3NSw3IEBAIHN0 YXRpYyB2b2lkIGJsa2Zyb250X3NldHVwX2Rpc2NhcmQoc3RydWN0IGJsa2Zyb250X2luZm8gKmlu Zm8pCiAJdW5zaWduZWQgaW50IGRpc2NhcmRfYWxpZ25tZW50OwogCiAJaW5mby0+ZmVhdHVyZV9k aXNjYXJkID0gMTsKLQllcnIgPSB4ZW5idXNfZ2F0aGVyKFhCVF9OSUwsIGluZm8tPnhiZGV2LT5v dGhlcmVuZCwKKwllcnIgPSB4ZW5idXNfZ2F0aGVyKGluZm8tPnhiZGV2LT54aCwgWEJUX05JTCwg aW5mby0+eGJkZXYtPm90aGVyZW5kLAogCQkiZGlzY2FyZC1ncmFudWxhcml0eSIsICIldSIsICZk aXNjYXJkX2dyYW51bGFyaXR5LAogCQkiZGlzY2FyZC1hbGlnbm1lbnQiLCAiJXUiLCAmZGlzY2Fy ZF9hbGlnbm1lbnQsCiAJCU5VTEwpOwpAQCAtMjE4Miw3ICsyMTg0LDcgQEAgc3RhdGljIHZvaWQg YmxrZnJvbnRfc2V0dXBfZGlzY2FyZChzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbykKIAkJaW5m by0+ZGlzY2FyZF9hbGlnbm1lbnQgPSBkaXNjYXJkX2FsaWdubWVudDsKIAl9CiAJaW5mby0+ZmVh dHVyZV9zZWNkaXNjYXJkID0KLQkJISF4ZW5idXNfcmVhZF91bnNpZ25lZChpbmZvLT54YmRldi0+ b3RoZXJlbmQsICJkaXNjYXJkLXNlY3VyZSIsCisJCSEheGVuYnVzX3JlYWRfdW5zaWduZWQoaW5m by0+eGJkZXYtPnhoLCBpbmZvLT54YmRldi0+b3RoZXJlbmQsICJkaXNjYXJkLXNlY3VyZSIsCiAJ CQkJICAgICAgIDApOwogfQogCkBAIC0yMjc5LDYgKzIyODEsNyBAQCBzdGF0aWMgaW50IGJsa2Zy b250X3NldHVwX2luZGlyZWN0KHN0cnVjdCBibGtmcm9udF9yaW5nX2luZm8gKnJpbmZvKQogc3Rh dGljIHZvaWQgYmxrZnJvbnRfZ2F0aGVyX2JhY2tlbmRfZmVhdHVyZXMoc3RydWN0IGJsa2Zyb250 X2luZm8gKmluZm8pCiB7CiAJdW5zaWduZWQgaW50IGluZGlyZWN0X3NlZ21lbnRzOworCXhlbmhv c3RfdCAqeGggPSBpbmZvLT54YmRldi0+eGg7CiAKIAlpbmZvLT5mZWF0dXJlX2ZsdXNoID0gMDsK IAlpbmZvLT5mZWF0dXJlX2Z1YSA9IDA7CkBAIC0yMjkwLDcgKzIyOTMsOCBAQCBzdGF0aWMgdm9p ZCBibGtmcm9udF9nYXRoZXJfYmFja2VuZF9mZWF0dXJlcyhzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAq aW5mbykKIAkgKgogCSAqIElmIHRoZXJlIGFyZSBiYXJyaWVycywgdGhlbiB3ZSB1c2UgZmx1c2gu CiAJICovCi0JaWYgKHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGluZm8tPnhiZGV2LT5vdGhlcmVuZCwg ImZlYXR1cmUtYmFycmllciIsIDApKSB7CisJaWYgKHhlbmJ1c19yZWFkX3Vuc2lnbmVkKHhoLCBp bmZvLT54YmRldi0+b3RoZXJlbmQsCisJCQkJCSJmZWF0dXJlLWJhcnJpZXIiLCAwKSkgewogCQlp bmZvLT5mZWF0dXJlX2ZsdXNoID0gMTsKIAkJaW5mby0+ZmVhdHVyZV9mdWEgPSAxOwogCX0KQEAg LTIyOTksMjAgKzIzMDMsMjEgQEAgc3RhdGljIHZvaWQgYmxrZnJvbnRfZ2F0aGVyX2JhY2tlbmRf ZmVhdHVyZXMoc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAJICogQW5kIGlmIHRoZXJlIGlz ICJmZWF0dXJlLWZsdXNoLWNhY2hlIiB1c2UgdGhhdCBhYm92ZQogCSAqIGJhcnJpZXJzLgogCSAq LwotCWlmICh4ZW5idXNfcmVhZF91bnNpZ25lZChpbmZvLT54YmRldi0+b3RoZXJlbmQsICJmZWF0 dXJlLWZsdXNoLWNhY2hlIiwKLQkJCQkgMCkpIHsKKwlpZiAoeGVuYnVzX3JlYWRfdW5zaWduZWQo eGgsIGluZm8tPnhiZGV2LT5vdGhlcmVuZCwKKwkJCQkJImZlYXR1cmUtZmx1c2gtY2FjaGUiLCAw KSkgewogCQlpbmZvLT5mZWF0dXJlX2ZsdXNoID0gMTsKIAkJaW5mby0+ZmVhdHVyZV9mdWEgPSAw OwogCX0KIAotCWlmICh4ZW5idXNfcmVhZF91bnNpZ25lZChpbmZvLT54YmRldi0+b3RoZXJlbmQs ICJmZWF0dXJlLWRpc2NhcmQiLCAwKSkKKwlpZiAoeGVuYnVzX3JlYWRfdW5zaWduZWQoeGgsIGlu Zm8tPnhiZGV2LT5vdGhlcmVuZCwKKwkJCQkJImZlYXR1cmUtZGlzY2FyZCIsIDApKQogCQlibGtm cm9udF9zZXR1cF9kaXNjYXJkKGluZm8pOwogCiAJaW5mby0+ZmVhdHVyZV9wZXJzaXN0ZW50ID0K LQkJISF4ZW5idXNfcmVhZF91bnNpZ25lZChpbmZvLT54YmRldi0+b3RoZXJlbmQsCisJCSEheGVu YnVzX3JlYWRfdW5zaWduZWQoeGgsIGluZm8tPnhiZGV2LT5vdGhlcmVuZCwKIAkJCQkgICAgICAg ImZlYXR1cmUtcGVyc2lzdGVudCIsIDApOwogCi0JaW5kaXJlY3Rfc2VnbWVudHMgPSB4ZW5idXNf cmVhZF91bnNpZ25lZChpbmZvLT54YmRldi0+b3RoZXJlbmQsCisJaW5kaXJlY3Rfc2VnbWVudHMg PSB4ZW5idXNfcmVhZF91bnNpZ25lZCh4aCwgaW5mby0+eGJkZXYtPm90aGVyZW5kLAogCQkJCQki ZmVhdHVyZS1tYXgtaW5kaXJlY3Qtc2VnbWVudHMiLCAwKTsKIAlpZiAoaW5kaXJlY3Rfc2VnbWVu dHMgPiB4ZW5fYmxraWZfbWF4X3NlZ21lbnRzKQogCQlpbmRpcmVjdF9zZWdtZW50cyA9IHhlbl9i bGtpZl9tYXhfc2VnbWVudHM7CkBAIC0yMzQ2LDcgKzIzNTEsNyBAQCBzdGF0aWMgdm9pZCBibGtm cm9udF9jb25uZWN0KHN0cnVjdCBibGtmcm9udF9pbmZvICppbmZvKQogCQkgKiBQb3RlbnRpYWxs eSwgdGhlIGJhY2stZW5kIG1heSBiZSBzaWduYWxsaW5nCiAJCSAqIGEgY2FwYWNpdHkgY2hhbmdl OyB1cGRhdGUgdGhlIGNhcGFjaXR5LgogCQkgKi8KLQkJZXJyID0geGVuYnVzX3NjYW5mKFhCVF9O SUwsIGluZm8tPnhiZGV2LT5vdGhlcmVuZCwKKwkJZXJyID0geGVuYnVzX3NjYW5mKGluZm8tPnhi ZGV2LT54aCwgWEJUX05JTCwgaW5mby0+eGJkZXYtPm90aGVyZW5kLAogCQkJCSAgICJzZWN0b3Jz IiwgIiVMdSIsICZzZWN0b3JzKTsKIAkJaWYgKFhFTkJVU19FWElTVF9FUlIoZXJyKSkKIAkJCXJl dHVybjsKQEAgLTIzNzUsNyArMjM4MCw3IEBAIHN0YXRpYyB2b2lkIGJsa2Zyb250X2Nvbm5lY3Qo c3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAJZGV2X2RiZygmaW5mby0+eGJkZXYtPmRldiwg IiVzOiVzLlxuIiwKIAkJX19mdW5jX18sIGluZm8tPnhiZGV2LT5vdGhlcmVuZCk7CiAKLQllcnIg PSB4ZW5idXNfZ2F0aGVyKFhCVF9OSUwsIGluZm8tPnhiZGV2LT5vdGhlcmVuZCwKKwllcnIgPSB4 ZW5idXNfZ2F0aGVyKGluZm8tPnhiZGV2LT54aCwgWEJUX05JTCwgaW5mby0+eGJkZXYtPm90aGVy ZW5kLAogCQkJICAgICJzZWN0b3JzIiwgIiVsbHUiLCAmc2VjdG9ycywKIAkJCSAgICAiaW5mbyIs ICIldSIsICZiaW5mbywKIAkJCSAgICAic2VjdG9yLXNpemUiLCAiJWx1IiwgJnNlY3Rvcl9zaXpl LApAQCAtMjM5Miw3ICsyMzk3LDcgQEAgc3RhdGljIHZvaWQgYmxrZnJvbnRfY29ubmVjdChzdHJ1 Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbykKIAkgKiBwcm92aWRlIHRoaXMuIEFzc3VtZSBwaHlzaWNh bCBzZWN0b3Igc2l6ZSB0byBiZSB0aGUgc2FtZSBhcwogCSAqIHNlY3Rvcl9zaXplIGluIHRoYXQg Y2FzZS4KIAkgKi8KLQlwaHlzaWNhbF9zZWN0b3Jfc2l6ZSA9IHhlbmJ1c19yZWFkX3Vuc2lnbmVk KGluZm8tPnhiZGV2LT5vdGhlcmVuZCwKKwlwaHlzaWNhbF9zZWN0b3Jfc2l6ZSA9IHhlbmJ1c19y ZWFkX3Vuc2lnbmVkKGluZm8tPnhiZGV2LT54aCwgaW5mby0+eGJkZXYtPm90aGVyZW5kLAogCQkJ CQkJICAgICJwaHlzaWNhbC1zZWN0b3Itc2l6ZSIsCiAJCQkJCQkgICAgc2VjdG9yX3NpemUpOwog CWJsa2Zyb250X2dhdGhlcl9iYWNrZW5kX2ZlYXR1cmVzKGluZm8pOwpAQCAtMjY2OCwxMSArMjY3 MywxMSBAQCBzdGF0aWMgdm9pZCBwdXJnZV9wZXJzaXN0ZW50X2dyYW50cyhzdHJ1Y3QgYmxrZnJv bnRfaW5mbyAqaW5mbykKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGdudF9saXN0X2VudHJ5 LCB0bXAsICZyaW5mby0+Z3JhbnRzLAogCQkJCQkgbm9kZSkgewogCQkJaWYgKGdudF9saXN0X2Vu dHJ5LT5ncmVmID09IEdSQU5UX0lOVkFMSURfUkVGIHx8Ci0JCQkgICAgZ250dGFiX3F1ZXJ5X2Zv cmVpZ25fYWNjZXNzKGdudF9saXN0X2VudHJ5LT5ncmVmKSkKKwkJCSAgICBnbnR0YWJfcXVlcnlf Zm9yZWlnbl9hY2Nlc3MoaW5mby0+eGJkZXYtPnhoLCBnbnRfbGlzdF9lbnRyeS0+Z3JlZikpCiAJ CQkJY29udGludWU7CiAKIAkJCWxpc3RfZGVsKCZnbnRfbGlzdF9lbnRyeS0+bm9kZSk7Ci0JCQln bnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzKGdudF9saXN0X2VudHJ5LT5ncmVmLCAwLCAwVUwpOwor CQkJZ250dGFiX2VuZF9mb3JlaWduX2FjY2VzcyhpbmZvLT54YmRldi0+eGgsIGdudF9saXN0X2Vu dHJ5LT5ncmVmLCAwLCAwVUwpOwogCQkJcmluZm8tPnBlcnNpc3RlbnRfZ250c19jLS07CiAJCQln bnRfbGlzdF9lbnRyeS0+Z3JlZiA9IEdSQU5UX0lOVkFMSURfUkVGOwogCQkJbGlzdF9hZGRfdGFp bCgmZ250X2xpc3RfZW50cnktPm5vZGUsICZyaW5mby0+Z3JhbnRzKTsKLS0gCjIuMjAuMQoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=