From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail202.messagelabs.com (mail202.messagelabs.com [216.82.254.227]) by kanga.kvack.org (Postfix) with SMTP id 835855F0001 for ; Tue, 14 Apr 2009 04:41:22 -0400 (EDT) From: Nick Piggin Subject: Re: [RFC][PATCH 0/6] IO pinning(get_user_pages()) vs fork race fix Date: Tue, 14 Apr 2009 18:41:48 +1000 References: <20090414151204.C647.A69D9226@jp.fujitsu.com> In-Reply-To: <20090414151204.C647.A69D9226@jp.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: base64 Content-Disposition: inline Message-Id: <200904141841.50397.nickpiggin@yahoo.com.au> Sender: owner-linux-mm@kvack.org To: KOSAKI Motohiro , "David S. Miller" , netdev@vger.kernel.org Cc: Linus Torvalds , Andrew Morton , Andrea Arcangeli , Jeff Moyer , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, LKML List-ID: T24gVHVlc2RheSAxNCBBcHJpbCAyMDA5IDE2OjE1OjQzIEtPU0FLSSBNb3RvaGlybyB3cm90ZToK PiAKPiBMaW51eCBEZXZpY2UgRHJpdmVycywgVGhpcmQgRWRpdGlvbiwgQ2hhcHRlciAxNTogTWVt b3J5IE1hcHBpbmcgYW5kIERNQSBzYXlzCj4gCj4gCWdldF91c2VyX3BhZ2VzIGlzIGEgbG93LWxl dmVsIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uLCB3aXRoIGEgc3VpdGFibHkgY29tcGxleAo+ IAlpbnRlcmZhY2UuIEl0IGFsc28gcmVxdWlyZXMgdGhhdCB0aGUgbW1hcCByZWFkZXIvd3JpdGVy IHNlbWFwaG9yZSBmb3IgdGhlIGFkZHJlc3MKPiAJc3BhY2UgYmUgb2J0YWluZWQgaW4gcmVhZCBt b2RlIGJlZm9yZSB0aGUgY2FsbC4gQXMgYSByZXN1bHQsIGNhbGxzIHRvIGdldF91c2VyX3BhZ2Vz Cj4gCXVzdWFsbHkgbG9vayBzb21ldGhpbmcgbGlrZToKPiAKPiAJCWRvd25fcmVhZCgmY3VycmVu dC0+bW0tPm1tYXBfc2VtKTsKPiAJCXJlc3VsdCA9IGdldF91c2VyX3BhZ2VzKGN1cnJlbnQsIGN1 cnJlbnQtPm1tLCAuLi4pOwo+IAkJdXBfcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKPiAK PiAJVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIGFjdHVhbGx5IG1hcHBl ZCwgd2hpY2ggY291bGQgYmUgZmV3ZXIgdGhhbgo+IAl0aGUgbnVtYmVyIHJlcXVlc3RlZCAoYnV0 IGdyZWF0ZXIgdGhhbiB6ZXJvKS4KPiAKPiBidXQsIGl0IGlzbid0IHRydWUuIG1tYXBfc2VtIGlz bid0IG9ubHkgdXNlZCBmb3Igdm1hIHRyYXZlcnNhbCwgYnV0IGFsc28gcHJldmVudCB2cy1mb3Jr IHJhY2UuCj4gdXBfcmVhZChtbWFwX3NlbSkgbWVhbiBlbmQgb2YgY3JpdGljYWwgc2VjdGlvbiwg SU9XIGFmdGVyIHVwX3JlYWQoKSBjb2RlIGlzIGZvcmsgdW5zYWZlLgo+IChhY2Nlc3NfcHJvY2Vz c192bSgpIGV4cGxhaW4gcHJvcGVyIGdldF91c2VyX3BhZ2VzKCkgdXNhZ2UpCj4gCj4gT2ggd2Vs bCwgV2UgaGF2ZSBtYW55IHdyb25nIGNhbGxlciBub3cuIFdoYXQgaXMgdGhlIGJlc3QgZml4IG1l dGhvZD8KCldoYXQgaW5kZWVkLi4uCgoKPiBOaWNrIFBpZ2dpbiBhbmQgQW5kcmVhIEFyY2FuZ2Vs aSBwcm9wb3NlZCB0byBjaGFuZ2UgZ2V0X3VzZXJfcGFnZXMoKSBzZW1hbnRpY3MgYXMgY2FsbGVy IGV4cGVjdGVkLgo+ICAgc2VlICJbUEFUQ0hdIGZvcmsgdnMgZ3VwKC1mYXN0KSBmaXgiIHRoZWFk IGluIGxpbnV4LW1tCj4gYnV0IExpbnVzIE5BQ0tlZCBpdC4KPiAKPiBUaHVzIEkgbWFkZSBjYWxs ZXIgY2hhbmdlIGFwcHJvYWNoIHBhdGNoIHNlcmllcy4gaXQgaXMgbWFkZSBmb3IgZGlzY3VzcyB0 byBjb21wYXJlIE5pY2sncyBhcHByb2FjaC4KPiBJIGRvbid0IGhvcGUgc3VibWl0IGl0IHlldC4K PiAKPiBOaWNrLCBUaGlzIHZlcnNpb24gZml4ZWQgdm1zcGxpY2UgYW5kIGFpbyBpc3N1ZSAoeW91 IHBvaW50ZWQpLiBJIGhvcGUgdG8gaGVhciB5b3VyIG9waW5pdG9uIDspCgpJIGRvbid0IHNlZSBo b3cgaXQgZml4ZXMgdm1zcGxpY2U/IHZtc3BsaWNlIGNhbiBnZXRfdXNlcl9wYWdlcyBwYWdlcyBm cm9tIG9uZQpwcm9jZXNzJ3MgYWRkcmVzcyBzcGFjZSBhbmQgcHV0IHRoZW0gaW50byBhIHBpcGUs IGFuZCB0aGV5IGFyZSByZWxlYXNlZCBieQphbm90aGVyIHByb2Nlc3MgYWZ0ZXIgY29uc3VtaW5n IHRoZSBwYWdlcyBJIHRoaW5rLiBTbyBpdCdzIGZhaXJseSBoYXJkIHRvIGhvbGQKYSBsb2NrIG92 ZXIgdGhpcy4KCkkgZ3Vlc3MgYXBhcnQgZnJvbSB0aGUgdm1zcGxpY2UgaXNzdWUgKHVubGVzcyBJ IG1pc3NlZCBhIGNsZXZlciBmaXgpLCBJIGd1ZXNzCnRoaXMgKmRvZXMqIHdvcmsuIEkgY2FuJ3Qg c2VlIGFueSByYWNlcy4uLiBJJ2QgcmVhbGx5IHN0aWxsIGxpa2UgdG8gaGVhciBhIGdvb2QKcmVh c29uIHdoeSBteSBwcm9wb3NlZCBwYXRjaCBpcyBzbyBvYnZpb3VzbHkgY3JhcC4KClJlYXNvbnMg cHJvcG9zZWQgc28gZmFyOgoiTm8gbG9ja2luZyIgKEkgdGhpbmsgdGhpcyBpcyBhIGdvb2QgdGhp bmc7IG5vICpidWdzKiBoYXZlIGJlZW4gcG9pbnRlZCBvdXQpCiJUb28gbWFueSBwYWdlIGZsYWdz IiAoYnV0IGl0IG9ubHkgdXNlcyAxIGFub24gcGFnZSBmbGFnLCBvbmx5IGZzIHBhZ2VjYWNoZQpo YXMgYSBmbGFncyBzaG9ydGFnZSBzbyB3ZSBjYW4gZWFzaWx5IG92ZXJsb2FkIGEgcGFnZWNhY2hl IGZsYWcpCiJEaWZmc3RhdCB0b28gbGFyZ2UiIChzZWVtcyBjb21wYXJhYmxlIHdoZW4geW91IGZh Y3RvciBpbiB0aGUgZml4ZXMgdG8gY2FsbGVycywKYnV0IGhhcyB0aGUgYWR2YW50YWdlIG9mIGJl aW5nIGNvbnRhaW5lZCB3aXRoaW4gVk0gc3Vic3lzdGVtKQoiSG9ycmlibGUgY29kZSIgKEkgc3Rp bGwgZG9uJ3Qgc2VlIGl0LiBPZiBjb3Vyc2UgdGhlIGNvZGUgd2lsbCBiZSBuaWNlciBpZiB3ZQpk b24ndCBmaXggdGhlIGlzc3VlIF9hdCBhbGxfLCBidXQgSSBkb24ndCBzZWUgdGhpcyBpcyBzbyBt dWNoIHdvcnNlIHRoYW4gaGF2aW5nCnRvIGZpeCBjYWxsZXJzLikKCkZXSVcsIEkgaGF2ZSBhdHRh Y2hlZCBteSBwYXRjaCBhZ2FpbiAod2l0aCBzaW1wbGUgZnVuY3Rpb24tbW92ZW1lbnQgaHVua3MK bW92ZWQgaW50byBhbm90aGVyIHBhdGNoIHNvIGl0IGlzIGVhc2llciB0byBzZWUgcmVhbCBpbXBh Y3Qgb2YgdGhpcyBwYXRjaCkuCgoKPiBDaGFuZ2VMb2c6Cj4gICBWMiAtPiBWMwo+ICAgIG8gcmVt b3ZlIGVhcmx5IGRlY293IGxvZ2ljCj4gICAgbyBpbnRyb2R1Y2UgcHJldmVudCB1bm1hcCBsb2dp Ywo+ICAgIG8gZml4IG5mcy1kaXJlY3Rpbwo+ICAgIG8gZml4IGFpbwo+ICAgIG8gZml4IGJpbyAo b25seSBiYW5kYWlkIGZpeCkKPiAKPiAgIFYxIC0+IFYyCj4gICAgbyBmaXggYWlvK2RpbyBjYXNl Cj4gCj4gVE9ETwo+ICAgbyBpbXBsZW1lbnQgZG93bl93cml0ZV9raWxsYWJsZSgpCj4gICBvIGZp eCBrdm0gKG5lZWQ/KQo+ICAgbyBmaXggZ2V0X2FyZ19wYWdlKCkgKFdoeSB0aGlzIGZ1bmN0aW9u IGRvbid0IHVzZSBtbWFwX3NlbT8pCgpQcm9iYWJseSBzb21lb25lIHdhcyBzaG9vdGluZyBmb3Ig YSBjcmF6eSBvcHRpbWlzYXRpb24gYmVjYXVzZSBubyBvdGhlcgp0aHJlYWRzIHNob3VsZCBiZSBh YmxlIHRvIGFjY2VzcyB0aGlzIG1tIHlldCA6KQoKQW55d2F5LCB0aGlzIGlzIG15IHByb3Bvc2Fs LiBJdCBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IGl0IGZpeGVzIGV2ZXJ5CmNhbGxlciBpbiB0aGUg dHJlZS4KCi0tLQogYXJjaC9wb3dlcnBjL21tL2d1cC5jICAgICAgfCAgICAyIAogYXJjaC94ODYv bW0vZ3VwLmMgICAgICAgICAgfCAgICAzIAogaW5jbHVkZS9saW51eC9tbS5oICAgICAgICAgfCAg ICAyIAogaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmggfCAgICA1ICsKIGtlcm5lbC9mb3JrLmMg ICAgICAgICAgICAgIHwgICAgMiAKIG1tL21lbW9yeS5jICAgICAgICAgICAgICAgIHwgIDE3OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIDYgZmlsZXMgY2hh bmdlZCwgMTY3IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKSW5kZXg6IGxpbnV4LTIu Ni9pbmNsdWRlL2xpbnV4L21tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42Lm9yaWcvaW5jbHVk ZS9saW51eC9tbS5oCisrKyBsaW51eC0yLjYvaW5jbHVkZS9saW51eC9tbS5oCkBAIC03OTEsNyAr NzkxLDcgQEAgaW50IHdhbGtfcGFnZV9yYW5nZSh1bnNpZ25lZCBsb25nIGFkZHIsCiB2b2lkIGZy ZWVfcGdkX3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsIHVuc2lnbmVkIGxvbmcgYWRkciwK IAkJdW5zaWduZWQgbG9uZyBlbmQsIHVuc2lnbmVkIGxvbmcgZmxvb3IsIHVuc2lnbmVkIGxvbmcg Y2VpbGluZyk7CiBpbnQgY29weV9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3Ry dWN0IG1tX3N0cnVjdCAqc3JjLAotCQkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOworCQlz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmRzdF92bWEsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqc3Jj X3ZtYSk7CiB2b2lkIHVubWFwX21hcHBpbmdfcmFuZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1h cHBpbmcsCiAJCWxvZmZfdCBjb25zdCBob2xlYmVnaW4sIGxvZmZfdCBjb25zdCBob2xlbGVuLCBp bnQgZXZlbl9jb3dzKTsKIGludCBmb2xsb3dfcGh5cyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLApJbmRleDogbGludXgtMi42L21tL21lbW9yeS5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmlnL21tL21lbW9yeS5jCisrKyBsaW51eC0yLjYvbW0v bWVtb3J5LmMKQEAgLTYwMSwxMiArNjAxLDEwMyBAQCB2b2lkIHphcF9wdGUoc3RydWN0IG1tX3N0 cnVjdCAqbW0sIHN0cnVjCiAJfQogfQogLyoKKyAqIGJyZWFrcyBDT1cgb2YgY2hpbGQgcHRlIHRo YXQgaGFzIGJlZW4gbWFya2VkIENPVyBieSBmb3JrKCkuCisgKiBNdXN0IGJlIGNhbGxlZCB3aXRo IHRoZSBjaGlsZCdzIHB0bCBoZWxkIGFuZCBwdGUgbWFwcGVkLgorICogUmV0dXJucyAwIG9uIHN1 Y2Nlc3Mgd2l0aCBwdGwgaGVsZCBhbmQgcHRlIG1hcHBlZC4KKyAqIC1FTk9NRU0gb24gT09NIGZh aWx1cmUsIG9yIC1FQUdBSU4gaWYgc29tZXRoaW5nIGNoYW5nZWQgdW5kZXIgdXMuCisgKiBwdGwg ZHJvcHBlZCBhbmQgcHRlIHVubWFwcGVkIG9uIGVycm9yIGNhc2VzLgorICovCitzdGF0aWMgbm9p bmxpbmUgaW50IGRlY293X29uZV9wdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHB0ZV90ICpwdGVw LCBwbWRfdCAqcG1kLAorCQkJc3BpbmxvY2tfdCAqcHRsLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSwKKwkJCXVuc2lnbmVkIGxvbmcgYWRkcmVzcykKK3sKKwlwdGVfdCBwdGUgPSAqcHRlcDsK KwlzdHJ1Y3QgcGFnZSAqcGFnZSwgKm5ld19wYWdlOworCWludCByZXQ7CisKKwlCVUdfT04oIXB0 ZV9wcmVzZW50KHB0ZSkpOworCUJVR19PTihwdGVfd3JpdGUocHRlKSk7CisKKwlwYWdlID0gdm1f bm9ybWFsX3BhZ2Uodm1hLCBhZGRyZXNzLCBwdGUpOworCUJVR19PTighcGFnZSk7CisJQlVHX09O KCFQYWdlQW5vbihwYWdlKSk7CisJQlVHX09OKCFQYWdlRG9udENPVyhwYWdlKSk7CisKKwkvKiBU aGUgZm9sbG93aW5nIGNvZGUgY29tZXMgZnJvbSBkb193cF9wYWdlICovCisJcGFnZV9jYWNoZV9n ZXQocGFnZSk7CisJcHRlX3VubWFwX3VubG9jayhwdGUsIHB0bCk7CisKKwlpZiAodW5saWtlbHko YW5vbl92bWFfcHJlcGFyZSh2bWEpKSkKKwkJZ290byBvb207CisJVk1fQlVHX09OKHBhZ2UgPT0g WkVST19QQUdFKDApKTsKKwluZXdfcGFnZSA9IGFsbG9jX3BhZ2Vfdm1hKEdGUF9ISUdIVVNFUl9N T1ZBQkxFLCB2bWEsIGFkZHJlc3MpOworCWlmICghbmV3X3BhZ2UpCisJCWdvdG8gb29tOworCS8q CisJICogRG9uJ3QgbGV0IGFub3RoZXIgdGFzaywgd2l0aCBwb3NzaWJseSB1bmxvY2tlZCB2bWEs CisJICoga2VlcCB0aGUgbWxvY2tlZCBwYWdlLgorCSAqLworCWlmICh2bWEtPnZtX2ZsYWdzICYg Vk1fTE9DS0VEKSB7CisJCWxvY2tfcGFnZShwYWdlKTsJLyogZm9yIExSVSBtYW5pcHVsYXRpb24g Ki8KKwkJY2xlYXJfcGFnZV9tbG9jayhwYWdlKTsKKwkJdW5sb2NrX3BhZ2UocGFnZSk7CisJfQor CWNvd191c2VyX3BhZ2UobmV3X3BhZ2UsIHBhZ2UsIGFkZHJlc3MsIHZtYSk7CisJX19TZXRQYWdl VXB0b2RhdGUobmV3X3BhZ2UpOworCisJaWYgKG1lbV9jZ3JvdXBfbmV3cGFnZV9jaGFyZ2UobmV3 X3BhZ2UsIG1tLCBHRlBfS0VSTkVMKSkKKwkJZ290byBvb21fZnJlZV9uZXc7CisKKwkvKgorCSAq IFJlLWNoZWNrIHRoZSBwdGUgLSB3ZSBkcm9wcGVkIHRoZSBsb2NrCisJICovCisJcHRlcCA9IHB0 ZV9vZmZzZXRfbWFwX2xvY2sobW0sIHBtZCwgYWRkcmVzcywgJnB0bCk7CisJaWYgKHB0ZV9zYW1l KCpwdGVwLCBwdGUpKSB7CisJCXB0ZV90IGVudHJ5OworCisJCWZsdXNoX2NhY2hlX3BhZ2Uodm1h LCBhZGRyZXNzLCBwdGVfcGZuKHB0ZSkpOworCQllbnRyeSA9IG1rX3B0ZShuZXdfcGFnZSwgdm1h LT52bV9wYWdlX3Byb3QpOworCQllbnRyeSA9IG1heWJlX21rd3JpdGUocHRlX21rZGlydHkoZW50 cnkpLCB2bWEpOworCQkvKgorCQkgKiBDbGVhciB0aGUgcHRlIGVudHJ5IGFuZCBmbHVzaCBpdCBm aXJzdCwgYmVmb3JlIHVwZGF0aW5nIHRoZQorCQkgKiBwdGUgd2l0aCB0aGUgbmV3IGVudHJ5LiBU aGlzIHdpbGwgYXZvaWQgYSByYWNlIGNvbmRpdGlvbgorCQkgKiBzZWVuIGluIHRoZSBwcmVzZW5j ZSBvZiBvbmUgdGhyZWFkIGRvaW5nIFNNQyBhbmQgYW5vdGhlcgorCQkgKiB0aHJlYWQgZG9pbmcg Q09XLgorCQkgKi8KKwkJcHRlcF9jbGVhcl9mbHVzaF9ub3RpZnkodm1hLCBhZGRyZXNzLCBwdGVw KTsKKwkJcGFnZV9hZGRfbmV3X2Fub25fcm1hcChuZXdfcGFnZSwgdm1hLCBhZGRyZXNzKTsKKwkJ c2V0X3B0ZV9hdChtbSwgYWRkcmVzcywgcHRlcCwgZW50cnkpOworCisJCS8qIFNlZSBjb21tZW50 IGluIGRvX3dwX3BhZ2UgKi8KKwkJcGFnZV9yZW1vdmVfcm1hcChwYWdlKTsKKwkJcGFnZV9jYWNo ZV9yZWxlYXNlKHBhZ2UpOworCQlyZXQgPSAwOworCX0gZWxzZSB7CisJCWlmICghcHRlX25vbmUo KnB0ZXApKQorCQkJemFwX3B0ZShtbSwgdm1hLCBhZGRyZXNzLCBwdGVwKTsKKwkJcHRlX3VubWFw X3VubG9jayhwdGUsIHB0bCk7CisJCW1lbV9jZ3JvdXBfdW5jaGFyZ2VfcGFnZShuZXdfcGFnZSk7 CisJCXBhZ2VfY2FjaGVfcmVsZWFzZShuZXdfcGFnZSk7CisJCXJldCA9IC1FQUdBSU47CisJfQor CXBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKTsKKworCXJldHVybiByZXQ7CisKK29vbV9mcmVlX25l dzoKKwlwYWdlX2NhY2hlX3JlbGVhc2UobmV3X3BhZ2UpOworb29tOgorCXBhZ2VfY2FjaGVfcmVs ZWFzZShwYWdlKTsKKwlyZXR1cm4gLUVOT01FTTsKK30KKworLyoKICAqIGNvcHkgb25lIHZtX2Fy ZWEgZnJvbSBvbmUgdGFzayB0byB0aGUgb3RoZXIuIEFzc3VtZXMgdGhlIHBhZ2UgdGFibGVzCiAg KiBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIG5ldyB0YXNrIHRvIGJlIGNsZWFyZWQgaW4gdGhlIHdo b2xlIHJhbmdlCiAgKiBjb3ZlcmVkIGJ5IHRoaXMgdm1hLgogICovCiAKLXN0YXRpYyBpbmxpbmUg dm9pZAorc3RhdGljIGlubGluZSBpbnQKIGNvcHlfb25lX3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICpk c3RfbW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyY19tbSwKIAkJcHRlX3QgKmRzdF9wdGUsIHB0ZV90 ICpzcmNfcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJdW5zaWduZWQgbG9uZyBh ZGRyLCBpbnQgKnJzcykKQEAgLTYxNCw2ICs3MDUsNyBAQCBjb3B5X29uZV9wdGUoc3RydWN0IG1t X3N0cnVjdCAqZHN0X21tLCBzCiAJdW5zaWduZWQgbG9uZyB2bV9mbGFncyA9IHZtYS0+dm1fZmxh Z3M7CiAJcHRlX3QgcHRlID0gKnNyY19wdGU7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CisJaW50IHJl dCA9IDA7CiAKIAkvKiBwdGUgY29udGFpbnMgcG9zaXRpb24gaW4gc3dhcCBvciBmaWxlLCBzbyBj b3B5LiAqLwogCWlmICh1bmxpa2VseSghcHRlX3ByZXNlbnQocHRlKSkpIHsKQEAgLTY2NSwyMCAr NzU3LDI2IEBAIGNvcHlfb25lX3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3RfbW0sIHMKIAkJZ2V0 X3BhZ2UocGFnZSk7CiAJCXBhZ2VfZHVwX3JtYXAocGFnZSwgdm1hLCBhZGRyKTsKIAkJcnNzWyEh UGFnZUFub24ocGFnZSldKys7CisJCWlmICh1bmxpa2VseShQYWdlRG9udENPVyhwYWdlKSkgJiYg UGFnZUFub24ocGFnZSkpCisJCQlyZXQgPSAxOwogCX0KIAogb3V0X3NldF9wdGU6CiAJc2V0X3B0 ZV9hdChkc3RfbW0sIGFkZHIsIGRzdF9wdGUsIHB0ZSk7CisKKwlyZXR1cm4gcmV0OwogfQogCiBz dGF0aWMgaW50IGNvcHlfcHRlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdF9tbSwgc3RydWN0 IG1tX3N0cnVjdCAqc3JjX21tLAotCQlwbWRfdCAqZHN0X3BtZCwgcG1kX3QgKnNyY19wbWQsIHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAorCQlwbWRfdCAqZHN0X3BtZCwgcG1kX3QgKnNyY19w bWQsCisJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqZHN0X3ZtYSwgc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICpzcmNfdm1hLAogCQl1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kKQog ewogCXB0ZV90ICpzcmNfcHRlLCAqZHN0X3B0ZTsKIAlzcGlubG9ja190ICpzcmNfcHRsLCAqZHN0 X3B0bDsKIAlpbnQgcHJvZ3Jlc3MgPSAwOwogCWludCByc3NbMl07CisJaW50IGRlY293OwogCiBh Z2FpbjoKIAlyc3NbMV0gPSByc3NbMF0gPSAwOwpAQCAtNzA1LDcgKzgwMywxMCBAQCBhZ2FpbjoK IAkJCXByb2dyZXNzKys7CiAJCQljb250aW51ZTsKIAkJfQotCQljb3B5X29uZV9wdGUoZHN0X21t LCBzcmNfbW0sIGRzdF9wdGUsIHNyY19wdGUsIHZtYSwgYWRkciwgcnNzKTsKKwkJZGVjb3cgPSBj b3B5X29uZV9wdGUoZHN0X21tLCBzcmNfbW0sIGRzdF9wdGUsIHNyY19wdGUsCisJCQkJCQlzcmNf dm1hLCBhZGRyLCByc3MpOworCQlpZiAodW5saWtlbHkoZGVjb3cpKQorCQkJZ290byBkZWNvdzsK IAkJcHJvZ3Jlc3MgKz0gODsKIAl9IHdoaWxlIChkc3RfcHRlKyssIHNyY19wdGUrKywgYWRkciAr PSBQQUdFX1NJWkUsIGFkZHIgIT0gZW5kKTsKIApAQCAtNzE0LDE0ICs4MTUsMzEgQEAgYWdhaW46 CiAJcHRlX3VubWFwX25lc3RlZChzcmNfcHRlIC0gMSk7CiAJYWRkX21tX3Jzcyhkc3RfbW0sIHJz c1swXSwgcnNzWzFdKTsKIAlwdGVfdW5tYXBfdW5sb2NrKGRzdF9wdGUgLSAxLCBkc3RfcHRsKTsK K25leHQ6CiAJY29uZF9yZXNjaGVkKCk7CiAJaWYgKGFkZHIgIT0gZW5kKQogCQlnb3RvIGFnYWlu OwogCXJldHVybiAwOworCitkZWNvdzoKKwlhcmNoX2xlYXZlX2xhenlfbW11X21vZGUoKTsKKwlz cGluX3VubG9jayhzcmNfcHRsKTsKKwlwdGVfdW5tYXBfbmVzdGVkKHNyY19wdGUpOworCWFkZF9t bV9yc3MoZHN0X21tLCByc3NbMF0sIHJzc1sxXSk7CisJZGVjb3cgPSBkZWNvd19vbmVfcHRlKGRz dF9tbSwgZHN0X3B0ZSwgZHN0X3BtZCwgZHN0X3B0bCwgZHN0X3ZtYSwgYWRkcik7CisJaWYgKGRl Y293ID09IC1FTk9NRU0pCisJCXJldHVybiAtRU5PTUVNOworCWlmIChkZWNvdyA9PSAtRUFHQUlO KQorCQlnb3RvIGFnYWluOworCXB0ZV91bm1hcF91bmxvY2soZHN0X3B0ZSwgZHN0X3B0bCk7CisJ Y29uZF9yZXNjaGVkKCk7CisJYWRkciArPSBQQUdFX1NJWkU7CisJZ290byBuZXh0OwogfQogCiBz dGF0aWMgaW5saW5lIGludCBjb3B5X3BtZF9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3RfbW0s IHN0cnVjdCBtbV9zdHJ1Y3QgKnNyY19tbSwKLQkJcHVkX3QgKmRzdF9wdWQsIHB1ZF90ICpzcmNf cHVkLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKKwkJcHVkX3QgKmRzdF9wdWQsIHB1ZF90 ICpzcmNfcHVkLAorCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmRzdF92bWEsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqc3JjX3ZtYSwKIAkJdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25n IGVuZCkKIHsKIAlwbWRfdCAqc3JjX3BtZCwgKmRzdF9wbWQ7CkBAIC03MzYsMTQgKzg1NCwxNSBA QCBzdGF0aWMgaW5saW5lIGludCBjb3B5X3BtZF9yYW5nZShzdHJ1Y3QKIAkJaWYgKHBtZF9ub25l X29yX2NsZWFyX2JhZChzcmNfcG1kKSkKIAkJCWNvbnRpbnVlOwogCQlpZiAoY29weV9wdGVfcmFu Z2UoZHN0X21tLCBzcmNfbW0sIGRzdF9wbWQsIHNyY19wbWQsCi0JCQkJCQl2bWEsIGFkZHIsIG5l eHQpKQorCQkJCQkJZHN0X3ZtYSwgc3JjX3ZtYSwgYWRkciwgbmV4dCkpCiAJCQlyZXR1cm4gLUVO T01FTTsKIAl9IHdoaWxlIChkc3RfcG1kKyssIHNyY19wbWQrKywgYWRkciA9IG5leHQsIGFkZHIg IT0gZW5kKTsKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgY29weV9wdWRfcmFu Z2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0X21tLCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmNfbW0sCi0J CXBnZF90ICpkc3RfcGdkLCBwZ2RfdCAqc3JjX3BnZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEsCisJCXBnZF90ICpkc3RfcGdkLCBwZ2RfdCAqc3JjX3BnZCwKKwkJc3RydWN0IHZtX2FyZWFf c3RydWN0ICpkc3Rfdm1hLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnNyY192bWEsCiAJCXVuc2ln bmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQpCiB7CiAJcHVkX3QgKnNyY19wdWQsICpk c3RfcHVkOwpAQCAtNzU4LDE5ICs4NzcsMTkgQEAgc3RhdGljIGlubGluZSBpbnQgY29weV9wdWRf cmFuZ2Uoc3RydWN0CiAJCWlmIChwdWRfbm9uZV9vcl9jbGVhcl9iYWQoc3JjX3B1ZCkpCiAJCQlj b250aW51ZTsKIAkJaWYgKGNvcHlfcG1kX3JhbmdlKGRzdF9tbSwgc3JjX21tLCBkc3RfcHVkLCBz cmNfcHVkLAotCQkJCQkJdm1hLCBhZGRyLCBuZXh0KSkKKwkJCQkJCWRzdF92bWEsIHNyY192bWEs IGFkZHIsIG5leHQpKQogCQkJcmV0dXJuIC1FTk9NRU07CiAJfSB3aGlsZSAoZHN0X3B1ZCsrLCBz cmNfcHVkKyssIGFkZHIgPSBuZXh0LCBhZGRyICE9IGVuZCk7CiAJcmV0dXJuIDA7CiB9CiAKIGlu dCBjb3B5X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0X21tLCBzdHJ1Y3QgbW1fc3Ry dWN0ICpzcmNfbW0sCi0JCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQorCQlzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKmRzdF92bWEsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqc3JjX3ZtYSkKIHsK IAlwZ2RfdCAqc3JjX3BnZCwgKmRzdF9wZ2Q7CiAJdW5zaWduZWQgbG9uZyBuZXh0OwotCXVuc2ln bmVkIGxvbmcgYWRkciA9IHZtYS0+dm1fc3RhcnQ7Ci0JdW5zaWduZWQgbG9uZyBlbmQgPSB2bWEt PnZtX2VuZDsKKwl1bnNpZ25lZCBsb25nIGFkZHIgPSBzcmNfdm1hLT52bV9zdGFydDsKKwl1bnNp Z25lZCBsb25nIGVuZCA9IHNyY192bWEtPnZtX2VuZDsKIAlpbnQgcmV0OwogCiAJLyoKQEAgLTc3 OSwyMCArODk4LDIwIEBAIGludCBjb3B5X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHMK IAkgKiByZWFkb25seSBtYXBwaW5ncy4gVGhlIHRyYWRlb2ZmIGlzIHRoYXQgY29weV9wYWdlX3Jh bmdlIGlzIG1vcmUKIAkgKiBlZmZpY2llbnQgdGhhbiBmYXVsdGluZy4KIAkgKi8KLQlpZiAoISh2 bWEtPnZtX2ZsYWdzICYgKFZNX0hVR0VUTEJ8Vk1fTk9OTElORUFSfFZNX1BGTk1BUHxWTV9JTlNF UlRQQUdFKSkpIHsKLQkJaWYgKCF2bWEtPmFub25fdm1hKQorCWlmICghKHNyY192bWEtPnZtX2Zs YWdzICYgKFZNX0hVR0VUTEJ8Vk1fTk9OTElORUFSfFZNX1BGTk1BUHxWTV9JTlNFUlRQQUdFKSkp IHsKKwkJaWYgKCFzcmNfdm1hLT5hbm9uX3ZtYSkKIAkJCXJldHVybiAwOwogCX0KIAotCWlmIChp c192bV9odWdldGxiX3BhZ2Uodm1hKSkKLQkJcmV0dXJuIGNvcHlfaHVnZXRsYl9wYWdlX3Jhbmdl KGRzdF9tbSwgc3JjX21tLCB2bWEpOworCWlmIChpc192bV9odWdldGxiX3BhZ2Uoc3JjX3ZtYSkp CisJCXJldHVybiBjb3B5X2h1Z2V0bGJfcGFnZV9yYW5nZShkc3RfbW0sIHNyY19tbSwgc3JjX3Zt YSk7CiAKLQlpZiAodW5saWtlbHkoaXNfcGZuX21hcHBpbmcodm1hKSkpIHsKKwlpZiAodW5saWtl bHkoaXNfcGZuX21hcHBpbmcoc3JjX3ZtYSkpKSB7CiAJCS8qCiAJCSAqIFdlIGRvIG5vdCBmcmVl IG9uIGVycm9yIGNhc2VzIGJlbG93IGFzIHJlbW92ZV92bWEKIAkJICogZ2V0cyBjYWxsZWQgb24g ZXJyb3IgZnJvbSBoaWdoZXIgbGV2ZWwgcm91dGluZQogCQkgKi8KLQkJcmV0ID0gdHJhY2tfcGZu X3ZtYV9jb3B5KHZtYSk7CisJCXJldCA9IHRyYWNrX3Bmbl92bWFfY29weShzcmNfdm1hKTsKIAkJ aWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQpAQCAtODAzLDcgKzkyMiw3IEBAIGludCBjb3B5 X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHMKIAkgKiBwYXJlbnQgbW0uIEFuZCBhIHBl cm1pc3Npb24gZG93bmdyYWRlIHdpbGwgb25seSBoYXBwZW4gaWYKIAkgKiBpc19jb3dfbWFwcGlu ZygpIHJldHVybnMgdHJ1ZS4KIAkgKi8KLQlpZiAoaXNfY293X21hcHBpbmcodm1hLT52bV9mbGFn cykpCisJaWYgKGlzX2Nvd19tYXBwaW5nKHNyY192bWEtPnZtX2ZsYWdzKSkKIAkJbW11X25vdGlm aWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3JjX21tLCBhZGRyLCBlbmQpOwogCiAJcmV0ID0g MDsKQEAgLTgxNCwxNSArOTMzLDE2IEBAIGludCBjb3B5X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0 cnVjdCAqZHMKIAkJaWYgKHBnZF9ub25lX29yX2NsZWFyX2JhZChzcmNfcGdkKSkKIAkJCWNvbnRp bnVlOwogCQlpZiAodW5saWtlbHkoY29weV9wdWRfcmFuZ2UoZHN0X21tLCBzcmNfbW0sIGRzdF9w Z2QsIHNyY19wZ2QsCi0JCQkJCSAgICB2bWEsIGFkZHIsIG5leHQpKSkgeworCQkJCQkgICAgZHN0 X3ZtYSwgc3JjX3ZtYSwgYWRkciwgbmV4dCkpKSB7CiAJCQlyZXQgPSAtRU5PTUVNOwogCQkJYnJl YWs7CiAJCX0KIAl9IHdoaWxlIChkc3RfcGdkKyssIHNyY19wZ2QrKywgYWRkciA9IG5leHQsIGFk ZHIgIT0gZW5kKTsKIAotCWlmIChpc19jb3dfbWFwcGluZyh2bWEtPnZtX2ZsYWdzKSkKKwlpZiAo aXNfY293X21hcHBpbmcoc3JjX3ZtYS0+dm1fZmxhZ3MpKQogCQltbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZV9lbmQoc3JjX21tLAotCQkJCQkJICB2bWEtPnZtX3N0YXJ0LCBlbmQpOworCQkJ CQkJICBzcmNfdm1hLT52bV9zdGFydCwgZW5kKTsKKwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTEy NzIsOCArMTM5Miw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHVzZV96ZXJvX3BhZ2Uoc3RydWN0IHYK IAlyZXR1cm4gIXZtYS0+dm1fb3BzIHx8ICF2bWEtPnZtX29wcy0+ZmF1bHQ7CiB9CiAKLQotCiBp bnQgX19nZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0 cnVjdCAqbW0sCiAJCSAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgaW50IGxlbiwgaW50IGZsYWdz LAogCQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFzKQpA QCAtMTI5OCw2ICsxNDE2LDcgQEAgaW50IF9fZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHRhc2tfc3Ry dWN0CiAJZG8gewogCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKIAkJdW5zaWduZWQgaW50 IGZvbGxfZmxhZ3M7CisJCWludCBkZWNvdzsKIAogCQl2bWEgPSBmaW5kX2V4dGVuZF92bWEobW0s IHN0YXJ0KTsKIAkJaWYgKCF2bWEgJiYgaW5fZ2F0ZV9hcmVhKHRzaywgc3RhcnQpKSB7CkBAIC0x MzUyLDYgKzE0NzEsMTQgQEAgaW50IF9fZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHRhc2tfc3RydWN0 CiAJCQljb250aW51ZTsKIAkJfQogCisJCS8qCisJCSAqIEV4Y2VwdCBpbiBzcGVjaWFsIGNhc2Vz IHdoZXJlIHRoZSBjYWxsZXIgd2lsbCBub3QgcmVhZCB0byBvcgorCQkgKiB3cml0ZSBmcm9tIHRo ZXNlIHBhZ2VzLCB3ZSBtdXN0IGJyZWFrIENPVyBmb3IgYW55IHBhZ2VzCisJCSAqIHJldHVybmVk IGZyb20gZ2V0X3VzZXJfcGFnZXMsIHNvIHRoYXQgb3VyIGNhbGxlciBkb2VzIG5vdAorCQkgKiBz dWJzZXF1ZW50bHkgZW5kIHVwIHdpdGggdGhlIHBhZ2VzIG9mIGEgcGFyZW50IG9yIGNoaWxkCisJ CSAqIHByb2Nlc3MgYWZ0ZXIgYSBDT1cgdGFrZXMgcGxhY2UuCisJCSAqLworCQlkZWNvdyA9IChw YWdlcyAmJiBpc19jb3dfbWFwcGluZyh2bWEtPnZtX2ZsYWdzKSk7CiAJCWZvbGxfZmxhZ3MgPSBG T0xMX1RPVUNIOwogCQlpZiAocGFnZXMpCiAJCQlmb2xsX2ZsYWdzIHw9IEZPTExfR0VUOwpAQCAt MTM3Miw3ICsxNDk5LDcgQEAgaW50IF9fZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHRhc2tfc3RydWN0 CiAJCQkJCWZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSkKIAkJCQlyZXR1cm4gaSA/IGkg OiAtRVJFU1RBUlRTWVM7CiAKLQkJCWlmICh3cml0ZSkKKwkJCWlmICh3cml0ZSB8fCBkZWNvdykK IAkJCQlmb2xsX2ZsYWdzIHw9IEZPTExfV1JJVEU7CiAKIAkJCWNvbmRfcmVzY2hlZCgpOwpAQCAt MTQxNSw2ICsxNTQyLDkgQEAgaW50IF9fZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHRhc2tfc3RydWN0 CiAJCQlpZiAocGFnZXMpIHsKIAkJCQlwYWdlc1tpXSA9IHBhZ2U7CiAKKwkJCQlpZiAoZGVjb3cg JiYgIVBhZ2VEb250Q09XKHBhZ2UpICYmCisJCQkJCQlQYWdlQW5vbihwYWdlKSkKKwkJCQkJU2V0 UGFnZURvbnRDT1cocGFnZSk7CiAJCQkJZmx1c2hfYW5vbl9wYWdlKHZtYSwgcGFnZSwgc3RhcnQp OwogCQkJCWZsdXNoX2RjYWNoZV9wYWdlKHBhZ2UpOwogCQkJfQpAQCAtMTk2Niw2ICsyMDk2LDgg QEAgc3RhdGljIGludCBkb193cF9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKgogCQl9CiAJCXJldXNl ID0gcmV1c2Vfc3dhcF9wYWdlKG9sZF9wYWdlKTsKIAkJdW5sb2NrX3BhZ2Uob2xkX3BhZ2UpOwor CQlWTV9CVUdfT04oUGFnZURvbnRDT1cob2xkX3BhZ2UpICYmICFyZXVzZSk7CisKIAl9IGVsc2Ug aWYgKHVubGlrZWx5KCh2bWEtPnZtX2ZsYWdzICYgKFZNX1dSSVRFfFZNX1NIQVJFRCkpID09CiAJ CQkJCShWTV9XUklURXxWTV9TSEFSRUQpKSkgewogCQkvKgpJbmRleDogbGludXgtMi42L2FyY2gv eDg2L21tL2d1cC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gveDg2L21tL2d1 cC5jCisrKyBsaW51eC0yLjYvYXJjaC94ODYvbW0vZ3VwLmMKQEAgLTgzLDExICs4MywxNCBAQCBz dGF0aWMgbm9pbmxpbmUgaW50IGd1cF9wdGVfcmFuZ2UocG1kX3QKIAkJc3RydWN0IHBhZ2UgKnBh Z2U7CiAKIAkJaWYgKChwdGVfZmxhZ3MocHRlKSAmIChtYXNrIHwgX1BBR0VfU1BFQ0lBTCkpICE9 IG1hc2spIHsKK2ZhaWxlZDoKIAkJCXB0ZV91bm1hcChwdGVwKTsKIAkJCXJldHVybiAwOwogCQl9 CiAJCVZNX0JVR19PTighcGZuX3ZhbGlkKHB0ZV9wZm4ocHRlKSkpOwogCQlwYWdlID0gcHRlX3Bh Z2UocHRlKTsKKwkJaWYgKFBhZ2VBbm9uKHBhZ2UpICYmIHVubGlrZWx5KCFQYWdlRG9udENPVyhw YWdlKSkpCisJCQlnb3RvIGZhaWxlZDsKIAkJZ2V0X3BhZ2UocGFnZSk7CiAJCXBhZ2VzWypucl0g PSBwYWdlOwogCQkoKm5yKSsrOwpJbmRleDogbGludXgtMi42L2luY2x1ZGUvbGludXgvcGFnZS1m bGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2luY2x1ZGUvbGludXgvcGFnZS1m bGFncy5oCisrKyBsaW51eC0yLjYvaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgKQEAgLTEwNiw2 ICsxMDYsOSBAQCBlbnVtIHBhZ2VmbGFncyB7CiAjZW5kaWYKIAlfX05SX1BBR0VGTEFHUywKIAor CS8qIEFub255bW91cyBwYWdlcyAqLworCVBHX2RvbnRjb3cgPSBQR19vd25lcl9wcml2XzEsCS8q IGRvIG5vdCBXUCBmb3IgQ09XIG9wdGltaXNhdGlvbiAqLworCiAJLyogRmlsZXN5c3RlbXMgKi8K IAlQR19jaGVja2VkID0gUEdfb3duZXJfcHJpdl8xLAogCkBAIC0yMjUsNiArMjI4LDggQEAgUEFH RUZMQUcoT3duZXJQcml2MSwgb3duZXJfcHJpdl8xKSBURVNUQwogICovCiBURVNUUEFHRUZMQUco V3JpdGViYWNrLCB3cml0ZWJhY2spIFRFU1RTQ0ZMQUcoV3JpdGViYWNrLCB3cml0ZWJhY2spCiBf X1BBR0VGTEFHKEJ1ZGR5LCBidWRkeSkKK19fUEFHRUZMQUcoRG9udENPVywgZG9udGNvdykKK1NF VFBBR0VGTEFHKERvbnRDT1csIGRvbnRjb3cpCiBQQUdFRkxBRyhNYXBwZWRUb0Rpc2ssIG1hcHBl ZHRvZGlzaykKIAogLyogUEdfcmVhZGFoZWFkIGlzIG9ubHkgdXNlZCBmb3IgZmlsZSByZWFkczsg UEdfcmVjbGFpbSBpcyBvbmx5IGZvciB3cml0ZXMgKi8KSW5kZXg6IGxpbnV4LTIuNi9rZXJuZWwv Zm9yay5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2tlcm5lbC9mb3JrLmMKKysrIGxp bnV4LTIuNi9rZXJuZWwvZm9yay5jCkBAIC0zNTksNyArMzU5LDcgQEAgc3RhdGljIGludCBkdXBf bW1hcChzdHJ1Y3QgbW1fc3RydWN0ICptbQogCQlyYl9wYXJlbnQgPSAmdG1wLT52bV9yYjsKIAog CQltbS0+bWFwX2NvdW50Kys7Ci0JCXJldHZhbCA9IGNvcHlfcGFnZV9yYW5nZShtbSwgb2xkbW0s IG1wbnQpOworCQlyZXR2YWwgPSBjb3B5X3BhZ2VfcmFuZ2UobW0sIG9sZG1tLCB0bXAsIG1wbnQp OwogCiAJCWlmICh0bXAtPnZtX29wcyAmJiB0bXAtPnZtX29wcy0+b3BlbikKIAkJCXRtcC0+dm1f b3BzLT5vcGVuKHRtcCk7CkluZGV4OiBsaW51eC0yLjYvYXJjaC9wb3dlcnBjL21tL2d1cC5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gvcG93ZXJwYy9tbS9ndXAuYworKysgbGlu dXgtMi42L2FyY2gvcG93ZXJwYy9tbS9ndXAuYwpAQCAtNDEsNiArNDEsOCBAQCBzdGF0aWMgbm9p bmxpbmUgaW50IGd1cF9wdGVfcmFuZ2UocG1kX3QKIAkJCXJldHVybiAwOwogCQlWTV9CVUdfT04o IXBmbl92YWxpZChwdGVfcGZuKHB0ZSkpKTsKIAkJcGFnZSA9IHB0ZV9wYWdlKHB0ZSk7CisJCWlm IChQYWdlQW5vbihwYWdlKSAmJiB1bmxpa2VseSghUGFnZURvbnRDT1cocGFnZSkpKQorCQkJcmV0 dXJuIDA7CiAJCWlmICghcGFnZV9jYWNoZV9nZXRfc3BlY3VsYXRpdmUocGFnZSkpCiAJCQlyZXR1 cm4gMDsKIAkJaWYgKHVubGlrZWx5KHB0ZV92YWwocHRlKSAhPSBwdGVfdmFsKCpwdGVwKSkpIHsK AAo= -- 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