From mboxrd@z Thu Jan 1 00:00:00 1970 From: Qiang Yu Subject: [PATCH v2 4/6] drm/lima: use drm_gem_shmem_helpers Date: Fri, 27 Sep 2019 21:46:14 +0800 Message-ID: <20190927134616.21899-5-yuq825@gmail.com> References: <20190927134616.21899-1-yuq825@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190927134616.21899-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, Maxime Ripard , 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 di5jCmluZGV4IGNjODUwYTUyMmZhYy4uNWQ1NTFiZmRiNjBiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbGltYS9saW1hX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFf ZHJ2LmMKQEAgLTEyLDcgKzEyLDYgQEAKIAogI2luY2x1ZGUgImxpbWFfZHJ2LmgiCiAjaW5jbHVk ZSAibGltYV9nZW0uaCIKLSNpbmNsdWRlICJsaW1hX2dlbV9wcmltZS5oIgogI2luY2x1ZGUgImxp bWFfdm0uaCIKIAogaW50IGxpbWFfc2NoZWRfdGltZW91dF9tczsKQEAgLTI0MSwxNiArMjQwLDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBsaW1hX2RybV9kcml2ZXJfaW9j dGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoTElNQV9DVFhfRlJFRSwgbGltYV9pb2N0bF9j dHhfZnJlZSwgRFJNX1JFTkRFUl9BTExPVyksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGZp bGVfb3BlcmF0aW9ucyBsaW1hX2RybV9kcml2ZXJfZm9wcyA9IHsKLQkub3duZXIgICAgICAgICAg ICAgID0gVEhJU19NT0RVTEUsCi0JLm9wZW4gICAgICAgICAgICAgICA9IGRybV9vcGVuLAotCS5y ZWxlYXNlICAgICAgICAgICAgPSBkcm1fcmVsZWFzZSwKLQkudW5sb2NrZWRfaW9jdGwgICAgID0g ZHJtX2lvY3RsLAotI2lmZGVmIENPTkZJR19DT01QQVQKLQkuY29tcGF0X2lvY3RsICAgICAgID0g ZHJtX2NvbXBhdF9pb2N0bCwKLSNlbmRpZgotCS5tbWFwICAgICAgICAgICAgICAgPSBsaW1hX2dl bV9tbWFwLAotfTsKK0RFRklORV9EUk1fR0VNX1NITUVNX0ZPUFMobGltYV9kcm1fZHJpdmVyX2Zv cHMpOwogCiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgbGltYV9kcm1fZHJpdmVyID0gewogCS5k cml2ZXJfZmVhdHVyZXMgICAgPSBEUklWRVJfUkVOREVSIHwgRFJJVkVSX0dFTSB8IERSSVZFUl9T WU5DT0JKLApAQCAtMjU5LDEwICsyNDksNiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgbGlt YV9kcm1fZHJpdmVyID0gewogCS5pb2N0bHMgICAgICAgICAgICAgPSBsaW1hX2RybV9kcml2ZXJf aW9jdGxzLAogCS5udW1faW9jdGxzICAgICAgICAgPSBBUlJBWV9TSVpFKGxpbWFfZHJtX2RyaXZl cl9pb2N0bHMpLAogCS5mb3BzICAgICAgICAgICAgICAgPSAmbGltYV9kcm1fZHJpdmVyX2ZvcHMs Ci0JLmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCA9IGxpbWFfZ2VtX2ZyZWVfb2JqZWN0LAotCS5n ZW1fb3Blbl9vYmplY3QgICAgPSBsaW1hX2dlbV9vYmplY3Rfb3BlbiwKLQkuZ2VtX2Nsb3NlX29i amVjdCAgID0gbGltYV9nZW1fb2JqZWN0X2Nsb3NlLAotCS5nZW1fdm1fb3BzICAgICAgICAgPSAm bGltYV9nZW1fdm1fb3BzLAogCS5uYW1lICAgICAgICAgICAgICAgPSAibGltYSIsCiAJLmRlc2Mg ICAgICAgICAgICAgICA9ICJsaW1hIERSTSIsCiAJLmRhdGUgICAgICAgICAgICAgICA9ICIyMDE5 MDIxNyIsCkBAIC0yNzAsMTEgKzI1NiwxMSBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgbGlt YV9kcm1fZHJpdmVyID0gewogCS5taW5vciAgICAgICAgICAgICAgPSAwLAogCS5wYXRjaGxldmVs ICAgICAgICAgPSAwLAogCisJLmdlbV9jcmVhdGVfb2JqZWN0ICA9IGxpbWFfZ2VtX2NyZWF0ZV9v YmplY3QsCiAJLnByaW1lX2ZkX3RvX2hhbmRsZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxl LAotCS5nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gbGltYV9nZW1fcHJpbWVfaW1wb3J0X3Nn X3RhYmxlLAorCS5nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gZHJtX2dlbV9zaG1lbV9wcmlt ZV9pbXBvcnRfc2dfdGFibGUsCiAJLnByaW1lX2hhbmRsZV90b19mZCA9IGRybV9nZW1fcHJpbWVf aGFuZGxlX3RvX2ZkLAotCS5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlID0gbGltYV9nZW1fcHJpbWVf Z2V0X3NnX3RhYmxlLAotCS5nZW1fcHJpbWVfbW1hcCA9IGxpbWFfZ2VtX3ByaW1lX21tYXAsCisJ LmdlbV9wcmltZV9tbWFwID0gZHJtX2dlbV9wcmltZV9tbWFwLAogfTsKIAogc3RhdGljIGludCBs aW1hX3BkZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9s aW1hX2dlbS5jCmluZGV4IGY1YWVhYTFmNjFjOC4uZWI3MGU0NDI5NTg4IDEwMDY0NAotLS0gYS9k 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 c2V0X3ZtYV9mbGFncyh2bWEpOwogCXJldHVybiAwOwogfQogCkBAIC0xNTUsNyArMTU0LDcgQEAg c3RhdGljIGludCBsaW1hX2dlbV9zeW5jX2JvKHN0cnVjdCBsaW1hX3NjaGVkX3Rhc2sgKnRhc2ss IHN0cnVjdCBsaW1hX2JvICpibywKIAlpbnQgZXJyID0gMDsKIAogCWlmICghd3JpdGUpIHsKLQkJ ZXJyID0gZG1hX3Jlc3ZfcmVzZXJ2ZV9zaGFyZWQoYm8tPmdlbS5yZXN2LCAxKTsKKwkJZXJyID0g ZG1hX3Jlc3ZfcmVzZXJ2ZV9zaGFyZWQobGltYV9ib19yZXN2KGJvKSwgMSk7CiAJCWlmIChlcnIp CiAJCQlyZXR1cm4gZXJyOwogCX0KQEAgLTE2NCw3ICsxNjMsNyBAQCBzdGF0aWMgaW50IGxpbWFf Z2VtX3N5bmNfYm8oc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzaywgc3RydWN0IGxpbWFfYm8g KmJvLAogCWlmIChleHBsaWNpdCkKIAkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gZHJtX2dlbV9mZW5j ZV9hcnJheV9hZGRfaW1wbGljaXQoJnRhc2stPmRlcHMsICZiby0+Z2VtLCB3cml0ZSk7CisJcmV0 dXJuIGRybV9nZW1fZmVuY2VfYXJyYXlfYWRkX2ltcGxpY2l0KCZ0YXNrLT5kZXBzLCAmYm8tPmJh c2UuYmFzZSwgd3JpdGUpOwogfQogCiBzdGF0aWMgaW50IGxpbWFfZ2VtX2xvY2tfYm9zKHN0cnVj dCBsaW1hX2JvICoqYm9zLCB1MzIgbnJfYm9zLApAQCAtMTgxLDcgKzE4MCw3IEBAIHN0YXRpYyBp bnQgbGltYV9nZW1fbG9ja19ib3Moc3RydWN0IGxpbWFfYm8gKipib3MsIHUzMiBucl9ib3MsCiAJ CQljb250aW51ZTsKIAkJfQogCi0JCXJldCA9IHd3X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgm Ym9zW2ldLT5nZW0ucmVzdi0+bG9jaywgY3R4KTsKKwkJcmV0ID0gd3dfbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZsaW1hX2JvX3Jlc3YoYm9zW2ldKS0+bG9jaywgY3R4KTsKIAkJaWYgKHJldCA8 IDApIHsKIAkJCWNvbnRlbmRlZCA9IGk7CiAJCQlnb3RvIGVycjsKQEAgLTE5MywxNSArMTkyLDE1 IEBAIHN0YXRpYyBpbnQgbGltYV9nZW1fbG9ja19ib3Moc3RydWN0IGxpbWFfYm8gKipib3MsIHUz MiBucl9ib3MsCiAKIGVycjoKIAlmb3IgKGktLTsgaSA+PSAwOyBpLS0pCi0JCXd3X211dGV4X3Vu bG9jaygmYm9zW2ldLT5nZW0ucmVzdi0+bG9jayk7CisJCXd3X211dGV4X3VubG9jaygmbGltYV9i b19yZXN2KGJvc1tpXSktPmxvY2spOwogCiAJaWYgKHNsb3dfbG9ja2VkID49IDApCi0JCXd3X211 dGV4X3VubG9jaygmYm9zW3Nsb3dfbG9ja2VkXS0+Z2VtLnJlc3YtPmxvY2spOworCQl3d19tdXRl eF91bmxvY2soJmxpbWFfYm9fcmVzdihib3Nbc2xvd19sb2NrZWRdKS0+bG9jayk7CiAKIAlpZiAo cmV0ID09IC1FREVBRExLKSB7CiAJCS8qIHdlIGxvc3Qgb3V0IGluIGEgc2Vxbm8gcmFjZSwgbG9j ayBhbmQgcmV0cnkuLiAqLwogCQlyZXQgPSB3d19tdXRleF9sb2NrX3Nsb3dfaW50ZXJydXB0aWJs ZSgKLQkJCSZib3NbY29udGVuZGVkXS0+Z2VtLnJlc3YtPmxvY2ssIGN0eCk7CisJCQkmbGltYV9i b19yZXN2KGJvc1tjb250ZW5kZWRdKS0+bG9jaywgY3R4KTsKIAkJaWYgKCFyZXQpIHsKIAkJCXNs b3dfbG9ja2VkID0gY29udGVuZGVkOwogCQkJZ290byByZXRyeTsKQEAgLTIxOCw3ICsyMTcsNyBA QCBzdGF0aWMgdm9pZCBsaW1hX2dlbV91bmxvY2tfYm9zKHN0cnVjdCBsaW1hX2JvICoqYm9zLCB1 MzIgbnJfYm9zLAogCWludCBpOwogCiAJZm9yIChpID0gMDsgaSA8IG5yX2JvczsgaSsrKQotCQl3 d19tdXRleF91bmxvY2soJmJvc1tpXS0+Z2VtLnJlc3YtPmxvY2spOworCQl3d19tdXRleF91bmxv Y2soJmxpbWFfYm9fcmVzdihib3NbaV0pLT5sb2NrKTsKIAl3d19hY3F1aXJlX2ZpbmkoY3R4KTsK IH0KIApAQCAtMzA5LDE1ICszMDgsMTUgQEAgaW50IGxpbWFfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUsIHN0cnVjdCBsaW1hX3N1Ym1pdCAqc3VibWl0KQogCiAJZm9yIChpID0gMDsg aSA8IHN1Ym1pdC0+bnJfYm9zOyBpKyspIHsKIAkJaWYgKHN1Ym1pdC0+Ym9zW2ldLmZsYWdzICYg TElNQV9TVUJNSVRfQk9fV1JJVEUpCi0JCQlkbWFfcmVzdl9hZGRfZXhjbF9mZW5jZShib3NbaV0t PmdlbS5yZXN2LCBmZW5jZSk7CisJCQlkbWFfcmVzdl9hZGRfZXhjbF9mZW5jZShsaW1hX2JvX3Jl c3YoYm9zW2ldKSwgZmVuY2UpOwogCQllbHNlCi0JCQlkbWFfcmVzdl9hZGRfc2hhcmVkX2ZlbmNl KGJvc1tpXS0+Z2VtLnJlc3YsIGZlbmNlKTsKKwkJCWRtYV9yZXN2X2FkZF9zaGFyZWRfZmVuY2Uo bGltYV9ib19yZXN2KGJvc1tpXSksIGZlbmNlKTsKIAl9CiAKIAlsaW1hX2dlbV91bmxvY2tfYm9z KGJvcywgc3VibWl0LT5ucl9ib3MsICZjdHgpOwogCiAJZm9yIChpID0gMDsgaSA8IHN1Ym1pdC0+ bnJfYm9zOyBpKyspCi0JCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgmYm9zW2ldLT5nZW0p OworCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoJmJvc1tpXS0+YmFzZS5iYXNlKTsKIAog CWlmIChvdXRfc3luYykgewogCQlkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKG91dF9zeW5jLCBm ZW5jZSk7CkBAIC0zMzcsNyArMzM2LDcgQEAgaW50IGxpbWFfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUsIHN0cnVjdCBsaW1hX3N1Ym1pdCAqc3VibWl0KQogCQlsaW1hX3ZtX2JvX2Rl bCh2bSwgYm9zW2ldKTsKIGVycl9vdXQxOgogCWZvciAoaSA9IDA7IGkgPCBzdWJtaXQtPm5yX2Jv czsgaSsrKQotCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoJmJvc1tpXS0+Z2VtKTsKKwkJ ZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCZib3NbaV0tPmJhc2UuYmFzZSk7CiBlcnJfb3V0 MDoKIAlpZiAob3V0X3N5bmMpCiAJCWRybV9zeW5jb2JqX3B1dChvdXRfc3luYyk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbS5oIGIvZHJpdmVycy9ncHUvZHJtL2xp bWEvbGltYV9nZW0uaAppbmRleCA1NTYxMTFhMDExMzUuLjE4MDBmZWIzZTQ3ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v bGltYS9saW1hX2dlbS5oCkBAIC00LDE5ICs0LDM3IEBACiAjaWZuZGVmIF9fTElNQV9HRU1fSF9f CiAjZGVmaW5lIF9fTElNQV9HRU1fSF9fCiAKLXN0cnVjdCBsaW1hX2JvOworI2luY2x1ZGUgPGRy bS9kcm1fZ2VtX3NobWVtX2hlbHBlci5oPgorCiBzdHJ1Y3QgbGltYV9zdWJtaXQ7CiAKLWV4dGVy biBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgbGltYV9nZW1fdm1fb3BzOworc3Ry dWN0IGxpbWFfYm8geworCXN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCBiYXNlOworCisJc3Ry dWN0IG11dGV4IGxvY2s7CisJc3RydWN0IGxpc3RfaGVhZCB2YTsKK307CisKK3N0YXRpYyBpbmxp bmUgc3RydWN0IGxpbWFfYm8gKgordG9fbGltYV9ibyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aikKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHRvX2RybV9nZW1fc2htZW1fb2JqKG9iaiksIHN0 cnVjdCBsaW1hX2JvLCBiYXNlKTsKK30KKworc3RhdGljIGlubGluZSBzaXplX3QgbGltYV9ib19z aXplKHN0cnVjdCBsaW1hX2JvICpibykKK3sKKwlyZXR1cm4gYm8tPmJhc2UuYmFzZS5zaXplOwor fQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBkbWFfcmVzdiAqbGltYV9ib19yZXN2KHN0cnVjdCBs aW1hX2JvICpibykKK3sKKwlyZXR1cm4gYm8tPmJhc2UuYmFzZS5yZXN2OworfQogCi1zdHJ1Y3Qg bGltYV9ibyAqbGltYV9nZW1fY3JlYXRlX2JvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBz aXplLCB1MzIgZmxhZ3MpOworc3RydWN0IGRybV9nZW1fb2JqZWN0ICpsaW1hX2dlbV9jcmVhdGVf b2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKTsKIGludCBsaW1hX2dl bV9jcmVhdGVfaGFuZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSwKIAkJCSAgIHUzMiBzaXplLCB1MzIgZmxhZ3MsIHUzMiAqaGFuZGxlKTsKLXZvaWQgbGlt YV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwotaW50IGxpbWFf Z2VtX29iamVjdF9vcGVuKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGUpOwotdm9pZCBsaW1hX2dlbV9vYmplY3RfY2xvc2Uoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CiBpbnQgbGltYV9nZW1fZ2V0X2luZm8o c3RydWN0IGRybV9maWxlICpmaWxlLCB1MzIgaGFuZGxlLCB1MzIgKnZhLCB1NjQgKm9mZnNldCk7 Ci1pbnQgbGltYV9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEpOwogaW50IGxpbWFfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0 cnVjdCBsaW1hX3N1Ym1pdCAqc3VibWl0KTsKIGludCBsaW1hX2dlbV93YWl0KHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSwgdTMyIGhhbmRsZSwgdTMyIG9wLCBzNjQgdGltZW91dF9ucyk7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtX3ByaW1lLmMgYi9kcml2ZXJzL2dw dS9kcm0vbGltYS9saW1hX2dlbV9wcmltZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBlM2ViMjUxZTBhMTIuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9s aW1hX2dlbV9wcmltZS5jCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUCi0vKiBDb3B5cmlnaHQgMjAxOC0yMDE5 IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAqLwotCi0jaW5jbHVkZSA8bGludXgvZG1hLWJ1 Zi5oPgotI2luY2x1ZGUgPGRybS9kcm1fcHJpbWUuaD4KLSNpbmNsdWRlIDxkcm0vZHJtX2Rydi5o PgotI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5oPgotCi0jaW5jbHVkZSAibGltYV9kZXZpY2UuaCIK LSNpbmNsdWRlICJsaW1hX29iamVjdC5oIgotI2luY2x1ZGUgImxpbWFfZ2VtLmgiCi0jaW5jbHVk ZSAibGltYV9nZW1fcHJpbWUuaCIKLQotc3RydWN0IGRybV9nZW1fb2JqZWN0ICpsaW1hX2dlbV9w cmltZV9pbXBvcnRfc2dfdGFibGUoCi0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRt YV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAotCXN0cnVjdCBzZ190YWJsZSAqc2d0KQotewotCXN0 cnVjdCBsaW1hX2RldmljZSAqbGRldiA9IHRvX2xpbWFfZGV2KGRldik7Ci0Jc3RydWN0IGxpbWFf Ym8gKmJvOwotCi0JYm8gPSBsaW1hX2JvX2NyZWF0ZShsZGV2LCBhdHRhY2gtPmRtYWJ1Zi0+c2l6 ZSwgMCwgc2d0KTsKLQlpZiAoSVNfRVJSKGJvKSkKLQkJcmV0dXJuIEVSUl9DQVNUKGJvKTsKLQot CXJldHVybiAmYm8tPmdlbTsKLX0KLQotc3RydWN0IHNnX3RhYmxlICpsaW1hX2dlbV9wcmltZV9n ZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCi17Ci0Jc3RydWN0IGxpbWFf Ym8gKmJvID0gdG9fbGltYV9ibyhvYmopOwotCWludCBucGFnZXMgPSBvYmotPnNpemUgPj4gUEFH RV9TSElGVDsKLQotCXJldHVybiBkcm1fcHJpbWVfcGFnZXNfdG9fc2coYm8tPnBhZ2VzLCBucGFn ZXMpOwotfQotCi1pbnQgbGltYV9nZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCi17Ci0JaW50IHJldDsKLQotCXJldCA9 IGRybV9nZW1fbW1hcF9vYmoob2JqLCBvYmotPnNpemUsIHZtYSk7Ci0JaWYgKHJldCkKLQkJcmV0 dXJuIHJldDsKLQotCWxpbWFfc2V0X3ZtYV9mbGFncyh2bWEpOwotCXJldHVybiAwOwotfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW1fcHJpbWUuaCBiL2RyaXZlcnMv Z3B1L2RybS9saW1hL2xpbWFfZ2VtX3ByaW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDM0YjRkMzVjMjFlMy4uMDAwMDAwMDAwMDAwCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1h L2xpbWFfZ2VtX3ByaW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQgKi8KLS8qIENvcHlyaWdodCAyMDE4 LTIwMTkgUWlhbmcgWXUgPHl1cTgyNUBnbWFpbC5jb20+ICovCi0KLSNpZm5kZWYgX19MSU1BX0dF TV9QUklNRV9IX18KLSNkZWZpbmUgX19MSU1BX0dFTV9QUklNRV9IX18KLQotc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpsaW1hX2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoCi0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAotCXN0cnVjdCBz Z190YWJsZSAqc2d0KTsKLXN0cnVjdCBzZ190YWJsZSAqbGltYV9nZW1fcHJpbWVfZ2V0X3NnX3Rh YmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKLWludCBsaW1hX2dlbV9wcmltZV9tbWFw KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7 Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9tbXUuYyBi L2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfbW11LmMKaW5kZXggOGUxNjUxZDZhNjFmLi45N2Vj MDlkZWU1NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfbW11LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9tbXUuYwpAQCAtOCw3ICs4LDYgQEAKICNpbmNs dWRlICJsaW1hX2RldmljZS5oIgogI2luY2x1ZGUgImxpbWFfbW11LmgiCiAjaW5jbHVkZSAibGlt YV92bS5oIgotI2luY2x1ZGUgImxpbWFfb2JqZWN0LmgiCiAjaW5jbHVkZSAibGltYV9yZWdzLmgi CiAKICNkZWZpbmUgbW11X3dyaXRlKHJlZywgZGF0YSkgd3JpdGVsKGRhdGEsIGlwLT5pb21lbSAr IHJlZykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfb2JqZWN0LmMgYi9k cml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX29iamVjdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA4NzEyM2IxZDA4M2MuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bGltYS9saW1hX29iamVjdC5jCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1JVAotLyogQ29weXJpZ2h0IDIwMTgt MjAxOSBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4gKi8KLQotI2luY2x1ZGUgPGRybS9kcm1f cHJpbWUuaD4KLSNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+Ci0jaW5jbHVkZSA8bGludXgvZG1h LW1hcHBpbmcuaD4KLQotI2luY2x1ZGUgImxpbWFfb2JqZWN0LmgiCi0KLXZvaWQgbGltYV9ib19k ZXN0cm95KHN0cnVjdCBsaW1hX2JvICpibykKLXsKLQlpZiAoYm8tPnNndCkgewotCQlrZnJlZShi by0+cGFnZXMpOwotCQlkcm1fcHJpbWVfZ2VtX2Rlc3Ryb3koJmJvLT5nZW0sIGJvLT5zZ3QpOwot CX0gZWxzZSB7Ci0JCWlmIChiby0+cGFnZXNfZG1hX2FkZHIpIHsKLQkJCWludCBpLCBucGFnZXMg PSBiby0+Z2VtLnNpemUgPj4gUEFHRV9TSElGVDsKLQotCQkJZm9yIChpID0gMDsgaSA8IG5wYWdl czsgaSsrKSB7Ci0JCQkJaWYgKGJvLT5wYWdlc19kbWFfYWRkcltpXSkKLQkJCQkJZG1hX3VubWFw X3BhZ2UoYm8tPmdlbS5kZXYtPmRldiwKLQkJCQkJCSAgICAgICBiby0+cGFnZXNfZG1hX2FkZHJb aV0sCi0JCQkJCQkgICAgICAgUEFHRV9TSVpFLCBETUFfQklESVJFQ1RJT05BTCk7Ci0JCQl9Ci0J CX0KLQotCQlpZiAoYm8tPnBhZ2VzKQotCQkJZHJtX2dlbV9wdXRfcGFnZXMoJmJvLT5nZW0sIGJv LT5wYWdlcywgdHJ1ZSwgdHJ1ZSk7Ci0JfQotCi0Ja2ZyZWUoYm8tPnBhZ2VzX2RtYV9hZGRyKTsK LQlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKCZiby0+Z2VtKTsKLQlrZnJlZShibyk7Ci19Ci0KLXN0 YXRpYyBzdHJ1Y3QgbGltYV9ibyAqbGltYV9ib19jcmVhdGVfc3RydWN0KHN0cnVjdCBsaW1hX2Rl dmljZSAqZGV2LCB1MzIgc2l6ZSwgdTMyIGZsYWdzKQotewotCXN0cnVjdCBsaW1hX2JvICpibzsK LQlpbnQgZXJyOwotCi0Jc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7Ci0KLQlibyA9IGt6YWxsb2Mo c2l6ZW9mKCpibyksIEdGUF9LRVJORUwpOwotCWlmICghYm8pCi0JCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwotCi0JbXV0ZXhfaW5pdCgmYm8tPmxvY2spOwotCUlOSVRfTElTVF9IRUFEKCZiby0+ dmEpOwotCi0JZXJyID0gZHJtX2dlbV9vYmplY3RfaW5pdChkZXYtPmRkZXYsICZiby0+Z2VtLCBz aXplKTsKLQlpZiAoZXJyKSB7Ci0JCWtmcmVlKGJvKTsKLQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsK LQl9Ci0KLQlyZXR1cm4gYm87Ci19Ci0KLXN0cnVjdCBsaW1hX2JvICpsaW1hX2JvX2NyZWF0ZShz dHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgdTMyIHNpemUsCi0JCQkgICAgICAgdTMyIGZsYWdzLCBz dHJ1Y3Qgc2dfdGFibGUgKnNndCkKLXsKLQlpbnQgaSwgZXJyOwotCXNpemVfdCBucGFnZXM7Ci0J c3RydWN0IGxpbWFfYm8gKmJvLCAqcmV0OwotCi0JYm8gPSBsaW1hX2JvX2NyZWF0ZV9zdHJ1Y3Qo ZGV2LCBzaXplLCBmbGFncyk7Ci0JaWYgKElTX0VSUihibykpCi0JCXJldHVybiBibzsKLQotCW5w YWdlcyA9IGJvLT5nZW0uc2l6ZSA+PiBQQUdFX1NISUZUOwotCi0JYm8tPnBhZ2VzX2RtYV9hZGRy ID0ga2NhbGxvYyhucGFnZXMsIHNpemVvZihkbWFfYWRkcl90KSwgR0ZQX0tFUk5FTCk7Ci0JaWYg KCFiby0+cGFnZXNfZG1hX2FkZHIpIHsKLQkJcmV0ID0gRVJSX1BUUigtRU5PTUVNKTsKLQkJZ290 byBlcnJfb3V0OwotCX0KLQotCWlmIChzZ3QpIHsKLQkJYm8tPnNndCA9IHNndDsKLQotCQliby0+ cGFnZXMgPSBrY2FsbG9jKG5wYWdlcywgc2l6ZW9mKCpiby0+cGFnZXMpLCBHRlBfS0VSTkVMKTsK LQkJaWYgKCFiby0+cGFnZXMpIHsKLQkJCXJldCA9IEVSUl9QVFIoLUVOT01FTSk7Ci0JCQlnb3Rv IGVycl9vdXQ7Ci0JCX0KLQotCQllcnIgPSBkcm1fcHJpbWVfc2dfdG9fcGFnZV9hZGRyX2FycmF5 cygKLQkJCXNndCwgYm8tPnBhZ2VzLCBiby0+cGFnZXNfZG1hX2FkZHIsIG5wYWdlcyk7Ci0JCWlm IChlcnIpIHsKLQkJCXJldCA9IEVSUl9QVFIoZXJyKTsKLQkJCWdvdG8gZXJyX291dDsKLQkJfQot CX0gZWxzZSB7Ci0JCW1hcHBpbmdfc2V0X2dmcF9tYXNrKGJvLT5nZW0uZmlscC0+Zl9tYXBwaW5n LCBHRlBfRE1BMzIpOwotCQliby0+cGFnZXMgPSBkcm1fZ2VtX2dldF9wYWdlcygmYm8tPmdlbSk7 Ci0JCWlmIChJU19FUlIoYm8tPnBhZ2VzKSkgewotCQkJcmV0ID0gRVJSX0NBU1QoYm8tPnBhZ2Vz KTsKLQkJCWJvLT5wYWdlcyA9IE5VTEw7Ci0JCQlnb3RvIGVycl9vdXQ7Ci0JCX0KLQotCQlmb3Ig KGkgPSAwOyBpIDwgbnBhZ2VzOyBpKyspIHsKLQkJCWRtYV9hZGRyX3QgYWRkciA9IGRtYV9tYXBf cGFnZShkZXYtPmRldiwgYm8tPnBhZ2VzW2ldLCAwLAotCQkJCQkJICAgICAgIFBBR0VfU0laRSwg RE1BX0JJRElSRUNUSU9OQUwpOwotCQkJaWYgKGRtYV9tYXBwaW5nX2Vycm9yKGRldi0+ZGV2LCBh ZGRyKSkgewotCQkJCXJldCA9IEVSUl9QVFIoLUVGQVVMVCk7Ci0JCQkJZ290byBlcnJfb3V0Owot CQkJfQotCQkJYm8tPnBhZ2VzX2RtYV9hZGRyW2ldID0gYWRkcjsKLQkJfQotCi0JfQotCi0JcmV0 dXJuIGJvOwotCi1lcnJfb3V0OgotCWxpbWFfYm9fZGVzdHJveShibyk7Ci0JcmV0dXJuIHJldDsK LX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfb2JqZWN0LmggYi9kcml2 ZXJzL2dwdS9kcm0vbGltYS9saW1hX29iamVjdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAzMWNhMmQ4ZGMwYTEuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbGlt YS9saW1hX29iamVjdC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUICovCi0vKiBDb3B5cmlnaHQgMjAxOC0y MDE5IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29tPiAqLwotCi0jaWZuZGVmIF9fTElNQV9PQkpF Q1RfSF9fCi0jZGVmaW5lIF9fTElNQV9PQkpFQ1RfSF9fCi0KLSNpbmNsdWRlIDxkcm0vZHJtX2dl bS5oPgotCi0jaW5jbHVkZSAibGltYV9kZXZpY2UuaCIKLQotc3RydWN0IGxpbWFfYm8gewotCXN0 cnVjdCBkcm1fZ2VtX29iamVjdCBnZW07Ci0KLQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwotCWRtYV9h ZGRyX3QgKnBhZ2VzX2RtYV9hZGRyOwotCXN0cnVjdCBzZ190YWJsZSAqc2d0OwotCXZvaWQgKnZh ZGRyOwotCi0Jc3RydWN0IG11dGV4IGxvY2s7Ci0Jc3RydWN0IGxpc3RfaGVhZCB2YTsKLX07Ci0K LXN0YXRpYyBpbmxpbmUgc3RydWN0IGxpbWFfYm8gKgotdG9fbGltYV9ibyhzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaikKLXsKLQlyZXR1cm4gY29udGFpbmVyX29mKG9iaiwgc3RydWN0IGxpbWFf Ym8sIGdlbSk7Ci19Ci0KLXN0cnVjdCBsaW1hX2JvICpsaW1hX2JvX2NyZWF0ZShzdHJ1Y3QgbGlt YV9kZXZpY2UgKmRldiwgdTMyIHNpemUsCi0JCQkgICAgICAgdTMyIGZsYWdzLCBzdHJ1Y3Qgc2df dGFibGUgKnNndCk7Ci12b2lkIGxpbWFfYm9fZGVzdHJveShzdHJ1Y3QgbGltYV9ibyAqYm8pOwot dm9pZCAqbGltYV9ib192bWFwKHN0cnVjdCBsaW1hX2JvICpibyk7Ci12b2lkIGxpbWFfYm9fdnVu bWFwKHN0cnVjdCBsaW1hX2JvICpibyk7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hl ZC5jCmluZGV4IDQxMjdjYWNhYzQ1NC4uZjUyMmM1Zjk5NzI5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbGltYS9saW1hX3NjaGVkLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGlt YV9zY2hlZC5jCkBAIC0xMCw3ICsxMCw3IEBACiAjaW5jbHVkZSAibGltYV92bS5oIgogI2luY2x1 ZGUgImxpbWFfbW11LmgiCiAjaW5jbHVkZSAibGltYV9sMl9jYWNoZS5oIgotI2luY2x1ZGUgImxp bWFfb2JqZWN0LmgiCisjaW5jbHVkZSAibGltYV9nZW0uaCIKIAogc3RydWN0IGxpbWFfZmVuY2Ug ewogCXN0cnVjdCBkbWFfZmVuY2UgYmFzZTsKQEAgLTExNyw3ICsxMTcsNyBAQCBpbnQgbGltYV9z Y2hlZF90YXNrX2luaXQoc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzaywKIAkJcmV0dXJuIC1F Tk9NRU07CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2JvczsgaSsrKQotCQlkcm1fZ2VtX29iamVj dF9nZXQoJmJvc1tpXS0+Z2VtKTsKKwkJZHJtX2dlbV9vYmplY3RfZ2V0KCZib3NbaV0tPmJhc2Uu YmFzZSk7CiAKIAllcnIgPSBkcm1fc2NoZWRfam9iX2luaXQoJnRhc2stPmJhc2UsICZjb250ZXh0 LT5iYXNlLCB2bSk7CiAJaWYgKGVycikgewpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgbGltYV9z Y2hlZF90YXNrX2Zpbmkoc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzaykKIAogCWlmICh0YXNr LT5ib3MpIHsKIAkJZm9yIChpID0gMDsgaSA8IHRhc2stPm51bV9ib3M7IGkrKykKLQkJCWRybV9n ZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgmdGFzay0+Ym9zW2ldLT5nZW0pOworCQkJZHJtX2dlbV9v YmplY3RfcHV0X3VubG9ja2VkKCZ0YXNrLT5ib3NbaV0tPmJhc2UuYmFzZSk7CiAJCWtmcmVlKHRh c2stPmJvcyk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3Zt LmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3ZtLmMKaW5kZXggMTllODhjYTE2NTI3Li44 ZTY5YzQ1NDBlOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfdm0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3ZtLmMKQEAgLTYsNyArNiw3IEBACiAKICNp bmNsdWRlICJsaW1hX2RldmljZS5oIgogI2luY2x1ZGUgImxpbWFfdm0uaCIKLSNpbmNsdWRlICJs aW1hX29iamVjdC5oIgorI2luY2x1ZGUgImxpbWFfZ2VtLmgiCiAjaW5jbHVkZSAibGltYV9yZWdz LmgiCiAKIHN0cnVjdCBsaW1hX2JvX3ZhIHsKQEAgLTMyLDcgKzMyLDcgQEAgc3RydWN0IGxpbWFf Ym9fdmEgewogI2RlZmluZSBMSU1BX0JURSh2YSkgKCh2YSAmIExJTUFfVk1fQlRfTUFTSykgPj4g TElNQV9WTV9CVF9TSElGVCkKIAogCi1zdGF0aWMgdm9pZCBsaW1hX3ZtX3VubWFwX3BhZ2VfdGFi bGUoc3RydWN0IGxpbWFfdm0gKnZtLCB1MzIgc3RhcnQsIHUzMiBlbmQpCitzdGF0aWMgdm9pZCBs aW1hX3ZtX3VubWFwX3JhbmdlKHN0cnVjdCBsaW1hX3ZtICp2bSwgdTMyIHN0YXJ0LCB1MzIgZW5k KQogewogCXUzMiBhZGRyOwogCkBAIC00NCw0MSArNDQsMzIgQEAgc3RhdGljIHZvaWQgbGltYV92 bV91bm1hcF9wYWdlX3RhYmxlKHN0cnVjdCBsaW1hX3ZtICp2bSwgdTMyIHN0YXJ0LCB1MzIgZW5k KQogCX0KIH0KIAotc3RhdGljIGludCBsaW1hX3ZtX21hcF9wYWdlX3RhYmxlKHN0cnVjdCBsaW1h X3ZtICp2bSwgZG1hX2FkZHJfdCAqZG1hLAotCQkJCSAgdTMyIHN0YXJ0LCB1MzIgZW5kKQorc3Rh dGljIGludCBsaW1hX3ZtX21hcF9wYWdlKHN0cnVjdCBsaW1hX3ZtICp2bSwgZG1hX2FkZHJfdCBw YSwgdTMyIHZhKQogewotCXU2NCBhZGRyOwotCWludCBpID0gMDsKLQotCWZvciAoYWRkciA9IHN0 YXJ0OyBhZGRyIDw9IGVuZDsgYWRkciArPSBMSU1BX1BBR0VfU0laRSkgewotCQl1MzIgcGJlID0g TElNQV9QQkUoYWRkcik7Ci0JCXUzMiBidGUgPSBMSU1BX0JURShhZGRyKTsKLQotCQlpZiAoIXZt LT5idHNbcGJlXS5jcHUpIHsKLQkJCWRtYV9hZGRyX3QgcHRzOwotCQkJdTMyICpwZDsKLQkJCWlu dCBqOwotCi0JCQl2bS0+YnRzW3BiZV0uY3B1ID0gZG1hX2FsbG9jX3djKAotCQkJCXZtLT5kZXYt PmRldiwgTElNQV9QQUdFX1NJWkUgPDwgTElNQV9WTV9OVU1fUFRfUEVSX0JUX1NISUZULAotCQkJ CSZ2bS0+YnRzW3BiZV0uZG1hLCBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7Ci0JCQlpZiAoIXZt LT5idHNbcGJlXS5jcHUpIHsKLQkJCQlpZiAoYWRkciAhPSBzdGFydCkKLQkJCQkJbGltYV92bV91 bm1hcF9wYWdlX3RhYmxlKHZtLCBzdGFydCwgYWRkciAtIDEpOwotCQkJCXJldHVybiAtRU5PTUVN OwotCQkJfQotCi0JCQlwdHMgPSB2bS0+YnRzW3BiZV0uZG1hOwotCQkJcGQgPSB2bS0+cGQuY3B1 ICsgKHBiZSA8PCBMSU1BX1ZNX05VTV9QVF9QRVJfQlRfU0hJRlQpOwotCQkJZm9yIChqID0gMDsg aiA8IExJTUFfVk1fTlVNX1BUX1BFUl9CVDsgaisrKSB7Ci0JCQkJcGRbal0gPSBwdHMgfCBMSU1B X1ZNX0ZMQUdfUFJFU0VOVDsKLQkJCQlwdHMgKz0gTElNQV9QQUdFX1NJWkU7Ci0JCQl9CisJdTMy IHBiZSA9IExJTUFfUEJFKHZhKTsKKwl1MzIgYnRlID0gTElNQV9CVEUodmEpOworCisJaWYgKCF2 bS0+YnRzW3BiZV0uY3B1KSB7CisJCWRtYV9hZGRyX3QgcHRzOworCQl1MzIgKnBkOworCQlpbnQg ajsKKworCQl2bS0+YnRzW3BiZV0uY3B1ID0gZG1hX2FsbG9jX3djKAorCQkJdm0tPmRldi0+ZGV2 LCBMSU1BX1BBR0VfU0laRSA8PCBMSU1BX1ZNX05VTV9QVF9QRVJfQlRfU0hJRlQsCisJCQkmdm0t PmJ0c1twYmVdLmRtYSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pOworCQlpZiAoIXZtLT5idHNb cGJlXS5jcHUpCisJCQlyZXR1cm4gLUVOT01FTTsKKworCQlwdHMgPSB2bS0+YnRzW3BiZV0uZG1h OworCQlwZCA9IHZtLT5wZC5jcHUgKyAocGJlIDw8IExJTUFfVk1fTlVNX1BUX1BFUl9CVF9TSElG VCk7CisJCWZvciAoaiA9IDA7IGogPCBMSU1BX1ZNX05VTV9QVF9QRVJfQlQ7IGorKykgeworCQkJ cGRbal0gPSBwdHMgfCBMSU1BX1ZNX0ZMQUdfUFJFU0VOVDsKKwkJCXB0cyArPSBMSU1BX1BBR0Vf U0laRTsKIAkJfQotCi0JCXZtLT5idHNbcGJlXS5jcHVbYnRlXSA9IGRtYVtpKytdIHwgTElNQV9W TV9GTEFHU19DQUNIRTsKIAl9CiAKKwl2bS0+YnRzW3BiZV0uY3B1W2J0ZV0gPSBwYSB8IExJTUFf Vk1fRkxBR1NfQ0FDSEU7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTAwLDcgKzkxLDggQEAgbGlt YV92bV9ib19maW5kKHN0cnVjdCBsaW1hX3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvKQogaW50 IGxpbWFfdm1fYm9fYWRkKHN0cnVjdCBsaW1hX3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvLCBi b29sIGNyZWF0ZSkKIHsKIAlzdHJ1Y3QgbGltYV9ib192YSAqYm9fdmE7Ci0JaW50IGVycjsKKwlz dHJ1Y3Qgc2dfZG1hX3BhZ2VfaXRlciBzZ19pdGVyOworCWludCBvZmZzZXQgPSAwLCBlcnI7CiAK IAltdXRleF9sb2NrKCZiby0+bG9jayk7CiAKQEAgLTEyOCwxNCArMTIwLDE4IEBAIGludCBsaW1h X3ZtX2JvX2FkZChzdHJ1Y3QgbGltYV92bSAqdm0sIHN0cnVjdCBsaW1hX2JvICpibywgYm9vbCBj cmVhdGUpCiAKIAltdXRleF9sb2NrKCZ2bS0+bG9jayk7CiAKLQllcnIgPSBkcm1fbW1faW5zZXJ0 X25vZGUoJnZtLT5tbSwgJmJvX3ZhLT5ub2RlLCBiby0+Z2VtLnNpemUpOworCWVyciA9IGRybV9t bV9pbnNlcnRfbm9kZSgmdm0tPm1tLCAmYm9fdmEtPm5vZGUsIGxpbWFfYm9fc2l6ZShibykpOwog CWlmIChlcnIpCiAJCWdvdG8gZXJyX291dDE7CiAKLQllcnIgPSBsaW1hX3ZtX21hcF9wYWdlX3Rh YmxlKHZtLCBiby0+cGFnZXNfZG1hX2FkZHIsIGJvX3ZhLT5ub2RlLnN0YXJ0LAotCQkJCSAgICAg Ym9fdmEtPm5vZGUuc3RhcnQgKyBib192YS0+bm9kZS5zaXplIC0gMSk7Ci0JaWYgKGVycikKLQkJ Z290byBlcnJfb3V0MjsKKwlmb3JfZWFjaF9zZ19kbWFfcGFnZShiby0+YmFzZS5zZ3QtPnNnbCwg JnNnX2l0ZXIsIGJvLT5iYXNlLnNndC0+bmVudHMsIDApIHsKKwkJZXJyID0gbGltYV92bV9tYXBf cGFnZSh2bSwgc2dfcGFnZV9pdGVyX2RtYV9hZGRyZXNzKCZzZ19pdGVyKSwKKwkJCQkgICAgICAg Ym9fdmEtPm5vZGUuc3RhcnQgKyBvZmZzZXQpOworCQlpZiAoZXJyKQorCQkJZ290byBlcnJfb3V0 MjsKKworCQlvZmZzZXQgKz0gUEFHRV9TSVpFOworCX0KIAogCW11dGV4X3VubG9jaygmdm0tPmxv Y2spOwogCkBAIC0xNDUsNiArMTQxLDggQEAgaW50IGxpbWFfdm1fYm9fYWRkKHN0cnVjdCBsaW1h X3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvLCBib29sIGNyZWF0ZSkKIAlyZXR1cm4gMDsKIAog ZXJyX291dDI6CisJaWYgKG9mZnNldCkKKwkJbGltYV92bV91bm1hcF9yYW5nZSh2bSwgYm9fdmEt Pm5vZGUuc3RhcnQsIGJvX3ZhLT5ub2RlLnN0YXJ0ICsgb2Zmc2V0IC0gMSk7CiAJZHJtX21tX3Jl bW92ZV9ub2RlKCZib192YS0+bm9kZSk7CiBlcnJfb3V0MToKIAltdXRleF91bmxvY2soJnZtLT5s b2NrKTsKQEAgLTE2OCw4ICsxNjYsOCBAQCB2b2lkIGxpbWFfdm1fYm9fZGVsKHN0cnVjdCBsaW1h X3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvKQogCiAJbXV0ZXhfbG9jaygmdm0tPmxvY2spOwog Ci0JbGltYV92bV91bm1hcF9wYWdlX3RhYmxlKHZtLCBib192YS0+bm9kZS5zdGFydCwKLQkJCQkg Ym9fdmEtPm5vZGUuc3RhcnQgKyBib192YS0+bm9kZS5zaXplIC0gMSk7CisJbGltYV92bV91bm1h cF9yYW5nZSh2bSwgYm9fdmEtPm5vZGUuc3RhcnQsCisJCQkgICAgYm9fdmEtPm5vZGUuc3RhcnQg KyBib192YS0+bm9kZS5zaXplIC0gMSk7CiAKIAlkcm1fbW1fcmVtb3ZlX25vZGUoJmJvX3ZhLT5u b2RlKTsKIApAQCAtMjE1LDkgKzIxMyw4IEBAIHN0cnVjdCBsaW1hX3ZtICpsaW1hX3ZtX2NyZWF0 ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldikKIAkJZ290byBlcnJfb3V0MDsKIAogCWlmIChkZXYt PmRsYnVfY3B1KSB7Ci0JCWludCBlcnIgPSBsaW1hX3ZtX21hcF9wYWdlX3RhYmxlKAotCQkJdm0s ICZkZXYtPmRsYnVfZG1hLCBMSU1BX1ZBX1JFU0VSVkVfRExCVSwKLQkJCUxJTUFfVkFfUkVTRVJW RV9ETEJVICsgTElNQV9QQUdFX1NJWkUgLSAxKTsKKwkJaW50IGVyciA9IGxpbWFfdm1fbWFwX3Bh Z2UoCisJCQl2bSwgZGV2LT5kbGJ1X2RtYSwgTElNQV9WQV9SRVNFUlZFX0RMQlUpOwogCQlpZiAo ZXJyKQogCQkJZ290byBlcnJfb3V0MTsKIAl9Ci0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==