From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Brodkin Subject: Re: arc: mm->mmap_sem gets locked in do_page_fault() in case of OOM killer invocation Date: Mon, 26 Feb 2018 20:44:44 +0000 Message-ID: <1519677883.2997.21.camel@synopsys.com> References: <1518784830.3544.33.camel@synopsys.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1518784830.3544.33.camel@synopsys.com> Content-Language: en-US Content-ID: <6AB982F5A0BDC648B8C39D449D7EA544@internal.synopsys.com> Sender: linux-kernel-owner@vger.kernel.org To: Vineet Gupta Cc: "linux-kernel@vger.kernel.org" , "linux-arch@vger.kernel.org" , "linux-snps-arc@lists.infradead.org" List-Id: linux-arch.vger.kernel.org SGkgVmluZWV0LCBhbGwNCg0KT24gRnJpLCAyMDE4LTAyLTE2IGF0IDE1OjQwICswMzAwLCBBbGV4 ZXkgQnJvZGtpbiB3cm90ZToNCj4gSGkgVmluZWV0LA0KPiANCj4gV2hpbGUgcGxheWluZyB3aXRo IE9PTSBraWxsZXIgSSBidW1wZWQgaW4gYSBwdXJlIHNvZnR3YXJlIGRlYWRsb2NrIG9uIEFSQw0K PiB3aGljaCBpcyBldmVuIG9ic2VydmVkIGluIHNpbXVsYXRpb24gKGkuZS4gaXQgaGFzIG5vdGhp bmcgdG8gZG8gd2l0aCBIVyBwZWN1bGlhcml0aWVzKS4NCj4gDQo+IFdoYXQncyBuaWNlIGtlcm5l bCBldmVuIHNlZXMgdGhhdCBsb2NrLXVwIGlmICJMb2NrIERlYnVnZ2luZyIgaXMgZW5hYmxlZC4N Cj4gVGhhdCdzIHdoYXQgSSBzZWU6DQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tPjgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+ICMgL2hvbWUvb29tLXRlc3QgNDUwICYgL2hvbWUvb29tLXRlc3QgNDUwDQo+IG9vbS10ZXN0 IGludm9rZWQgb29tLWtpbGxlcjogZ2ZwX21hc2s9MHgxNDIwMGNhKEdGUF9ISUdIVVNFUl9NT1ZB QkxFKSwgbm9kZW1hc2s9KG51bGwpLCAgb3JkZXI9MCwgb29tX3Njb3JlX2Fkaj0wDQo+IENQVTog MCBQSUQ6IDY3IENvbW06IG9vbS10ZXN0IE5vdCB0YWludGVkIDQuMTQuMTkgIzINCj4gDQo+IFN0 YWNrIFRyYWNlOg0KPiAgIGFyY191bndpbmRfY29yZS5jb25zdHByb3AuMSsweGQ0LzB4ZjgNCj4g ICBkdW1wX2hlYWRlci5pc3JhLjYrMHg4NC8weDJmOA0KPiAgIG9vbV9raWxsX3Byb2Nlc3MrMHgy NTgvMHg3YzgNCj4gICBvdXRfb2ZfbWVtb3J5KzB4YjgvMHg1ZTANCj4gICBfX2FsbG9jX3BhZ2Vz X25vZGVtYXNrKzB4OTIyLzB4ZDI4DQo+ICAgaGFuZGxlX21tX2ZhdWx0KzB4Mjg0LzB4ZDkwDQo+ ICAgZG9fcGFnZV9mYXVsdCsweGY2LzB4MmEwDQo+ICAgcmV0X2Zyb21fZXhjZXB0aW9uKzB4MC8w eDgNCj4gTWVtLUluZm86DQo+IGFjdGl2ZV9hbm9uOjYyMjc2IGluYWN0aXZlX2Fub246MzQxIGlz b2xhdGVkX2Fub246MA0KPiAgYWN0aXZlX2ZpbGU6MCBpbmFjdGl2ZV9maWxlOjAgaXNvbGF0ZWRf ZmlsZTowDQo+ICB1bmV2aWN0YWJsZTowIGRpcnR5OjAgd3JpdGViYWNrOjAgdW5zdGFibGU6MA0K PiAgc2xhYl9yZWNsYWltYWJsZToyNiBzbGFiX3VucmVjbGFpbWFibGU6MTk2DQo+ICBtYXBwZWQ6 MTA1IHNobWVtOjU3OCBwYWdldGFibGVzOjI2MyBib3VuY2U6MA0KPiAgZnJlZTozNDQgZnJlZV9w Y3A6MzkgZnJlZV9jbWE6MA0KPiBOb2RlIDAgYWN0aXZlX2Fub246NDk4MjA4a0IgaW5hY3RpdmVf YW5vbjoyNzI4a0IgYWN0aXZlX2ZpbGU6MGtCIGluYWN0aXZlX2ZpbGU6MGtCIHVuZXZpY3RhYmxl OjBrQiBpc29sYXRlZChhbm9uKTowa0IgaXNvbGF0ZWQoZmlsZSk6MGtCDQo+IG1hcHBlZDo4NDBr Qg0KPiBkaXJ0eToNCj4gMGtCIHdyaXRlYmFjazowa0Igc2htZW06NDYyNGtCIHdyaXRlYmFja190 bXA6MGtCIHVuc3RhYmxlOjBrQiBhbGxfdW5yZWNsYWltYWJsZT8gbm8NCj4gTm9ybWFsIGZyZWU6 Mjc1MmtCIG1pbjoyODQwa0IgbG93OjM1NDRrQiBoaWdoOjQyNDhrQiBhY3RpdmVfYW5vbjo0OTgy MDhrQiBpbmFjdGl2ZV9hbm9uOjI3MjhrQiBhY3RpdmVfZmlsZTowa0IgaW5hY3RpdmVfZmlsZTow a0IgdW5ldmljdGFibGU6MGtCDQo+IHdyaXRlcGVuZGluDQo+IGc6MGtCIHByZXNlbnQ6NTI0Mjg4 a0IgbWFuYWdlZDo1MDg1ODRrQiBtbG9ja2VkOjBrQiBrZXJuZWxfc3RhY2s6MjQwa0IgcGFnZXRh YmxlczoyMTA0a0IgYm91bmNlOjBrQiBmcmVlX3BjcDozMTJrQiBsb2NhbF9wY3A6MzEya0IgZnJl ZV9jbWE6MGtCDQo+IGxvd21lbV9yZXNlcnZlW106IDAgMA0KPiBOb3JtYWw6IDAqOGtCIDAqMTZr QiAwKjMya0IgMSo2NGtCIChNKSAxKjEyOGtCIChNKSAwKjI1NmtCIDEqNTEya0IgKE0pIDAqMTAy NGtCIDEqMjA0OGtCIChNKSAwKjQwOTZrQiAwKjgxOTJrQiA9IDI3NTJrQg0KPiA1NzggdG90YWwg cGFnZWNhY2hlIHBhZ2VzDQo+IDY1NTM2IHBhZ2VzIFJBTQ0KPiAwIHBhZ2VzIEhpZ2hNZW0vTW92 YWJsZU9ubHkNCj4gMTk2MyBwYWdlcyByZXNlcnZlZA0KPiBbIHBpZCBdICAgdWlkICB0Z2lkIHRv dGFsX3ZtICAgICAgcnNzIG5yX3B0ZXMgbnJfcG1kcyBzd2FwZW50cyBvb21fc2NvcmVfYWRqIG5h bWUNCj4gWyAgIDQxXSAgICAgMCAgICA0MSAgICAgIDE1NyAgICAgIDEwMyAgICAgICAzICAgICAg IDAgICAgICAgIDAgICAgICAgICAgICAgMCBzeXNsb2dkDQo+IFsgICA0M10gICAgIDAgICAgNDMg ICAgICAxNTYgICAgICAxMDYgICAgICAgMyAgICAgICAwICAgICAgICAwICAgICAgICAgICAgIDAg a2xvZ2QNCj4gWyAgIDYzXSAgICAgMCAgICA2MyAgICAgIDE1NyAgICAgICA5OSAgICAgICAzICAg ICAgIDAgICAgICAgIDAgICAgICAgICAgICAgMCBnZXR0eQ0KPiBbICAgNjRdICAgICAwICAgIDY0 ICAgICAgMTU5ICAgICAgMTE4ICAgICAgIDMgICAgICAgMCAgICAgICAgMCAgICAgICAgICAgICAw IHNoDQo+IFsgICA2Nl0gICAgIDAgICAgNjYgICAxMTUyOTEgICAgMzEwOTQgICAgIDEyNCAgICAg ICAwICAgICAgICAwICAgICAgICAgICAgIDAgb29tLXRlc3QNCj4gWyAgIDY3XSAgICAgMCAgICA2 NyAgIDExNTI5MSAgICAzMTAwNCAgICAgMTI0ICAgICAgIDAgICAgICAgIDAgICAgICAgICAgICAg MCBvb20tdGVzdA0KPiBPdXQgb2YgbWVtb3J5OiBLaWxsIHByb2Nlc3MgNjYgKG9vbS10ZXN0KSBz Y29yZSA0NzYgb3Igc2FjcmlmaWNlIGNoaWxkDQo+IEtpbGxlZCBwcm9jZXNzIDY2IChvb20tdGVz dCkgdG90YWwtdm06OTIyMzI4a0IsIGFub24tcnNzOjI0ODMyOGtCLCBmaWxlLXJzczowa0IsIHNo bWVtLXJzczo0MjRrQg0KPiANCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCj4gV0FSTklORzogcG9zc2libGUgcmVjdXJzaXZlIGxvY2tpbmcgZGV0ZWN0ZWQN Cj4gNC4xNC4xOSAjMiBOb3QgdGFpbnRlZA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiBvb20tdGVzdC82NiBpcyB0cnlpbmcgdG8gYWNxdWlyZSBsb2Nr Og0KPiAgKCZtbS0+bW1hcF9zZW0peysrKyt9LCBhdDogWzw4MDIxN2Q1MD5dIGRvX2V4aXQrMHg0 NDQvMHg3ZjgNCj4gDQo+IGJ1dCB0YXNrIGlzIGFscmVhZHkgaG9sZGluZyBsb2NrOg0KPiAgKCZt bS0+bW1hcF9zZW0peysrKyt9LCBhdDogWzw4MDIxMDI4YT5dIGRvX3BhZ2VfZmF1bHQrMHg5ZS8w eDJhMA0KPiANCj4gb3RoZXIgaW5mbyB0aGF0IG1pZ2h0IGhlbHAgdXMgZGVidWcgdGhpczoNCj4g IFBvc3NpYmxlIHVuc2FmZSBsb2NraW5nIHNjZW5hcmlvOg0KPiANCj4gICAgICAgIENQVTANCj4g ICAgICAgIC0tLS0NCj4gICBsb2NrKCZtbS0+bW1hcF9zZW0pOw0KPiAgIGxvY2soJm1tLT5tbWFw X3NlbSk7DQo+IA0KPiAgKioqIERFQURMT0NLICoqKg0KPiANCj4gIE1heSBiZSBkdWUgdG8gbWlz c2luZyBsb2NrIG5lc3Rpbmcgbm90YXRpb24NCj4gDQo+IDEgbG9jayBoZWxkIGJ5IG9vbS10ZXN0 LzY2Og0KPiAgIzA6ICAoJm1tLT5tbWFwX3NlbSl7KysrK30sIGF0OiBbPDgwMjEwMjhhPl0gZG9f cGFnZV9mYXVsdCsweDllLzB4MmEwDQo+IA0KPiBzdGFjayBiYWNrdHJhY2U6DQo+IENQVTogMCBQ SUQ6IDY2IENvbW06IG9vbS10ZXN0IE5vdCB0YWludGVkIDQuMTQuMTkgIzINCj4gDQo+IFN0YWNr IFRyYWNlOg0KPiAgIGFyY191bndpbmRfY29yZS5jb25zdHByb3AuMSsweGQ0LzB4ZjgNCj4gICBf X2xvY2tfYWNxdWlyZSsweDU4Mi8weDE0OTQNCj4gICBsb2NrX2FjcXVpcmUrMHgzYy8weDU4DQo+ ICAgZG93bl9yZWFkKzB4MWEvMHgyOA0KPiAgIGRvX2V4aXQrMHg0NDQvMHg3ZjgNCj4gICBkb19n cm91cF9leGl0KzB4MjYvMHg4Yw0KPiAgIGdldF9zaWduYWwrMHgxYWEvMHg3ZDQNCj4gICBkb19z aWduYWwrMHgzMC8weDIyMA0KPiAgIHJlc3VtZV91c2VyX21vZGVfYmVnaW4rMHg5MC8weGQ4DQo+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPjgtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiBMb29raW5nIGF0IG91ciBj b2RlIGluICJhcmNoL2FyYy9tbS9mYXVsdC5jIiBJIG1heSBzZWUgd2h5ICJtbS0+bW1hcF9zZW0i IGlzIG5vdCByZWxlYXNlZDoNCj4gMS4gZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3VycmVudCkgcmV0 dXJucyBub24temVybyB2YWx1ZQ0KPiAyLiAoKGZhdWx0ICYgVk1fRkFVTFRfRVJST1IpICYmICEo ZmF1bHQgJiBWTV9GQVVMVF9SRVRSWSkpIGlzIGZhbHNlIHRodXMgdXBfcmVhZCgmbW0tPm1tYXBf c2VtKQ0KPiAgICBpcyBub3QgZXhlY3V0ZWQuDQo+IDMuIEl0IHdhcyBhIHVzZXItc3BhY2UgcHJv Y2VzcyB0aHVzIHdlIHNpbXBseSByZXR1cm4gW3dpdGggIm1tLT5tbWFwX3NlbSIgc3RpbGwgaGVs ZF0uDQo+IA0KPiBTZWUgdGhlIGNvZGUgc25pcHBldCBiZWxvdzoNCj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+OC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4gCS8qIElmIFBhZ2VmYXVsdCB3YXMgaW50ZXJydXB0ZWQgYnkg U0lHS0lMTCwgZXhpdCBwYWdlIGZhdWx0ICJlYXJseSIgKi8NCj4gCWlmICh1bmxpa2VseShmYXRh bF9zaWduYWxfcGVuZGluZyhjdXJyZW50KSkpIHsNCj4gCQlpZiAoKGZhdWx0ICYgVk1fRkFVTFRf RVJST1IpICYmICEoZmF1bHQgJiBWTV9GQVVMVF9SRVRSWSkpDQo+IAkJCXVwX3JlYWQoJm1tLT5t bWFwX3NlbSk7DQo+IAkJaWYgKHVzZXJfbW9kZShyZWdzKSkNCj4gCQkJcmV0dXJuOw0KPiAJfQ0K PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT44LS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpTbyBJIGRlY2lkZWQgdG8gZ2l2 ZSBhIHRyaXZpYWwgZml4IGEgdHJ5Og0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0+OC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CmRpZmYgLS1naXQgYS9hcmNoL2FyYy9tbS9mYXVsdC5jIGIvYXJjaC9hcmMvbW0vZmF1bHQuYw0K aW5kZXggYTBiN2JkNmQwMzBkLi45NzlhMDk5NTEwMGQgMTAwNjQ0DQotLS0gYS9hcmNoL2FyYy9t bS9mYXVsdC5jDQorKysgYi9hcmNoL2FyYy9tbS9mYXVsdC5jDQpAQCAtMTQzLDggKzE0MywxMCBA QCB2b2lkIGRvX3BhZ2VfZmF1bHQodW5zaWduZWQgbG9uZyBhZGRyZXNzLCBzdHJ1Y3QgcHRfcmVn cyAqcmVncykNCiAgICAgICAgaWYgKHVubGlrZWx5KGZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJl bnQpKSkgew0KICAgICAgICAgICAgICAgIGlmICgoZmF1bHQgJiBWTV9GQVVMVF9FUlJPUikgJiYg IShmYXVsdCAmIFZNX0ZBVUxUX1JFVFJZKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHVwX3Jl YWQoJm1tLT5tbWFwX3NlbSk7DQotICAgICAgICAgICAgICAgaWYgKHVzZXJfbW9kZShyZWdzKSkN CisgICAgICAgICAgICAgICBpZiAodXNlcl9tb2RlKHJlZ3MpKSB7DQorICAgICAgICAgICAgICAg ICAgICAgICB1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuOw0KKyAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+OC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCg0KQW5kIGluZGVlZCBJIG5vIGxvbmdlciBzZWUgdGhhdCBkZWFkbG9j ayBidXQgaW5zdGVhZCBJJ20gZ2V0dGluZyBhbm90aGVyIGZhdGFsIGZhaWx1cmU6DQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT44LS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyB3aGlsZSB0cnVlOyBkbyAvaG9tZS9vb20tdGVz dCA0NTAgJiAvaG9tZS9vb20tdGVzdCA0NTA7IGRvbmU7DQpCdWZmZXIgc2l6ZSBpcyA0NTAgTWlC DQpCdWZmZXIgc2l6ZSBpcyA0NTAgTWlCDQpvb20tdGVzdCBpbnZva2VkIG9vbS1raWxsZXI6IGdm cF9tYXNrPTB4MTQyMDBjYShHRlBfSElHSFVTRVJfTU9WQUJMRSksIG5vZGVtYXNrPShudWxsKSwg IG9yZGVyPTAsIG9vbV9zY29yZV9hZGo9MA0KQ1BVOiAzIFBJRDogMTA1IENvbW06IG9vbS10ZXN0 IE5vdCB0YWludGVkIDQuMTQuMjItZGlydHkgIzEzDQoNClN0YWNrIFRyYWNlOg0KICBhcmNfdW53 aW5kX2NvcmUuY29uc3Rwcm9wLjErMHhkMC8weGY0DQogIGR1bXBfc3RhY2srMHg2OC8weDgwDQog IGR1bXBfaGVhZGVyLmlzcmEuNisweDdjLzB4MTkwDQogIG9vbV9raWxsX3Byb2Nlc3MrMHgxMTAv MHg2MTgNCiAgb3V0X29mX21lbW9yeSsweGI0LzB4NDA0DQogIF9fYWxsb2NfcGFnZXNfbm9kZW1h c2srMHgxYjkyLzB4MjczNA0KICBoYW5kbGVfbW1fZmF1bHQrMHgyZTIvMHg5NzQNCiAgZG9fcGFn ZV9mYXVsdCsweGY2LzB4MmFjDQogIHJldF9mcm9tX2V4Y2VwdGlvbisweDAvMHg4DQpNZW0tSW5m bzoNCmFjdGl2ZV9hbm9uOjk0ODcyIGluYWN0aXZlX2Fub246MzQ0IGlzb2xhdGVkX2Fub246MA0K IGFjdGl2ZV9maWxlOjAgaW5hY3RpdmVfZmlsZTowIGlzb2xhdGVkX2ZpbGU6MA0KIHVuZXZpY3Rh YmxlOjAgZGlydHk6MCB3cml0ZWJhY2s6MCB1bnN0YWJsZTowDQogc2xhYl9yZWNsYWltYWJsZToz OCBzbGFiX3VucmVjbGFpbWFibGU6Mjg1DQogbWFwcGVkOjEwNSBzaG1lbTo1NzkgcGFnZXRhYmxl czozOTIgYm91bmNlOjANCiBmcmVlOjQyOCBmcmVlX3BjcDoxNjAgZnJlZV9jbWE6MA0KTm9kZSAw IGFjdGl2ZV9hbm9uOjc1ODk3NmtCIGluYWN0aXZlX2Fub246Mjc1MmtCIGFjdGl2ZV9maWxlOjBr QiBpbmFjdGl2ZV9maWxlOjBrQiB1bmV2aWN0YWJsZTowa0IgaXNvbGF0ZWQoYW5vbik6MGtCIGlz b2xhdGVkKGZpbGUpOjBrQiBtYXBwZWQ6ODQwa0INCmRpcnR5OjBzDQpOb3JtYWwgZnJlZTozNDI0 a0IgbWluOjM1MTJrQiBsb3c6NDM4NGtCIGhpZ2g6NTI1NmtCIGFjdGl2ZV9hbm9uOjc1OTAyNGtC IGluYWN0aXZlX2Fub246Mjc1MmtCIGFjdGl2ZV9maWxlOjBrQiBpbmFjdGl2ZV9maWxlOjBrQiB1 bmV2aWN0YWJsZTowa0INCndyaXRlcGVuZGluZ0INCmxvd21lbV9yZXNlcnZlW106IDAgMA0KTm9y bWFsOiAwKjhrQiAwKjE2a0IgMSozMmtCIChNKSAxKjY0a0IgKE0pIDIqMTI4a0IgKFVNKSAyKjI1 NmtCIChVTSkgMSo1MTJrQiAoTSkgMioxMDI0a0IgKFVNKSAwKjIwNDhrQiAwKjQwOTZrQiAwKjgx OTJrQiA9IDM0MjRrQg0KNTc5IHRvdGFsIHBhZ2VjYWNoZSBwYWdlcw0KMCBwYWdlcyBpbiBzd2Fw IGNhY2hlDQpTd2FwIGNhY2hlIHN0YXRzOiBhZGQgMCwgZGVsZXRlIDAsIGZpbmQgMC8wDQpGcmVl IHN3YXAgID0gMGtCDQpUb3RhbCBzd2FwID0gMGtCDQoxMzEwNzIgcGFnZXMgUkFNDQowIHBhZ2Vz IEhpZ2hNZW0vTW92YWJsZU9ubHkNCjM0Mzk3IHBhZ2VzIHJlc2VydmVkDQpbIHBpZCBdICAgdWlk ICB0Z2lkIHRvdGFsX3ZtICAgICAgcnNzIG5yX3B0ZXMgbnJfcG1kcyBzd2FwZW50cyBvb21fc2Nv cmVfYWRqIG5hbWUNClsgICA4MF0gICAgIDAgICAgODAgICAgICAxNTcgICAgICAgMjggICAgICAg MyAgICAgICAwICAgICAgICAwICAgICAgICAgICAgIDAgc3lzbG9nZA0KWyAgIDgzXSAgICAgMCAg ICA4MyAgICAgIDE1NiAgICAgICAyNSAgICAgICAzICAgICAgIDAgICAgICAgIDAgICAgICAgICAg ICAgMCBrbG9nZA0KWyAgMTAyXSAgICAgMCAgIDEwMiAgICAgIDE1NyAgICAgICAyOCAgICAgICAz ICAgICAgIDAgICAgICAgIDAgICAgICAgICAgICAgMCBnZXR0eQ0KWyAgMTAzXSAgICAgMCAgIDEw MyAgICAgIDE1OSAgICAgICAyOCAgICAgICAzICAgICAgIDAgICAgICAgIDAgICAgICAgICAgICAg MCBzaA0KWyAgMTA1XSAgICAgMCAgIDEwNSAgIDExNTI5MSAgICA0NzQ0MiAgICAgMTg4ICAgICAg IDAgICAgICAgIDAgICAgICAgICAgICAgMCBvb20tdGVzdA0KWyAgMTA2XSAgICAgMCAgIDEwNiAg IDExNTI5MSAgICA0NzE3OCAgICAgMTg4ICAgICAgIDAgICAgICAgIDAgICAgICAgICAgICAgMCBv b20tdGVzdA0KT3V0IG9mIG1lbW9yeTogS2lsbCBwcm9jZXNzIDEwNSAob29tLXRlc3QpIHNjb3Jl IDQ3NyBvciBzYWNyaWZpY2UgY2hpbGQNCktpbGxlZCBwcm9jZXNzIDEwNSAob29tLXRlc3QpIHRv dGFsLXZtOjkyMjMyOGtCLCBhbm9uLXJzczozNzkxMTJrQiwgZmlsZS1yc3M6MGtCLCBzaG1lbS1y c3M6NDI0a0INCg0KT29wcw0KUGF0aDogKG51bGwpDQpDUFU6IDMgUElEOiAzNSBDb21tOiBvb21f cmVhcGVyIE5vdCB0YWludGVkIDQuMTQuMjItZGlydHkgIzEzDQp0YXNrOiBiZjBlMzU0MCB0YXNr LnN0YWNrOiBiZjBlODAwMA0KDQpbRUNSICAgXTogMHgwMDA1MDEwMCA9PiBJbnZhbGlkIFJlYWQg QCAweDAwMDAwMzYwIGJ5IGluc24gQCAweDkwMmVjN2FlDQpbRUZBICAgXTogMHgwMDAwMDM2MA0K W0JMSU5LIF06IHphcF9wdGVfcmFuZ2UrMHg3ZS8weDRmOA0KW0VSRVQgIF06IHphcF9wdGVfcmFu Z2UrMHg4Ni8weDRmOA0KW1NUQVQzMl06IDB4ODAwODBhNDIgOiBJRSBLIERFDQpCVEE6IDB4OTAy ZWM3ZWUgIFNQOiAweGJmMGU5ZTMwICBGUDogMHgwMDAwMDAwMA0KTFBTOiAweDkwNmQ2M2ZjIExQ RTogMHg5MDZkNjQwMCBMUEM6IDB4MDAwMDAwMDANCnIwMDogMHhiZjI4MDAxYyByMDE6IDB4MDAw MDAwMDAgcjAyOiAweDAwMDAwMDAxDQpyMDM6IDB4MDAwMDAwMDAgcjA0OiAweDAwMDAwMGQ4IHIw NTogMHgwMDAwMDAwMA0KcjA2OiAweDJmOTNlMDAwIHIwNzogMHg5MDgxODk4MCByMDg6IDB4YmZk YzkxYzQNCnIwOTogMHgwMDAwMDA0OCByMTA6IDB4MDAwMDAwMDAgcjExOiAweGZmZmZmZmZmDQpy MTI6IDB4OTAyZWM3YTYNCg0KU3RhY2sgVHJhY2U6DQogIHphcF9wdGVfcmFuZ2UrMHg4Ni8weDRm OA0KICB6YXBfcG1kX3JhbmdlKzB4NGEvMHg2NA0KICB6YXBfcHVkX3JhbmdlKzB4MjgvMHg0MA0K ICB6YXBfcDRkX3JhbmdlKzB4MjgvMHg0MA0KICB1bm1hcF9wYWdlX3JhbmdlKzB4NTQvMHhkMA0K ICBvb21fcmVhcGVyKzB4MWM4LzB4MjE0DQogIGt0aHJlYWQrMHgxMjQvMHgxNDANCiAgcmV0X2Zy b21fZm9yaysweDE4LzB4MWMNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tPjgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkFn YWluIHRoYXQgZmFpbHVyZSBoYXBwZW5zIG5vdCB2ZXJ5IHJlbGlhYmx5IC0gaW4gZmFjdCBJIGhh dmUgdG8gdHJpZ2dlciBPT00ga2lsbGVyDQppbiBhIGxvb3AgdG8gZmFjZSB0aGlzIHByb2JsZW0g cmFuZG9tbHkgYXQgc29tZSBwb2ludC4gVGhvdWdoIEkgZG9uJ3Qgc2VlIGFueSBsb2dpY2FsDQpj b25uZWN0aW9uIHRvIGluaXRpYWxseSBkaXNjdXNzZWQgaXNzdWUgdGhlcmUgc2VlbXMgdG8gYmUg c29tZSBvdGhlciBjb3JuZXItY2FzZSB3ZSdyZQ0Kbm90IGhhbmRsaW5nIHByb3Blcmx5IGFzIEkg d2FzIG5vdCBhYmxlIHRvIHRyaWdnZXIgc29tZXRoaW5nIGxpa2UgdGhhdCBvbiBBUk0ncyBXYW5k Qm9hcmQuDQoNClN0aWxsIHdpdGggdGhhdCBuZXcgcHJvYmxlbSBpbiBwbGFjZSBJIGNhbm5vdCBj b25jbHVkZSBteSBwcm9wb3NlZCBhYm92ZSBmaXggaXMgYSBnb29kIG9uZQ0Kc28gSSdsbCB0cnkg dG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhhdCBuZXcgaXNzdWUgYW5kIHRoZW4gd2UnbGwgc2Vl IHdoYXQgdG8gZG8uDQoNCi1BbGV4ZXk= From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey.Brodkin@synopsys.com (Alexey Brodkin) Date: Mon, 26 Feb 2018 20:44:44 +0000 Subject: arc: mm->mmap_sem gets locked in do_page_fault() in case of OOM killer invocation In-Reply-To: <1518784830.3544.33.camel@synopsys.com> References: <1518784830.3544.33.camel@synopsys.com> List-ID: Message-ID: <1519677883.2997.21.camel@synopsys.com> To: linux-snps-arc@lists.infradead.org Hi Vineet, all On Fri, 2018-02-16@15:40 +0300, Alexey Brodkin wrote: > Hi Vineet, > > While playing with OOM killer I bumped in a pure software deadlock on ARC > which is even observed in simulation (i.e. it has nothing to do with HW peculiarities). > > What's nice kernel even sees that lock-up if "Lock Debugging" is enabled. > That's what I see: > -------------------------------------------->8------------------------------------------- > # /home/oom-test 450 & /home/oom-test 450 > oom-test invoked oom-killer: gfp_mask=0x14200ca(GFP_HIGHUSER_MOVABLE), nodemask=(null), order=0, oom_score_adj=0 > CPU: 0 PID: 67 Comm: oom-test Not tainted 4.14.19 #2 > > Stack Trace: > arc_unwind_core.constprop.1+0xd4/0xf8 > dump_header.isra.6+0x84/0x2f8 > oom_kill_process+0x258/0x7c8 > out_of_memory+0xb8/0x5e0 > __alloc_pages_nodemask+0x922/0xd28 > handle_mm_fault+0x284/0xd90 > do_page_fault+0xf6/0x2a0 > ret_from_exception+0x0/0x8 > Mem-Info: > active_anon:62276 inactive_anon:341 isolated_anon:0 > active_file:0 inactive_file:0 isolated_file:0 > unevictable:0 dirty:0 writeback:0 unstable:0 > slab_reclaimable:26 slab_unreclaimable:196 > mapped:105 shmem:578 pagetables:263 bounce:0 > free:344 free_pcp:39 free_cma:0 > Node 0 active_anon:498208kB inactive_anon:2728kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB > mapped:840kB > dirty: > 0kB writeback:0kB shmem:4624kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no > Normal free:2752kB min:2840kB low:3544kB high:4248kB active_anon:498208kB inactive_anon:2728kB active_file:0kB inactive_file:0kB unevictable:0kB > writependin > g:0kB present:524288kB managed:508584kB mlocked:0kB kernel_stack:240kB pagetables:2104kB bounce:0kB free_pcp:312kB local_pcp:312kB free_cma:0kB > lowmem_reserve[]: 0 0 > Normal: 0*8kB 0*16kB 0*32kB 1*64kB (M) 1*128kB (M) 0*256kB 1*512kB (M) 0*1024kB 1*2048kB (M) 0*4096kB 0*8192kB = 2752kB > 578 total pagecache pages > 65536 pages RAM > 0 pages HighMem/MovableOnly > 1963 pages reserved > [ pid ] uid tgid total_vm rss nr_ptes nr_pmds swapents oom_score_adj name > [ 41] 0 41 157 103 3 0 0 0 syslogd > [ 43] 0 43 156 106 3 0 0 0 klogd > [ 63] 0 63 157 99 3 0 0 0 getty > [ 64] 0 64 159 118 3 0 0 0 sh > [ 66] 0 66 115291 31094 124 0 0 0 oom-test > [ 67] 0 67 115291 31004 124 0 0 0 oom-test > Out of memory: Kill process 66 (oom-test) score 476 or sacrifice child > Killed process 66 (oom-test) total-vm:922328kB, anon-rss:248328kB, file-rss:0kB, shmem-rss:424kB > > ============================================ > WARNING: possible recursive locking detected > 4.14.19 #2 Not tainted > -------------------------------------------- > oom-test/66 is trying to acquire lock: > (&mm->mmap_sem){++++}, at: [<80217d50>] do_exit+0x444/0x7f8 > > but task is already holding lock: > (&mm->mmap_sem){++++}, at: [<8021028a>] do_page_fault+0x9e/0x2a0 > > other info that might help us debug this: > Possible unsafe locking scenario: > > CPU0 > ---- > lock(&mm->mmap_sem); > lock(&mm->mmap_sem); > > *** DEADLOCK *** > > May be due to missing lock nesting notation > > 1 lock held by oom-test/66: > #0: (&mm->mmap_sem){++++}, at: [<8021028a>] do_page_fault+0x9e/0x2a0 > > stack backtrace: > CPU: 0 PID: 66 Comm: oom-test Not tainted 4.14.19 #2 > > Stack Trace: > arc_unwind_core.constprop.1+0xd4/0xf8 > __lock_acquire+0x582/0x1494 > lock_acquire+0x3c/0x58 > down_read+0x1a/0x28 > do_exit+0x444/0x7f8 > do_group_exit+0x26/0x8c > get_signal+0x1aa/0x7d4 > do_signal+0x30/0x220 > resume_user_mode_begin+0x90/0xd8 > -------------------------------------------->8------------------------------------------- > > Looking at our code in "arch/arc/mm/fault.c" I may see why "mm->mmap_sem" is not released: > 1. fatal_signal_pending(current) returns non-zero value > 2. ((fault & VM_FAULT_ERROR) && !(fault & VM_FAULT_RETRY)) is false thus up_read(&mm->mmap_sem) > is not executed. > 3. It was a user-space process thus we simply return [with "mm->mmap_sem" still held]. > > See the code snippet below: > -------------------------------------------->8------------------------------------------- > /* If Pagefault was interrupted by SIGKILL, exit page fault "early" */ > if (unlikely(fatal_signal_pending(current))) { > if ((fault & VM_FAULT_ERROR) && !(fault & VM_FAULT_RETRY)) > up_read(&mm->mmap_sem); > if (user_mode(regs)) > return; > } > -------------------------------------------->8------------------------------------------- So I decided to give a trivial fix a try: -------------------------------------------->8------------------------------------------- diff --git a/arch/arc/mm/fault.c b/arch/arc/mm/fault.c index a0b7bd6d030d..979a0995100d 100644 --- a/arch/arc/mm/fault.c +++ b/arch/arc/mm/fault.c @@ -143,8 +143,10 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) if (unlikely(fatal_signal_pending(current))) { if ((fault & VM_FAULT_ERROR) && !(fault & VM_FAULT_RETRY)) up_read(&mm->mmap_sem); - if (user_mode(regs)) + if (user_mode(regs)) { + up_read(&mm->mmap_sem); return; + } } -------------------------------------------->8------------------------------------------- And indeed I no longer see that deadlock but instead I'm getting another fatal failure: -------------------------------------------->8------------------------------------------- # while true; do /home/oom-test 450 & /home/oom-test 450; done; Buffer size is 450 MiB Buffer size is 450 MiB oom-test invoked oom-killer: gfp_mask=0x14200ca(GFP_HIGHUSER_MOVABLE), nodemask=(null), order=0, oom_score_adj=0 CPU: 3 PID: 105 Comm: oom-test Not tainted 4.14.22-dirty #13 Stack Trace: arc_unwind_core.constprop.1+0xd0/0xf4 dump_stack+0x68/0x80 dump_header.isra.6+0x7c/0x190 oom_kill_process+0x110/0x618 out_of_memory+0xb4/0x404 __alloc_pages_nodemask+0x1b92/0x2734 handle_mm_fault+0x2e2/0x974 do_page_fault+0xf6/0x2ac ret_from_exception+0x0/0x8 Mem-Info: active_anon:94872 inactive_anon:344 isolated_anon:0 active_file:0 inactive_file:0 isolated_file:0 unevictable:0 dirty:0 writeback:0 unstable:0 slab_reclaimable:38 slab_unreclaimable:285 mapped:105 shmem:579 pagetables:392 bounce:0 free:428 free_pcp:160 free_cma:0 Node 0 active_anon:758976kB inactive_anon:2752kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:840kB dirty:0s Normal free:3424kB min:3512kB low:4384kB high:5256kB active_anon:759024kB inactive_anon:2752kB active_file:0kB inactive_file:0kB unevictable:0kB writependingB lowmem_reserve[]: 0 0 Normal: 0*8kB 0*16kB 1*32kB (M) 1*64kB (M) 2*128kB (UM) 2*256kB (UM) 1*512kB (M) 2*1024kB (UM) 0*2048kB 0*4096kB 0*8192kB = 3424kB 579 total pagecache pages 0 pages in swap cache Swap cache stats: add 0, delete 0, find 0/0 Free swap = 0kB Total swap = 0kB 131072 pages RAM 0 pages HighMem/MovableOnly 34397 pages reserved [ pid ] uid tgid total_vm rss nr_ptes nr_pmds swapents oom_score_adj name [ 80] 0 80 157 28 3 0 0 0 syslogd [ 83] 0 83 156 25 3 0 0 0 klogd [ 102] 0 102 157 28 3 0 0 0 getty [ 103] 0 103 159 28 3 0 0 0 sh [ 105] 0 105 115291 47442 188 0 0 0 oom-test [ 106] 0 106 115291 47178 188 0 0 0 oom-test Out of memory: Kill process 105 (oom-test) score 477 or sacrifice child Killed process 105 (oom-test) total-vm:922328kB, anon-rss:379112kB, file-rss:0kB, shmem-rss:424kB Oops Path: (null) CPU: 3 PID: 35 Comm: oom_reaper Not tainted 4.14.22-dirty #13 task: bf0e3540 task.stack: bf0e8000 [ECR ]: 0x00050100 => Invalid Read @ 0x00000360 by insn @ 0x902ec7ae [EFA ]: 0x00000360 [BLINK ]: zap_pte_range+0x7e/0x4f8 [ERET ]: zap_pte_range+0x86/0x4f8 [STAT32]: 0x80080a42 : IE K DE BTA: 0x902ec7ee SP: 0xbf0e9e30 FP: 0x00000000 LPS: 0x906d63fc LPE: 0x906d6400 LPC: 0x00000000 r00: 0xbf28001c r01: 0x00000000 r02: 0x00000001 r03: 0x00000000 r04: 0x000000d8 r05: 0x00000000 r06: 0x2f93e000 r07: 0x90818980 r08: 0xbfdc91c4 r09: 0x00000048 r10: 0x00000000 r11: 0xffffffff r12: 0x902ec7a6 Stack Trace: zap_pte_range+0x86/0x4f8 zap_pmd_range+0x4a/0x64 zap_pud_range+0x28/0x40 zap_p4d_range+0x28/0x40 unmap_page_range+0x54/0xd0 oom_reaper+0x1c8/0x214 kthread+0x124/0x140 ret_from_fork+0x18/0x1c -------------------------------------------->8------------------------------------------- Again that failure happens not very reliably - in fact I have to trigger OOM killer in a loop to face this problem randomly at some point. Though I don't see any logical connection to initially discussed issue there seems to be some other corner-case we're not handling properly as I was not able to trigger something like that on ARM's WandBoard. Still with that new problem in place I cannot conclude my proposed above fix is a good one so I'll try to get to the bottom of that new issue and then we'll see what to do. -Alexey