From mboxrd@z Thu Jan 1 00:00:00 1970 From: jglisse@redhat.com Subject: [PATCH v2 1/3] mm/mmu_notifier: use structure for invalidate_range_start/end callback Date: Wed, 5 Dec 2018 00:36:26 -0500 Message-ID: <20181205053628.3210-2-jglisse@redhat.com> References: <20181205053628.3210-1-jglisse@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id F1DE06E358 for ; Wed, 5 Dec 2018 05:37:08 +0000 (UTC) In-Reply-To: <20181205053628.3210-1-jglisse@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-mm@kvack.org Cc: Ralph Campbell , Jan Kara , kvm@vger.kernel.org, Matthew Wilcox , linux-rdma@vger.kernel.org, John Hubbard , Felix Kuehling , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Michal Hocko , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Christian Koenig , Ross Zwisler , linux-fsdevel@vger.kernel.org, Paolo Bonzini , Andrew Morton , Dan Williams List-Id: dri-devel@lists.freedesktop.org RnJvbTogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+CgpUbyBhdm9pZCBoYXZp bmcgdG8gY2hhbmdlIG1hbnkgY2FsbGJhY2sgZGVmaW5pdGlvbiBldmVyeXRpbWUgd2Ugd2FudAp0 byBhZGQgYSBwYXJhbWV0ZXIgdXNlIGEgc3RydWN0dXJlIHRvIGdyb3VwIGFsbCBwYXJhbWV0ZXJz IGZvciB0aGUKbW11X25vdGlmaWVyIGludmFsaWRhdGVfcmFuZ2Vfc3RhcnQvZW5kIGNhbGxiYWNr LiBObyBmdW5jdGlvbmFsIGNoYW5nZXMKd2l0aCB0aGlzIHBhdGNoLgoKU2lnbmVkLW9mZi1ieTog SsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+CkNjOiBBbmRyZXcgTW9ydG9uIDxh a3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgpDYzogTWF0dGhldyBXaWxjb3ggPG1hd2lsY294QG1p Y3Jvc29mdC5jb20+CkNjOiBSb3NzIFp3aXNsZXIgPHp3aXNsZXJAa2VybmVsLm9yZz4KQ2M6IEph biBLYXJhIDxqYWNrQHN1c2UuY3o+CkNjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGlu dGVsLmNvbT4KQ2M6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CkNjOiBSYWRp bSBLcsSNbcOhxZkgPHJrcmNtYXJAcmVkaGF0LmNvbT4KQ2M6IE1pY2hhbCBIb2NrbyA8bWhvY2tv QGtlcm5lbC5vcmc+CkNjOiBDaHJpc3RpYW4gS29lbmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5j b20+CkNjOiBGZWxpeCBLdWVobGluZyA8ZmVsaXgua3VlaGxpbmdAYW1kLmNvbT4KQ2M6IFJhbHBo IENhbXBiZWxsIDxyY2FtcGJlbGxAbnZpZGlhLmNvbT4KQ2M6IEpvaG4gSHViYmFyZCA8amh1YmJh cmRAbnZpZGlhLmNvbT4KQ2M6IGt2bUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IGRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKQ2M6IGxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51 eC1mc2RldmVsQHZnZXIua2VybmVsLm9yZwotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9tbi5jICB8IDQzICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyB8IDE0ICsrKystLS0tCiBkcml2ZXJzL2dwdS9k cm0vcmFkZW9uL3JhZGVvbl9tbi5jICAgICAgfCAxNiArKysrLS0tLS0KIGRyaXZlcnMvaW5maW5p YmFuZC9jb3JlL3VtZW1fb2RwLmMgICAgICB8IDIwICsrKysrLS0tLS0tLQogZHJpdmVycy9pbmZp bmliYW5kL2h3L2hmaTEvbW11X3JiLmMgICAgIHwgMTMgKysrLS0tLS0KIGRyaXZlcnMvbWlzYy9t aWMvc2NpZi9zY2lmX2RtYS5jICAgICAgICB8IDExICsrLS0tLS0KIGRyaXZlcnMvbWlzYy9zZ2kt Z3J1L2dydXRsYnB1cmdlLmMgICAgICB8IDE0ICsrKystLS0tCiBkcml2ZXJzL3hlbi9nbnRkZXYu YyAgICAgICAgICAgICAgICAgICAgfCAxMiArKystLS0tCiBpbmNsdWRlL2xpbnV4L21tdV9ub3Rp Zmllci5oICAgICAgICAgICAgfCAxNCArKysrKy0tLQogbW0vaG1tLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMjMgKysrKysrLS0tLS0tLQogbW0vbW11X25vdGlmaWVyLmMgICAg ICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKysrKysrKy0tCiB2aXJ0L2t2bS9rdm1fbWFpbi5j ICAgICAgICAgICAgICAgICAgICAgfCAxNCArKystLS0tLQogMTIgZmlsZXMgY2hhbmdlZCwgMTAy IGluc2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9tbi5jCmluZGV4IGU1NTUwOGIzOTQ5Ni4uNWJjN2U1OWEwNWExIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYworKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYwpAQCAtMjQ2LDM2ICsyNDYsMzQgQEAgc3RhdGlj IHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZShzdHJ1Y3QgYW1kZ3B1X21uX25vZGUgKm5v ZGUsCiAgKiBwb3RlbnRpYWxseSBkaXJ0eS4KICAqLwogc3RhdGljIGludCBhbWRncHVfbW5faW52 YWxpZGF0ZV9yYW5nZV9zdGFydF9nZngoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCi0JCQkJCQkg c3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJCQkgdW5zaWduZWQgbG9uZyBzdGFydCwKLQkJCQkJ CSB1bnNpZ25lZCBsb25nIGVuZCwKLQkJCQkJCSBib29sIGJsb2NrYWJsZSkKKwkJCWNvbnN0IHN0 cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQogewogCXN0cnVjdCBhbWRncHVfbW4gKmFt biA9IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwgbW4pOwogCXN0cnVjdCBpbnRl cnZhbF90cmVlX25vZGUgKml0OworCXVuc2lnbmVkIGxvbmcgZW5kOwogCiAJLyogbm90aWZpY2F0 aW9uIGlzIGV4Y2x1c2l2ZSwgYnV0IGludGVydmFsIGlzIGluY2x1c2l2ZSAqLwotCWVuZCAtPSAx OworCWVuZCA9IHJhbmdlLT5lbmQgLSAxOwogCiAJLyogVE9ETyB3ZSBzaG91bGQgYmUgYWJsZSB0 byBzcGxpdCBsb2NraW5nIGZvciBpbnRlcnZhbCB0cmVlIGFuZAogCSAqIGFtZGdwdV9tbl9pbnZh bGlkYXRlX25vZGUKIAkgKi8KLQlpZiAoYW1kZ3B1X21uX3JlYWRfbG9jayhhbW4sIGJsb2NrYWJs ZSkpCisJaWYgKGFtZGdwdV9tbl9yZWFkX2xvY2soYW1uLCByYW5nZS0+YmxvY2thYmxlKSkKIAkJ cmV0dXJuIC1FQUdBSU47CiAKLQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1uLT5v YmplY3RzLCBzdGFydCwgZW5kKTsKKwlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1u LT5vYmplY3RzLCByYW5nZS0+c3RhcnQsIGVuZCk7CiAJd2hpbGUgKGl0KSB7CiAJCXN0cnVjdCBh bWRncHVfbW5fbm9kZSAqbm9kZTsKIAotCQlpZiAoIWJsb2NrYWJsZSkgeworCQlpZiAoIXJhbmdl LT5ibG9ja2FibGUpIHsKIAkJCWFtZGdwdV9tbl9yZWFkX3VubG9jayhhbW4pOwogCQkJcmV0dXJu IC1FQUdBSU47CiAJCX0KIAogCQlub2RlID0gY29udGFpbmVyX29mKGl0LCBzdHJ1Y3QgYW1kZ3B1 X21uX25vZGUsIGl0KTsKLQkJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfbmV4dChpdCwgc3RhcnQs IGVuZCk7CisJCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQsIHJhbmdlLT5zdGFydCwg ZW5kKTsKIAotCQlhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKG5vZGUsIHN0YXJ0LCBlbmQpOwor CQlhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKG5vZGUsIHJhbmdlLT5zdGFydCwgZW5kKTsKIAl9 CiAKIAlyZXR1cm4gMDsKQEAgLTI5NCwzOSArMjkyLDM4IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X21u X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfZ2Z4KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAogICog YXJlIHJlc3RvcnRlZCBpbiBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmRfaHNhLgogICov CiBzdGF0aWMgaW50IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2hzYShzdHJ1Y3Qg bW11X25vdGlmaWVyICptbiwKLQkJCQkJCSBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKLQkJCQkJCSB1 bnNpZ25lZCBsb25nIHN0YXJ0LAotCQkJCQkJIHVuc2lnbmVkIGxvbmcgZW5kLAotCQkJCQkJIGJv b2wgYmxvY2thYmxlKQorCQkJY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2Up CiB7CiAJc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgYW1k Z3B1X21uLCBtbik7CiAJc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7CisJdW5zaWduZWQg bG9uZyBlbmQ7CiAKIAkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50ZXJ2YWwg aXMgaW5jbHVzaXZlICovCi0JZW5kIC09IDE7CisJZW5kID0gcmFuZ2UtPmVuZCAtIDE7CiAKLQlp ZiAoYW1kZ3B1X21uX3JlYWRfbG9jayhhbW4sIGJsb2NrYWJsZSkpCisJaWYgKGFtZGdwdV9tbl9y ZWFkX2xvY2soYW1uLCByYW5nZS0+YmxvY2thYmxlKSkKIAkJcmV0dXJuIC1FQUdBSU47CiAKLQlp dCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1uLT5vYmplY3RzLCBzdGFydCwgZW5kKTsK KwlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1uLT5vYmplY3RzLCByYW5nZS0+c3Rh cnQsIGVuZCk7CiAJd2hpbGUgKGl0KSB7CiAJCXN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZTsK IAkJc3RydWN0IGFtZGdwdV9ibyAqYm87CiAKLQkJaWYgKCFibG9ja2FibGUpIHsKKwkJaWYgKCFy YW5nZS0+YmxvY2thYmxlKSB7CiAJCQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsKIAkJCXJl dHVybiAtRUFHQUlOOwogCQl9CiAKIAkJbm9kZSA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGFt ZGdwdV9tbl9ub2RlLCBpdCk7Ci0JCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQsIHN0 YXJ0LCBlbmQpOworCQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9uZXh0KGl0LCByYW5nZS0+c3Rh cnQsIGVuZCk7CiAKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShibywgJm5vZGUtPmJvcywgbW5fbGlz dCkgewogCQkJc3RydWN0IGtnZF9tZW0gKm1lbSA9IGJvLT5rZmRfYm87CiAKIAkJCWlmIChhbWRn cHVfdHRtX3R0X2FmZmVjdF91c2VycHRyKGJvLT50Ym8udHRtLAotCQkJCQkJCSBzdGFydCwgZW5k KSkKLQkJCQlhbWRncHVfYW1ka2ZkX2V2aWN0X3VzZXJwdHIobWVtLCBtbSk7CisJCQkJCQkJIHJh bmdlLT5zdGFydCwKKwkJCQkJCQkgZW5kKSkKKwkJCQlhbWRncHVfYW1ka2ZkX2V2aWN0X3VzZXJw dHIobWVtLCByYW5nZS0+bW0pOwogCQl9CiAJfQogCkBAIC0zNDQsOSArMzQxLDcgQEAgc3RhdGlj IGludCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9oc2Eoc3RydWN0IG1tdV9ub3Rp ZmllciAqbW4sCiAgKiBSZWxlYXNlIHRoZSBsb2NrIGFnYWluIHRvIGFsbG93IG5ldyBjb21tYW5k IHN1Ym1pc3Npb25zLgogICovCiBzdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5n ZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCi0JCQkJCSAgIHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tLAotCQkJCQkgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAotCQkJCQkgICB1bnNpZ25lZCBsb25n IGVuZCkKKwkJCWNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQogewogCXN0 cnVjdCBhbWRncHVfbW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwg bW4pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKaW5kZXggMmM5YjI4 NDAzNmQxLi4zZGY3NzAyMGFhZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3VzZXJwdHIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2Vy cHRyLmMKQEAgLTExMywyNyArMTEzLDI1IEBAIHN0YXRpYyB2b2lkIGRlbF9vYmplY3Qoc3RydWN0 IGk5MTVfbW11X29iamVjdCAqbW8pCiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9nZW1fdXNlcnB0cl9t bl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9tbiwKLQkJCQkJ CSAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKLQkJCQkJCSAgICAgICB1bnNpZ25lZCBsb25n IHN0YXJ0LAotCQkJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kLAotCQkJCQkJICAgICAgIGJv b2wgYmxvY2thYmxlKQorCQkJY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2Up CiB7CiAJc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbiA9CiAJCWNvbnRhaW5lcl9vZihfbW4s IHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciwgbW4pOwogCXN0cnVjdCBpOTE1X21tdV9vYmplY3Qg Km1vOwogCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKml0OwogCUxJU1RfSEVBRChjYW5jZWxs ZWQpOworCXVuc2lnbmVkIGxvbmcgZW5kOwogCiAJaWYgKFJCX0VNUFRZX1JPT1QoJm1uLT5vYmpl Y3RzLnJiX3Jvb3QpKQogCQlyZXR1cm4gMDsKIAogCS8qIGludGVydmFsIHJhbmdlcyBhcmUgaW5j bHVzaXZlLCBidXQgaW52YWxpZGF0ZSByYW5nZSBpcyBleGNsdXNpdmUgKi8KLQllbmQtLTsKKwll bmQgPSByYW5nZS0+ZW5kIC0gMTsKIAogCXNwaW5fbG9jaygmbW4tPmxvY2spOwotCWl0ID0gaW50 ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZtbi0+b2JqZWN0cywgc3RhcnQsIGVuZCk7CisJaXQgPSBp bnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QoJm1uLT5vYmplY3RzLCByYW5nZS0+c3RhcnQsIGVuZCk7 CiAJd2hpbGUgKGl0KSB7Ci0JCWlmICghYmxvY2thYmxlKSB7CisJCWlmICghcmFuZ2UtPmJsb2Nr YWJsZSkgewogCQkJc3Bpbl91bmxvY2soJm1uLT5sb2NrKTsKIAkJCXJldHVybiAtRUFHQUlOOwog CQl9CkBAIC0xNTEsNyArMTQ5LDcgQEAgc3RhdGljIGludCBpOTE1X2dlbV91c2VycHRyX21uX2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqX21uLAogCQkJcXVldWVf d29yayhtbi0+d3EsICZtby0+d29yayk7CiAKIAkJbGlzdF9hZGQoJm1vLT5saW5rLCAmY2FuY2Vs bGVkKTsKLQkJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfbmV4dChpdCwgc3RhcnQsIGVuZCk7CisJ CWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQsIHJhbmdlLT5zdGFydCwgZW5kKTsKIAl9 CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShtbywgJmNhbmNlbGxlZCwgbGluaykKIAkJZGVsX29iamVj dChtbyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYwppbmRleCBmOGIzNWRmNDRjNjAuLmIz MDE5NTA1MDY1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jCkBAIC0xMTksNDAgKzEx OSwzOCBAQCBzdGF0aWMgdm9pZCByYWRlb25fbW5fcmVsZWFzZShzdHJ1Y3QgbW11X25vdGlmaWVy ICptbiwKICAqIHVubWFwIHRoZW0gYnkgbW92ZSB0aGVtIGludG8gc3lzdGVtIGRvbWFpbiBhZ2Fp bi4KICAqLwogc3RhdGljIGludCByYWRlb25fbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1 Y3QgbW11X25vdGlmaWVyICptbiwKLQkJCQkJICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKLQkJ CQkJICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAotCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgZW5k LAotCQkJCQkgICAgIGJvb2wgYmxvY2thYmxlKQorCQkJCWNvbnN0IHN0cnVjdCBtbXVfbm90aWZp ZXJfcmFuZ2UgKnJhbmdlKQogewogCXN0cnVjdCByYWRlb25fbW4gKnJtbiA9IGNvbnRhaW5lcl9v Zihtbiwgc3RydWN0IHJhZGVvbl9tbiwgbW4pOwogCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBj dHggPSB7IGZhbHNlLCBmYWxzZSB9OwogCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKml0Owor CXVuc2lnbmVkIGxvbmcgZW5kOwogCWludCByZXQgPSAwOwogCiAJLyogbm90aWZpY2F0aW9uIGlz IGV4Y2x1c2l2ZSwgYnV0IGludGVydmFsIGlzIGluY2x1c2l2ZSAqLwotCWVuZCAtPSAxOworCWVu ZCA9IHJhbmdlLT5lbmQgLSAxOwogCiAJLyogVE9ETyB3ZSBzaG91bGQgYmUgYWJsZSB0byBzcGxp dCBsb2NraW5nIGZvciBpbnRlcnZhbCB0cmVlIGFuZAogCSAqIHRoZSB0ZWFyIGRvd24uCiAJICov Ci0JaWYgKGJsb2NrYWJsZSkKKwlpZiAocmFuZ2UtPmJsb2NrYWJsZSkKIAkJbXV0ZXhfbG9jaygm cm1uLT5sb2NrKTsKIAllbHNlIGlmICghbXV0ZXhfdHJ5bG9jaygmcm1uLT5sb2NrKSkKIAkJcmV0 dXJuIC1FQUdBSU47CiAKLQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmcm1uLT5vYmpl Y3RzLCBzdGFydCwgZW5kKTsKKwlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmcm1uLT5v YmplY3RzLCByYW5nZS0+c3RhcnQsIGVuZCk7CiAJd2hpbGUgKGl0KSB7CiAJCXN0cnVjdCByYWRl b25fbW5fbm9kZSAqbm9kZTsKIAkJc3RydWN0IHJhZGVvbl9ibyAqYm87CiAJCWxvbmcgcjsKIAot CQlpZiAoIWJsb2NrYWJsZSkgeworCQlpZiAoIXJhbmdlLT5ibG9ja2FibGUpIHsKIAkJCXJldCA9 IC1FQUdBSU47CiAJCQlnb3RvIG91dF91bmxvY2s7CiAJCX0KIAogCQlub2RlID0gY29udGFpbmVy X29mKGl0LCBzdHJ1Y3QgcmFkZW9uX21uX25vZGUsIGl0KTsKLQkJaXQgPSBpbnRlcnZhbF90cmVl X2l0ZXJfbmV4dChpdCwgc3RhcnQsIGVuZCk7CisJCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25l eHQoaXQsIHJhbmdlLT5zdGFydCwgZW5kKTsKIAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvLCAm bm9kZS0+Ym9zLCBtbl9saXN0KSB7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9j b3JlL3VtZW1fb2RwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29kcC5jCmluZGV4 IDY3NmMxZmQxMTE5ZC4uMjVkYjZmZjY4YzcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJh bmQvY29yZS91bWVtX29kcC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2Rw LmMKQEAgLTE0NiwxNSArMTQ2LDEyIEBAIHN0YXRpYyBpbnQgaW52YWxpZGF0ZV9yYW5nZV9zdGFy dF90cmFtcG9saW5lKHN0cnVjdCBpYl91bWVtX29kcCAqaXRlbSwKIH0KIAogc3RhdGljIGludCBp Yl91bWVtX25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmll ciAqbW4sCi0JCQkJCQkgICAgc3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJCQkgICAgdW5zaWdu ZWQgbG9uZyBzdGFydCwKLQkJCQkJCSAgICB1bnNpZ25lZCBsb25nIGVuZCwKLQkJCQkJCSAgICBi b29sIGJsb2NrYWJsZSkKKwkJCQljb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5n ZSkKIHsKIAlzdHJ1Y3QgaWJfdWNvbnRleHRfcGVyX21tICpwZXJfbW0gPQogCQljb250YWluZXJf b2YobW4sIHN0cnVjdCBpYl91Y29udGV4dF9wZXJfbW0sIG1uKTsKIAotCWlmIChibG9ja2FibGUp CisJaWYgKHJhbmdlLT5ibG9ja2FibGUpCiAJCWRvd25fcmVhZCgmcGVyX21tLT51bWVtX3J3c2Vt KTsKIAllbHNlIGlmICghZG93bl9yZWFkX3RyeWxvY2soJnBlcl9tbS0+dW1lbV9yd3NlbSkpCiAJ CXJldHVybiAtRUFHQUlOOwpAQCAtMTY5LDkgKzE2NiwxMCBAQCBzdGF0aWMgaW50IGliX3VtZW1f bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwK IAkJcmV0dXJuIDA7CiAJfQogCi0JcmV0dXJuIHJidF9pYl91bWVtX2Zvcl9lYWNoX2luX3Jhbmdl KCZwZXJfbW0tPnVtZW1fdHJlZSwgc3RhcnQsIGVuZCwKKwlyZXR1cm4gcmJ0X2liX3VtZW1fZm9y X2VhY2hfaW5fcmFuZ2UoJnBlcl9tbS0+dW1lbV90cmVlLCByYW5nZS0+c3RhcnQsCisJCQkJCSAg ICAgcmFuZ2UtPmVuZCwKIAkJCQkJICAgICBpbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X3RyYW1wb2xp bmUsCi0JCQkJCSAgICAgYmxvY2thYmxlLCBOVUxMKTsKKwkJCQkJICAgICByYW5nZS0+YmxvY2th YmxlLCBOVUxMKTsKIH0KIAogc3RhdGljIGludCBpbnZhbGlkYXRlX3JhbmdlX2VuZF90cmFtcG9s aW5lKHN0cnVjdCBpYl91bWVtX29kcCAqaXRlbSwgdTY0IHN0YXJ0LApAQCAtMTgyLDkgKzE4MCw3 IEBAIHN0YXRpYyBpbnQgaW52YWxpZGF0ZV9yYW5nZV9lbmRfdHJhbXBvbGluZShzdHJ1Y3QgaWJf dW1lbV9vZHAgKml0ZW0sIHU2NCBzdGFydCwKIH0KIAogc3RhdGljIHZvaWQgaWJfdW1lbV9ub3Rp Zmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKLQkJCQkJ CSAgc3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJCQkgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCi0J CQkJCQkgIHVuc2lnbmVkIGxvbmcgZW5kKQorCQkJCWNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJf cmFuZ2UgKnJhbmdlKQogewogCXN0cnVjdCBpYl91Y29udGV4dF9wZXJfbW0gKnBlcl9tbSA9CiAJ CWNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGliX3Vjb250ZXh0X3Blcl9tbSwgbW4pOwpAQCAtMTky LDggKzE4OCw4IEBAIHN0YXRpYyB2b2lkIGliX3VtZW1fbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5n ZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCiAJaWYgKHVubGlrZWx5KCFwZXJfbW0tPmFj dGl2ZSkpCiAJCXJldHVybjsKIAotCXJidF9pYl91bWVtX2Zvcl9lYWNoX2luX3JhbmdlKCZwZXJf bW0tPnVtZW1fdHJlZSwgc3RhcnQsCi0JCQkJICAgICAgZW5kLAorCXJidF9pYl91bWVtX2Zvcl9l YWNoX2luX3JhbmdlKCZwZXJfbW0tPnVtZW1fdHJlZSwgcmFuZ2UtPnN0YXJ0LAorCQkJCSAgICAg IHJhbmdlLT5lbmQsCiAJCQkJICAgICAgaW52YWxpZGF0ZV9yYW5nZV9lbmRfdHJhbXBvbGluZSwg dHJ1ZSwgTlVMTCk7CiAJdXBfcmVhZCgmcGVyX21tLT51bWVtX3J3c2VtKTsKIH0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL21tdV9yYi5jIGIvZHJpdmVycy9pbmZpbmli YW5kL2h3L2hmaTEvbW11X3JiLmMKaW5kZXggNDc1Yjc2OWUxMjBjLi4xNGQyYTkwOTY0YzMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL21tdV9yYi5jCisrKyBiL2RyaXZl cnMvaW5maW5pYmFuZC9ody9oZmkxL21tdV9yYi5jCkBAIC02OCw4ICs2OCw3IEBAIHN0cnVjdCBt bXVfcmJfaGFuZGxlciB7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBtbXVfbm9kZV9zdGFydChzdHJ1 Y3QgbW11X3JiX25vZGUgKik7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBtbXVfbm9kZV9sYXN0KHN0 cnVjdCBtbXVfcmJfbm9kZSAqKTsKIHN0YXRpYyBpbnQgbW11X25vdGlmaWVyX3JhbmdlX3N0YXJ0 KHN0cnVjdCBtbXVfbm90aWZpZXIgKiwKLQkJCQkgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKiwKLQkJ CQkgICAgIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIGJvb2wpOworCQljb25zdCBzdHJ1 Y3QgbW11X25vdGlmaWVyX3JhbmdlICopOwogc3RhdGljIHN0cnVjdCBtbXVfcmJfbm9kZSAqX19t bXVfcmJfc2VhcmNoKHN0cnVjdCBtbXVfcmJfaGFuZGxlciAqLAogCQkJCQkgICB1bnNpZ25lZCBs b25nLCB1bnNpZ25lZCBsb25nKTsKIHN0YXRpYyB2b2lkIGRvX3JlbW92ZShzdHJ1Y3QgbW11X3Ji X2hhbmRsZXIgKmhhbmRsZXIsCkBAIC0yODQsMTAgKzI4Myw3IEBAIHZvaWQgaGZpMV9tbXVfcmJf cmVtb3ZlKHN0cnVjdCBtbXVfcmJfaGFuZGxlciAqaGFuZGxlciwKIH0KIAogc3RhdGljIGludCBt bXVfbm90aWZpZXJfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCi0JCQkJICAg ICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKLQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCi0J CQkJICAgICB1bnNpZ25lZCBsb25nIGVuZCwKLQkJCQkgICAgIGJvb2wgYmxvY2thYmxlKQorCQlj b25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKIHsKIAlzdHJ1Y3QgbW11X3Ji X2hhbmRsZXIgKmhhbmRsZXIgPQogCQljb250YWluZXJfb2YobW4sIHN0cnVjdCBtbXVfcmJfaGFu ZGxlciwgbW4pOwpAQCAtMjk3LDEwICsyOTMsMTEgQEAgc3RhdGljIGludCBtbXVfbm90aWZpZXJf cmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCiAJYm9vbCBhZGRlZCA9IGZhbHNl OwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmhhbmRsZXItPmxvY2ssIGZsYWdzKTsKLQlmb3IgKG5v ZGUgPSBfX21tdV9pbnRfcmJfaXRlcl9maXJzdChyb290LCBzdGFydCwgZW5kIC0gMSk7CisJZm9y IChub2RlID0gX19tbXVfaW50X3JiX2l0ZXJfZmlyc3Qocm9vdCwgcmFuZ2UtPnN0YXJ0LCByYW5n ZS0+ZW5kLTEpOwogCSAgICAgbm9kZTsgbm9kZSA9IHB0cikgewogCQkvKiBHdWFyZCBhZ2FpbnN0 IG5vZGUgcmVtb3ZhbC4gKi8KLQkJcHRyID0gX19tbXVfaW50X3JiX2l0ZXJfbmV4dChub2RlLCBz dGFydCwgZW5kIC0gMSk7CisJCXB0ciA9IF9fbW11X2ludF9yYl9pdGVyX25leHQobm9kZSwgcmFu Z2UtPnN0YXJ0LAorCQkJCQkgICAgIHJhbmdlLT5lbmQgLSAxKTsKIAkJdHJhY2VfaGZpMV9tbXVf bWVtX2ludmFsaWRhdGUobm9kZS0+YWRkciwgbm9kZS0+bGVuKTsKIAkJaWYgKGhhbmRsZXItPm9w cy0+aW52YWxpZGF0ZShoYW5kbGVyLT5vcHNfYXJnLCBub2RlKSkgewogCQkJX19tbXVfaW50X3Ji X3JlbW92ZShub2RlLCByb290KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9taWMvc2NpZi9z Y2lmX2RtYS5jIGIvZHJpdmVycy9taXNjL21pYy9zY2lmL3NjaWZfZG1hLmMKaW5kZXggMThiOGVk NTdjNGFjLi5lMGQ5NzA0NGQwZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9taWMvc2NpZi9z Y2lmX2RtYS5jCisrKyBiL2RyaXZlcnMvbWlzYy9taWMvc2NpZi9zY2lmX2RtYS5jCkBAIC0yMDEs MjMgKzIwMSwxOCBAQCBzdGF0aWMgdm9pZCBzY2lmX21tdV9ub3RpZmllcl9yZWxlYXNlKHN0cnVj dCBtbXVfbm90aWZpZXIgKm1uLAogfQogCiBzdGF0aWMgaW50IHNjaWZfbW11X25vdGlmaWVyX2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCi0JCQkJCQkgICAg IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAotCQkJCQkJICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAot CQkJCQkJICAgICB1bnNpZ25lZCBsb25nIGVuZCwKLQkJCQkJCSAgICAgYm9vbCBibG9ja2FibGUp CisJCQkJCWNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQogewogCXN0cnVj dCBzY2lmX21tdV9ub3RpZgkqbW1uOwogCiAJbW1uID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3Qg c2NpZl9tbXVfbm90aWYsIGVwX21tdV9ub3RpZmllcik7Ci0Jc2NpZl9ybWFfZGVzdHJveV90Y3co bW1uLCBzdGFydCwgZW5kIC0gc3RhcnQpOworCXNjaWZfcm1hX2Rlc3Ryb3lfdGN3KG1tbiwgcmFu Z2UtPnN0YXJ0LCByYW5nZS0+ZW5kIC0gcmFuZ2UtPnN0YXJ0KTsKIAogCXJldHVybiAwOwogfQog CiBzdGF0aWMgdm9pZCBzY2lmX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1 Y3QgbW11X25vdGlmaWVyICptbiwKLQkJCQkJCSAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAotCQkJ CQkJICAgdW5zaWduZWQgbG9uZyBzdGFydCwKLQkJCQkJCSAgIHVuc2lnbmVkIGxvbmcgZW5kKQor CQkJY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpCiB7CiAJLyoKIAkgKiBO b3RoaW5nIHRvIGRvIGhlcmUsIGV2ZXJ5dGhpbmcgbmVlZGVkIHdhcyBkb25lIGluCmRpZmYgLS1n aXQgYS9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnV0bGJwdXJnZS5jIGIvZHJpdmVycy9taXNjL3Nn aS1ncnUvZ3J1dGxicHVyZ2UuYwppbmRleCAwM2I0OWQ1MjA5MmUuLmNhMjAzMmFmZTAzNSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1dGxicHVyZ2UuYworKysgYi9kcml2ZXJz L21pc2Mvc2dpLWdydS9ncnV0bGJwdXJnZS5jCkBAIC0yMjAsOSArMjIwLDcgQEAgdm9pZCBncnVf Zmx1c2hfYWxsX3RsYihzdHJ1Y3QgZ3J1X3N0YXRlICpncnUpCiAgKiBNTVVPUFMgbm90aWZpZXIg Y2FsbG91dCBmdW5jdGlvbnMKICAqLwogc3RhdGljIGludCBncnVfaW52YWxpZGF0ZV9yYW5nZV9z dGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKLQkJCQkgICAgICAgc3RydWN0IG1tX3N0cnVj dCAqbW0sCi0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5k LAotCQkJCSAgICAgICBib29sIGJsb2NrYWJsZSkKKwkJCWNvbnN0IHN0cnVjdCBtbXVfbm90aWZp ZXJfcmFuZ2UgKnJhbmdlKQogewogCXN0cnVjdCBncnVfbW1fc3RydWN0ICpnbXMgPSBjb250YWlu ZXJfb2YobW4sIHN0cnVjdCBncnVfbW1fc3RydWN0LAogCQkJCQkJIG1zX25vdGlmaWVyKTsKQEAg LTIzMCwxNSArMjI4LDE0IEBAIHN0YXRpYyBpbnQgZ3J1X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQo c3RydWN0IG1tdV9ub3RpZmllciAqbW4sCiAJU1RBVChtbXVfaW52YWxpZGF0ZV9yYW5nZSk7CiAJ YXRvbWljX2luYygmZ21zLT5tc19yYW5nZV9hY3RpdmUpOwogCWdydV9kYmcoZ3J1ZGV2LCAiZ21z ICVwLCBzdGFydCAweCVseCwgZW5kIDB4JWx4LCBhY3QgJWRcbiIsIGdtcywKLQkJc3RhcnQsIGVu ZCwgYXRvbWljX3JlYWQoJmdtcy0+bXNfcmFuZ2VfYWN0aXZlKSk7Ci0JZ3J1X2ZsdXNoX3RsYl9y YW5nZShnbXMsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisJCXJhbmdlLT5zdGFydCwgcmFuZ2UtPmVu ZCwgYXRvbWljX3JlYWQoJmdtcy0+bXNfcmFuZ2VfYWN0aXZlKSk7CisJZ3J1X2ZsdXNoX3RsYl9y YW5nZShnbXMsIHJhbmdlLT5zdGFydCwgcmFuZ2UtPmVuZCAtIHJhbmdlLT5zdGFydCk7CiAKIAly ZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgZ3J1X2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVj dCBtbXVfbm90aWZpZXIgKm1uLAotCQkJCSAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2ln bmVkIGxvbmcgc3RhcnQsCi0JCQkJICAgICB1bnNpZ25lZCBsb25nIGVuZCkKKwkJCWNvbnN0IHN0 cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQogewogCXN0cnVjdCBncnVfbW1fc3RydWN0 ICpnbXMgPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBncnVfbW1fc3RydWN0LAogCQkJCQkJIG1z X25vdGlmaWVyKTsKQEAgLTI0Nyw3ICsyNDQsOCBAQCBzdGF0aWMgdm9pZCBncnVfaW52YWxpZGF0 ZV9yYW5nZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCiAJKHZvaWQpYXRvbWljX2RlY19h bmRfdGVzdCgmZ21zLT5tc19yYW5nZV9hY3RpdmUpOwogCiAJd2FrZV91cF9hbGwoJmdtcy0+bXNf d2FpdF9xdWV1ZSk7Ci0JZ3J1X2RiZyhncnVkZXYsICJnbXMgJXAsIHN0YXJ0IDB4JWx4LCBlbmQg MHglbHhcbiIsIGdtcywgc3RhcnQsIGVuZCk7CisJZ3J1X2RiZyhncnVkZXYsICJnbXMgJXAsIHN0 YXJ0IDB4JWx4LCBlbmQgMHglbHhcbiIsCisJCWdtcywgcmFuZ2UtPnN0YXJ0LCByYW5nZS0+ZW5k KTsKIH0KIAogc3RhdGljIHZvaWQgZ3J1X3JlbGVhc2Uoc3RydWN0IG1tdV9ub3RpZmllciAqbW4s IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vZ250ZGV2LmMg Yi9kcml2ZXJzL3hlbi9nbnRkZXYuYwppbmRleCBiMGIwMmE1MDExNjcuLjVlZmM1ZWVlOTU0NCAx MDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vZ250ZGV2LmMKKysrIGIvZHJpdmVycy94ZW4vZ250ZGV2 LmMKQEAgLTUyMCwyNiArNTIwLDI2IEBAIHN0YXRpYyBpbnQgdW5tYXBfaWZfaW5fcmFuZ2Uoc3Ry dWN0IGdudGRldl9ncmFudF9tYXAgKm1hcCwKIH0KIAogc3RhdGljIGludCBtbl9pbnZsX3Jhbmdl X3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAotCQkJCXN0cnVjdCBtbV9zdHJ1Y3QgKm1t LAotCQkJCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAotCQkJCWJvb2wg YmxvY2thYmxlKQorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJh bmdlKQogewogCXN0cnVjdCBnbnRkZXZfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZihtbiwgc3Ry dWN0IGdudGRldl9wcml2LCBtbik7CiAJc3RydWN0IGdudGRldl9ncmFudF9tYXAgKm1hcDsKIAlp bnQgcmV0ID0gMDsKIAotCWlmIChibG9ja2FibGUpCisJaWYgKHJhbmdlLT5ibG9ja2FibGUpCiAJ CW11dGV4X2xvY2soJnByaXYtPmxvY2spOwogCWVsc2UgaWYgKCFtdXRleF90cnlsb2NrKCZwcml2 LT5sb2NrKSkKIAkJcmV0dXJuIC1FQUdBSU47CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1hcCwg JnByaXYtPm1hcHMsIG5leHQpIHsKLQkJcmV0ID0gdW5tYXBfaWZfaW5fcmFuZ2UobWFwLCBzdGFy dCwgZW5kLCBibG9ja2FibGUpOworCQlyZXQgPSB1bm1hcF9pZl9pbl9yYW5nZShtYXAsIHJhbmdl LT5zdGFydCwgcmFuZ2UtPmVuZCwKKwkJCQkJcmFuZ2UtPmJsb2NrYWJsZSk7CiAJCWlmIChyZXQp CiAJCQlnb3RvIG91dF91bmxvY2s7CiAJfQogCWxpc3RfZm9yX2VhY2hfZW50cnkobWFwLCAmcHJp di0+ZnJlZWFibGVfbWFwcywgbmV4dCkgewotCQlyZXQgPSB1bm1hcF9pZl9pbl9yYW5nZShtYXAs IHN0YXJ0LCBlbmQsIGJsb2NrYWJsZSk7CisJCXJldCA9IHVubWFwX2lmX2luX3JhbmdlKG1hcCwg cmFuZ2UtPnN0YXJ0LCByYW5nZS0+ZW5kLAorCQkJCQlyYW5nZS0+YmxvY2thYmxlKTsKIAkJaWYg KHJldCkKIAkJCWdvdG8gb3V0X3VubG9jazsKIAl9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L21tdV9ub3RpZmllci5oIGIvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaAppbmRleCA5ODkz YTY0MzJhZGYuLjM2OGYwYzFhMDQ5ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbXVfbm90 aWZpZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oCkBAIC0yNSw2ICsyNSwx MyBAQCBzdHJ1Y3QgbW11X25vdGlmaWVyX21tIHsKIAlzcGlubG9ja190IGxvY2s7CiB9OwogCitz dHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHsKKwlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKKwl1bnNp Z25lZCBsb25nIHN0YXJ0OworCXVuc2lnbmVkIGxvbmcgZW5kOworCWJvb2wgYmxvY2thYmxlOwor fTsKKwogc3RydWN0IG1tdV9ub3RpZmllcl9vcHMgewogCS8qCiAJICogQ2FsbGVkIGVpdGhlciBi eSBtbXVfbm90aWZpZXJfdW5yZWdpc3RlciBvciB3aGVuIHRoZSBtbSBpcwpAQCAtMTQ2LDEyICsx NTMsOSBAQCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyB7CiAJICoKIAkgKi8KIAlpbnQgKCppbnZh bGlkYXRlX3JhbmdlX3N0YXJ0KShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKLQkJCQkgICAgICAg c3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu c2lnbmVkIGxvbmcgZW5kLAotCQkJCSAgICAgICBib29sIGJsb2NrYWJsZSk7CisJCQkJICAgICAg Y29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpOwogCXZvaWQgKCppbnZhbGlk YXRlX3JhbmdlX2VuZCkoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCi0JCQkJICAgICBzdHJ1Y3Qg bW1fc3RydWN0ICptbSwKLQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxv bmcgZW5kKTsKKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdl KTsKIAogCS8qCiAJICogaW52YWxpZGF0ZV9yYW5nZSgpIGlzIGVpdGhlciBjYWxsZWQgYmV0d2Vl bgpkaWZmIC0tZ2l0IGEvbW0vaG1tLmMgYi9tbS9obW0uYwppbmRleCA5MGMzNGYzZDEyNDMuLjE5 NjVmMmNhZjVlYiAxMDA2NDQKLS0tIGEvbW0vaG1tLmMKKysrIGIvbW0vaG1tLmMKQEAgLTE4OSwz NSArMTg5LDMwIEBAIHN0YXRpYyB2b2lkIGhtbV9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIg Km1uLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSkKIH0KIAogc3RhdGljIGludCBobW1faW52YWxpZGF0 ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKLQkJCQkgICAgICBzdHJ1Y3Qg bW1fc3RydWN0ICptbSwKLQkJCQkgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAotCQkJCSAgICAg IHVuc2lnbmVkIGxvbmcgZW5kLAotCQkJCSAgICAgIGJvb2wgYmxvY2thYmxlKQorCQkJY29uc3Qg c3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpCiB7CiAJc3RydWN0IGhtbV91cGRhdGUg dXBkYXRlOwotCXN0cnVjdCBobW0gKmhtbSA9IG1tLT5obW07CisJc3RydWN0IGhtbSAqaG1tID0g cmFuZ2UtPm1tLT5obW07CiAKIAlWTV9CVUdfT04oIWhtbSk7CiAKLQl1cGRhdGUuc3RhcnQgPSBz dGFydDsKLQl1cGRhdGUuZW5kID0gZW5kOworCXVwZGF0ZS5zdGFydCA9IHJhbmdlLT5zdGFydDsK Kwl1cGRhdGUuZW5kID0gcmFuZ2UtPmVuZDsKIAl1cGRhdGUuZXZlbnQgPSBITU1fVVBEQVRFX0lO VkFMSURBVEU7Ci0JdXBkYXRlLmJsb2NrYWJsZSA9IGJsb2NrYWJsZTsKKwl1cGRhdGUuYmxvY2th YmxlID0gcmFuZ2UtPmJsb2NrYWJsZTsKIAlyZXR1cm4gaG1tX2ludmFsaWRhdGVfcmFuZ2UoaG1t LCB0cnVlLCAmdXBkYXRlKTsKIH0KIAogc3RhdGljIHZvaWQgaG1tX2ludmFsaWRhdGVfcmFuZ2Vf ZW5kKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAotCQkJCSAgICAgc3RydWN0IG1tX3N0cnVjdCAq bW0sCi0JCQkJICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAotCQkJCSAgICAgdW5zaWduZWQgbG9u ZyBlbmQpCisJCQljb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKIHsKIAlz dHJ1Y3QgaG1tX3VwZGF0ZSB1cGRhdGU7Ci0Jc3RydWN0IGhtbSAqaG1tID0gbW0tPmhtbTsKKwlz dHJ1Y3QgaG1tICpobW0gPSByYW5nZS0+bW0tPmhtbTsKIAogCVZNX0JVR19PTighaG1tKTsKIAot CXVwZGF0ZS5zdGFydCA9IHN0YXJ0OwotCXVwZGF0ZS5lbmQgPSBlbmQ7CisJdXBkYXRlLnN0YXJ0 ID0gcmFuZ2UtPnN0YXJ0OworCXVwZGF0ZS5lbmQgPSByYW5nZS0+ZW5kOwogCXVwZGF0ZS5ldmVu dCA9IEhNTV9VUERBVEVfSU5WQUxJREFURTsKIAl1cGRhdGUuYmxvY2thYmxlID0gdHJ1ZTsKIAlo bW1faW52YWxpZGF0ZV9yYW5nZShobW0sIGZhbHNlLCAmdXBkYXRlKTsKZGlmZiAtLWdpdCBhL21t L21tdV9ub3RpZmllci5jIGIvbW0vbW11X25vdGlmaWVyLmMKaW5kZXggNTExOWZmODQ2NzY5Li41 ZjY2NjVhZTNlZTIgMTAwNjQ0Ci0tLSBhL21tL21tdV9ub3RpZmllci5jCisrKyBiL21tL21tdV9u b3RpZmllci5jCkBAIC0xNzgsMTQgKzE3OCwyMCBAQCBpbnQgX19tbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJCQkgIHVuc2lnbmVkIGxv bmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogCQkJCSAgYm9vbCBibG9ja2FibGUpCiB7CisJ c3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSBfcmFuZ2UsICpyYW5nZSA9ICZfcmFuZ2U7CiAJc3Ry dWN0IG1tdV9ub3RpZmllciAqbW47CiAJaW50IHJldCA9IDA7CiAJaW50IGlkOwogCisJcmFuZ2Ut PmJsb2NrYWJsZSA9IGJsb2NrYWJsZTsKKwlyYW5nZS0+c3RhcnQgPSBzdGFydDsKKwlyYW5nZS0+ ZW5kID0gZW5kOworCXJhbmdlLT5tbSA9IG1tOworCiAJaWQgPSBzcmN1X3JlYWRfbG9jaygmc3Jj dSk7CiAJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KG1uLCAmbW0tPm1tdV9ub3RpZmllcl9tbS0+ bGlzdCwgaGxpc3QpIHsKIAkJaWYgKG1uLT5vcHMtPmludmFsaWRhdGVfcmFuZ2Vfc3RhcnQpIHsK LQkJCWludCBfcmV0ID0gbW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbiwgbW0sIHN0 YXJ0LCBlbmQsIGJsb2NrYWJsZSk7CisJCQlpbnQgX3JldCA9IG1uLT5vcHMtPmludmFsaWRhdGVf cmFuZ2Vfc3RhcnQobW4sIHJhbmdlKTsKIAkJCWlmIChfcmV0KSB7CiAJCQkJcHJfaW5mbygiJXBT IGNhbGxiYWNrIGZhaWxlZCB3aXRoICVkIGluICVzYmxvY2thYmxlIGNvbnRleHQuXG4iLAogCQkJ CQkJbW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZV9zdGFydCwgX3JldCwKQEAgLTIwNSw5ICsyMTEs MjAgQEAgdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW1f c3RydWN0ICptbSwKIAkJCQkJIHVuc2lnbmVkIGxvbmcgZW5kLAogCQkJCQkgYm9vbCBvbmx5X2Vu ZCkKIHsKKwlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIF9yYW5nZSwgKnJhbmdlID0gJl9yYW5n ZTsKIAlzdHJ1Y3QgbW11X25vdGlmaWVyICptbjsKIAlpbnQgaWQ7CiAKKwkvKgorCSAqIFRoZSBl bmQgY2FsbCBiYWNrIHdpbGwgbmV2ZXIgYmUgY2FsbCBpZiB0aGUgc3RhcnQgcmVmdXNlZCB0byBn bworCSAqIHRocm91Z2ggYmVjYXVzZSBvZiBibG9ja2FibGUgd2FzIGZhbHNlIHNvIGhlcmUgYXNz dW1lIHRoYXQgd2UKKwkgKiBjYW4gYmxvY2suCisJICovCisJcmFuZ2UtPmJsb2NrYWJsZSA9IHRy dWU7CisJcmFuZ2UtPnN0YXJ0ID0gc3RhcnQ7CisJcmFuZ2UtPmVuZCA9IGVuZDsKKwlyYW5nZS0+ bW0gPSBtbTsKKwogCWlkID0gc3JjdV9yZWFkX2xvY2soJnNyY3UpOwogCWhsaXN0X2Zvcl9lYWNo X2VudHJ5X3JjdShtbiwgJm1tLT5tbXVfbm90aWZpZXJfbW0tPmxpc3QsIGhsaXN0KSB7CiAJCS8q CkBAIC0yMjYsNyArMjQzLDcgQEAgdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X2VuZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJaWYgKCFvbmx5X2VuZCAmJiBtbi0+b3BzLT5p bnZhbGlkYXRlX3JhbmdlKQogCQkJbW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZShtbiwgbW0sIHN0 YXJ0LCBlbmQpOwogCQlpZiAobW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZV9lbmQpCi0JCQltbi0+ b3BzLT5pbnZhbGlkYXRlX3JhbmdlX2VuZChtbiwgbW0sIHN0YXJ0LCBlbmQpOworCQkJbW4tPm9w cy0+aW52YWxpZGF0ZV9yYW5nZV9lbmQobW4sIHJhbmdlKTsKIAl9CiAJc3JjdV9yZWFkX3VubG9j aygmc3JjdSwgaWQpOwogfQpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQv a3ZtL2t2bV9tYWluLmMKaW5kZXggMjY3OWU0NzZiNmMzLi5mODI5ZjYzZjJiMTYgMTAwNjQ0Ci0t LSBhL3ZpcnQva3ZtL2t2bV9tYWluLmMKKysrIGIvdmlydC9rdm0va3ZtX21haW4uYwpAQCAtMzYw LDEwICszNjAsNyBAQCBzdGF0aWMgdm9pZCBrdm1fbW11X25vdGlmaWVyX2NoYW5nZV9wdGUoc3Ry dWN0IG1tdV9ub3RpZmllciAqbW4sCiB9CiAKIHN0YXRpYyBpbnQga3ZtX21tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAotCQkJCQkJICAg IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAotCQkJCQkJICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCi0J CQkJCQkgICAgdW5zaWduZWQgbG9uZyBlbmQsCi0JCQkJCQkgICAgYm9vbCBibG9ja2FibGUpCisJ CQkJCWNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQogewogCXN0cnVjdCBr dm0gKmt2bSA9IG1tdV9ub3RpZmllcl90b19rdm0obW4pOwogCWludCBuZWVkX3RsYl9mbHVzaCA9 IDAsIGlkeDsKQEAgLTM3Nyw3ICszNzQsNyBAQCBzdGF0aWMgaW50IGt2bV9tbXVfbm90aWZpZXJf aW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKIAkgKiBjb3Vu dCBpcyBhbHNvIHJlYWQgaW5zaWRlIHRoZSBtbXVfbG9jayBjcml0aWNhbCBzZWN0aW9uLgogCSAq LwogCWt2bS0+bW11X25vdGlmaWVyX2NvdW50Kys7Ci0JbmVlZF90bGJfZmx1c2ggPSBrdm1fdW5t YXBfaHZhX3JhbmdlKGt2bSwgc3RhcnQsIGVuZCk7CisJbmVlZF90bGJfZmx1c2ggPSBrdm1fdW5t YXBfaHZhX3JhbmdlKGt2bSwgcmFuZ2UtPnN0YXJ0LCByYW5nZS0+ZW5kKTsKIAluZWVkX3RsYl9m bHVzaCB8PSBrdm0tPnRsYnNfZGlydHk7CiAJLyogd2UndmUgdG8gZmx1c2ggdGhlIHRsYiBiZWZv cmUgdGhlIHBhZ2VzIGNhbiBiZSBmcmVlZCAqLwogCWlmIChuZWVkX3RsYl9mbHVzaCkKQEAgLTM4 NSw3ICszODIsOCBAQCBzdGF0aWMgaW50IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5n ZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKIAogCXNwaW5fdW5sb2NrKCZrdm0tPm1t dV9sb2NrKTsKIAotCXJldCA9IGt2bV9hcmNoX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl KGt2bSwgc3RhcnQsIGVuZCwgYmxvY2thYmxlKTsKKwlyZXQgPSBrdm1fYXJjaF9tbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZShrdm0sIHJhbmdlLT5zdGFydCwKKwkJCQkJcmFuZ2UtPmVuZCwg cmFuZ2UtPmJsb2NrYWJsZSk7CiAKIAlzcmN1X3JlYWRfdW5sb2NrKCZrdm0tPnNyY3UsIGlkeCk7 CiAKQEAgLTM5Myw5ICszOTEsNyBAQCBzdGF0aWMgaW50IGt2bV9tbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKIH0KIAogc3RhdGljIHZv aWQga3ZtX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlm aWVyICptbiwKLQkJCQkJCSAgc3RydWN0IG1tX3N0cnVjdCAqbW0sCi0JCQkJCQkgIHVuc2lnbmVk IGxvbmcgc3RhcnQsCi0JCQkJCQkgIHVuc2lnbmVkIGxvbmcgZW5kKQorCQkJCQljb25zdCBzdHJ1 Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKIHsKIAlzdHJ1Y3Qga3ZtICprdm0gPSBtbXVf bm90aWZpZXJfdG9fa3ZtKG1uKTsKIAotLSAKMi4xNy4yCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK