From mboxrd@z Thu Jan 1 00:00:00 1970 From: teawater Subject: Re: [PATCH] mm: vmscan: memcg: Add global shrink priority Date: Thu, 19 Dec 2019 17:04:27 +0800 Message-ID: <23317BFD-8C0F-4CC7-A97B-DF339F83DCBA@linux.alibaba.com> References: <1576662179-16861-1-git-send-email-teawaterz@linux.alibaba.com> Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="gb2312" To: Yafang Shao Cc: Johannes Weiner , Michal Hocko , Vladimir Davydov , Andrew Morton , Roman Gushchin , Shakeel Butt , Chris Down , Yang Shi , Tejun Heo , tglx@linutronix.de, LKML , Cgroups , Linux MM Cgo+INTaIDIwMTnE6jEy1MIxOMjVo6wxODo0N6OsWWFmYW5nIFNoYW8gPGxhb2FyLnNoYW9AZ21h aWwuY29tPiDQtLXAo7oKPiAKPiBPbiBXZWQsIERlYyAxOCwgMjAxOSBhdCA1OjQ0IFBNIEh1aSBa aHUgPHRlYXdhdGVyekBsaW51eC5hbGliYWJhLmNvbT4gd3JvdGU6Cj4+IAo+PiBDdXJyZW50bHks IG1lbWNnIGhhcyBzb21lIGNvbmZpZyB0byBsaW1pdCBtZW1vcnkgdXNhZ2UgYW5kIGNvbmZpZwo+ PiB0aGUgc2hyaW5rIGJlaGF2aW9yLgo+PiBJbiB0aGUgbWVtb3J5LWNvbnN0cmFpbmVkIGVudmly b25tZW50LCBwdXQgZGlmZmVyZW50IHByaW9yaXR5IHRhc2tzCj4+IGludG8gZGlmZmVyZW50IGNn cm91cHMgd2l0aCBkaWZmZXJlbnQgbWVtb3J5IGxpbWl0cyB0byBwcm90ZWN0IHRoZQo+PiBwZXJm b3JtYW5jZSBvZiB0aGUgaGlnaCBwcmlvcml0eSB0YXNrcy4gIEJlY2F1c2UgdGhlIGdsb2JhbCBt ZW1vcnkKPj4gc2hyaW5rIHdpbGwgYWZmZWN0IHRoZSBwZXJmb3JtYW5jZSBvZiBhbGwgdGFza3Mu ICBUaGUgbWVtb3J5IGxpbWl0Cj4+IGNncm91cCBjYW4gbWFrZSBzaHJpbmsgaGFwcGVuIGluc2lk ZSB0aGUgY2dyb3VwLiAgVGhlbiBpdCBjYW4gZGVjcmVhc2UKPj4gdGhlIG1lbW9yeSBzaHJpbmsg b2YgdGhlIGhpZ2ggcHJpb3JpdHkgdGFzayB0byBwcm90ZWN0IGl0cyBwZXJmb3JtYW5jZS4KPj4g Cj4+IEJ1dCB0aGUgbWVtb3J5IGZvb3RwcmludCBvZiB0aGUgdGFzayBpcyBub3Qgc3RhdGljLiAg SXQgd2lsbCBjaGFuZ2UgYXMKPj4gdGhlIHdvcmtpbmcgcHJlc3N1cmUgY2hhbmdlcy4gIEFuZCB0 aGUgdmVyc2lvbiBjaGFuZ2VzIHdpbGwgYWZmZWN0IGl0IHRvby4KPj4gVGhlbiBzZXQgdGhlIGFw cHJvcHJpYXRlIG1lbW9yeSBsaW1pdCB0byBkZWNyZWFzZSB0aGUgZ2xvYmFsIG1lbW9yeSBzaHJp bmsKPj4gaXMgYSBkaWZmaWN1bHQgam9iIGFuZCBsZWFkIHRvIHdhc3RlZCBtZW1vcnkgb3IgcGVy Zm9ybWFuY2UgbG9zcyBzb21ldGltZXMuCj4+IAo+PiBUaGlzIGNvbW1pdCBhZGRzIGdsb2JhbCBz aHJpbmsgcHJpb3JpdHkgdG8gbWVtY2cgdG8gdHJ5IHRvIGhhbmRsZSB0aGlzCj4+IHByb2JsZW0u Cj4+IFRoZSBkZWZhdWx0IGdsb2JhbCBzaHJpbmsgcHJpb3JpdHkgb2YgZWFjaCBjZ3JvdXAgaXMg REVGX1BSSU9SSVRZLgo+PiBJdHMgYmVoYXZpb3IgaW4gZ2xvYmFsIHNocmluayBpcyBub3QgY2hh bmdlZC4KPj4gQW5kIHdoZW4gZ2xvYmFsIHNocmluayBwcmlvcml0eSBvZiBhIGNncm91cCBpcyBz bWFsbGVyIHRoYW4gREVGX1BSSU9SSVRZLAo+PiBpdHMgbWVtb3J5IHdpbGwgYmUgc2hyaW5rIHdo ZW4gbWVtY2ctPmdsb2JhbF9zaHJpbmtfcHJpb3JpdHkgZ3JlYXRlciB0aGFuCj4+IG9yIGVxdWFs IHRvIHNjLT5wcmlvcml0eS4KPj4gCj4gCj4gSnVzdCBhIGtpbmQgcmVtaW5kZXIgdGhhdCBzYy0+ cHJpb3JpdHkgaXMgcmVhbGx5IHByb3BvdGlvbmFsLCByYXRoZXIKPiB0aGFuIHByaW9yaXR5Lgo+ IFRoZSByZWxjYWltZXIgc2NhbnMgKHRvdGFsX3NpemUgPj4gcHJpb3JpdHkpIHBhZ2VzIGF0IG9u Y2UuCj4gSWYgdGhlIHJlbGNhaW1lciBjYW4ndCByZWxhaW0gZW5vdWdoIG1lbW9yeSwgaXQgd2ls bCBkZWNyZWFzZQo+IHNjLT5wcmlvcml0eSBhbmQgc2NhbiBNRU1DR3MgYWdhaW4gdW50aWwgdGhl IHNjLT5waXJvcml0eSBkcm9wcyB0byAwLgo+IChzYy0+cHJpb3JpdHkgaXMgcmVhbGx5IGEgbWlz bGVhZGluZyB3b3JkaW5nLiApCj4gU28gY29tcGFyaW5nIHRoZSBtZW1jZyBwcmlvcml0eSB3aXRo ICBzYy0+cHJpb3JpdHkgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgaXNzdWVzLgo+IAo+PiBUaGUgZm9s bG93aW5nIGlzIGFuIGV4YW1wbGUgdG8gdXNlIGdsb2JhbCBzaHJpbmsgcHJpb3JpdHkgaW4gYSBW TSB0aGF0Cj4+IGhhcyAyIENQVXMsIDFHIG1lbW9yeSBhbmQgNEcgc3dhcDoKPj4gIyBUaGVzZSBh cmUgdGVzdCBzaGVsbHMgdGhhdCBjYWxsIHVzZW1lbSB0aGF0IGdldCBmcm9tCj4+ICMgaHR0cHM6 Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvd2ZnL3ZtLXNjYWxhYmls aXR5LmdpdAo+PiBjYXQgMS5zaAo+PiBzbGVlcCA5OTk5Cj4+ICMgLXMgMzYwMDogU2xlZXAgMzYw MCBzZWNvbmRzIGFmdGVyIHRlc3QgY29tcGxldGUgdGhlbiB1c2VtZW0gd2lsbAo+PiAjIG5vdCBy ZWxlYXNlIHRoZSBtZW1vcnkgYXQgb25jZS4KPj4gIyAtWjogIHJlYWQgbWVtb3J5IGFnYWluIGFm dGVyIGFjY2VzcyB0aGUgbWVtb3J5Lgo+PiAjIFRoZSBmaXJzdCB0aW1lIGFjY2VzcyBtZW1vcnkg bmVlZCBzaHJpbmsgbWVtb3J5IHRvIGFsbG9jYXRlIHBhZ2UuCj4+ICMgVGhlbiB0aGUgYWNjZXNz IHNwZWVkIG9mIGhpZ2ggcHJpb3JpdHkgd2lsbCBub3QgaW5jcmVhc2UgYSBsb3QuCj4+ICMgVGhl IHJlYWQgYWdhaW4gc3BlZWQgb2YgaGlnaCBwcmlvcml0eSB3aWxsIGluY3JlYXNlLgo+PiAjICQo KDg1MCAqIDEwMjQgKiAxMDI0ICsgOCkpOiBEaWZmZXJlbnQgc2l6ZXMgYXJlIHVzZWQgdG8gZGlz dGluZ3Vpc2gKPj4gIyB0aGUgcmVzdWx0cyBvZiB0aGUgdHdvIHRlc3RzLgo+PiB1c2VtZW0gLXMg MzYwMCAtWiAtYSAtbiAxICQoKDg1MCAqIDEwMjQgKiAxMDI0ICsgOCkpCj4+IGNhdCAyLnNoCj4+ IHNsZWVwIDk5OTkKPj4gdXNlbWVtIC1zIDM2MDAgLVogLWEgLW4gMSAkKCg4NTAgKiAxMDI0ICog MTAyNCkpCj4+IAo+PiAjIFNldHVwIHN3YXAKPj4gc3dhcG9uIC9zd2FwZmlsZQo+PiAjIFNldHVw IDIgY2dyb3Vwcwo+PiBta2RpciAvc3lzL2ZzL2Nncm91cC9tZW1vcnkvdDEvCj4+IG1rZGlyIC9z eXMvZnMvY2dyb3VwL21lbW9yeS90Mi8KPj4gCj4+ICMgUnVuIHRlc3RzIHdpdGggc2FtZSBnbG9i YWwgc2hyaW5rIHByaW9yaXR5Cj4+IGNhdCAvc3lzL2ZzL2Nncm91cC9tZW1vcnkvdDEvbWVtb3J5 Lmdsb2JhbF9zaHJpbmtfcHJpb3JpdHkKPj4gMTIKPj4gY2F0IC9zeXMvZnMvY2dyb3VwL21lbW9y eS90Mi9tZW1vcnkuZ2xvYmFsX3Nocmlua19wcmlvcml0eQo+PiAxMgo+PiBlY2hvICQkID4gL3N5 cy9mcy9jZ3JvdXAvbWVtb3J5L3QxL2Nncm91cC5wcm9jcwo+PiBzaCAxLnNoICYKPj4gZWNobyAk JCA+IC9zeXMvZnMvY2dyb3VwL21lbW9yeS90Mi9jZ3JvdXAucHJvY3MKPj4gc2ggMi5zaCAmCj4+ IGVjaG8gJCQgPiAvc3lzL2ZzL2Nncm91cC9tZW1vcnkvY2dyb3VwLnByb2NzCj4+IGtpbGxhbGwg c2xlZXAKPj4gIyBUaGlzIHRoZSB0ZXN0IHJlc3VsdHMKPj4gMTAwMjcwMDgwMCBieXRlcyAvIDIz NjAzNTkgdXNlY3MgPSA0MTQ4NTIgS0Ivcwo+PiAxMDAyNzAwODA5IGJ5dGVzIC8gMjY3NjE4MSB1 c2VjcyA9IDM2NTg5NCBLQi9zCj4+IHJlYWQgYWdhaW4gODkxMjg5NjAwIGJ5dGVzIC8gMTM1MTUx NDIgdXNlY3MgPSA2NDQwMSBLQi9zCj4+IHJlYWQgYWdhaW4gODkxMjg5NjA4IGJ5dGVzIC8gMTMy NTIyNjggdXNlY3MgPSA2NTY3OSBLQi9zCj4+IGtpbGxhbGwgdXNlbWVtCj4+IAo+PiAjIFJ1biB0 ZXN0cyB3aXRoIDEyIGFuZCA4Cj4+IGNhdCAvc3lzL2ZzL2Nncm91cC9tZW1vcnkvdDEvbWVtb3J5 Lmdsb2JhbF9zaHJpbmtfcHJpb3JpdHkKPj4gMTIKPj4gZWNobyA4ID4gL3N5cy9mcy9jZ3JvdXAv bWVtb3J5L3QyL21lbW9yeS5nbG9iYWxfc2hyaW5rX3ByaW9yaXR5Cj4+IGVjaG8gJCQgPiAvc3lz L2ZzL2Nncm91cC9tZW1vcnkvdDEvY2dyb3VwLnByb2NzCj4+IHNoIDEuc2ggJgo+PiBlY2hvICQk ID4gL3N5cy9mcy9jZ3JvdXAvbWVtb3J5L3QyL2Nncm91cC5wcm9jcwo+PiBzaCAyLnNoICYKPj4g ZWNobyAkJCA+IC9zeXMvZnMvY2dyb3VwL21lbW9yeS9jZ3JvdXAucHJvY3MKPj4ga2lsbGFsbCBz bGVlcAo+PiAjIFRoaXMgdGhlIHRlc3QgcmVzdWx0cwo+PiAxMDAyNzAwODAwIGJ5dGVzIC8gMTgw OTA1NiB1c2VjcyA9IDU0MTI3NiBLQi9zCj4+IDEwMDI3MDA4MDkgYnl0ZXMgLyAyMTg0MzM3IHVz ZWNzID0gNDQ4MjgyIEtCL3MKPj4gcmVhZCBhZ2FpbiA4OTEyODk2MDAgYnl0ZXMgLyA2NjY2MjI0 IHVzZWNzID0gMTMwNTY4IEtCL3MKPj4gcmVhZCBhZ2FpbiA4OTEyODk2MDggYnl0ZXMgLyA5MTcx NDQwIHVzZWNzID0gOTQ5MDMgS0Ivcwo+PiBraWxsYWxsIHVzZW1lbQo+PiAKPj4gIyBUaGlzIGlz IHRoZSB0ZXN0IHJlc3VsdHMgb2YgMTIgYW5kIDYKPj4gMTAwMjcwMDgwMCBieXRlcyAvIDE4Mjc5 MTQgdXNlY3MgPSA1MzU2OTIgS0Ivcwo+PiAxMDAyNzAwODA5IGJ5dGVzIC8gMjEzNTEyNCB1c2Vj cyA9IDQ1ODYxNSBLQi9zCj4+IHJlYWQgYWdhaW4gODkxMjg5NjAwIGJ5dGVzIC8gMTQ5ODQxOSB1 c2VjcyA9IDU4MDg3OCBLQi9zCj4+IHJlYWQgYWdhaW4gODkxMjg5NjA4IGJ5dGVzIC8gNzMyODM2 MiB1c2VjcyA9IDExODc3MSBLQi9zCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBIdWkgWmh1IDx0ZWF3 YXRlcnpAbGludXguYWxpYmFiYS5jb20+Cj4+IC0tLQo+PiBpbmNsdWRlL2xpbnV4L21lbWNvbnRy b2wuaCB8ICAyICsrCj4+IG1tL21lbWNvbnRyb2wuYyAgICAgICAgICAgIHwgMzIgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPj4gbW0vdm1zY2FuLmMgICAgICAgICAgICAgICAgfCAz OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPj4gMyBmaWxlcyBjaGFu Z2VkLCA3MCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oIGIvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgK Pj4gaW5kZXggYTdhMGExYTUuLjhhZDI0MzcgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvbGludXgv bWVtY29udHJvbC5oCj4+ICsrKyBiL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oCj4+IEBAIC0y NDQsNiArMjQ0LDggQEAgc3RydWN0IG1lbV9jZ3JvdXAgewo+PiAgICAgICAgLyogT09NLUtpbGxl ciBkaXNhYmxlICovCj4+ICAgICAgICBpbnQgICAgICAgICAgICAgb29tX2tpbGxfZGlzYWJsZTsK Pj4gCj4+ICsgICAgICAgczggZ2xvYmFsX3Nocmlua19wcmlvcml0eTsKPj4gKwo+PiAgICAgICAg LyogbWVtb3J5LmV2ZW50cyBhbmQgbWVtb3J5LmV2ZW50cy5sb2NhbCAqLwo+PiAgICAgICAgc3Ry dWN0IGNncm91cF9maWxlIGV2ZW50c19maWxlOwo+PiAgICAgICAgc3RydWN0IGNncm91cF9maWxl IGV2ZW50c19sb2NhbF9maWxlOwo+PiBkaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0v bWVtY29udHJvbC5jCj4+IGluZGV4IGM1YjVmNzQuLjM5ZmRjODQgMTAwNjQ0Cj4+IC0tLSBhL21t L21lbWNvbnRyb2wuYwo+PiArKysgYi9tbS9tZW1jb250cm9sLmMKPj4gQEAgLTQ2NDYsNiArNDY0 NiwzMiBAQCBzdGF0aWMgc3NpemVfdCBtZW1jZ193cml0ZV9ldmVudF9jb250cm9sKHN0cnVjdCBr ZXJuZnNfb3Blbl9maWxlICpvZiwKPj4gICAgICAgIHJldHVybiByZXQ7Cj4+IH0KPj4gCj4+ICtz dGF0aWMgc3NpemVfdCBtZW1fZ2xvYmFsX3Nocmlua19wcmlvcml0eV93cml0ZShzdHJ1Y3Qga2Vy bmZzX29wZW5fZmlsZSAqb2YsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh ciAqYnVmLCBzaXplX3QgbmJ5dGVzLCBsb2ZmX3Qgb2ZmKQo+PiArewo+PiArICAgICAgIHN0cnVj dCBtZW1fY2dyb3VwICptZW1jZyA9IG1lbV9jZ3JvdXBfZnJvbV9jc3Mob2ZfY3NzKG9mKSk7Cj4+ ICsgICAgICAgczggdmFsOwo+PiArICAgICAgIGludCByZXQ7Cj4+ICsKPj4gKyAgICAgICByZXQg PSBrc3RydG9zOChidWYsIDAsICZ2YWwpOwo+PiArICAgICAgIGlmIChyZXQgPCAwKQo+PiArICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gKyAgICAgICBpZiAodmFsID4gREVGX1BSSU9SSVRZ KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKyAgICAgICBtZW1j Zy0+Z2xvYmFsX3Nocmlua19wcmlvcml0eSA9IHZhbDsKPj4gKwo+PiArICAgICAgIHJldHVybiBu Ynl0ZXM7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzNjQgbWVtX2dsb2JhbF9zaHJpbmtfcHJpb3Jp dHlfcmVhZChzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqY3NzLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNmdHlwZSAqY2Z0KQo+PiArewo+PiAr ICAgICAgIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyA9IG1lbV9jZ3JvdXBfZnJvbV9jc3MoY3Nz KTsKPj4gKwo+PiArICAgICAgIHJldHVybiBtZW1jZy0+Z2xvYmFsX3Nocmlua19wcmlvcml0eTsK Pj4gK30KPj4gKwo+PiBzdGF0aWMgc3RydWN0IGNmdHlwZSBtZW1fY2dyb3VwX2xlZ2FjeV9maWxl c1tdID0gewo+PiAgICAgICAgewo+PiAgICAgICAgICAgICAgICAubmFtZSA9ICJ1c2FnZV9pbl9i eXRlcyIsCj4+IEBAIC00Nzc0LDYgKzQ4MDAsMTEgQEAgc3RhdGljIHN0cnVjdCBjZnR5cGUgbWVt X2Nncm91cF9sZWdhY3lfZmlsZXNbXSA9IHsKPj4gICAgICAgICAgICAgICAgLndyaXRlID0gbWVt X2Nncm91cF9yZXNldCwKPj4gICAgICAgICAgICAgICAgLnJlYWRfdTY0ID0gbWVtX2Nncm91cF9y ZWFkX3U2NCwKPj4gICAgICAgIH0sCj4+ICsgICAgICAgewo+PiArICAgICAgICAgICAgICAgLm5h bWUgPSAiZ2xvYmFsX3Nocmlua19wcmlvcml0eSIsCj4+ICsgICAgICAgICAgICAgICAud3JpdGUg PSBtZW1fZ2xvYmFsX3Nocmlua19wcmlvcml0eV93cml0ZSwKPj4gKyAgICAgICAgICAgICAgIC5y ZWFkX3M2NCA9IG1lbV9nbG9iYWxfc2hyaW5rX3ByaW9yaXR5X3JlYWQsCj4+ICsgICAgICAgfSwK Pj4gICAgICAgIHsgfSwgICAgLyogdGVybWluYXRlICovCj4+IH07Cj4+IAo+PiBAQCAtNDk5Niw2 ICs1MDI3LDcgQEAgbWVtX2Nncm91cF9jc3NfYWxsb2Moc3RydWN0IGNncm91cF9zdWJzeXNfc3Rh dGUgKnBhcmVudF9jc3MpCj4+IAo+PiAgICAgICAgbWVtY2ctPmhpZ2ggPSBQQUdFX0NPVU5URVJf TUFYOwo+PiAgICAgICAgbWVtY2ctPnNvZnRfbGltaXQgPSBQQUdFX0NPVU5URVJfTUFYOwo+PiAr ICAgICAgIG1lbWNnLT5nbG9iYWxfc2hyaW5rX3ByaW9yaXR5ID0gREVGX1BSSU9SSVRZOwo+PiAg ICAgICAgaWYgKHBhcmVudCkgewo+PiAgICAgICAgICAgICAgICBtZW1jZy0+c3dhcHBpbmVzcyA9 IG1lbV9jZ3JvdXBfc3dhcHBpbmVzcyhwYXJlbnQpOwo+PiAgICAgICAgICAgICAgICBtZW1jZy0+ b29tX2tpbGxfZGlzYWJsZSA9IHBhcmVudC0+b29tX2tpbGxfZGlzYWJsZTsKPj4gZGlmZiAtLWdp dCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKPj4gaW5kZXggNzRlOGVkYy4uNWUxMWQ0NSAx MDA2NDQKPj4gLS0tIGEvbW0vdm1zY2FuLmMKPj4gKysrIGIvbW0vdm1zY2FuLmMKPj4gQEAgLTI2 MzcsMTcgKzI2MzcsMzMgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZF9jb250aW51ZV9yZWNs YWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsCj4+ICAgICAgICByZXR1cm4gaW5hY3RpdmVf bHJ1X3BhZ2VzID4gcGFnZXNfZm9yX2NvbXBhY3Rpb247Cj4+IH0KPj4gCj4+ICtzdGF0aWMgYm9v bCBnZXRfaXNfZ2xvYmFsX3NocmluayhzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYykKPj4gK3sKPj4g KyAgICAgICBpZiAoIXNjLT50YXJnZXRfbWVtX2Nncm91cCB8fAo+PiArICAgICAgICAgICAgICAg bWVtX2Nncm91cF9pc19yb290KHNjLT50YXJnZXRfbWVtX2Nncm91cCkpCj4+ICsgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKPj4gKwo+PiArICAgICAgIHJldHVybiBmYWxzZTsKPj4gK30KPj4g Kwo+PiBzdGF0aWMgdm9pZCBzaHJpbmtfbm9kZV9tZW1jZ3MocGdfZGF0YV90ICpwZ2RhdCwgc3Ry dWN0IHNjYW5fY29udHJvbCAqc2MpCj4+IHsKPj4gICAgICAgIHN0cnVjdCBtZW1fY2dyb3VwICp0 YXJnZXRfbWVtY2cgPSBzYy0+dGFyZ2V0X21lbV9jZ3JvdXA7Cj4+ICAgICAgICBzdHJ1Y3QgbWVt X2Nncm91cCAqbWVtY2c7Cj4+ICsgICAgICAgYm9vbCBpc19nbG9iYWxfc2hyaW5rID0gZ2V0X2lz X2dsb2JhbF9zaHJpbmsoc2MpOwo+PiAKPj4gICAgICAgIG1lbWNnID0gbWVtX2Nncm91cF9pdGVy KHRhcmdldF9tZW1jZywgTlVMTCwgTlVMTCk7Cj4+ICAgICAgICBkbyB7Cj4+IC0gICAgICAgICAg ICAgICBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSBtZW1fY2dyb3VwX2xydXZlYyhtZW1jZywgcGdk YXQpOwo+PiArICAgICAgICAgICAgICAgc3RydWN0IGxydXZlYyAqbHJ1dmVjOwo+PiAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIHJlY2xhaW1lZDsKPj4gICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBzY2FubmVkOwo+PiAKPj4gKyAgICAgICAgICAgICAgIGlmIChpc19nbG9iYWxfc2hy aW5rICYmCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG1lbWNnLT5nbG9iYWxfc2hyaW5rX3By aW9yaXR5IDwgc2MtPnByaW9yaXR5KQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPj4gKwo+PiArICAgICAgICAgICAgICAgbHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVt Y2csIHBnZGF0KTsKPj4gKwo+PiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1lbV9jZ3JvdXBfcHJv dGVjdGVkKHRhcmdldF9tZW1jZywgbWVtY2cpKSB7Cj4+ICAgICAgICAgICAgICAgIGNhc2UgTUVN Q0dfUFJPVF9NSU46Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgLyoKPj4gQEAgLTI2ODIsMTEg KzI2OTgsMjEgQEAgc3RhdGljIHZvaWQgc2hyaW5rX25vZGVfbWVtY2dzKHBnX2RhdGFfdCAqcGdk YXQsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKQo+PiAgICAgICAgICAgICAgICByZWNsYWltZWQg PSBzYy0+bnJfcmVjbGFpbWVkOwo+PiAgICAgICAgICAgICAgICBzY2FubmVkID0gc2MtPm5yX3Nj YW5uZWQ7Cj4+IAo+PiArICAgICAgICAgICAgICAgaWYgKGlzX2dsb2JhbF9zaHJpbmsgJiYKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgbWVtY2ctPmdsb2JhbF9zaHJpbmtfcHJpb3JpdHkgIT0g REVGX1BSSU9SSVRZKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBzYy0+cHJpb3JpdHkgKz0g REVGX1BSSU9SSVRZCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt IG1lbWNnLT5nbG9iYWxfc2hyaW5rX3ByaW9yaXR5Owo+PiArCj4gCj4gRm9yIGV4YW1wbGUuCj4g SW4gdGhpcyBjYXNlIHRoaXMgbWVtY2cgY2FuJ3QgZG8gZnVsbCBzY2FuLgo+IFRoaXMgYmVoYXZp b3IgaXMgc2ltaWxhciB3aXRoIGEgaGFyZCBwcm90ZWN0KG1lbXJveS5taW4pLCB3aGljaCBtYXkK PiBjYXVzZSB1bmV4cGVjdGVkIE9PTSB1bmRlciBtZW1vcnkgcHJlc3N1cmUuCj4gCj4gUGxzLiBj b3JyZWN0IG1lIGlmIEkgbWlzdW5kZXJzdGFuZCB5b3UuCgpUaGFua3MgYW5kIGFncmVlIHdpdGgg eW91LgpMb3cgcHJpb3JpdHkgdGFzayBzaG91bGQgZG8gbW9yZSBzaHJpbmsgaWYgdGhlIGhpZ2gg cHJpb3JpdHkgdGFzayBpcyBpZ25vcmVkLgoKQmVzdCwKSHVpCgo+IAo+PiAgICAgICAgICAgICAg ICBzaHJpbmtfbHJ1dmVjKGxydXZlYywgc2MpOwo+PiAKPj4gICAgICAgICAgICAgICAgc2hyaW5r X3NsYWIoc2MtPmdmcF9tYXNrLCBwZ2RhdC0+bm9kZV9pZCwgbWVtY2csCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNjLT5wcmlvcml0eSk7Cj4+IAo+PiArICAgICAgICAgICAgICAgaWYg KGlzX2dsb2JhbF9zaHJpbmsgJiYKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbWVtY2ctPmds b2JhbF9zaHJpbmtfcHJpb3JpdHkgIT0gREVGX1BSSU9SSVRZKQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBzYy0+cHJpb3JpdHkgLT0gREVGX1BSSU9SSVRZCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtIG1lbWNnLT5nbG9iYWxfc2hyaW5rX3ByaW9yaXR5Owo+ PiArCj4+ICAgICAgICAgICAgICAgIC8qIFJlY29yZCB0aGUgZ3JvdXAncyByZWNsYWltIGVmZmlj aWVuY3kgKi8KPj4gICAgICAgICAgICAgICAgdm1wcmVzc3VyZShzYy0+Z2ZwX21hc2ssIG1lbWNn LCBmYWxzZSwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICBzYy0+bnJfc2Nhbm5lZCAtIHNj YW5uZWQsCj4+IEBAIC0zMzk1LDExICszNDIxLDE4IEBAIHN0YXRpYyB2b2lkIGFnZV9hY3RpdmVf YW5vbihzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LAo+PiAKPj4gICAgICAgIG1lbWNnID0gbWVt X2Nncm91cF9pdGVyKE5VTEwsIE5VTEwsIE5VTEwpOwo+PiAgICAgICAgZG8gewo+PiArICAgICAg ICAgICAgICAgaWYgKG1lbWNnLT5nbG9iYWxfc2hyaW5rX3ByaW9yaXR5IDwgc2MtPnByaW9yaXR5 KQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4gKwo+PiAgICAgICAgICAg ICAgICBscnV2ZWMgPSBtZW1fY2dyb3VwX2xydXZlYyhtZW1jZywgcGdkYXQpOwo+PiArICAgICAg ICAgICAgICAgLyoKPj4gKyAgICAgICAgICAgICAgICAqIE5vdCBzZXQgc2MtPnByaW9yaXR5IGFj Y29yZGluZyBldmVuIGlmIHRoaXMgaXMKPj4gKyAgICAgICAgICAgICAgICAqIGEgZ2xvYmFsIHNo cmluayBiZWNhdXNlIG5yX3RvX3NjYW4gaXMgc2V0IHRvCj4+ICsgICAgICAgICAgICAgICAgKiBT V0FQX0NMVVNURVJfTUFYIGFuZCB0aGVyZSBpcyBub3Qgb3RoZXIgcGFydCB1c2UgaXQuCj4+ICsg ICAgICAgICAgICAgICAgKi8KPj4gICAgICAgICAgICAgICAgc2hyaW5rX2FjdGl2ZV9saXN0KFNX QVBfQ0xVU1RFUl9NQVgsIGxydXZlYywKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNjLCBMUlVfQUNUSVZFX0FOT04pOwo+PiAtICAgICAgICAgICAgICAgbWVtY2cgPSBtZW1f Y2dyb3VwX2l0ZXIoTlVMTCwgbWVtY2csIE5VTEwpOwo+PiAtICAgICAgIH0gd2hpbGUgKG1lbWNn KTsKPj4gKyAgICAgICB9IHdoaWxlICgobWVtY2cgPSBtZW1fY2dyb3VwX2l0ZXIoTlVMTCwgbWVt Y2csIE5VTEwpKSk7Cj4+IH0KPj4gCj4+IHN0YXRpYyBib29sIHBnZGF0X3dhdGVybWFya19ib29z dGVkKHBnX2RhdGFfdCAqcGdkYXQsIGludCBjbGFzc3pvbmVfaWR4KQo+PiAtLQo+PiAyLjcuNAoK