From mboxrd@z Thu Jan 1 00:00:00 1970 From: Qiang Yu Subject: [PATCH v4 1/3] drm/lima: use drm_gem_shmem_helpers Date: Thu, 10 Oct 2019 22:01:50 +0800 Message-ID: <20191010140152.17747-2-yuq825@gmail.com> References: <20191010140152.17747-1-yuq825@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191010140152.17747-1-yuq825@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: lima@lists.freedesktop.org, David Airlie , Qiang Yu , Sean Paul List-Id: dri-devel@lists.freedesktop.org RG8gbm90IG5lZWQgdG8gbWFpbnRhaW4gb3VyIG93biBzaG1lbSBtZW1vcnkgbWFuYWdlbWVudApj b2RlIGFzIGRybV9nZW1fc2htZW1faGVscGVycyBwcm92aWRlcyBpdC4gQW5kIHdlIGNhbgphbHNv IGJlbmlmaXQgZnJvbSB0aGUgd29yayBvZiBvdGhlcnMgd2l0aCBzaGFyZWQgY29kZS4KClRoaXMg aXMgYWxzbyBhIHByZXBhcmF0aW9uIGZvciBpbXBsZW1lbnRpbmcgYnVmZmVyIG1hZHYuCgpTaWdu ZWQtb2ZmLWJ5OiBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vbGltYS9LY29uZmlnICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9saW1hL01h a2VmaWxlICAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZHJ2LmMg ICAgICAgfCAgMjIgKy0tLQogZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uYyAgICAgICB8 IDE0MSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2xpbWEvbGlt YV9nZW0uaCAgICAgICB8ICAzMiArKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2Vt X3ByaW1lLmMgfCAgNDYgLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbV9w cmltZS5oIHwgIDEzIC0tLQogZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9tbXUuYyAgICAgICB8 ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX29iamVjdC5jICAgIHwgMTE5IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfb2JqZWN0LmggICAg fCAgMzUgLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jICAgICB8ICAg NiArLQogZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV92bS5jICAgICAgICB8ICA4NSArKysrKysr Ky0tLS0tLS0tCiAxMiBmaWxlcyBjaGFuZ2VkLCAxNDUgaW5zZXJ0aW9ucygrKSwgMzYwIGRlbGV0 aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2Vt X3ByaW1lLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dl bV9wcmltZS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9v YmplY3QuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfb2Jq ZWN0LmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnIGIvZHJpdmVy cy9ncHUvZHJtL2xpbWEvS2NvbmZpZwppbmRleCBiYjRkZGM2YmIwYTYuLjU3MWRjMzY5YTdlOSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvS2NvbmZpZworKysgYi9kcml2ZXJzL2dw dS9kcm0vbGltYS9LY29uZmlnCkBAIC05LDUgKzksNiBAQCBjb25maWcgRFJNX0xJTUEKICAgICAg ICBkZXBlbmRzIG9uIENPTU1PTl9DTEsKICAgICAgICBkZXBlbmRzIG9uIE9GCiAgICAgICAgc2Vs ZWN0IERSTV9TQ0hFRAorICAgICAgIHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUgogICAgICAg IGhlbHAKICAgICAgICAgIERSTSBkcml2ZXIgZm9yIEFSTSBNYWxpIDQwMC80NTAgR1BVcy4KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L2xpbWEvTWFrZWZpbGUKaW5kZXggMzhjYzcwMjgxYmE1Li5hODU0NDRiMGExZDQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9s aW1hL01ha2VmaWxlCkBAIC0xMyw5ICsxMyw3IEBAIGxpbWEteSA6PSBcCiAJbGltYV92bS5vIFwK IAlsaW1hX3NjaGVkLm8gXAogCWxpbWFfY3R4Lm8gXAotCWxpbWFfZ2VtX3ByaW1lLm8gXAogCWxp bWFfZGxidS5vIFwKLQlsaW1hX2JjYXN0Lm8gXAotCWxpbWFfb2JqZWN0Lm8KKwlsaW1hX2JjYXN0 Lm8KIAogb2JqLSQoQ09ORklHX0RSTV9MSU1BKSArPSBsaW1hLm8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9saW1hL2xpbWFfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2Ry di5jCmluZGV4IDc1ZWM3MDNkMjJlMC4uOTY1NDRjN2ZjMjE4IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbGltYS9saW1hX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFf ZHJ2LmMKQEAgLTEyLDcgKzEyLDYgQEAKIAogI2luY2x1ZGUgImxpbWFfZHJ2LmgiCiAjaW5jbHVk ZSAibGltYV9nZW0uaCIKLSNpbmNsdWRlICJsaW1hX2dlbV9wcmltZS5oIgogI2luY2x1ZGUgImxp bWFfdm0uaCIKIAogaW50IGxpbWFfc2NoZWRfdGltZW91dF9tczsKQEAgLTI0MCwxNiArMjM5LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBsaW1hX2RybV9kcml2ZXJfaW9j dGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoTElNQV9DVFhfRlJFRSwgbGltYV9pb2N0bF9j dHhfZnJlZSwgRFJNX1JFTkRFUl9BTExPVyksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGZp bGVfb3BlcmF0aW9ucyBsaW1hX2RybV9kcml2ZXJfZm9wcyA9IHsKLQkub3duZXIgICAgICAgICAg ICAgID0gVEhJU19NT0RVTEUsCi0JLm9wZW4gICAgICAgICAgICAgICA9IGRybV9vcGVuLAotCS5y ZWxlYXNlICAgICAgICAgICAgPSBkcm1fcmVsZWFzZSwKLQkudW5sb2NrZWRfaW9jdGwgICAgID0g ZHJtX2lvY3RsLAotI2lmZGVmIENPTkZJR19DT01QQVQKLQkuY29tcGF0X2lvY3RsICAgICAgID0g ZHJtX2NvbXBhdF9pb2N0bCwKLSNlbmRpZgotCS5tbWFwICAgICAgICAgICAgICAgPSBsaW1hX2dl bV9tbWFwLAotfTsKK0RFRklORV9EUk1fR0VNX1NITUVNX0ZPUFMobGltYV9kcm1fZHJpdmVyX2Zv cHMpOwogCiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgbGltYV9kcm1fZHJpdmVyID0gewogCS5k cml2ZXJfZmVhdHVyZXMgICAgPSBEUklWRVJfUkVOREVSIHwgRFJJVkVSX0dFTSB8IERSSVZFUl9T WU5DT0JKLApAQCAtMjU4LDEwICsyNDgsNiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgbGlt YV9kcm1fZHJpdmVyID0gewogCS5pb2N0bHMgICAgICAgICAgICAgPSBsaW1hX2RybV9kcml2ZXJf aW9jdGxzLAogCS5udW1faW9jdGxzICAgICAgICAgPSBBUlJBWV9TSVpFKGxpbWFfZHJtX2RyaXZl cl9pb2N0bHMpLAogCS5mb3BzICAgICAgICAgICAgICAgPSAmbGltYV9kcm1fZHJpdmVyX2ZvcHMs Ci0JLmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCA9IGxpbWFfZ2VtX2ZyZWVfb2JqZWN0LAotCS5n ZW1fb3Blbl9vYmplY3QgICAgPSBsaW1hX2dlbV9vYmplY3Rfb3BlbiwKLQkuZ2VtX2Nsb3NlX29i amVjdCAgID0gbGltYV9nZW1fb2JqZWN0X2Nsb3NlLAotCS5nZW1fdm1fb3BzICAgICAgICAgPSAm bGltYV9nZW1fdm1fb3BzLAogCS5uYW1lICAgICAgICAgICAgICAgPSAibGltYSIsCiAJLmRlc2Mg ICAgICAgICAgICAgICA9ICJsaW1hIERSTSIsCiAJLmRhdGUgICAgICAgICAgICAgICA9ICIyMDE5 MDIxNyIsCkBAIC0yNjksMTEgKzI1NSwxMSBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgbGlt YV9kcm1fZHJpdmVyID0gewogCS5taW5vciAgICAgICAgICAgICAgPSAwLAogCS5wYXRjaGxldmVs ICAgICAgICAgPSAwLAogCisJLmdlbV9jcmVhdGVfb2JqZWN0ICA9IGxpbWFfZ2VtX2NyZWF0ZV9v YmplY3QsCiAJLnByaW1lX2ZkX3RvX2hhbmRsZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxl LAotCS5nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gbGltYV9nZW1fcHJpbWVfaW1wb3J0X3Nn X3RhYmxlLAorCS5nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gZHJtX2dlbV9zaG1lbV9wcmlt ZV9pbXBvcnRfc2dfdGFibGUsCiAJLnByaW1lX2hhbmRsZV90b19mZCA9IGRybV9nZW1fcHJpbWVf aGFuZGxlX3RvX2ZkLAotCS5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlID0gbGltYV9nZW1fcHJpbWVf Z2V0X3NnX3RhYmxlLAotCS5nZW1fcHJpbWVfbW1hcCA9IGxpbWFfZ2VtX3ByaW1lX21tYXAsCisJ LmdlbV9wcmltZV9tbWFwID0gZHJtX2dlbV9wcmltZV9tbWFwLAogfTsKIAogc3RhdGljIGludCBs aW1hX3BkZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9s aW1hX2dlbS5jCmluZGV4IDRkYTIxMzUzYzNhMi4uNjA5NGI5ZTI3ZmE0IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1h L2xpbWFfZ2VtLmMKQEAgLTMsNyArMyw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9tbS5oPgogI2lu Y2x1ZGUgPGxpbnV4L3N5bmNfZmlsZS5oPgotI2luY2x1ZGUgPGxpbnV4L3Bmbl90Lmg+CisjaW5j bHVkZSA8bGludXgvcGFnZW1hcC5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+CiAjaW5j bHVkZSA8ZHJtL2RybV9zeW5jb2JqLmg+CkBAIC0xMyw0MCArMTMsNTUgQEAKIAogI2luY2x1ZGUg ImxpbWFfZHJ2LmgiCiAjaW5jbHVkZSAibGltYV9nZW0uaCIKLSNpbmNsdWRlICJsaW1hX2dlbV9w cmltZS5oIgogI2luY2x1ZGUgImxpbWFfdm0uaCIKLSNpbmNsdWRlICJsaW1hX29iamVjdC5oIgog CiBpbnQgbGltYV9nZW1fY3JlYXRlX2hhbmRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUsCiAJCQkgICB1MzIgc2l6ZSwgdTMyIGZsYWdzLCB1MzIgKmhhbmRs ZSkKIHsKIAlpbnQgZXJyOwotCXN0cnVjdCBsaW1hX2JvICpibzsKLQlzdHJ1Y3QgbGltYV9kZXZp Y2UgKmxkZXYgPSB0b19saW1hX2RldihkZXYpOworCWdmcF90IG1hc2s7CisJc3RydWN0IGRybV9n ZW1fc2htZW1fb2JqZWN0ICpzaG1lbTsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlz dHJ1Y3Qgc2dfdGFibGUgKnNndDsKKworCXNobWVtID0gZHJtX2dlbV9zaG1lbV9jcmVhdGUoZGV2 LCBzaXplKTsKKwlpZiAoSVNfRVJSKHNobWVtKSkKKwkJcmV0dXJuIFBUUl9FUlIoc2htZW0pOwog Ci0JYm8gPSBsaW1hX2JvX2NyZWF0ZShsZGV2LCBzaXplLCBmbGFncywgTlVMTCk7Ci0JaWYgKElT X0VSUihibykpCi0JCXJldHVybiBQVFJfRVJSKGJvKTsKKwlvYmogPSAmc2htZW0tPmJhc2U7CiAK LQllcnIgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZSwgJmJvLT5nZW0sIGhhbmRsZSk7CisJ LyogTWFsaSBVdGdhcmQgR1BVIGNhbiBvbmx5IHN1cHBvcnQgMzJiaXQgYWRkcmVzcyBzcGFjZSAq LworCW1hc2sgPSBtYXBwaW5nX2dmcF9tYXNrKG9iai0+ZmlscC0+Zl9tYXBwaW5nKTsKKwltYXNr ICY9IH5fX0dGUF9ISUdITUVNOworCW1hc2sgfD0gX19HRlBfRE1BMzI7CisJbWFwcGluZ19zZXRf Z2ZwX21hc2sob2JqLT5maWxwLT5mX21hcHBpbmcsIG1hc2spOworCisJc2d0ID0gZHJtX2dlbV9z aG1lbV9nZXRfcGFnZXNfc2d0KG9iaik7CisJaWYgKElTX0VSUihzZ3QpKSB7CisJCWVyciA9IFBU Ul9FUlIoc2d0KTsKKwkJZ290byBvdXQ7CisJfQogCisJZXJyID0gZHJtX2dlbV9oYW5kbGVfY3Jl YXRlKGZpbGUsIG9iaiwgaGFuZGxlKTsKKworb3V0OgogCS8qIGRyb3AgcmVmZXJlbmNlIGZyb20g YWxsb2NhdGUgLSBoYW5kbGUgaG9sZHMgaXQgbm93ICovCi0JZHJtX2dlbV9vYmplY3RfcHV0X3Vu bG9ja2VkKCZiby0+Z2VtKTsKKwlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKIAog CXJldHVybiBlcnI7CiB9CiAKLXZvaWQgbGltYV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopCitzdGF0aWMgdm9pZCBsaW1hX2dlbV9mcmVlX29iamVjdChzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgbGltYV9ibyAqYm8gPSB0b19saW1hX2Jv KG9iaik7CiAKIAlpZiAoIWxpc3RfZW1wdHkoJmJvLT52YSkpCiAJCWRldl9lcnIob2JqLT5kZXYt PmRldiwgImxpbWEgZ2VtIGZyZWUgYm8gc3RpbGwgaGFzIHZhXG4iKTsKIAotCWxpbWFfYm9fZGVz dHJveShibyk7CisJZHJtX2dlbV9zaG1lbV9mcmVlX29iamVjdChvYmopOwogfQogCi1pbnQgbGlt YV9nZW1fb2JqZWN0X29wZW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSkKK3N0YXRpYyBpbnQgbGltYV9nZW1fb2JqZWN0X29wZW4oc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgbGltYV9i byAqYm8gPSB0b19saW1hX2JvKG9iaik7CiAJc3RydWN0IGxpbWFfZHJtX3ByaXYgKnByaXYgPSB0 b19saW1hX2RybV9wcml2KGZpbGUpOwpAQCAtNTUsNyArNzAsNyBAQCBpbnQgbGltYV9nZW1fb2Jq ZWN0X29wZW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSkKIAlyZXR1cm4gbGltYV92bV9ib19hZGQodm0sIGJvLCB0cnVlKTsKIH0KIAotdm9pZCBsaW1h X2dlbV9vYmplY3RfY2xvc2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSkKK3N0YXRpYyB2b2lkIGxpbWFfZ2VtX29iamVjdF9jbG9zZShzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRybV9maWxlICpmaWxlKQogewogCXN0cnVjdCBsaW1h X2JvICpibyA9IHRvX2xpbWFfYm8ob2JqKTsKIAlzdHJ1Y3QgbGltYV9kcm1fcHJpdiAqcHJpdiA9 IHRvX2xpbWFfZHJtX3ByaXYoZmlsZSk7CkBAIC02NCwxMyArNzksNDEgQEAgdm9pZCBsaW1hX2dl bV9vYmplY3RfY2xvc2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkcm1fZmls ZSAqZmlsZSkKIAlsaW1hX3ZtX2JvX2RlbCh2bSwgYm8pOwogfQogCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzIGxpbWFfZ2VtX2Z1bmNzID0geworCS5mcmVlID0gbGlt YV9nZW1fZnJlZV9vYmplY3QsCisJLm9wZW4gPSBsaW1hX2dlbV9vYmplY3Rfb3BlbiwKKwkuY2xv c2UgPSBsaW1hX2dlbV9vYmplY3RfY2xvc2UsCisJLnByaW50X2luZm8gPSBkcm1fZ2VtX3NobWVt X3ByaW50X2luZm8sCisJLnBpbiA9IGRybV9nZW1fc2htZW1fcGluLAorCS51bnBpbiA9IGRybV9n ZW1fc2htZW1fdW5waW4sCisJLmdldF9zZ190YWJsZSA9IGRybV9nZW1fc2htZW1fZ2V0X3NnX3Rh YmxlLAorCS52bWFwID0gZHJtX2dlbV9zaG1lbV92bWFwLAorCS52dW5tYXAgPSBkcm1fZ2VtX3No bWVtX3Z1bm1hcCwKKwkudm1fb3BzID0gJmRybV9nZW1fc2htZW1fdm1fb3BzLAorfTsKKworc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpsaW1hX2dlbV9jcmVhdGVfb2JqZWN0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBsaW1hX2JvICpibzsKKworCWJvID0g a3phbGxvYyhzaXplb2YoKmJvKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFibykKKwkJcmV0dXJuIE5V TEw7CisKKwltdXRleF9pbml0KCZiby0+bG9jayk7CisJSU5JVF9MSVNUX0hFQUQoJmJvLT52YSk7 CisKKwliby0+YmFzZS5iYXNlLmZ1bmNzID0gJmxpbWFfZ2VtX2Z1bmNzOworCisJcmV0dXJuICZi by0+YmFzZS5iYXNlOworfQorCiBpbnQgbGltYV9nZW1fZ2V0X2luZm8oc3RydWN0IGRybV9maWxl ICpmaWxlLCB1MzIgaGFuZGxlLCB1MzIgKnZhLCB1NjQgKm9mZnNldCkKIHsKIAlzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgbGltYV9ibyAqYm87CiAJc3RydWN0IGxpbWFfZHJt X3ByaXYgKnByaXYgPSB0b19saW1hX2RybV9wcml2KGZpbGUpOwogCXN0cnVjdCBsaW1hX3ZtICp2 bSA9IHByaXYtPnZtOwotCWludCBlcnI7CiAKIAlvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAo ZmlsZSwgaGFuZGxlKTsKIAlpZiAoIW9iaikKQEAgLTgwLDUzICsxMjMsOSBAQCBpbnQgbGltYV9n ZW1fZ2V0X2luZm8oc3RydWN0IGRybV9maWxlICpmaWxlLCB1MzIgaGFuZGxlLCB1MzIgKnZhLCB1 NjQgKm9mZnNldCkKIAogCSp2YSA9IGxpbWFfdm1fZ2V0X3ZhKHZtLCBibyk7CiAKLQllcnIgPSBk cm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNldChvYmopOwotCWlmICghZXJyKQotCQkqb2Zmc2V0ID0g ZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKCZvYmotPnZtYV9ub2RlKTsKKwkqb2Zmc2V0ID0gZHJt X3ZtYV9ub2RlX29mZnNldF9hZGRyKCZvYmotPnZtYV9ub2RlKTsKIAogCWRybV9nZW1fb2JqZWN0 X3B1dF91bmxvY2tlZChvYmopOwotCXJldHVybiBlcnI7Ci19Ci0KLXN0YXRpYyB2bV9mYXVsdF90 IGxpbWFfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQotewotCXN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hID0gdm1mLT52bWE7Ci0Jc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSB2 bWEtPnZtX3ByaXZhdGVfZGF0YTsKLQlzdHJ1Y3QgbGltYV9ibyAqYm8gPSB0b19saW1hX2JvKG9i aik7Ci0JcGZuX3QgcGZuOwotCXBnb2ZmX3QgcGdvZmY7Ci0KLQkvKiBXZSBkb24ndCB1c2Ugdm1m LT5wZ29mZiBzaW5jZSB0aGF0IGhhcyB0aGUgZmFrZSBvZmZzZXQ6ICovCi0JcGdvZmYgPSAodm1m LT5hZGRyZXNzIC0gdm1hLT52bV9zdGFydCkgPj4gUEFHRV9TSElGVDsKLQlwZm4gPSBfX3Bmbl90 b19wZm5fdChwYWdlX3RvX3Bmbihiby0+cGFnZXNbcGdvZmZdKSwgUEZOX0RFVik7Ci0KLQlyZXR1 cm4gdm1mX2luc2VydF9taXhlZCh2bWEsIHZtZi0+YWRkcmVzcywgcGZuKTsKLX0KLQotY29uc3Qg c3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGxpbWFfZ2VtX3ZtX29wcyA9IHsKLQkuZmF1bHQg PSBsaW1hX2dlbV9mYXVsdCwKLQkub3BlbiA9IGRybV9nZW1fdm1fb3BlbiwKLQkuY2xvc2UgPSBk cm1fZ2VtX3ZtX2Nsb3NlLAotfTsKLQotdm9pZCBsaW1hX3NldF92bWFfZmxhZ3Moc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEpCi17Ci0JcGdwcm90X3QgcHJvdCA9IHZtX2dldF9wYWdlX3Byb3Qo dm1hLT52bV9mbGFncyk7Ci0KLQl2bWEtPnZtX2ZsYWdzIHw9IFZNX01JWEVETUFQOwotCXZtYS0+ dm1fZmxhZ3MgJj0gflZNX1BGTk1BUDsKLQl2bWEtPnZtX3BhZ2VfcHJvdCA9IHBncHJvdF93cml0 ZWNvbWJpbmUocHJvdCk7Ci19Ci0KLWludCBsaW1hX2dlbV9tbWFwKHN0cnVjdCBmaWxlICpmaWxw LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKLXsKLQlpbnQgcmV0OwotCi0JcmV0ID0gZHJt X2dlbV9tbWFwKGZpbHAsIHZtYSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWxpbWFf c2V0X3ZtYV9mbGFncyh2bWEpOwogCXJldHVybiAwOwogfQogCkBAIC0xMzYsNyArMTM1LDcgQEAg c3RhdGljIGludCBsaW1hX2dlbV9zeW5jX2JvKHN0cnVjdCBsaW1hX3NjaGVkX3Rhc2sgKnRhc2ss IHN0cnVjdCBsaW1hX2JvICpibywKIAlpbnQgZXJyID0gMDsKIAogCWlmICghd3JpdGUpIHsKLQkJ ZXJyID0gZG1hX3Jlc3ZfcmVzZXJ2ZV9zaGFyZWQoYm8tPmdlbS5yZXN2LCAxKTsKKwkJZXJyID0g ZG1hX3Jlc3ZfcmVzZXJ2ZV9zaGFyZWQobGltYV9ib19yZXN2KGJvKSwgMSk7CiAJCWlmIChlcnIp CiAJCQlyZXR1cm4gZXJyOwogCX0KQEAgLTE0NSw3ICsxNDQsNyBAQCBzdGF0aWMgaW50IGxpbWFf Z2VtX3N5bmNfYm8oc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzaywgc3RydWN0IGxpbWFfYm8g KmJvLAogCWlmIChleHBsaWNpdCkKIAkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gZHJtX2dlbV9mZW5j ZV9hcnJheV9hZGRfaW1wbGljaXQoJnRhc2stPmRlcHMsICZiby0+Z2VtLCB3cml0ZSk7CisJcmV0 dXJuIGRybV9nZW1fZmVuY2VfYXJyYXlfYWRkX2ltcGxpY2l0KCZ0YXNrLT5kZXBzLCAmYm8tPmJh c2UuYmFzZSwgd3JpdGUpOwogfQogCiBzdGF0aWMgaW50IGxpbWFfZ2VtX2xvY2tfYm9zKHN0cnVj dCBsaW1hX2JvICoqYm9zLCB1MzIgbnJfYm9zLApAQCAtMTYyLDcgKzE2MSw3IEBAIHN0YXRpYyBp bnQgbGltYV9nZW1fbG9ja19ib3Moc3RydWN0IGxpbWFfYm8gKipib3MsIHUzMiBucl9ib3MsCiAJ CQljb250aW51ZTsKIAkJfQogCi0JCXJldCA9IHd3X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgm Ym9zW2ldLT5nZW0ucmVzdi0+bG9jaywgY3R4KTsKKwkJcmV0ID0gd3dfbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZsaW1hX2JvX3Jlc3YoYm9zW2ldKS0+bG9jaywgY3R4KTsKIAkJaWYgKHJldCA8 IDApIHsKIAkJCWNvbnRlbmRlZCA9IGk7CiAJCQlnb3RvIGVycjsKQEAgLTE3NCwxNSArMTczLDE1 IEBAIHN0YXRpYyBpbnQgbGltYV9nZW1fbG9ja19ib3Moc3RydWN0IGxpbWFfYm8gKipib3MsIHUz MiBucl9ib3MsCiAKIGVycjoKIAlmb3IgKGktLTsgaSA+PSAwOyBpLS0pCi0JCXd3X211dGV4X3Vu bG9jaygmYm9zW2ldLT5nZW0ucmVzdi0+bG9jayk7CisJCXd3X211dGV4X3VubG9jaygmbGltYV9i b19yZXN2KGJvc1tpXSktPmxvY2spOwogCiAJaWYgKHNsb3dfbG9ja2VkID49IDApCi0JCXd3X211 dGV4X3VubG9jaygmYm9zW3Nsb3dfbG9ja2VkXS0+Z2VtLnJlc3YtPmxvY2spOworCQl3d19tdXRl eF91bmxvY2soJmxpbWFfYm9fcmVzdihib3Nbc2xvd19sb2NrZWRdKS0+bG9jayk7CiAKIAlpZiAo cmV0ID09IC1FREVBRExLKSB7CiAJCS8qIHdlIGxvc3Qgb3V0IGluIGEgc2Vxbm8gcmFjZSwgbG9j ayBhbmQgcmV0cnkuLiAqLwogCQlyZXQgPSB3d19tdXRleF9sb2NrX3Nsb3dfaW50ZXJydXB0aWJs ZSgKLQkJCSZib3NbY29udGVuZGVkXS0+Z2VtLnJlc3YtPmxvY2ssIGN0eCk7CisJCQkmbGltYV9i b19yZXN2KGJvc1tjb250ZW5kZWRdKS0+bG9jaywgY3R4KTsKIAkJaWYgKCFyZXQpIHsKIAkJCXNs b3dfbG9ja2VkID0gY29udGVuZGVkOwogCQkJZ290byByZXRyeTsKQEAgLTE5OSw3ICsxOTgsNyBA QCBzdGF0aWMgdm9pZCBsaW1hX2dlbV91bmxvY2tfYm9zKHN0cnVjdCBsaW1hX2JvICoqYm9zLCB1 MzIgbnJfYm9zLAogCWludCBpOwogCiAJZm9yIChpID0gMDsgaSA8IG5yX2JvczsgaSsrKQotCQl3 d19tdXRleF91bmxvY2soJmJvc1tpXS0+Z2VtLnJlc3YtPmxvY2spOworCQl3d19tdXRleF91bmxv Y2soJmxpbWFfYm9fcmVzdihib3NbaV0pLT5sb2NrKTsKIAl3d19hY3F1aXJlX2ZpbmkoY3R4KTsK IH0KIApAQCAtMjk2LDE1ICsyOTUsMTUgQEAgaW50IGxpbWFfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUsIHN0cnVjdCBsaW1hX3N1Ym1pdCAqc3VibWl0KQogCiAJZm9yIChpID0gMDsg aSA8IHN1Ym1pdC0+bnJfYm9zOyBpKyspIHsKIAkJaWYgKHN1Ym1pdC0+Ym9zW2ldLmZsYWdzICYg TElNQV9TVUJNSVRfQk9fV1JJVEUpCi0JCQlkbWFfcmVzdl9hZGRfZXhjbF9mZW5jZShib3NbaV0t PmdlbS5yZXN2LCBmZW5jZSk7CisJCQlkbWFfcmVzdl9hZGRfZXhjbF9mZW5jZShsaW1hX2JvX3Jl c3YoYm9zW2ldKSwgZmVuY2UpOwogCQllbHNlCi0JCQlkbWFfcmVzdl9hZGRfc2hhcmVkX2ZlbmNl KGJvc1tpXS0+Z2VtLnJlc3YsIGZlbmNlKTsKKwkJCWRtYV9yZXN2X2FkZF9zaGFyZWRfZmVuY2Uo bGltYV9ib19yZXN2KGJvc1tpXSksIGZlbmNlKTsKIAl9CiAKIAlsaW1hX2dlbV91bmxvY2tfYm9z KGJvcywgc3VibWl0LT5ucl9ib3MsICZjdHgpOwogCiAJZm9yIChpID0gMDsgaSA8IHN1Ym1pdC0+ bnJfYm9zOyBpKyspCi0JCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgmYm9zW2ldLT5nZW0p OworCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoJmJvc1tpXS0+YmFzZS5iYXNlKTsKIAog CWlmIChvdXRfc3luYykgewogCQlkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKG91dF9zeW5jLCBm ZW5jZSk7CkBAIC0zMjQsNyArMzIzLDcgQEAgaW50IGxpbWFfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUsIHN0cnVjdCBsaW1hX3N1Ym1pdCAqc3VibWl0KQogCQlpZiAoIWJvc1tpXSkK IAkJCWJyZWFrOwogCQlsaW1hX3ZtX2JvX2RlbCh2bSwgYm9zW2ldKTsKLQkJZHJtX2dlbV9vYmpl Y3RfcHV0X3VubG9ja2VkKCZib3NbaV0tPmdlbSk7CisJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxv Y2tlZCgmYm9zW2ldLT5iYXNlLmJhc2UpOwogCX0KIAlpZiAob3V0X3N5bmMpCiAJCWRybV9zeW5j b2JqX3B1dChvdXRfc3luYyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1h X2dlbS5oIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uaAppbmRleCA1NTYxMTFhMDEx MzUuLjE4MDBmZWIzZTQ3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9n ZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbS5oCkBAIC00LDE5ICs0LDM3 IEBACiAjaWZuZGVmIF9fTElNQV9HRU1fSF9fCiAjZGVmaW5lIF9fTElNQV9HRU1fSF9fCiAKLXN0 cnVjdCBsaW1hX2JvOworI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5oPgorCiBz dHJ1Y3QgbGltYV9zdWJtaXQ7CiAKLWV4dGVybiBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19z dHJ1Y3QgbGltYV9nZW1fdm1fb3BzOworc3RydWN0IGxpbWFfYm8geworCXN0cnVjdCBkcm1fZ2Vt X3NobWVtX29iamVjdCBiYXNlOworCisJc3RydWN0IG11dGV4IGxvY2s7CisJc3RydWN0IGxpc3Rf aGVhZCB2YTsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxpbWFfYm8gKgordG9fbGltYV9i byhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHRv X2RybV9nZW1fc2htZW1fb2JqKG9iaiksIHN0cnVjdCBsaW1hX2JvLCBiYXNlKTsKK30KKworc3Rh dGljIGlubGluZSBzaXplX3QgbGltYV9ib19zaXplKHN0cnVjdCBsaW1hX2JvICpibykKK3sKKwly ZXR1cm4gYm8tPmJhc2UuYmFzZS5zaXplOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBkbWFf cmVzdiAqbGltYV9ib19yZXN2KHN0cnVjdCBsaW1hX2JvICpibykKK3sKKwlyZXR1cm4gYm8tPmJh c2UuYmFzZS5yZXN2OworfQogCi1zdHJ1Y3QgbGltYV9ibyAqbGltYV9nZW1fY3JlYXRlX2JvKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBzaXplLCB1MzIgZmxhZ3MpOworc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpsaW1hX2dlbV9jcmVhdGVfb2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHNpemVfdCBzaXplKTsKIGludCBsaW1hX2dlbV9jcmVhdGVfaGFuZGxlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKIAkJCSAgIHUzMiBzaXplLCB1MzIgZmxh Z3MsIHUzMiAqaGFuZGxlKTsKLXZvaWQgbGltYV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopOwotaW50IGxpbWFfZ2VtX29iamVjdF9vcGVuKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwotdm9pZCBsaW1hX2dlbV9vYmpl Y3RfY2xvc2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSk7CiBpbnQgbGltYV9nZW1fZ2V0X2luZm8oc3RydWN0IGRybV9maWxlICpmaWxlLCB1MzIgaGFu ZGxlLCB1MzIgKnZhLCB1NjQgKm9mZnNldCk7Ci1pbnQgbGltYV9nZW1fbW1hcChzdHJ1Y3QgZmls ZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwogaW50IGxpbWFfZ2VtX3N1Ym1p dChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBsaW1hX3N1Ym1pdCAqc3VibWl0KTsKIGlu dCBsaW1hX2dlbV93YWl0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgdTMyIGhhbmRsZSwgdTMyIG9w LCBzNjQgdGltZW91dF9ucyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xp bWFfZ2VtX3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbV9wcmltZS5jCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2ViMjUxZTBhMTIuLjAwMDAwMDAwMDAwMAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbV9wcmltZS5jCisrKyAvZGV2L251bGwK QEAgLTEsNDYgKzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1Ig TUlUCi0vKiBDb3B5cmlnaHQgMjAxOC0yMDE5IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAq LwotCi0jaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgotI2luY2x1ZGUgPGRybS9kcm1fcHJpbWUu aD4KLSNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgotI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5oPgot Ci0jaW5jbHVkZSAibGltYV9kZXZpY2UuaCIKLSNpbmNsdWRlICJsaW1hX29iamVjdC5oIgotI2lu Y2x1ZGUgImxpbWFfZ2VtLmgiCi0jaW5jbHVkZSAibGltYV9nZW1fcHJpbWUuaCIKLQotc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpsaW1hX2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoCi0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAotCXN0 cnVjdCBzZ190YWJsZSAqc2d0KQotewotCXN0cnVjdCBsaW1hX2RldmljZSAqbGRldiA9IHRvX2xp bWFfZGV2KGRldik7Ci0Jc3RydWN0IGxpbWFfYm8gKmJvOwotCi0JYm8gPSBsaW1hX2JvX2NyZWF0 ZShsZGV2LCBhdHRhY2gtPmRtYWJ1Zi0+c2l6ZSwgMCwgc2d0KTsKLQlpZiAoSVNfRVJSKGJvKSkK LQkJcmV0dXJuIEVSUl9DQVNUKGJvKTsKLQotCXJldHVybiAmYm8tPmdlbTsKLX0KLQotc3RydWN0 IHNnX3RhYmxlICpsaW1hX2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmopCi17Ci0Jc3RydWN0IGxpbWFfYm8gKmJvID0gdG9fbGltYV9ibyhvYmopOwotCWlu dCBucGFnZXMgPSBvYmotPnNpemUgPj4gUEFHRV9TSElGVDsKLQotCXJldHVybiBkcm1fcHJpbWVf cGFnZXNfdG9fc2coYm8tPnBhZ2VzLCBucGFnZXMpOwotfQotCi1pbnQgbGltYV9nZW1fcHJpbWVf bW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEpCi17Ci0JaW50IHJldDsKLQotCXJldCA9IGRybV9nZW1fbW1hcF9vYmoob2JqLCBvYmotPnNp emUsIHZtYSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWxpbWFfc2V0X3ZtYV9mbGFn cyh2bWEpOwotCXJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEv bGltYV9nZW1fcHJpbWUuaCBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtX3ByaW1lLmgK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0YjRkMzVjMjFlMy4uMDAwMDAwMDAwMDAw Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtX3ByaW1lLmgKKysrIC9kZXYvbnVs bApAQCAtMSwxMyArMCwwIEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBP UiBNSVQgKi8KLS8qIENvcHlyaWdodCAyMDE4LTIwMTkgUWlhbmcgWXUgPHl1cTgyNUBnbWFpbC5j b20+ICovCi0KLSNpZm5kZWYgX19MSU1BX0dFTV9QUklNRV9IX18KLSNkZWZpbmUgX19MSU1BX0dF TV9QUklNRV9IX18KLQotc3RydWN0IGRybV9nZW1fb2JqZWN0ICpsaW1hX2dlbV9wcmltZV9pbXBv cnRfc2dfdGFibGUoCi0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRtYV9idWZfYXR0 YWNobWVudCAqYXR0YWNoLAotCXN0cnVjdCBzZ190YWJsZSAqc2d0KTsKLXN0cnVjdCBzZ190YWJs ZSAqbGltYV9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq KTsKLWludCBsaW1hX2dlbV9wcmltZV9tbWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2xpbWEvbGltYV9tbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfbW11 LmMKaW5kZXggOGUxNjUxZDZhNjFmLi45N2VjMDlkZWU1NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9saW1hL2xpbWFfbW11LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9t bXUuYwpAQCAtOCw3ICs4LDYgQEAKICNpbmNsdWRlICJsaW1hX2RldmljZS5oIgogI2luY2x1ZGUg ImxpbWFfbW11LmgiCiAjaW5jbHVkZSAibGltYV92bS5oIgotI2luY2x1ZGUgImxpbWFfb2JqZWN0 LmgiCiAjaW5jbHVkZSAibGltYV9yZWdzLmgiCiAKICNkZWZpbmUgbW11X3dyaXRlKHJlZywgZGF0 YSkgd3JpdGVsKGRhdGEsIGlwLT5pb21lbSArIHJlZykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9saW1hL2xpbWFfb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX29iamVj dC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzEyM2IxZDA4M2MuLjAwMDAwMDAw MDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX29iamVjdC5jCisrKyAvZGV2L251 bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w IE9SIE1JVAotLyogQ29weXJpZ2h0IDIwMTgtMjAxOSBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNv bT4gKi8KLQotI2luY2x1ZGUgPGRybS9kcm1fcHJpbWUuaD4KLSNpbmNsdWRlIDxsaW51eC9wYWdl bWFwLmg+Ci0jaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KLQotI2luY2x1ZGUgImxpbWFf b2JqZWN0LmgiCi0KLXZvaWQgbGltYV9ib19kZXN0cm95KHN0cnVjdCBsaW1hX2JvICpibykKLXsK LQlpZiAoYm8tPnNndCkgewotCQlrZnJlZShiby0+cGFnZXMpOwotCQlkcm1fcHJpbWVfZ2VtX2Rl c3Ryb3koJmJvLT5nZW0sIGJvLT5zZ3QpOwotCX0gZWxzZSB7Ci0JCWlmIChiby0+cGFnZXNfZG1h X2FkZHIpIHsKLQkJCWludCBpLCBucGFnZXMgPSBiby0+Z2VtLnNpemUgPj4gUEFHRV9TSElGVDsK LQotCQkJZm9yIChpID0gMDsgaSA8IG5wYWdlczsgaSsrKSB7Ci0JCQkJaWYgKGJvLT5wYWdlc19k bWFfYWRkcltpXSkKLQkJCQkJZG1hX3VubWFwX3BhZ2UoYm8tPmdlbS5kZXYtPmRldiwKLQkJCQkJ CSAgICAgICBiby0+cGFnZXNfZG1hX2FkZHJbaV0sCi0JCQkJCQkgICAgICAgUEFHRV9TSVpFLCBE TUFfQklESVJFQ1RJT05BTCk7Ci0JCQl9Ci0JCX0KLQotCQlpZiAoYm8tPnBhZ2VzKQotCQkJZHJt X2dlbV9wdXRfcGFnZXMoJmJvLT5nZW0sIGJvLT5wYWdlcywgdHJ1ZSwgdHJ1ZSk7Ci0JfQotCi0J a2ZyZWUoYm8tPnBhZ2VzX2RtYV9hZGRyKTsKLQlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKCZiby0+ Z2VtKTsKLQlrZnJlZShibyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgbGltYV9ibyAqbGltYV9ib19j cmVhdGVfc3RydWN0KHN0cnVjdCBsaW1hX2RldmljZSAqZGV2LCB1MzIgc2l6ZSwgdTMyIGZsYWdz KQotewotCXN0cnVjdCBsaW1hX2JvICpibzsKLQlpbnQgZXJyOwotCi0Jc2l6ZSA9IFBBR0VfQUxJ R04oc2l6ZSk7Ci0KLQlibyA9IGt6YWxsb2Moc2l6ZW9mKCpibyksIEdGUF9LRVJORUwpOwotCWlm ICghYm8pCi0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCi0JbXV0ZXhfaW5pdCgmYm8tPmxv Y2spOwotCUlOSVRfTElTVF9IRUFEKCZiby0+dmEpOwotCi0JZXJyID0gZHJtX2dlbV9vYmplY3Rf aW5pdChkZXYtPmRkZXYsICZiby0+Z2VtLCBzaXplKTsKLQlpZiAoZXJyKSB7Ci0JCWtmcmVlKGJv KTsKLQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKLQl9Ci0KLQlyZXR1cm4gYm87Ci19Ci0KLXN0cnVj dCBsaW1hX2JvICpsaW1hX2JvX2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgdTMyIHNp emUsCi0JCQkgICAgICAgdTMyIGZsYWdzLCBzdHJ1Y3Qgc2dfdGFibGUgKnNndCkKLXsKLQlpbnQg aSwgZXJyOwotCXNpemVfdCBucGFnZXM7Ci0Jc3RydWN0IGxpbWFfYm8gKmJvLCAqcmV0OwotCi0J Ym8gPSBsaW1hX2JvX2NyZWF0ZV9zdHJ1Y3QoZGV2LCBzaXplLCBmbGFncyk7Ci0JaWYgKElTX0VS UihibykpCi0JCXJldHVybiBibzsKLQotCW5wYWdlcyA9IGJvLT5nZW0uc2l6ZSA+PiBQQUdFX1NI SUZUOwotCi0JYm8tPnBhZ2VzX2RtYV9hZGRyID0ga2NhbGxvYyhucGFnZXMsIHNpemVvZihkbWFf YWRkcl90KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFiby0+cGFnZXNfZG1hX2FkZHIpIHsKLQkJcmV0 ID0gRVJSX1BUUigtRU5PTUVNKTsKLQkJZ290byBlcnJfb3V0OwotCX0KLQotCWlmIChzZ3QpIHsK LQkJYm8tPnNndCA9IHNndDsKLQotCQliby0+cGFnZXMgPSBrY2FsbG9jKG5wYWdlcywgc2l6ZW9m KCpiby0+cGFnZXMpLCBHRlBfS0VSTkVMKTsKLQkJaWYgKCFiby0+cGFnZXMpIHsKLQkJCXJldCA9 IEVSUl9QVFIoLUVOT01FTSk7Ci0JCQlnb3RvIGVycl9vdXQ7Ci0JCX0KLQotCQllcnIgPSBkcm1f cHJpbWVfc2dfdG9fcGFnZV9hZGRyX2FycmF5cygKLQkJCXNndCwgYm8tPnBhZ2VzLCBiby0+cGFn ZXNfZG1hX2FkZHIsIG5wYWdlcyk7Ci0JCWlmIChlcnIpIHsKLQkJCXJldCA9IEVSUl9QVFIoZXJy KTsKLQkJCWdvdG8gZXJyX291dDsKLQkJfQotCX0gZWxzZSB7Ci0JCW1hcHBpbmdfc2V0X2dmcF9t YXNrKGJvLT5nZW0uZmlscC0+Zl9tYXBwaW5nLCBHRlBfRE1BMzIpOwotCQliby0+cGFnZXMgPSBk cm1fZ2VtX2dldF9wYWdlcygmYm8tPmdlbSk7Ci0JCWlmIChJU19FUlIoYm8tPnBhZ2VzKSkgewot CQkJcmV0ID0gRVJSX0NBU1QoYm8tPnBhZ2VzKTsKLQkJCWJvLT5wYWdlcyA9IE5VTEw7Ci0JCQln b3RvIGVycl9vdXQ7Ci0JCX0KLQotCQlmb3IgKGkgPSAwOyBpIDwgbnBhZ2VzOyBpKyspIHsKLQkJ CWRtYV9hZGRyX3QgYWRkciA9IGRtYV9tYXBfcGFnZShkZXYtPmRldiwgYm8tPnBhZ2VzW2ldLCAw LAotCQkJCQkJICAgICAgIFBBR0VfU0laRSwgRE1BX0JJRElSRUNUSU9OQUwpOwotCQkJaWYgKGRt YV9tYXBwaW5nX2Vycm9yKGRldi0+ZGV2LCBhZGRyKSkgewotCQkJCXJldCA9IEVSUl9QVFIoLUVG QVVMVCk7Ci0JCQkJZ290byBlcnJfb3V0OwotCQkJfQotCQkJYm8tPnBhZ2VzX2RtYV9hZGRyW2ld ID0gYWRkcjsKLQkJfQotCi0JfQotCi0JcmV0dXJuIGJvOwotCi1lcnJfb3V0OgotCWxpbWFfYm9f ZGVzdHJveShibyk7Ci0JcmV0dXJuIHJldDsKLX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9saW1hL2xpbWFfb2JqZWN0LmggYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX29iamVjdC5o CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWNhMmQ4ZGMwYTEuLjAwMDAwMDAwMDAw MAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX29iamVjdC5oCisrKyAvZGV2L251bGwK QEAgLTEsMzUgKzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1Ig TUlUICovCi0vKiBDb3B5cmlnaHQgMjAxOC0yMDE5IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29t PiAqLwotCi0jaWZuZGVmIF9fTElNQV9PQkpFQ1RfSF9fCi0jZGVmaW5lIF9fTElNQV9PQkpFQ1Rf SF9fCi0KLSNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgotCi0jaW5jbHVkZSAibGltYV9kZXZpY2Uu aCIKLQotc3RydWN0IGxpbWFfYm8gewotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCBnZW07Ci0KLQlz dHJ1Y3QgcGFnZSAqKnBhZ2VzOwotCWRtYV9hZGRyX3QgKnBhZ2VzX2RtYV9hZGRyOwotCXN0cnVj dCBzZ190YWJsZSAqc2d0OwotCXZvaWQgKnZhZGRyOwotCi0Jc3RydWN0IG11dGV4IGxvY2s7Ci0J c3RydWN0IGxpc3RfaGVhZCB2YTsKLX07Ci0KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGxpbWFfYm8g KgotdG9fbGltYV9ibyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKLXsKLQlyZXR1cm4gY29u dGFpbmVyX29mKG9iaiwgc3RydWN0IGxpbWFfYm8sIGdlbSk7Ci19Ci0KLXN0cnVjdCBsaW1hX2Jv ICpsaW1hX2JvX2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgdTMyIHNpemUsCi0JCQkg ICAgICAgdTMyIGZsYWdzLCBzdHJ1Y3Qgc2dfdGFibGUgKnNndCk7Ci12b2lkIGxpbWFfYm9fZGVz dHJveShzdHJ1Y3QgbGltYV9ibyAqYm8pOwotdm9pZCAqbGltYV9ib192bWFwKHN0cnVjdCBsaW1h X2JvICpibyk7Ci12b2lkIGxpbWFfYm9fdnVubWFwKHN0cnVjdCBsaW1hX2JvICpibyk7Ci0KLSNl bmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jIGIvZHJp dmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jCmluZGV4IDQxMjdjYWNhYzQ1NC4uZjUyMmM1 Zjk5NzI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3NjaGVkLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jCkBAIC0xMCw3ICsxMCw3IEBACiAj aW5jbHVkZSAibGltYV92bS5oIgogI2luY2x1ZGUgImxpbWFfbW11LmgiCiAjaW5jbHVkZSAibGlt YV9sMl9jYWNoZS5oIgotI2luY2x1ZGUgImxpbWFfb2JqZWN0LmgiCisjaW5jbHVkZSAibGltYV9n ZW0uaCIKIAogc3RydWN0IGxpbWFfZmVuY2UgewogCXN0cnVjdCBkbWFfZmVuY2UgYmFzZTsKQEAg LTExNyw3ICsxMTcsNyBAQCBpbnQgbGltYV9zY2hlZF90YXNrX2luaXQoc3RydWN0IGxpbWFfc2No ZWRfdGFzayAqdGFzaywKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVt X2JvczsgaSsrKQotCQlkcm1fZ2VtX29iamVjdF9nZXQoJmJvc1tpXS0+Z2VtKTsKKwkJZHJtX2dl bV9vYmplY3RfZ2V0KCZib3NbaV0tPmJhc2UuYmFzZSk7CiAKIAllcnIgPSBkcm1fc2NoZWRfam9i X2luaXQoJnRhc2stPmJhc2UsICZjb250ZXh0LT5iYXNlLCB2bSk7CiAJaWYgKGVycikgewpAQCAt MTQ4LDcgKzE0OCw3IEBAIHZvaWQgbGltYV9zY2hlZF90YXNrX2Zpbmkoc3RydWN0IGxpbWFfc2No ZWRfdGFzayAqdGFzaykKIAogCWlmICh0YXNrLT5ib3MpIHsKIAkJZm9yIChpID0gMDsgaSA8IHRh c2stPm51bV9ib3M7IGkrKykKLQkJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgmdGFzay0+ Ym9zW2ldLT5nZW0pOworCQkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCZ0YXNrLT5ib3Nb aV0tPmJhc2UuYmFzZSk7CiAJCWtmcmVlKHRhc2stPmJvcyk7CiAJfQogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1h X3ZtLmMKaW5kZXggMTllODhjYTE2NTI3Li44ZTY5YzQ1NDBlOGIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9saW1hL2xpbWFfdm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1h X3ZtLmMKQEAgLTYsNyArNiw3IEBACiAKICNpbmNsdWRlICJsaW1hX2RldmljZS5oIgogI2luY2x1 ZGUgImxpbWFfdm0uaCIKLSNpbmNsdWRlICJsaW1hX29iamVjdC5oIgorI2luY2x1ZGUgImxpbWFf Z2VtLmgiCiAjaW5jbHVkZSAibGltYV9yZWdzLmgiCiAKIHN0cnVjdCBsaW1hX2JvX3ZhIHsKQEAg LTMyLDcgKzMyLDcgQEAgc3RydWN0IGxpbWFfYm9fdmEgewogI2RlZmluZSBMSU1BX0JURSh2YSkg KCh2YSAmIExJTUFfVk1fQlRfTUFTSykgPj4gTElNQV9WTV9CVF9TSElGVCkKIAogCi1zdGF0aWMg dm9pZCBsaW1hX3ZtX3VubWFwX3BhZ2VfdGFibGUoc3RydWN0IGxpbWFfdm0gKnZtLCB1MzIgc3Rh cnQsIHUzMiBlbmQpCitzdGF0aWMgdm9pZCBsaW1hX3ZtX3VubWFwX3JhbmdlKHN0cnVjdCBsaW1h X3ZtICp2bSwgdTMyIHN0YXJ0LCB1MzIgZW5kKQogewogCXUzMiBhZGRyOwogCkBAIC00NCw0MSAr NDQsMzIgQEAgc3RhdGljIHZvaWQgbGltYV92bV91bm1hcF9wYWdlX3RhYmxlKHN0cnVjdCBsaW1h X3ZtICp2bSwgdTMyIHN0YXJ0LCB1MzIgZW5kKQogCX0KIH0KIAotc3RhdGljIGludCBsaW1hX3Zt X21hcF9wYWdlX3RhYmxlKHN0cnVjdCBsaW1hX3ZtICp2bSwgZG1hX2FkZHJfdCAqZG1hLAotCQkJ CSAgdTMyIHN0YXJ0LCB1MzIgZW5kKQorc3RhdGljIGludCBsaW1hX3ZtX21hcF9wYWdlKHN0cnVj dCBsaW1hX3ZtICp2bSwgZG1hX2FkZHJfdCBwYSwgdTMyIHZhKQogewotCXU2NCBhZGRyOwotCWlu dCBpID0gMDsKLQotCWZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIDw9IGVuZDsgYWRkciArPSBMSU1B X1BBR0VfU0laRSkgewotCQl1MzIgcGJlID0gTElNQV9QQkUoYWRkcik7Ci0JCXUzMiBidGUgPSBM SU1BX0JURShhZGRyKTsKLQotCQlpZiAoIXZtLT5idHNbcGJlXS5jcHUpIHsKLQkJCWRtYV9hZGRy X3QgcHRzOwotCQkJdTMyICpwZDsKLQkJCWludCBqOwotCi0JCQl2bS0+YnRzW3BiZV0uY3B1ID0g ZG1hX2FsbG9jX3djKAotCQkJCXZtLT5kZXYtPmRldiwgTElNQV9QQUdFX1NJWkUgPDwgTElNQV9W TV9OVU1fUFRfUEVSX0JUX1NISUZULAotCQkJCSZ2bS0+YnRzW3BiZV0uZG1hLCBHRlBfS0VSTkVM IHwgX19HRlBfWkVSTyk7Ci0JCQlpZiAoIXZtLT5idHNbcGJlXS5jcHUpIHsKLQkJCQlpZiAoYWRk ciAhPSBzdGFydCkKLQkJCQkJbGltYV92bV91bm1hcF9wYWdlX3RhYmxlKHZtLCBzdGFydCwgYWRk ciAtIDEpOwotCQkJCXJldHVybiAtRU5PTUVNOwotCQkJfQotCi0JCQlwdHMgPSB2bS0+YnRzW3Bi ZV0uZG1hOwotCQkJcGQgPSB2bS0+cGQuY3B1ICsgKHBiZSA8PCBMSU1BX1ZNX05VTV9QVF9QRVJf QlRfU0hJRlQpOwotCQkJZm9yIChqID0gMDsgaiA8IExJTUFfVk1fTlVNX1BUX1BFUl9CVDsgaisr KSB7Ci0JCQkJcGRbal0gPSBwdHMgfCBMSU1BX1ZNX0ZMQUdfUFJFU0VOVDsKLQkJCQlwdHMgKz0g TElNQV9QQUdFX1NJWkU7Ci0JCQl9CisJdTMyIHBiZSA9IExJTUFfUEJFKHZhKTsKKwl1MzIgYnRl ID0gTElNQV9CVEUodmEpOworCisJaWYgKCF2bS0+YnRzW3BiZV0uY3B1KSB7CisJCWRtYV9hZGRy X3QgcHRzOworCQl1MzIgKnBkOworCQlpbnQgajsKKworCQl2bS0+YnRzW3BiZV0uY3B1ID0gZG1h X2FsbG9jX3djKAorCQkJdm0tPmRldi0+ZGV2LCBMSU1BX1BBR0VfU0laRSA8PCBMSU1BX1ZNX05V TV9QVF9QRVJfQlRfU0hJRlQsCisJCQkmdm0tPmJ0c1twYmVdLmRtYSwgR0ZQX0tFUk5FTCB8IF9f R0ZQX1pFUk8pOworCQlpZiAoIXZtLT5idHNbcGJlXS5jcHUpCisJCQlyZXR1cm4gLUVOT01FTTsK KworCQlwdHMgPSB2bS0+YnRzW3BiZV0uZG1hOworCQlwZCA9IHZtLT5wZC5jcHUgKyAocGJlIDw8 IExJTUFfVk1fTlVNX1BUX1BFUl9CVF9TSElGVCk7CisJCWZvciAoaiA9IDA7IGogPCBMSU1BX1ZN X05VTV9QVF9QRVJfQlQ7IGorKykgeworCQkJcGRbal0gPSBwdHMgfCBMSU1BX1ZNX0ZMQUdfUFJF U0VOVDsKKwkJCXB0cyArPSBMSU1BX1BBR0VfU0laRTsKIAkJfQotCi0JCXZtLT5idHNbcGJlXS5j cHVbYnRlXSA9IGRtYVtpKytdIHwgTElNQV9WTV9GTEFHU19DQUNIRTsKIAl9CiAKKwl2bS0+YnRz W3BiZV0uY3B1W2J0ZV0gPSBwYSB8IExJTUFfVk1fRkxBR1NfQ0FDSEU7CisKIAlyZXR1cm4gMDsK IH0KIApAQCAtMTAwLDcgKzkxLDggQEAgbGltYV92bV9ib19maW5kKHN0cnVjdCBsaW1hX3ZtICp2 bSwgc3RydWN0IGxpbWFfYm8gKmJvKQogaW50IGxpbWFfdm1fYm9fYWRkKHN0cnVjdCBsaW1hX3Zt ICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvLCBib29sIGNyZWF0ZSkKIHsKIAlzdHJ1Y3QgbGltYV9i b192YSAqYm9fdmE7Ci0JaW50IGVycjsKKwlzdHJ1Y3Qgc2dfZG1hX3BhZ2VfaXRlciBzZ19pdGVy OworCWludCBvZmZzZXQgPSAwLCBlcnI7CiAKIAltdXRleF9sb2NrKCZiby0+bG9jayk7CiAKQEAg LTEyOCwxNCArMTIwLDE4IEBAIGludCBsaW1hX3ZtX2JvX2FkZChzdHJ1Y3QgbGltYV92bSAqdm0s IHN0cnVjdCBsaW1hX2JvICpibywgYm9vbCBjcmVhdGUpCiAKIAltdXRleF9sb2NrKCZ2bS0+bG9j ayk7CiAKLQllcnIgPSBkcm1fbW1faW5zZXJ0X25vZGUoJnZtLT5tbSwgJmJvX3ZhLT5ub2RlLCBi by0+Z2VtLnNpemUpOworCWVyciA9IGRybV9tbV9pbnNlcnRfbm9kZSgmdm0tPm1tLCAmYm9fdmEt Pm5vZGUsIGxpbWFfYm9fc2l6ZShibykpOwogCWlmIChlcnIpCiAJCWdvdG8gZXJyX291dDE7CiAK LQllcnIgPSBsaW1hX3ZtX21hcF9wYWdlX3RhYmxlKHZtLCBiby0+cGFnZXNfZG1hX2FkZHIsIGJv X3ZhLT5ub2RlLnN0YXJ0LAotCQkJCSAgICAgYm9fdmEtPm5vZGUuc3RhcnQgKyBib192YS0+bm9k ZS5zaXplIC0gMSk7Ci0JaWYgKGVycikKLQkJZ290byBlcnJfb3V0MjsKKwlmb3JfZWFjaF9zZ19k bWFfcGFnZShiby0+YmFzZS5zZ3QtPnNnbCwgJnNnX2l0ZXIsIGJvLT5iYXNlLnNndC0+bmVudHMs IDApIHsKKwkJZXJyID0gbGltYV92bV9tYXBfcGFnZSh2bSwgc2dfcGFnZV9pdGVyX2RtYV9hZGRy ZXNzKCZzZ19pdGVyKSwKKwkJCQkgICAgICAgYm9fdmEtPm5vZGUuc3RhcnQgKyBvZmZzZXQpOwor CQlpZiAoZXJyKQorCQkJZ290byBlcnJfb3V0MjsKKworCQlvZmZzZXQgKz0gUEFHRV9TSVpFOwor CX0KIAogCW11dGV4X3VubG9jaygmdm0tPmxvY2spOwogCkBAIC0xNDUsNiArMTQxLDggQEAgaW50 IGxpbWFfdm1fYm9fYWRkKHN0cnVjdCBsaW1hX3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvLCBi b29sIGNyZWF0ZSkKIAlyZXR1cm4gMDsKIAogZXJyX291dDI6CisJaWYgKG9mZnNldCkKKwkJbGlt YV92bV91bm1hcF9yYW5nZSh2bSwgYm9fdmEtPm5vZGUuc3RhcnQsIGJvX3ZhLT5ub2RlLnN0YXJ0 ICsgb2Zmc2V0IC0gMSk7CiAJZHJtX21tX3JlbW92ZV9ub2RlKCZib192YS0+bm9kZSk7CiBlcnJf b3V0MToKIAltdXRleF91bmxvY2soJnZtLT5sb2NrKTsKQEAgLTE2OCw4ICsxNjYsOCBAQCB2b2lk IGxpbWFfdm1fYm9fZGVsKHN0cnVjdCBsaW1hX3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvKQog CiAJbXV0ZXhfbG9jaygmdm0tPmxvY2spOwogCi0JbGltYV92bV91bm1hcF9wYWdlX3RhYmxlKHZt LCBib192YS0+bm9kZS5zdGFydCwKLQkJCQkgYm9fdmEtPm5vZGUuc3RhcnQgKyBib192YS0+bm9k ZS5zaXplIC0gMSk7CisJbGltYV92bV91bm1hcF9yYW5nZSh2bSwgYm9fdmEtPm5vZGUuc3RhcnQs CisJCQkgICAgYm9fdmEtPm5vZGUuc3RhcnQgKyBib192YS0+bm9kZS5zaXplIC0gMSk7CiAKIAlk cm1fbW1fcmVtb3ZlX25vZGUoJmJvX3ZhLT5ub2RlKTsKIApAQCAtMjE1LDkgKzIxMyw4IEBAIHN0 cnVjdCBsaW1hX3ZtICpsaW1hX3ZtX2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldikKIAkJ Z290byBlcnJfb3V0MDsKIAogCWlmIChkZXYtPmRsYnVfY3B1KSB7Ci0JCWludCBlcnIgPSBsaW1h X3ZtX21hcF9wYWdlX3RhYmxlKAotCQkJdm0sICZkZXYtPmRsYnVfZG1hLCBMSU1BX1ZBX1JFU0VS VkVfRExCVSwKLQkJCUxJTUFfVkFfUkVTRVJWRV9ETEJVICsgTElNQV9QQUdFX1NJWkUgLSAxKTsK KwkJaW50IGVyciA9IGxpbWFfdm1fbWFwX3BhZ2UoCisJCQl2bSwgZGV2LT5kbGJ1X2RtYSwgTElN QV9WQV9SRVNFUlZFX0RMQlUpOwogCQlpZiAoZXJyKQogCQkJZ290byBlcnJfb3V0MTsKIAl9Ci0t IAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==