From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail137.messagelabs.com (mail137.messagelabs.com [216.82.249.19]) by kanga.kvack.org (Postfix) with SMTP id DC88A6B003D for ; Thu, 12 Mar 2009 12:23:53 -0400 (EDT) From: Nick Piggin Subject: Re: [aarcange@redhat.com: [PATCH] fork vs gup(-fast) fix] Date: Fri, 13 Mar 2009 03:23:40 +1100 References: <20090311170611.GA2079@elte.hu> <200903121636.18867.nickpiggin@yahoo.com.au> In-Reply-To: <200903121636.18867.nickpiggin@yahoo.com.au> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: base64 Content-Disposition: inline Message-Id: <200903130323.41193.nickpiggin@yahoo.com.au> Sender: owner-linux-mm@kvack.org To: Linus Torvalds Cc: Andrea Arcangeli , Ingo Molnar , Nick Piggin , Hugh Dickins , KOSAKI Motohiro , KAMEZAWA Hiroyuki , linux-mm@kvack.org List-ID: T24gVGh1cnNkYXkgMTIgTWFyY2ggMjAwOSAxNjozNjoxOCBOaWNrIFBpZ2dpbiB3cm90ZToKCj4g QXNzdW1pbmcgd2Ugd2FudCB0byB0cnkgZml4aW5nIGl0IHRyYW5zcGFyZW50bHkuLi4gd2hhdCBh Ym91dCBhbm90aGVyCj4gYXBwcm9hY2gsIG1hcmsgYSB2bWEgYXMgVk1fRE9OVENPVyBhbmQgdW5j b3cgYWxsIGV4aXN0aW5nIHBhZ2VzIGluIGl0Cj4gaWYgaXQgZXZlciBoYXMgZ2V0X3VzZXJfcGFn ZXMgcnVuIG9uIGl0LiBCaWcgaGFtbWVyIGFwcHJvYWNoLgo+Cj4gZmFzdCBndXAgd291bGQgYmUg YSBsaXR0bGUgYml0IGhhcmRlciBiZWNhdXNlIGxvb2tpbmcgdXAgdGhlIHZtYQo+IGRlZmVhdHMg dGhlIHB1cnBvc2UuIEhvd2V2ZXIgaWYgd2UgdXNlIGFub3RoZXIgcGFnZSBiaXQgdG8gc2F5IHRo ZQo+IHBhZ2UgYmVsb25ncyB0byBhIFZNX0RPTlRDT1cgdm1hLCB0aGVuIHdlIG9ubHkgbmVlZCB0 byBjaGVjayB0aGF0Cj4gb25jZSBhbmQgZmFsbCBiYWNrIHRvIHNsb3cgZ3VwIGlmIGl0IGlzIGNs ZWFyLiBTbyB0aGVyZSB3b3VsZCBiZSBubwo+IGV4dHJhIGF0b21pY3MgaW4gdGhlIHJlcGVhdCBj YXNlLiBZZXMgaXQgd291bGQgYmUgc2xvd2VyLCBidXQgYXBwcwo+IHRoYXQgcmVhbGx5IGNhcmUg c2hvdWxkIGtub3cgd2hhdCB0aGV5IGFyZSBkb2luZyBhbmQgc2V0Cj4gTUFEVl9ET05URk9SSyBv ciBNQURWX0RPTlRDT1cgb24gdGhlIHZtYSBieSBoYW5kIGJlZm9yZSBkb2luZyB0aGUKPiB6ZXJv IGNvcHkgSU8uCj4KPiBXb3VsZCB0aGlzIHdvcms/IEFueW9uZSBzZWUgYW55IGhvbGVzPyAoSSBp bWFnaW5lIHNvbWVvbmUgbWlnaHQgYXJndWUKPiBhZ2FpbnN0IGJpZyBoYW1tZXIsIGJ1dCBJIHdv dWxkIHByZWZlciBpdCBpZiBpdCBpcyBsaWdodGVyIGltcGFjdCBvbgo+IHRoZSBWTSBhbmQgc3Rp bGwgYWxsb3dzIGdvb2QgYXBwbGljYXRpb25zIHRvIGF2b2lkIHRoZSBoYW1tZXIpCgpPSywgdGhp cyBpcyBhcyBmYXIgYXMgSSBnb3QgdG9uaWdodC4KClRoaXMgcGFzc2VzIEFuZHJlYSdzIGRtYV90 aHJlYWQgdGVzdCBjYXNlLiBJIGhhdmVuJ3Qgc3RhcnRlZCBodWdlcGFnZXMsCmFuZCBpdCBpc24n dCBxdWl0ZSByaWdodCB0byBkcm9wIHRoZSBtbWFwX3NlbSBhbmQgcmV0YWtlIGl0IGZvciB3cml0 ZQppbiBnZXRfdXNlcl9wYWdlcyAoZmlyc3RseSwgY2FsbGVyIG1pZ2h0IGhvbGQgbW1hcF9zZW0g Zm9yIHdyaXRlLApzZWNvbmRseSwgaXQgbWF5IG5vdCBiZSBhYmxlIHRvIHRvbGVyYXRlIG1tYXBf c2VtIGJlaW5nIGRyb3BwZWQpLgoKQW5ub3lpbmcgdGhhdCBpdCBoYXMgdG8gdGFrZSBtbWFwX3Nl bSBmb3Igd3JpdGUgdG8gYWRkIHRoaXMgYml0IHRvCnZtX2ZsYWdzLiBQb3NzaWJseSB3ZSBjb3Vs ZCB1c2UgYSBkaWZmZXJlbnQgd2F5IHRvIHNpZ25hbCBpdCBpcyBhCiJkb250Y293IiB2bWEuLi4g c29tZXRoaW5nIGluIGFub25fdm1hIG1heWJlPwoKQW55d2F5LCBiZWZvcmUgd29ycnlpbmcgdG9v IG11Y2ggbW9yZSBhYm91dCB0aG9zZSBkZXRhaWxzLCBJJ2xsIHBvc3QKaXQuIEl0IGlzIGEgZGlm ZmVyZW50IGFwcHJvYWNoIHRoYXQgSSB0aGluayBtaWdodCBiZSB3b3J0aCBjb25zaWRlcmF0aW9u LgpDb21tZW50cz8KClRoYW5rcywKTmljawotLQpJbmRleDogbGludXgtMi42L2luY2x1ZGUvbGlu dXgvbW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9pbmNsdWRlL2xpbnV4L21tLmgJ MjAwOS0wMy0xMyAwMzowMDo1OC4wMDAwMDAwMDAgKzExMDAKKysrIGxpbnV4LTIuNi9pbmNsdWRl L2xpbnV4L21tLmgJMjAwOS0wMy0xMyAwMzowNTowMC4wMDAwMDAwMDAgKzExMDAKQEAgLTEwNCw2 ICsxMDQsNyBAQCBleHRlcm4gdW5zaWduZWQgaW50IGtvYmpzaXplKGNvbnN0IHZvaWQgCiAjZGVm aW5lIFZNX0NBTl9OT05MSU5FQVIgMHgwODAwMDAwMAkvKiBIYXMgLT5mYXVsdCAmIGRvZXMgbm9u bGluZWFyIHBhZ2VzICovCiAjZGVmaW5lIFZNX01JWEVETUFQCTB4MTAwMDAwMDAJLyogQ2FuIGNv bnRhaW4gInN0cnVjdCBwYWdlIiBhbmQgcHVyZSBQRk4gcGFnZXMgKi8KICNkZWZpbmUgVk1fU0FP CQkweDIwMDAwMDAwCS8qIFN0cm9uZyBBY2Nlc3MgT3JkZXJpbmcgKHBvd2VycGMpICovCisjZGVm aW5lIFZNX0RPTlRDT1cJMHg0MDAwMDAwMAkvKiBDb250YWlucyBubyBDT1cgcGFnZXMgKGNvcGll cyBvbiBmb3JrKSAqLwogCiAjaWZuZGVmIFZNX1NUQUNLX0RFRkFVTFRfRkxBR1MJCS8qIGFyY2gg Y2FuIG92ZXJyaWRlIHRoaXMgKi8KICNkZWZpbmUgVk1fU1RBQ0tfREVGQVVMVF9GTEFHUyBWTV9E QVRBX0RFRkFVTFRfRkxBR1MKQEAgLTc4OSw3ICs3OTAsNyBAQCBpbnQgd2Fsa19wYWdlX3Jhbmdl KHVuc2lnbmVkIGxvbmcgYWRkciwgCiB2b2lkIGZyZWVfcGdkX3JhbmdlKHN0cnVjdCBtbXVfZ2F0 aGVyICp0bGIsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJdW5zaWduZWQgbG9uZyBlbmQsIHVuc2ln bmVkIGxvbmcgZmxvb3IsIHVuc2lnbmVkIGxvbmcgY2VpbGluZyk7CiBpbnQgY29weV9wYWdlX3Jh bmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLAotCQkJc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOworCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmRzdF92 bWEsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKIHZvaWQgdW5tYXBfbWFwcGluZ19yYW5n ZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAkJbG9mZl90IGNvbnN0IGhvbGViZWdp biwgbG9mZl90IGNvbnN0IGhvbGVsZW4sIGludCBldmVuX2Nvd3MpOwogaW50IGZvbGxvd19waHlz KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCkluZGV4 OiBsaW51eC0yLjYvbW0vbWVtb3J5LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42Lm9yaWcvbW0v bWVtb3J5LmMJMjAwOS0wMy0xMyAwMzowMDo1OC4wMDAwMDAwMDAgKzExMDAKKysrIGxpbnV4LTIu Ni9tbS9tZW1vcnkuYwkyMDA5LTAzLTEzIDAzOjA3OjUyLjAwMDAwMDAwMCArMTEwMApAQCAtNTgw LDcgKzU4MCw4IEBAIGNvcHlfb25lX3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3RfbW0sIHMKIAkg KiBpbiB0aGUgcGFyZW50IGFuZCB0aGUgY2hpbGQKIAkgKi8KIAlpZiAoaXNfY293X21hcHBpbmco dm1fZmxhZ3MpKSB7Ci0JCXB0ZXBfc2V0X3dycHJvdGVjdChzcmNfbW0sIGFkZHIsIHNyY19wdGUp OworCQlpZiAobGlrZWx5KCEodm1fZmxhZ3MgJiBWTV9ET05UQ09XKSkpCisJCQlwdGVwX3NldF93 cnByb3RlY3Qoc3JjX21tLCBhZGRyLCBzcmNfcHRlKTsKIAkJcHRlID0gcHRlX3dycHJvdGVjdChw dGUpOwogCX0KIApAQCAtNTk0LDYgKzU5NSw3IEBAIGNvcHlfb25lX3B0ZShzdHJ1Y3QgbW1fc3Ry dWN0ICpkc3RfbW0sIHMKIAogCXBhZ2UgPSB2bV9ub3JtYWxfcGFnZSh2bWEsIGFkZHIsIHB0ZSk7 CiAJaWYgKHBhZ2UpIHsKKwkJVk1fQlVHX09OKFBhZ2VEb250Q09XKHBhZ2UpICYmICEodm1fZmxh Z3MgJiBWTV9ET05UQ09XKSk7CiAJCWdldF9wYWdlKHBhZ2UpOwogCQlwYWdlX2R1cF9ybWFwKHBh Z2UsIHZtYSwgYWRkcik7CiAJCXJzc1shIVBhZ2VBbm9uKHBhZ2UpXSsrOwpAQCAtNjk2LDggKzY5 OCwxMCBAQCBzdGF0aWMgaW5saW5lIGludCBjb3B5X3B1ZF9yYW5nZShzdHJ1Y3QgCiAJcmV0dXJu IDA7CiB9CiAKK3N0YXRpYyBpbnQgZGVjb3dfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpt bSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOworCiBpbnQgY29weV9wYWdlX3JhbmdlKHN0 cnVjdCBtbV9zdHJ1Y3QgKmRzdF9tbSwgc3RydWN0IG1tX3N0cnVjdCAqc3JjX21tLAotCQlzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKKwkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICpkc3Rfdm1h LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIHsKIAlwZ2RfdCAqc3JjX3BnZCwgKmRzdF9w Z2Q7CiAJdW5zaWduZWQgbG9uZyBuZXh0OwpAQCAtNzU1LDYgKzc1OSwxNSBAQCBpbnQgY29weV9w YWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzCiAJaWYgKGlzX2Nvd19tYXBwaW5nKHZtYS0+ dm1fZmxhZ3MpKQogCQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoc3JjX21tLAog CQkJCQkJICB2bWEtPnZtX3N0YXJ0LCBlbmQpOworCisJV0FSTl9PTihyZXQpOworCWlmICh1bmxp a2VseSh2bWEtPnZtX2ZsYWdzICYgVk1fRE9OVENPVykgJiYgIXJldCkgeworCQlpZiAoZGVjb3df cGFnZV9yYW5nZShkc3RfbW0sIGRzdF92bWEpKQorCQkJcmV0ID0gLUVOT01FTTsKKwkJLyogY2hp bGQgZG9lc24ndCByZWFsbHkgbmVlZCBWTV9ET05UQ09XIGFmdGVyIGJlaW5nIGRlLUNPV2VkICov CisJCS8vIGRzdF92bWEtPnZtX2ZsYWdzICY9IH5WTV9ET05UQ09XOworCX0KKwogCXJldHVybiBy ZXQ7CiB9CiAKQEAgLTEyMDAsNiArMTIxMyw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHVzZV96ZXJv X3BhZ2Uoc3RydWN0IHYKIH0KIAogCitzdGF0aWMgaW50IG1ha2Vfdm1hX25vY293KHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hKTsKIAogaW50IF9fZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHRhc2tf c3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCQkgICAgIHVuc2lnbmVkIGxvbmcg c3RhcnQsIGludCBsZW4sIGludCBmbGFncywKQEAgLTEyNzMsNiArMTI4NywyMyBAQCBpbnQgX19n ZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgCiAJCSAgICAoIWlnbm9yZSAmJiAhKHZt X2ZsYWdzICYgdm1hLT52bV9mbGFncykpKQogCQkJcmV0dXJuIGkgPyA6IC1FRkFVTFQ7CiAKKwkJ aWYgKCEoZmxhZ3MgJiBHVVBfRkxBR1NfU1RBQ0spICYmCisJCQkJaXNfY293X21hcHBpbmcodm1h LT52bV9mbGFncykgJiYKKwkJCQkhKHZtYS0+dm1fZmxhZ3MgJiBWTV9ET05UQ09XKSkgeworCQkJ dXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwkJCWRvd25fd3JpdGUoJm1tLT5tbWFwX3NlbSk7CisJ CQl2bWEgPSBmaW5kX3ZtYShtbSwgc3RhcnQpOworCQkJaWYgKHZtYSAmJiBpc19jb3dfbWFwcGlu Zyh2bWEtPnZtX2ZsYWdzKSAmJgorCQkJCSEodm1hLT52bV9mbGFncyAmIFZNX0RPTlRDT1cpKSB7 CisJCQkJaWYgKG1ha2Vfdm1hX25vY293KHZtYSkpIHsKKwkJCQkJZG93bmdyYWRlX3dyaXRlKCZt bS0+bW1hcF9zZW0pOworCQkJCQlyZXR1cm4gaSA/IDogLUVOT01FTTsKKwkJCQl9CisJCQl9CisJ CQlkb3duZ3JhZGVfd3JpdGUoJm1tLT5tbWFwX3NlbSk7CisJCQljb250aW51ZTsKKwkJfQorCiAJ CWlmIChpc192bV9odWdldGxiX3BhZ2Uodm1hKSkgewogCQkJaSA9IGZvbGxvd19odWdldGxiX3Bh Z2UobW0sIHZtYSwgcGFnZXMsIHZtYXMsCiAJCQkJCQkmc3RhcnQsICZsZW4sIGksIHdyaXRlKTsK QEAgLTE5MTAsNiArMTk0MSw4IEBAIHN0YXRpYyBpbnQgZG9fd3BfcGFnZShzdHJ1Y3QgbW1fc3Ry dWN0ICoKIAkJZ290byBnb3R0ZW47CiAJfQogCisJVk1fQlVHX09OKFBhZ2VEb250Q09XKG9sZF9w YWdlKSk7CisKIAkvKgogCSAqIFRha2Ugb3V0IGFub255bW91cyBwYWdlcyBmaXJzdCwgYW5vbnlt b3VzIHNoYXJlZCB2bWFzIGFyZQogCSAqIG5vdCBkaXJ0eSBhY2NvdW50YWJsZS4KQEAgLTIxMDIs NiArMjEzNSwyMzIgQEAgdW53cml0YWJsZV9wYWdlOgogCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7 CiB9CiAKK3N0YXRpYyBpbnQgZGVjb3dfb25lX3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcHRl X3QgKnB0ZXAsIHBtZF90ICpwbWQsCisJCQlzcGlubG9ja190ICpwdGwsIHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hLAorCQkJdW5zaWduZWQgbG9uZyBhZGRyZXNzKQoreworCXB0ZV90IHB0ZSA9 ICpwdGVwOworCXN0cnVjdCBwYWdlICpwYWdlLCAqbmV3X3BhZ2U7CisJaW50IHJldCA9IDA7CisK KwkvKiBwdGUgY29udGFpbnMgcG9zaXRpb24gaW4gc3dhcCBvciBmaWxlLCBzbyBkb24ndCBkbyBh bnl0aGluZyAqLworCWlmICh1bmxpa2VseSghcHRlX3ByZXNlbnQocHRlKSkpCisJCXJldHVybiAw OworCS8qIHB0ZSBpcyB3cml0YWJsZSwgY2FuJ3QgYmUgQ09XICovCisJaWYgKHB0ZV93cml0ZShw dGUpKQorCQlyZXR1cm4gMDsKKworCXBhZ2UgPSB2bV9ub3JtYWxfcGFnZSh2bWEsIGFkZHJlc3Ms IHB0ZSk7CisJaWYgKCFwYWdlKQorCQlyZXR1cm4gMDsKKworCWlmICghUGFnZUFub24ocGFnZSkp CisJCXJldHVybiAwOworCisJcGFnZV9jYWNoZV9nZXQocGFnZSk7CisKKwlwdGVfdW5tYXBfdW5s b2NrKHB0ZSwgcHRsKTsKKworCWlmICh1bmxpa2VseShhbm9uX3ZtYV9wcmVwYXJlKHZtYSkpKQor CQlnb3RvIG9vbTsKKwlWTV9CVUdfT04ocGFnZSA9PSBaRVJPX1BBR0UoMCkpOworCW5ld19wYWdl ID0gYWxsb2NfcGFnZV92bWEoR0ZQX0hJR0hVU0VSX01PVkFCTEUsIHZtYSwgYWRkcmVzcyk7CisJ aWYgKCFuZXdfcGFnZSkKKwkJZ290byBvb207CisJLyoKKwkgKiBEb24ndCBsZXQgYW5vdGhlciB0 YXNrLCB3aXRoIHBvc3NpYmx5IHVubG9ja2VkIHZtYSwKKwkgKiBrZWVwIHRoZSBtbG9ja2VkIHBh Z2UuCisJICovCisJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9MT0NLRUQpIHsKKwkJbG9ja19wYWdl KHBhZ2UpOwkvKiBmb3IgTFJVIG1hbmlwdWxhdGlvbiAqLworCQljbGVhcl9wYWdlX21sb2NrKHBh Z2UpOworCQl1bmxvY2tfcGFnZShwYWdlKTsKKwl9CisJY293X3VzZXJfcGFnZShuZXdfcGFnZSwg cGFnZSwgYWRkcmVzcywgdm1hKTsKKwlfX1NldFBhZ2VVcHRvZGF0ZShuZXdfcGFnZSk7CisJX19T ZXRQYWdlRG9udENPVyhuZXdfcGFnZSk7CisKKwlpZiAobWVtX2Nncm91cF9uZXdwYWdlX2NoYXJn ZShuZXdfcGFnZSwgbW0sIEdGUF9LRVJORUwpKQorCQlnb3RvIG9vbV9mcmVlX25ldzsKKworCS8q CisJICogUmUtY2hlY2sgdGhlIHB0ZSAtIHdlIGRyb3BwZWQgdGhlIGxvY2sKKwkgKi8KKwlwdGVw ID0gcHRlX29mZnNldF9tYXBfbG9jayhtbSwgcG1kLCBhZGRyZXNzLCAmcHRsKTsKKwlpZiAobGlr ZWx5KHB0ZV9zYW1lKCpwdGVwLCBwdGUpKSkgeworCQlwdGVfdCBlbnRyeTsKKworCQlmbHVzaF9j YWNoZV9wYWdlKHZtYSwgYWRkcmVzcywgcHRlX3BmbihwdGUpKTsKKwkJZW50cnkgPSBta19wdGUo bmV3X3BhZ2UsIHZtYS0+dm1fcGFnZV9wcm90KTsKKwkJZW50cnkgPSBtYXliZV9ta3dyaXRlKHB0 ZV9ta2RpcnR5KGVudHJ5KSwgdm1hKTsKKwkJLyoKKwkJICogQ2xlYXIgdGhlIHB0ZSBlbnRyeSBh bmQgZmx1c2ggaXQgZmlyc3QsIGJlZm9yZSB1cGRhdGluZyB0aGUKKwkJICogcHRlIHdpdGggdGhl IG5ldyBlbnRyeS4gVGhpcyB3aWxsIGF2b2lkIGEgcmFjZSBjb25kaXRpb24KKwkJICogc2VlbiBp biB0aGUgcHJlc2VuY2Ugb2Ygb25lIHRocmVhZCBkb2luZyBTTUMgYW5kIGFub3RoZXIKKwkJICog dGhyZWFkIGRvaW5nIENPVy4KKwkJICovCisJCXB0ZXBfY2xlYXJfZmx1c2hfbm90aWZ5KHZtYSwg YWRkcmVzcywgcHRlcCk7CisJCXBhZ2VfYWRkX25ld19hbm9uX3JtYXAobmV3X3BhZ2UsIHZtYSwg YWRkcmVzcyk7CisJCXNldF9wdGVfYXQobW0sIGFkZHJlc3MsIHB0ZXAsIGVudHJ5KTsKKworCQkv KiBTZWUgY29tbWVudCBpbiBkb193cF9wYWdlICovCisJCXBhZ2VfcmVtb3ZlX3JtYXAocGFnZSk7 CisJfSBlbHNlIHsKKwkJbWVtX2Nncm91cF91bmNoYXJnZV9wYWdlKG5ld19wYWdlKTsKKwkJcGFn ZV9jYWNoZV9yZWxlYXNlKG5ld19wYWdlKTsKKwkJcmV0ID0gLUVBR0FJTjsKKwl9CisKKwlwYWdl X2NhY2hlX3JlbGVhc2UocGFnZSk7CisKKwlyZXR1cm4gcmV0OworCitvb21fZnJlZV9uZXc6CisJ cGFnZV9jYWNoZV9yZWxlYXNlKG5ld19wYWdlKTsKK29vbToKKwlwYWdlX2NhY2hlX3JlbGVhc2Uo cGFnZSk7CisJcmV0dXJuIC1FTk9NRU07Cit9CisKK3N0YXRpYyBpbnQgZGVjb3dfcHRlX3Jhbmdl KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAorCQkJcG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsCisJCQl1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kKQorewor CXB0ZV90ICpwdGU7CisJc3BpbmxvY2tfdCAqcHRsOworCWludCBwcm9ncmVzcyA9IDA7CisJaW50 IHJldCA9IDA7CisKK2FnYWluOgorCXB0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sobW0sIHBtZCwg YWRkciwgJnB0bCk7CisvLwlhcmNoX2VudGVyX2xhenlfbW11X21vZGUoKTsKKworCWRvIHsKKwkJ LyoKKwkJICogV2UgYXJlIGhvbGRpbmcgdHdvIGxvY2tzIGF0IHRoaXMgcG9pbnQgLSBlaXRoZXIg b2YgdGhlbQorCQkgKiBjb3VsZCBnZW5lcmF0ZSBsYXRlbmNpZXMgaW4gYW5vdGhlciB0YXNrIG9u IGFub3RoZXIgQ1BVLgorCQkgKi8KKwkJaWYgKHByb2dyZXNzID49IDMyKSB7CisJCQlwcm9ncmVz cyA9IDA7CisJCQlpZiAobmVlZF9yZXNjaGVkKCkgfHwgc3Bpbl9uZWVkYnJlYWsocHRsKSkKKwkJ CQlicmVhazsKKwkJfQorCQlpZiAocHRlX25vbmUoKnB0ZSkpIHsKKwkJCXByb2dyZXNzKys7CisJ CQljb250aW51ZTsKKwkJfQorCQlyZXQgPSBkZWNvd19vbmVfcHRlKG1tLCBwdGUsIHBtZCwgcHRs LCB2bWEsIGFkZHIpOworCQlpZiAocmV0KSB7CisJCQlpZiAocmV0ID09IC1FQUdBSU4pIHsgLyog cmV0cnkgKi8KKwkJCQlyZXQgPSAwOworCQkJCWJyZWFrOworCQkJfQorCQkJZ290byBvdXQ7CisJ CX0KKwkJcHJvZ3Jlc3MgKz0gODsKKwl9IHdoaWxlIChwdGUrKywgYWRkciArPSBQQUdFX1NJWkUs IGFkZHIgIT0gZW5kKTsKKworLy8JYXJjaF9sZWF2ZV9sYXp5X21tdV9tb2RlKCk7CisJcHRlX3Vu bWFwX3VubG9jayhwdGUgLSAxLCBwdGwpOworCWNvbmRfcmVzY2hlZCgpOworCWlmIChhZGRyICE9 IGVuZCkKKwkJZ290byBhZ2FpbjsKK291dDoKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50 IGRlY293X3BtZF9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJCXB1ZF90ICpwdWQsIHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAorCQkJdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25l ZCBsb25nIGVuZCkKK3sKKwlwbWRfdCAqcG1kOworCXVuc2lnbmVkIGxvbmcgbmV4dDsKKworCXBt ZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyKTsKKwlkbyB7CisJCW5leHQgPSBwbWRfYWRkcl9lbmQo YWRkciwgZW5kKTsKKwkJaWYgKHBtZF9ub25lX29yX2NsZWFyX2JhZChwbWQpKQorCQkJY29udGlu dWU7CisJCWlmIChkZWNvd19wdGVfcmFuZ2UobW0sIHBtZCwgdm1hLCBhZGRyLCBuZXh0KSkKKwkJ CXJldHVybiAtRU5PTUVNOworCX0gd2hpbGUgKHBtZCsrLCBhZGRyID0gbmV4dCwgYWRkciAhPSBl bmQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRlY293X3B1ZF9yYW5nZShzdHJ1Y3Qg bW1fc3RydWN0ICptbSwKKwkJCXBnZF90ICpwZ2QsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h LAorCQkJdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCkKK3sKKwlwdWRfdCAq cHVkOworCXVuc2lnbmVkIGxvbmcgbmV4dDsKKworCXB1ZCA9IHB1ZF9vZmZzZXQocGdkLCBhZGRy KTsKKwlkbyB7CisJCW5leHQgPSBwdWRfYWRkcl9lbmQoYWRkciwgZW5kKTsKKwkJaWYgKHB1ZF9u b25lX29yX2NsZWFyX2JhZChwdWQpKQorCQkJY29udGludWU7CisJCWlmIChkZWNvd19wbWRfcmFu Z2UobW0sIHB1ZCwgdm1hLCBhZGRyLCBuZXh0KSkKKwkJCXJldHVybiAtRU5PTUVNOworCX0gd2hp bGUgKHB1ZCsrLCBhZGRyID0gbmV4dCwgYWRkciAhPSBlbmQpOworCXJldHVybiAwOworfQorCitz dGF0aWMgbm9pbmxpbmUgaW50IGRlY293X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0s IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXBnZF90ICpwZ2Q7CisJdW5zaWduZWQg bG9uZyBuZXh0OworCXVuc2lnbmVkIGxvbmcgYWRkciA9IHZtYS0+dm1fc3RhcnQ7CisJdW5zaWdu ZWQgbG9uZyBlbmQgPSB2bWEtPnZtX2VuZDsKKwlpbnQgcmV0OworCisJQlVHX09OKCFpc19jb3df bWFwcGluZyh2bWEtPnZtX2ZsYWdzKSk7CisKKy8vCWlmIChpc192bV9odWdldGxiX3BhZ2Uodm1h KSkKKy8vCQlyZXR1cm4gZGVjb3dfaHVnZXRsYl9wYWdlX3JhbmdlKG1tLCB2bWEpOworCisJbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIGFkZHIsIGVuZCk7CisKKwlyZXQg PSAwOworCXBnZCA9IHBnZF9vZmZzZXQobW0sIGFkZHIpOworCWRvIHsKKwkJbmV4dCA9IHBnZF9h ZGRyX2VuZChhZGRyLCBlbmQpOworCQlpZiAocGdkX25vbmVfb3JfY2xlYXJfYmFkKHBnZCkpCisJ CQljb250aW51ZTsKKwkJaWYgKHVubGlrZWx5KGRlY293X3B1ZF9yYW5nZShtbSwgcGdkLCB2bWEs IGFkZHIsIG5leHQpKSkgeworCQkJcmV0ID0gLUVOT01FTTsKKwkJCWJyZWFrOworCQl9CisJfSB3 aGlsZSAocGdkKyssIGFkZHIgPSBuZXh0LCBhZGRyICE9IGVuZCk7CisKKwltbXVfbm90aWZpZXJf aW52YWxpZGF0ZV9yYW5nZV9lbmQobW0sIHZtYS0+dm1fc3RhcnQsIGVuZCk7CisKKwlyZXR1cm4g cmV0OworfQorCisvKgorICogVHVybnMgdGhlIGFub255bW91cyBWTUEgaW50byBhICJub2NvdyIg dm1hLiBEZS1jb3cgZXhpc3RpbmcgQ09XIHBhZ2VzLgorICogTXVzdCBob2xkIG1tYXBfc2VtIGZv ciB3cml0ZS4KKyAqLworc3RhdGljIGludCBtYWtlX3ZtYV9ub2NvdyhzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSkKK3sKKwlzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spOworCXN0cnVjdCBtbV9z dHJ1Y3QgKm1tID0gdm1hLT52bV9tbTsKKwlpbnQgcmV0OworCisJbXV0ZXhfbG9jaygmbG9jayk7 CisJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9ET05UQ09XKSB7CisJCW11dGV4X3VubG9jaygmbG9j ayk7CisJCXJldHVybiAwOworCX0KKworCXJldCA9IGRlY293X3BhZ2VfcmFuZ2UobW0sIHZtYSk7 CisJaWYgKCFyZXQpCisJCXZtYS0+dm1fZmxhZ3MgfD0gVk1fRE9OVENPVzsKKwltdXRleF91bmxv Y2soJmxvY2spOworCisJcmV0dXJuIHJldDsKK30KKwogLyoKICAqIEhlbHBlciBmdW5jdGlvbnMg Zm9yIHVubWFwX21hcHBpbmdfcmFuZ2UoKS4KICAqCkBAIC0yNDMzLDYgKzI2OTIsOSBAQCBzdGF0 aWMgaW50IGRvX3N3YXBfcGFnZShzdHJ1Y3QgbW1fc3RydWN0CiAJCWNvdW50X3ZtX2V2ZW50KFBH TUFKRkFVTFQpOwogCX0KIAorCWlmICh1bmxpa2VseSh2bWEtPnZtX2ZsYWdzICYgVk1fRE9OVENP VykpCisJCVNldFBhZ2VEb250Q09XKHBhZ2UpOworCiAJbWFya19wYWdlX2FjY2Vzc2VkKHBhZ2Up OwogCiAJbG9ja19wYWdlKHBhZ2UpOwpAQCAtMjUzMCw2ICsyNzkyLDggQEAgc3RhdGljIGludCBk b19hbm9ueW1vdXNfcGFnZShzdHJ1Y3QgbW1fcwogCWlmICghcGFnZSkKIAkJZ290byBvb207CiAJ X19TZXRQYWdlVXB0b2RhdGUocGFnZSk7CisJaWYgKHVubGlrZWx5KHZtYS0+dm1fZmxhZ3MgJiBW TV9ET05UQ09XKSkKKwkJX19TZXRQYWdlRG9udENPVyhwYWdlKTsKIAogCWlmIChtZW1fY2dyb3Vw X25ld3BhZ2VfY2hhcmdlKHBhZ2UsIG1tLCBHRlBfS0VSTkVMKSkKIAkJZ290byBvb21fZnJlZV9w YWdlOwpAQCAtMjYzNiw2ICsyOTAwLDggQEAgc3RhdGljIGludCBfX2RvX2ZhdWx0KHN0cnVjdCBt bV9zdHJ1Y3QgKgogCQkJCWNsZWFyX3BhZ2VfbWxvY2sodm1mLnBhZ2UpOwogCQkJY29weV91c2Vy X2hpZ2hwYWdlKHBhZ2UsIHZtZi5wYWdlLCBhZGRyZXNzLCB2bWEpOwogCQkJX19TZXRQYWdlVXB0 b2RhdGUocGFnZSk7CisJCQlpZiAodW5saWtlbHkodm1hLT52bV9mbGFncyAmIFZNX0RPTlRDT1cp KQorCQkJCV9fU2V0UGFnZURvbnRDT1cocGFnZSk7CiAJCX0gZWxzZSB7CiAJCQkvKgogCQkJICog SWYgdGhlIHBhZ2Ugd2lsbCBiZSBzaGFyZWFibGUsIHNlZSBpZiB0aGUgYmFja2luZwpAQCAtMjkz NSw4ICszMjAxLDkgQEAgaW50IG1ha2VfcGFnZXNfcHJlc2VudCh1bnNpZ25lZCBsb25nIGFkZAog CUJVR19PTihhZGRyID49IGVuZCk7CiAJQlVHX09OKGVuZCA+IHZtYS0+dm1fZW5kKTsKIAlsZW4g PSBESVZfUk9VTkRfVVAoZW5kLCBQQUdFX1NJWkUpIC0gYWRkci9QQUdFX1NJWkU7Ci0JcmV0ID0g Z2V0X3VzZXJfcGFnZXMoY3VycmVudCwgY3VycmVudC0+bW0sIGFkZHIsCi0JCQlsZW4sIHdyaXRl LCAwLCBOVUxMLCBOVUxMKTsKKwlyZXQgPSBfX2dldF91c2VyX3BhZ2VzKGN1cnJlbnQsIGN1cnJl bnQtPm1tLCBhZGRyLAorCQkJbGVuLCBHVVBfRkxBR1NfU1RBQ0sgfCAod3JpdGUgPyBHVVBfRkxB R1NfV1JJVEUgOiAwKSwKKwkJCU5VTEwsIE5VTEwpOwogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4g cmV0OwogCXJldHVybiByZXQgPT0gbGVuID8gMCA6IC1FRkFVTFQ7CkBAIC0zMDg1LDggKzMzNTIs OSBAQCBpbnQgYWNjZXNzX3Byb2Nlc3Nfdm0oc3RydWN0IHRhc2tfc3RydWN0CiAJCXZvaWQgKm1h ZGRyOwogCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEw7CiAKLQkJcmV0ID0gZ2V0X3VzZXJfcGFn ZXModHNrLCBtbSwgYWRkciwgMSwKLQkJCQl3cml0ZSwgMSwgJnBhZ2UsICZ2bWEpOworCQlyZXQg PSBfX2dldF91c2VyX3BhZ2VzKHRzaywgbW0sIGFkZHIsIDEsCisJCQkJR1VQX0ZMQUdTX0ZPUkNF IHwgR1VQX0ZMQUdTX1NUQUNLIHwKKwkJCQkod3JpdGUgPyBHVVBfRkxBR1NfV1JJVEUgOiAwKSwg JnBhZ2UsICZ2bWEpOwogCQlpZiAocmV0IDw9IDApIHsKIAkJCS8qCiAJCQkgKiBDaGVjayBpZiB0 aGlzIGlzIGEgVk1fSU8gfCBWTV9QRk5NQVAgVk1BLCB3aGljaApJbmRleDogbGludXgtMi42L2Fy Y2gveDg2L21tL2d1cC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gveDg2L21t L2d1cC5jCTIwMDktMDMtMTMgMDM6MDA6NTguMDAwMDAwMDAwICsxMTAwCisrKyBsaW51eC0yLjYv YXJjaC94ODYvbW0vZ3VwLmMJMjAwOS0wMy0xMyAwMzowMTowMy4wMDAwMDAwMDAgKzExMDAKQEAg LTgzLDExICs4MywxNCBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGd1cF9wdGVfcmFuZ2UocG1kX3Qg CiAJCXN0cnVjdCBwYWdlICpwYWdlOwogCiAJCWlmICgocHRlX2ZsYWdzKHB0ZSkgJiAobWFzayB8 IF9QQUdFX1NQRUNJQUwpKSAhPSBtYXNrKSB7CitmYWlsZWQ6CiAJCQlwdGVfdW5tYXAocHRlcCk7 CiAJCQlyZXR1cm4gMDsKIAkJfQogCQlWTV9CVUdfT04oIXBmbl92YWxpZChwdGVfcGZuKHB0ZSkp KTsKIAkJcGFnZSA9IHB0ZV9wYWdlKHB0ZSk7CisJCWlmICh1bmxpa2VseSghUGFnZURvbnRDT1co cGFnZSkpKQorCQkJZ290byBmYWlsZWQ7CiAJCWdldF9wYWdlKHBhZ2UpOwogCQlwYWdlc1sqbnJd ID0gcGFnZTsKIAkJKCpucikrKzsKSW5kZXg6IGxpbnV4LTIuNi9pbmNsdWRlL2xpbnV4L3BhZ2Ut ZmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9pbmNsdWRlL2xpbnV4L3BhZ2Ut ZmxhZ3MuaAkyMDA5LTAzLTEzIDAzOjAwOjU4LjAwMDAwMDAwMCArMTEwMAorKysgbGludXgtMi42 L2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oCTIwMDktMDMtMTMgMDM6MDE6MDMuMDAwMDAwMDAw ICsxMTAwCkBAIC05NCw2ICs5NCw3IEBAIGVudW0gcGFnZWZsYWdzIHsKIAlQR19yZWNsYWltLAkJ LyogVG8gYmUgcmVjbGFpbWVkIGFzYXAgKi8KIAlQR19idWRkeSwJCS8qIFBhZ2UgaXMgZnJlZSwg b24gYnVkZHkgbGlzdHMgKi8KIAlQR19zd2FwYmFja2VkLAkJLyogUGFnZSBpcyBiYWNrZWQgYnkg UkFNL3N3YXAgKi8KKwlQR19kb250Y293LAkJLyogUGFnZUFub24gcGFnZSBpbiBhIFZNX0RPTlRD T1cgdm1hICovCiAjaWZkZWYgQ09ORklHX1VORVZJQ1RBQkxFX0xSVQogCVBHX3VuZXZpY3RhYmxl LAkJLyogUGFnZSBpcyAidW5ldmljdGFibGUiICAqLwogCVBHX21sb2NrZWQsCQkvKiBQYWdlIGlz IHZtYSBtbG9ja2VkICovCkBAIC0yMDgsNiArMjA5LDggQEAgX19QQUdFRkxBRyhTbHViRGVidWcs IHNsdWJfZGVidWcpCiAgKi8KIFRFU1RQQUdFRkxBRyhXcml0ZWJhY2ssIHdyaXRlYmFjaykgVEVT VFNDRkxBRyhXcml0ZWJhY2ssIHdyaXRlYmFjaykKIF9fUEFHRUZMQUcoQnVkZHksIGJ1ZGR5KQor X19QQUdFRkxBRyhEb250Q09XLCBkb250Y293KQorU0VUUEFHRUZMQUcoRG9udENPVywgZG9udGNv dykKIFBBR0VGTEFHKE1hcHBlZFRvRGlzaywgbWFwcGVkdG9kaXNrKQogCiAvKiBQR19yZWFkYWhl YWQgaXMgb25seSB1c2VkIGZvciBmaWxlIHJlYWRzOyBQR19yZWNsYWltIGlzIG9ubHkgZm9yIHdy aXRlcyAqLwpJbmRleDogbGludXgtMi42L21tL3BhZ2VfYWxsb2MuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs aW51eC0yLjYub3JpZy9tbS9wYWdlX2FsbG9jLmMJMjAwOS0wMy0xMyAwMzowMDo1OC4wMDAwMDAw MDAgKzExMDAKKysrIGxpbnV4LTIuNi9tbS9wYWdlX2FsbG9jLmMJMjAwOS0wMy0xMyAwMzowMTow My4wMDAwMDAwMDAgKzExMDAKQEAgLTEwMDAsNiArMTAwMCw3IEBAIHN0YXRpYyB2b2lkIGZyZWVf aG90X2NvbGRfcGFnZShzdHJ1Y3QgcGEKIAlzdHJ1Y3QgcGVyX2NwdV9wYWdlcyAqcGNwOwogCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CiAKKwlfX0NsZWFyUGFnZURvbnRDT1cocGFnZSk7CiAJaWYgKFBh Z2VBbm9uKHBhZ2UpKQogCQlwYWdlLT5tYXBwaW5nID0gTlVMTDsKIAlpZiAoZnJlZV9wYWdlc19j aGVjayhwYWdlKSkKSW5kZXg6IGxpbnV4LTIuNi9rZXJuZWwvZm9yay5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGxpbnV4LTIuNi5vcmlnL2tlcm5lbC9mb3JrLmMJMjAwOS0wMy0xMyAwMzowNDozMy4wMDAwMDAw MDAgKzExMDAKKysrIGxpbnV4LTIuNi9rZXJuZWwvZm9yay5jCTIwMDktMDMtMTMgMDM6MDU6MDAu MDAwMDAwMDAwICsxMTAwCkBAIC0zNTMsNyArMzUzLDcgQEAgc3RhdGljIGludCBkdXBfbW1hcChz dHJ1Y3QgbW1fc3RydWN0ICptbQogCQlyYl9wYXJlbnQgPSAmdG1wLT52bV9yYjsKIAogCQltbS0+ bWFwX2NvdW50Kys7Ci0JCXJldHZhbCA9IGNvcHlfcGFnZV9yYW5nZShtbSwgb2xkbW0sIG1wbnQp OworCQlyZXR2YWwgPSBjb3B5X3BhZ2VfcmFuZ2UobW0sIG9sZG1tLCB0bXAsIG1wbnQpOwogCiAJ CWlmICh0bXAtPnZtX29wcyAmJiB0bXAtPnZtX29wcy0+b3BlbikKIAkJCXRtcC0+dm1fb3BzLT5v cGVuKHRtcCk7CkluZGV4OiBsaW51eC0yLjYvZnMvZXhlYy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4 LTIuNi5vcmlnL2ZzL2V4ZWMuYwkyMDA5LTAzLTEzIDAzOjA0OjMzLjAwMDAwMDAwMCArMTEwMAor KysgbGludXgtMi42L2ZzL2V4ZWMuYwkyMDA5LTAzLTEzIDAzOjA1OjAwLjAwMDAwMDAwMCArMTEw MApAQCAtMTY1LDYgKzE2NSwxMyBAQCBleGl0OgogCiAjaWZkZWYgQ09ORklHX01NVQogCisjZGVm aW5lIEdVUF9GTEFHU19XUklURSAgICAgICAgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgR1VQX0ZM QUdTX1NUQUNLICAgICAgICAgICAgICAgICAgMHgxMAorCitpbnQgX19nZXRfdXNlcl9wYWdlcyhz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCisJCSAgICAgdW5z aWduZWQgbG9uZyBzdGFydCwgaW50IGxlbiwgaW50IGZsYWdzLAorCQkgICAgIHN0cnVjdCBwYWdl ICoqcGFnZXMsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMpOworCiBzdGF0aWMgc3RydWN0 IHBhZ2UgKmdldF9hcmdfcGFnZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCB1bnNpZ25lZCBs b25nIHBvcywKIAkJaW50IHdyaXRlKQogewpAQCAtMTc4LDggKzE4NSwxMSBAQCBzdGF0aWMgc3Ry dWN0IHBhZ2UgKmdldF9hcmdfcGFnZShzdHJ1Y3QgCiAJCQlyZXR1cm4gTlVMTDsKIAl9CiAjZW5k aWYKLQlyZXQgPSBnZXRfdXNlcl9wYWdlcyhjdXJyZW50LCBicHJtLT5tbSwgcG9zLAotCQkJMSwg d3JpdGUsIDEsICZwYWdlLCBOVUxMKTsKKwlkb3duX3JlYWQoJmJwcm0tPm1tLT5tbWFwX3NlbSk7 CisJcmV0ID0gX19nZXRfdXNlcl9wYWdlcyhjdXJyZW50LCBicHJtLT5tbSwgcG9zLAorCQkJMSwg R1VQX0ZMQUdTX1NUQUNLIHwgKHdyaXRlID8gR1VQX0ZMQUdTX1dSSVRFIDogMCksCisJCQkmcGFn ZSwgTlVMTCk7CisJdXBfcmVhZCgmYnBybS0+bW0tPm1tYXBfc2VtKTsKIAlpZiAocmV0IDw9IDAp CiAJCXJldHVybiBOVUxMOwogCkluZGV4OiBsaW51eC0yLjYvbW0vaW50ZXJuYWwuaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBsaW51eC0yLjYub3JpZy9tbS9pbnRlcm5hbC5oCTIwMDktMDMtMTMgMDM6MDQ6MzMu MDAwMDAwMDAwICsxMTAwCisrKyBsaW51eC0yLjYvbW0vaW50ZXJuYWwuaAkyMDA5LTAzLTEzIDAz OjA1OjAwLjAwMDAwMDAwMCArMTEwMApAQCAtMjczLDEwICsyNzMsMTEgQEAgc3RhdGljIGlubGlu ZSB2b2lkIG1taW5pdF92YWxpZGF0ZV9tZW1tbwogfQogI2VuZGlmIC8qIENPTkZJR19TUEFSU0VN RU0gKi8KIAotI2RlZmluZSBHVVBfRkxBR1NfV1JJVEUgICAgICAgICAgICAgICAgICAweDEKLSNk ZWZpbmUgR1VQX0ZMQUdTX0ZPUkNFICAgICAgICAgICAgICAgICAgMHgyCi0jZGVmaW5lIEdVUF9G TEFHU19JR05PUkVfVk1BX1BFUk1JU1NJT05TIDB4NAotI2RlZmluZSBHVVBfRkxBR1NfSUdOT1JF X1NJR0tJTEwgICAgICAgICAweDgKKyNkZWZpbmUgR1VQX0ZMQUdTX1dSSVRFICAgICAgICAgICAg ICAgICAgMHgwMQorI2RlZmluZSBHVVBfRkxBR1NfRk9SQ0UgICAgICAgICAgICAgICAgICAweDAy CisjZGVmaW5lIEdVUF9GTEFHU19JR05PUkVfVk1BX1BFUk1JU1NJT05TIDB4MDQKKyNkZWZpbmUg R1VQX0ZMQUdTX0lHTk9SRV9TSUdLSUxMICAgICAgICAgMHgwOAorI2RlZmluZSBHVVBfRkxBR1Nf U1RBQ0sgICAgICAgICAgICAgICAgICAweDEwCiAKIGludCBfX2dldF91c2VyX3BhZ2VzKHN0cnVj dCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJICAgICB1bnNpZ25l ZCBsb25nIHN0YXJ0LCBpbnQgbGVuLCBpbnQgZmxhZ3MsCgAKCgo= -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org