From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from psmtp.com (na3sys010amx114.postini.com [74.125.245.114]) by kanga.kvack.org (Postfix) with SMTP id 6897F6B004D for ; Mon, 20 Feb 2012 04:18:20 -0500 (EST) Received: by lamf4 with SMTP id f4so7969199lam.14 for ; Mon, 20 Feb 2012 01:18:18 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <1317170947-17074-5-git-send-email-walken@google.com> References: <1317170947-17074-1-git-send-email-walken@google.com> <1317170947-17074-5-git-send-email-walken@google.com> From: Zhu Yanhai Date: Mon, 20 Feb 2012 17:17:57 +0800 Message-ID: Subject: Re: [PATCH 4/9] kstaled: minimalistic implementation. Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Sender: owner-linux-mm@kvack.org List-ID: To: Michel Lespinasse Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , KAMEZAWA Hiroyuki , Dave Hansen , Rik van Riel , Balbir Singh , Peter Zijlstra , Andrea Arcangeli , Johannes Weiner , KOSAKI Motohiro , Hugh Dickins , Michael Wolf MjAxMS85LzI4IE1pY2hlbCBMZXNwaW5hc3NlIDx3YWxrZW5AZ29vZ2xlLmNvbT46Cj4gSW50cm9k dWNlIG1pbmltYWwga3N0YWxlZCBpbXBsZW1lbnRhdGlvbi4gVGhlIHNjYW4gcmF0ZSBpcyBjb250 cm9sbGVkIGJ5Cj4gL3N5cy9rZXJuZWwvbW0va3N0YWxlZC9zY2FuX3NlY29uZHMgYW5kIHBlci1j Z3JvdXAgc3RhdGlzdGljcyBhcmUgb3V0cHV0Cj4gaW50byAvZGV2L2Nncm91cC8qL21lbW9yeS5p ZGxlX3BhZ2Vfc3RhdHMuCj4KPgo+IFNpZ25lZC1vZmYtYnk6IE1pY2hlbCBMZXNwaW5hc3NlIDx3 YWxrZW5AZ29vZ2xlLmNvbT4KPiAtLS0KPiDCoG1tL21lbWNvbnRyb2wuYyB8IMKgMjk3ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiDCoDEg ZmlsZXMgY2hhbmdlZCwgMjk3IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCj4KPiBkaWZm IC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jCj4gaW5kZXggZTAxM2I4 ZS4uZTU1MDU2ZiAxMDA2NDQKPiAtLS0gYS9tbS9tZW1jb250cm9sLmMKPiArKysgYi9tbS9tZW1j b250cm9sLmMKPiBAQCAtNDksNiArNDksOCBAQAo+IMKgI2luY2x1ZGUgPGxpbnV4L3BhZ2VfY2dy b3VwLmg+Cj4gwqAjaW5jbHVkZSA8bGludXgvY3B1Lmg+Cj4gwqAjaW5jbHVkZSA8bGludXgvb29t Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9ybWFw Lmg+Cj4gwqAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKPgo+IMKgI2luY2x1ZGUgPGFzbS91YWNjZXNz Lmg+Cj4gQEAgLTI4Myw2ICsyODUsMTYgQEAgc3RydWN0IG1lbV9jZ3JvdXAgewo+IMKgIMKgIMKg IMKgICovCj4gwqAgwqAgwqAgwqBzdHJ1Y3QgbWVtX2Nncm91cF9zdGF0X2NwdSBub2NwdV9iYXNl Owo+IMKgIMKgIMKgIMKgc3BpbmxvY2tfdCBwY3BfY291bnRlcl9sb2NrOwo+ICsKPiArI2lmZGVm IENPTkZJR19LU1RBTEVECj4gKyDCoCDCoCDCoCBzZXFjb3VudF90IGlkbGVfcGFnZV9zdGF0c19s b2NrOwo+ICsgwqAgwqAgwqAgc3RydWN0IGlkbGVfcGFnZV9zdGF0cyB7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCB1bnNpZ25lZCBsb25nIGlkbGVfY2xlYW47Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCB1bnNpZ25lZCBsb25nIGlkbGVfZGlydHlfZmlsZTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIHVuc2lnbmVkIGxvbmcgaWRsZV9kaXJ0eV9zd2FwOwo+ICsgwqAgwqAgwqAgfSBpZGxlX3Bh Z2Vfc3RhdHMsIGlkbGVfc2Nhbl9zdGF0czsKPiArIMKgIMKgIMKgIHVuc2lnbmVkIGxvbmcgaWRs ZV9wYWdlX3NjYW5zOwo+ICsjZW5kaWYKPiDCoH07Cj4KPiDCoC8qIFN0dWZmcyBmb3IgbW92ZSBj aGFyZ2VzIGF0IHRhc2sgbWlncmF0aW9uLiAqLwo+IEBAIC00NjY4LDYgKzQ2ODAsMzAgQEAgc3Rh dGljIGludCBtZW1fY29udHJvbF9udW1hX3N0YXRfb3BlbihzdHJ1Y3QgaW5vZGUgKnVudXNlZCwg c3RydWN0IGZpbGUgKmZpbGUpCj4gwqB9Cj4gwqAjZW5kaWYgLyogQ09ORklHX05VTUEgKi8KPgo+ ICsjaWZkZWYgQ09ORklHX0tTVEFMRUQKPiArc3RhdGljIGludCBtZW1fY2dyb3VwX2lkbGVfcGFn ZV9zdGF0c19yZWFkKHN0cnVjdCBjZ3JvdXAgKmNncnAsCj4gKyDCoCDCoCDCoCBzdHJ1Y3QgY2Z0 eXBlICpjZnQsIMKgc3RydWN0IGNncm91cF9tYXBfY2IgKmNiKQo+ICt7Cj4gKyDCoCDCoCDCoCBz dHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBtZW1fY2dyb3VwX2Zyb21fY29udChjZ3JwKTsKPiAr IMKgIMKgIMKgIHVuc2lnbmVkIGludCBzZXFjb3VudDsKPiArIMKgIMKgIMKgIHN0cnVjdCBpZGxl X3BhZ2Vfc3RhdHMgc3RhdHM7Cj4gKyDCoCDCoCDCoCB1bnNpZ25lZCBsb25nIHNjYW5zOwo+ICsK PiArIMKgIMKgIMKgIGRvIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNlcWNvdW50ID0gcmVh ZF9zZXFjb3VudF9iZWdpbigmbWVtY2ctPmlkbGVfcGFnZV9zdGF0c19sb2NrKTsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHN0YXRzID0gbWVtY2ctPmlkbGVfcGFnZV9zdGF0czsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHNjYW5zID0gbWVtY2ctPmlkbGVfcGFnZV9zY2FuczsKPiArIMKgIMKg IMKgIH0gd2hpbGUgKHJlYWRfc2VxY291bnRfcmV0cnkoJm1lbWNnLT5pZGxlX3BhZ2Vfc3RhdHNf bG9jaywgc2VxY291bnQpKTsKPiArCj4gKyDCoCDCoCDCoCBjYi0+ZmlsbChjYiwgImlkbGVfY2xl YW4iLCBzdGF0cy5pZGxlX2NsZWFuICogUEFHRV9TSVpFKTsKPiArIMKgIMKgIMKgIGNiLT5maWxs KGNiLCAiaWRsZV9kaXJ0eV9maWxlIiwgc3RhdHMuaWRsZV9kaXJ0eV9maWxlICogUEFHRV9TSVpF KTsKPiArIMKgIMKgIMKgIGNiLT5maWxsKGNiLCAiaWRsZV9kaXJ0eV9zd2FwIiwgc3RhdHMuaWRs ZV9kaXJ0eV9zd2FwICogUEFHRV9TSVpFKTsKPiArIMKgIMKgIMKgIGNiLT5maWxsKGNiLCAic2Nh bnMiLCBzY2Fucyk7Cj4gKwo+ICsgwqAgwqAgwqAgcmV0dXJuIDA7Cj4gK30KPiArI2VuZGlmIC8q IENPTkZJR19LU1RBTEVEICovCj4gKwo+IMKgc3RhdGljIHN0cnVjdCBjZnR5cGUgbWVtX2Nncm91 cF9maWxlc1tdID0gewo+IMKgIMKgIMKgIMKgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLm5h bWUgPSAidXNhZ2VfaW5fYnl0ZXMiLAo+IEBAIC00NzM4LDYgKzQ3NzQsMTIgQEAgc3RhdGljIHN0 cnVjdCBjZnR5cGUgbWVtX2Nncm91cF9maWxlc1tdID0gewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgLm1vZGUgPSBTX0lSVUdPLAo+IMKgIMKgIMKgIMKgfSwKPiDCoCNlbmRpZgo+ICsjaWZkZWYg Q09ORklHX0tTVEFMRUQKPiArIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC5u YW1lID0gImlkbGVfcGFnZV9zdGF0cyIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAucmVhZF9t YXAgPSBtZW1fY2dyb3VwX2lkbGVfcGFnZV9zdGF0c19yZWFkLAo+ICsgwqAgwqAgwqAgfSwKPiAr I2VuZGlmCj4gwqB9Owo+Cj4gwqAjaWZkZWYgQ09ORklHX0NHUk9VUF9NRU1fUkVTX0NUTFJfU1dB UAo+IEBAIC01MDAxLDYgKzUwNDMsOSBAQCBtZW1fY2dyb3VwX2NyZWF0ZShzdHJ1Y3QgY2dyb3Vw X3N1YnN5cyAqc3MsIHN0cnVjdCBjZ3JvdXAgKmNvbnQpCj4gwqAgwqAgwqAgwqBhdG9taWNfc2V0 KCZtZW0tPnJlZmNudCwgMSk7Cj4gwqAgwqAgwqAgwqBtZW0tPm1vdmVfY2hhcmdlX2F0X2ltbWln cmF0ZSA9IDA7Cj4gwqAgwqAgwqAgwqBtdXRleF9pbml0KCZtZW0tPnRocmVzaG9sZHNfbG9jayk7 Cj4gKyNpZmRlZiBDT05GSUdfS1NUQUxFRAo+ICsgwqAgwqAgwqAgc2VxY291bnRfaW5pdCgmbWVt LT5pZGxlX3BhZ2Vfc3RhdHNfbG9jayk7Cj4gKyNlbmRpZgo+IMKgIMKgIMKgIMKgcmV0dXJuICZt ZW0tPmNzczsKPiDCoGZyZWVfb3V0Ogo+IMKgIMKgIMKgIMKgX19tZW1fY2dyb3VwX2ZyZWUobWVt KTsKPiBAQCAtNTU2OCwzICs1NjEzLDI1NSBAQCBzdGF0aWMgaW50IF9faW5pdCBlbmFibGVfc3dh cF9hY2NvdW50KGNoYXIgKnMpCj4gwqBfX3NldHVwKCJzd2FwYWNjb3VudD0iLCBlbmFibGVfc3dh cF9hY2NvdW50KTsKPgo+IMKgI2VuZGlmCj4gKwo+ICsjaWZkZWYgQ09ORklHX0tTVEFMRUQKPiAr Cj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQga3N0YWxlZF9zY2FuX3NlY29uZHM7Cj4gK3N0YXRpYyBE RUNMQVJFX1dBSVRfUVVFVUVfSEVBRChrc3RhbGVkX3dhaXQpOwo+ICsKPiArc3RhdGljIHVuc2ln bmVkIGtzdGFsZWRfc2Nhbl9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQo+ICt7Cj4gKyDCoCDCoCDC oCBib29sIGlzX2xvY2tlZCA9IGZhbHNlOwo+ICsgwqAgwqAgwqAgYm9vbCBpc19maWxlOwo+ICsg wqAgwqAgwqAgc3RydWN0IHBhZ2VfcmVmZXJlbmNlZF9pbmZvIGluZm87Cj4gKyDCoCDCoCDCoCBz dHJ1Y3QgcGFnZV9jZ3JvdXAgKnBjOwo+ICsgwqAgwqAgwqAgc3RydWN0IGlkbGVfcGFnZV9zdGF0 cyAqc3RhdHM7Cj4gKyDCoCDCoCDCoCB1bnNpZ25lZCBucl9wYWdlczsKPiArCj4gKyDCoCDCoCDC oCAvKgo+ICsgwqAgwqAgwqAgwqAqIEJlZm9yZSB0YWtpbmcgdGhlIHBhZ2UgcmVmZXJlbmNlLCBj aGVjayBpZiB0aGUgcGFnZSBpcwo+ICsgwqAgwqAgwqAgwqAqIGEgdXNlciBwYWdlIHdoaWNoIGlz IG5vdCBvYnZpb3VzbHkgdW5yZWNsYWltYWJsZQo+ICsgwqAgwqAgwqAgwqAqICh3ZSB3aWxsIGRv IG1vcmUgY29tcGxldGUgY2hlY2tzIGxhdGVyKS4KPiArIMKgIMKgIMKgIMKgKi8KPiArIMKgIMKg IMKgIGlmICghUGFnZUxSVShwYWdlKSB8fAo+ICsgwqAgwqAgwqAgwqAgwqAgKCFQYWdlQ29tcG91 bmQocGFnZSkgJiYKPiArIMKgIMKgIMKgIMKgIMKgIMKgKFBhZ2VNbG9ja2VkKHBhZ2UpIHx8Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCAocGFnZS0+bWFwcGluZyA9PSBOVUxMICYmICFQYWdlU3dhcENh Y2hlKHBhZ2UpKSkpKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIDE7Cj4gKwo+ICsg wqAgwqAgwqAgaWYgKCFnZXRfcGFnZV91bmxlc3NfemVybyhwYWdlKSkKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHJldHVybiAxOwo+ICsKPiArIMKgIMKgIMKgIC8qIFJlY2hlY2sgbm93IHRoYXQg d2UgaGF2ZSB0aGUgcGFnZSByZWZlcmVuY2UuICovCj4gKyDCoCDCoCDCoCBpZiAodW5saWtlbHko IVBhZ2VMUlUocGFnZSkpKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBvdXQ7Cj4gKyDC oCDCoCDCoCBucl9wYWdlcyA9IDEgPDwgY29tcG91bmRfdHJhbnNfb3JkZXIocGFnZSk7Cj4gKyDC oCDCoCDCoCBpZiAoUGFnZU1sb2NrZWQocGFnZSkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBn b3RvIG91dDsKPiArCj4gKyDCoCDCoCDCoCAvKgo+ICsgwqAgwqAgwqAgwqAqIEFub24gYW5kIFN3 YXBDYWNoZSBwYWdlcyBjYW4gYmUgaWRlbnRpZmllZCB3aXRob3V0IGxvY2tpbmcuCj4gKyDCoCDC oCDCoCDCoCogRm9yIGFsbCBvdGhlciBjYXNlcywgd2UgbmVlZCB0aGUgcGFnZSBsb2NrZWQgaW4g b3JkZXIgdG8KPiArIMKgIMKgIMKgIMKgKiBkZXJlZmVyZW5jZSBwYWdlLT5tYXBwaW5nLgo+ICsg wqAgwqAgwqAgwqAqLwo+ICsgwqAgwqAgwqAgaWYgKFBhZ2VBbm9uKHBhZ2UpIHx8IFBhZ2VTd2Fw Q2FjaGUocGFnZSkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpc19maWxlID0gZmFsc2U7Cj4g KyDCoCDCoCDCoCBlbHNlIGlmICghdHJ5bG9ja19wYWdlKHBhZ2UpKSB7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCAvKgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIFdlIG5lZWQgdG8gbG9j ayB0aGUgcGFnZSB0byBkZXJlZmVyZW5jZSB0aGUgbWFwcGluZy4KPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgKiBCdXQgZG9uJ3QgcmlzayBzbGVlcGluZyBieSBjYWxsaW5nIGxvY2tfcGFnZSgp Lgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIFdlIGRvbid0IHdhbnQgdG8gc3RhbGwga3N0 YWxlZCwgc28gd2UgY29uc2VydmF0aXZlbHkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiBj b3VudCBsb2NrZWQgcGFnZXMgYXMgdW5yZWNsYWltYWJsZS4KPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgKi8KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gb3V0Owo+ICsgwqAgwqAgwqAg fSBlbHNlIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICpt YXBwaW5nID0gcGFnZS0+bWFwcGluZzsKPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpc19s b2NrZWQgPSB0cnVlOwo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8qCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCogVGhlIHBhZ2UgaXMgc3RpbGwgYW5vbiAtIGl0IGhhcyBiZWVuIGNv bnRpbnVvdXNseSByZWZlcmVuY2VkCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogc2luY2Ug dGhlIHByaW9yIGNoZWNrLgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqLwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgVk1fQlVHX09OKFBhZ2VBbm9uKHBhZ2UpIHx8IG1hcHBpbmcgIT0gcGFn ZV9ybWFwcGluZyhwYWdlKSk7Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyoKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgKiBDaGVjayB0aGUgbWFwcGluZyB1bmRlciBwcm90ZWN0aW9u IG9mIHRoZSBwYWdlIGxvY2suCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogMS4gSWYgdGhl IHBhZ2UgaXMgbm90IHN3YXAgY2FjaGUgYW5kIGhhcyBubyBtYXBwaW5nLAo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAqIMKgIMKgc2hyaW5rX3BhZ2VfbGlzdCBjYW4ndCBkbyBhbnl0aGluZyB3 aXRoIGl0Lgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIDIuIElmIHRoZSBtYXBwaW5nIGlz IHVuZXZpY3RhYmxlIChhcyBpbiBTSE1fTE9DSyBzZWdtZW50cyksCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCogwqAgwqBzaHJpbmtfcGFnZV9saXN0IGNhbid0IGRvIGFueXRoaW5nIHdpdGgg aXQuCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogMy4gSWYgdGhlIHBhZ2UgaXMgc3dhcCBj YWNoZSBvciB0aGUgbWFwcGluZyBpcyBzd2FwIGJhY2tlZAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAqIMKgIMKgKGFzIGluIHNobWVtKSwgY29uc2lkZXIgaXQgYSBzd2FwcGFibGUgcGFnZS4K PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiA0LiBJZiB0aGUgYmFja2luZyBkZXYgaGFzIGlu ZGljYXRlZCB0aGF0IGl0IGRvZXMgbm90IHdhbnQKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg KiDCoCDCoGl0cyBwYWdlcyBzeW5jJ2QgdG8gZGlzayAoYXMgaW4gcmFtZnMpLCB0YWtlIHRoaXMg YXMKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiDCoCDCoGEgaGludCB0aGF0IGl0cyBwYWdl cyBhcmUgbm90IHJlY2xhaW1hYmxlLgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIDUuIE90 aGVyd2lzZSwgY29uc2lkZXIgdGhpcyBhcyBhIGZpbGUgcGFnZSByZWNsYWltYWJsZQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAqIMKgIMKgdGhyb3VnaCBzdGFuZGFyZCBwYWdlb3V0Lgo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqLwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFt YXBwaW5nICYmICFQYWdlU3dhcENhY2hlKHBhZ2UpKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgZ290byBvdXQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlbHNlIGlmICht YXBwaW5nX3VuZXZpY3RhYmxlKG1hcHBpbmcpKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZ290byBvdXQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlbHNlIGlmIChQYWdl U3dhcENhY2hlKHBhZ2UpIHx8Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oG1hcHBpbmdfY2FwX3N3YXBfYmFja2VkKG1hcHBpbmcpKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgaXNfZmlsZSA9IGZhbHNlOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg ZWxzZSBpZiAoIW1hcHBpbmdfY2FwX3dyaXRlYmFja19kaXJ0eShtYXBwaW5nKSkKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gb3V0Owo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZWxzZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaXNfZmlsZSA9 IHRydWU7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgLyogRmluZCBvdXQgaWYgdGhl IHBhZ2UgaXMgaWRsZS4gQWxzbyB0ZXN0IGZvciBwZW5kaW5nIG1sb2NrLiAqLwo+ICsgwqAgwqAg wqAgcGFnZV9yZWZlcmVuY2VkX2tzdGFsZWQocGFnZSwgaXNfbG9ja2VkLCAmaW5mbyk7Cj4gKyDC oCDCoCDCoCBpZiAoKGluZm8ucHJfZmxhZ3MgJiBQUl9SRUZFUkVOQ0VEKSB8fCAoaW5mby52bV9m bGFncyAmIFZNX0xPQ0tFRCkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIG91dDsKPiAr Cj4gKyDCoCDCoCDCoCAvKiBMb2NhdGUga3N0YWxlZCBzdGF0cyBmb3IgdGhlIHBhZ2UncyBjZ3Jv dXAuICovCj4gKyDCoCDCoCDCoCBwYyA9IGxvb2t1cF9wYWdlX2Nncm91cChwYWdlKTsKPiArIMKg IMKgIMKgIGlmICghcGMpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIG91dDsKPiArIMKg IMKgIMKgIGxvY2tfcGFnZV9jZ3JvdXAocGMpOwo+ICsgwqAgwqAgwqAgaWYgKCFQYWdlQ2dyb3Vw VXNlZChwYykpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIHVubG9ja19wYWdlX2Nncm91 cF9vdXQ7Cj4gKyDCoCDCoCDCoCBzdGF0cyA9ICZwYy0+bWVtX2Nncm91cC0+aWRsZV9zY2FuX3N0 YXRzOwpJcyBpdCBzYWZlIHRvIGRlZmVyZW5jZSBpdCBsaWtlIHRoaXM/IEkgdGhpbmsgd2UgbmVl ZCBzb21ldGhpbmcgbGlrZSB0aGlzOgpzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBwYy0+bWVt X2Nncm91cDsKaWYgKCFtZW1jZyB8fCAhY3NzX3RyeWdldCgmbWVtY2ctPmNzcykpCiAgIGdvdG8g b3V0OwpBbmQgYWxzbyBjc3NfcHV0KCkgaW4gc29ld2hlcmUgYm1lbG93LgpPciBzaW1wbHkgcmVt b3ZlIHRoZSBsb2NrX3BhZ2VfY2dyb3VwKCkgYWJvdmUgYW5kIHVzZQp0cnlfZ2V0X21lbV9jZ3Jv dXBfZnJvbV9wYWdlKCkgZGlyZWN0bHkuCgotLQpUaGFua3MsClpodSBZYW5oYWkKPiArCj4gKyDC oCDCoCDCoCAvKiBGaW5hbGx5IGluY3JlbWVudCB0aGUgY29ycmVjdCBzdGF0aXN0aWMgZm9yIHRo aXMgcGFnZS4gKi8KPiArIMKgIMKgIMKgIGlmICghKGluZm8ucHJfZmxhZ3MgJiBQUl9ESVJUWSkg JiYKPiArIMKgIMKgIMKgIMKgIMKgICFQYWdlRGlydHkocGFnZSkgJiYgIVBhZ2VXcml0ZWJhY2so cGFnZSkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdGF0cy0+aWRsZV9jbGVhbiArPSBucl9w YWdlczsKPiArIMKgIMKgIMKgIGVsc2UgaWYgKGlzX2ZpbGUpCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBzdGF0cy0+aWRsZV9kaXJ0eV9maWxlICs9IG5yX3BhZ2VzOwo+ICsgwqAgwqAgwqAgZWxz ZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3RhdHMtPmlkbGVfZGlydHlfc3dhcCArPSBucl9w YWdlczsKPiArCj4gKyB1bmxvY2tfcGFnZV9jZ3JvdXBfb3V0Ogo+ICsgwqAgwqAgwqAgdW5sb2Nr X3BhZ2VfY2dyb3VwKHBjKTsKPiArCj4gKyBvdXQ6Cj4gKyDCoCDCoCDCoCBpZiAoaXNfbG9ja2Vk KQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdW5sb2NrX3BhZ2UocGFnZSk7Cj4gKyDCoCDCoCDC oCBwdXRfcGFnZShwYWdlKTsKPiArCj4gKyDCoCDCoCDCoCByZXR1cm4gbnJfcGFnZXM7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGtzdGFsZWRfc2Nhbl9ub2RlKHBnX2RhdGFfdCAqcGdkYXQpCj4g K3sKPiArIMKgIMKgIMKgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKyDCoCDCoCDCoCB1bnNpZ25l ZCBsb25nIHBmbiwgZW5kOwo+ICsKPiArIMKgIMKgIMKgIHBnZGF0X3Jlc2l6ZV9sb2NrKHBnZGF0 LCAmZmxhZ3MpOwo+ICsKPiArIMKgIMKgIMKgIHBmbiA9IHBnZGF0LT5ub2RlX3N0YXJ0X3BmbjsK PiArIMKgIMKgIMKgIGVuZCA9IHBmbiArIHBnZGF0LT5ub2RlX3NwYW5uZWRfcGFnZXM7Cj4gKwo+ ICsgwqAgwqAgwqAgd2hpbGUgKHBmbiA8IGVuZCkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg aWYgKG5lZWRfcmVzY2hlZCgpKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBwZ2RhdF9yZXNpemVfdW5sb2NrKHBnZGF0LCAmZmxhZ3MpOwo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgY29uZF9yZXNjaGVkKCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBwZ2RhdF9yZXNpemVfbG9jayhwZ2RhdCwgJmZsYWdzKTsKPiArCj4gKyNp ZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUcKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIC8qIGFib3J0IGlmIHRoZSBub2RlIGdvdCByZXNpemVkICovCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGZuIDwgcGdkYXQtPm5vZGVfc3RhcnRfcGZuIHx8 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlbmQgPiAocGdkYXQt Pm5vZGVfc3RhcnRfcGZuICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgcGdkYXQtPm5vZGVfc3Bhbm5lZF9wYWdlcykpCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGFib3J0Owo+ICsjZW5kaWYK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBw Zm4gKz0gcGZuX3ZhbGlkKHBmbikgPwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAga3N0YWxlZF9zY2FuX3BhZ2UocGZuX3RvX3BhZ2UocGZuKSkgOiAxOwo+ICsgwqAgwqAgwqAg fQo+ICsKPiArYWJvcnQ6Cj4gKyDCoCDCoCDCoCBwZ2RhdF9yZXNpemVfdW5sb2NrKHBnZGF0LCAm ZmxhZ3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGtzdGFsZWQodm9pZCAqZHVtbXkpCj4gK3sK PiArIMKgIMKgIMKgIHdoaWxlICgxKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnQgc2Nh bl9zZWNvbmRzOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IG5pZDsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZzsKPiArCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoa3N0YWxlZF93YWl0LAo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoc2Nhbl9zZWNvbmRz ID0ga3N0YWxlZF9zY2FuX3NlY29uZHMpID4gMCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAv Kgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIFdlIHVzZSBpbnRlcnJ1cHRpYmxlIHdhaXRf ZXZlbnQgc28gYXMgbm90IHRvIGNvbnRyaWJ1dGUKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg KiB0byB0aGUgbWFjaGluZSBsb2FkIGF2ZXJhZ2Ugd2hpbGUgd2UncmUgc2xlZXBpbmcuCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogSG93ZXZlciwgd2UgZG9uJ3QgYWN0dWFsbHkgZXhwZWN0 IHRvIHJlY2VpdmUgYSBzaWduYWwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiBzaW5jZSB3 ZSBydW4gYXMgYSBrZXJuZWwgdGhyZWFkLCBzbyB0aGUgY29uZGl0aW9uIHdlIHdlcmUKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgKiB3YWl0aW5nIGZvciBzaG91bGQgYmUgdHJ1ZSBvbmNlIHdl IGdldCBoZXJlLgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqLwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgQlVHX09OKHNjYW5fc2Vjb25kcyA8PSAwKTsKPiArCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBmb3JfZWFjaF9tZW1fY2dyb3VwX2FsbChtZW1jZykKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIG1lbXNldCgmbWVtY2ctPmlkbGVfc2Nhbl9zdGF0cywgMCwKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc2l6ZW9mKG1lbWNn LT5pZGxlX3NjYW5fc3RhdHMpKTsKPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3JfZWFj aF9ub2RlX3N0YXRlKG5pZCwgTl9ISUdIX01FTU9SWSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGtzdGFsZWRfc2Nhbl9ub2RlKE5PREVfREFUQShuaWQpKTsKPiArCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCBmb3JfZWFjaF9tZW1fY2dyb3VwX2FsbChtZW1jZykgewo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgd3JpdGVfc2VxY291bnRfYmVnaW4oJm1l bWNnLT5pZGxlX3BhZ2Vfc3RhdHNfbG9jayk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBtZW1jZy0+aWRsZV9wYWdlX3N0YXRzID0gbWVtY2ctPmlkbGVfc2Nhbl9zdGF0czsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1lbWNnLT5pZGxlX3BhZ2Vfc2Nh bnMrKzsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHdyaXRlX3NlcWNvdW50 X2VuZCgmbWVtY2ctPmlkbGVfcGFnZV9zdGF0c19sb2NrKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIH0KPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzY2hlZHVsZV90aW1lb3V0X2ludGVy cnVwdGlibGUoc2Nhbl9zZWNvbmRzICogSFopOwo+ICsgwqAgwqAgwqAgfQo+ICsKPiArIMKgIMKg IMKgIEJVRygpOwo+ICsgwqAgwqAgwqAgcmV0dXJuIDA7IMKgIMKgIMKgIC8qIE5PVCBSRUFDSEVE ICovCj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IGtzdGFsZWRfc2Nhbl9zZWNvbmRzX3Nob3co c3RydWN0IGtvYmplY3QgKmtvYmosCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgY2hhciAqYnVmKQo+ICt7Cj4gKyDCoCDCoCDCoCByZXR1cm4gc3ByaW50ZihidWYsICIl dVxuIiwga3N0YWxlZF9zY2FuX3NlY29uZHMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBr c3RhbGVkX3NjYW5fc2Vjb25kc19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0 cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90 IGNvdW50KQo+ICt7Cj4gKyDCoCDCoCDCoCBpbnQgZXJyOwo+ICsgwqAgwqAgwqAgdW5zaWduZWQg bG9uZyBpbnB1dDsKPiArCj4gKyDCoCDCoCDCoCBlcnIgPSBrc3RydG91bChidWYsIDEwLCAmaW5w dXQpOwo+ICsgwqAgwqAgwqAgaWYgKGVycikKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVy biAtRUlOVkFMOwo+ICsgwqAgwqAgwqAga3N0YWxlZF9zY2FuX3NlY29uZHMgPSBpbnB1dDsKPiAr IMKgIMKgIMKgIHdha2VfdXBfaW50ZXJydXB0aWJsZSgma3N0YWxlZF93YWl0KTsKPiArIMKgIMKg IMKgIHJldHVybiBjb3VudDsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0 ZSBrc3RhbGVkX3NjYW5fc2Vjb25kc19hdHRyID0gX19BVFRSKAo+ICsgwqAgwqAgwqAgc2Nhbl9z ZWNvbmRzLCAwNjQ0LAo+ICsgwqAgwqAgwqAga3N0YWxlZF9zY2FuX3NlY29uZHNfc2hvdywga3N0 YWxlZF9zY2FuX3NlY29uZHNfc3RvcmUpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUg KmtzdGFsZWRfYXR0cnNbXSA9IHsKPiArIMKgIMKgIMKgICZrc3RhbGVkX3NjYW5fc2Vjb25kc19h dHRyLmF0dHIsCj4gKyDCoCDCoCDCoCBOVUxMCj4gK307Cj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlX2dyb3VwIGtzdGFsZWRfYXR0cl9ncm91cCA9IHsKPiArIMKgIMKgIMKgIC5uYW1lID0gImtz dGFsZWQiLAo+ICsgwqAgwqAgwqAgLmF0dHJzID0ga3N0YWxlZF9hdHRycywKPiArfTsKPiArCj4g K3N0YXRpYyBpbnQgX19pbml0IGtzdGFsZWRfaW5pdCh2b2lkKQo+ICt7Cj4gKyDCoCDCoCDCoCBp bnQgZXJyb3I7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRocmVhZDsKPiArCj4g KyDCoCDCoCDCoCBlcnJvciA9IHN5c2ZzX2NyZWF0ZV9ncm91cChtbV9rb2JqLCAma3N0YWxlZF9h dHRyX2dyb3VwKTsKPiArIMKgIMKgIMKgIGlmIChlcnJvcikgewo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgcHJfZXJyKCJGYWlsZWQgdG8gY3JlYXRlIGtzdGFsZWQgc3lzZnMgbm9kZVxuIik7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gZXJyb3I7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ ICsgwqAgwqAgwqAgdGhyZWFkID0ga3RocmVhZF9ydW4oa3N0YWxlZCwgTlVMTCwgImtzdGFsZWQi KTsKPiArIMKgIMKgIMKgIGlmIChJU19FUlIodGhyZWFkKSkgewo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgcHJfZXJyKCJGYWlsZWQgdG8gc3RhcnQga3N0YWxlZFxuIik7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCByZXR1cm4gUFRSX0VSUih0aHJlYWQpOwo+ICsgwqAgwqAgwqAgfQo+ICsKPiAr IMKgIMKgIMKgIHJldHVybiAwOwo+ICt9Cj4gK21vZHVsZV9pbml0KGtzdGFsZWRfaW5pdCk7Cj4g Kwo+ICsjZW5kaWYgLyogQ09ORklHX0tTVEFMRUQgKi8KPiAtLQo+IDEuNy4zLjEKPgo+IC0tCj4g VG8gdW5zdWJzY3JpYmUsIHNlbmQgYSBtZXNzYWdlIHdpdGggJ3Vuc3Vic2NyaWJlIGxpbnV4LW1t JyBpbgo+IHRoZSBib2R5IHRvIG1ham9yZG9tb0BrdmFjay5vcmcuIMKgRm9yIG1vcmUgaW5mbyBv biBMaW51eCBNTSwKPiBzZWU6IGh0dHA6Ly93d3cubGludXgtbW0ub3JnLyAuCj4gRmlnaHQgdW5m YWlyIHRlbGVjb20gaW50ZXJuZXQgY2hhcmdlcyBpbiBDYW5hZGE6IHNpZ24gaHR0cDovL3N0b3B0 aGVtZXRlci5jYS8KPiBEb24ndCBlbWFpbDogPGEgaHJlZj1tYWlsdG86ImRvbnRAa3ZhY2sub3Jn Ij4gZW1haWxAa3ZhY2sub3JnIDwvYT4K -- 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/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: email@kvack.org