From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Gunthorpe Subject: [PATCH hmm] drm/amdkfd: fix a use after free race with mmu_notififer unregister Date: Fri, 2 Aug 2019 20:07:10 +0000 Message-ID: <20190802200705.GA10110@ziepe.ca> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Language: en-US Content-ID: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , Ben Goz , Oded Gabbay Cc: Christoph Hellwig , "linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org" , "Kuehling, Felix" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" V2hlbiB1c2luZyBtbXVfbm90aWZpZmVyX3VucmVnaXN0ZXJfbm9fcmVsZWFzZSgpIHRoZSBjYWxs ZXIgbXVzdCBlbnN1cmUKdGhlcmUgaXMgYSBTUkNVIHN5bmNocm9uaXplIGJlZm9yZSB0aGUgbW4g bWVtb3J5IGlzIGZyZWVkLCBvdGhlcndpc2UgdXNlCmFmdGVyIGZyZWUgcmFjZXMgYXJlIHBvc3Np YmxlLCBmb3IgaW5zdGFuY2U6CgogICAgIENQVTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENQVTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZh bGlkYXRlX3JhbmdlX3N0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KC4uKQogbW11X25vdGlmaWVyX3VucmVnaXN0ZXJf bm9fcmVsZWFzZSgmcC0+bW4pCiBrZnJlZShtbikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAobW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZV9lbmQpCgpUaGUgZXJyb3Ig dW53aW5kIGluIGFtZGtmZCBtaXNzZXMgdGhlIFNSQ1Ugc3luY2hyb25pemF0aW9uLgoKYW1ka2Zk IGtlZXBzIHRoZSBrZmRfcHJvY2VzcyBhcm91bmQgdW50aWwgdGhlIG1tIGlzIHJlbGVhc2VkLCBz byBzcGxpdCB0aGUKZmxvdyB0byBmdWxseSBpbml0aWFsaXplIHRoZSBrZmRfcHJvY2VzcyBhbmQg cmVnaXN0ZXIgaXQgZm9yIGZpbmRfcHJvY2VzcywKYW5kIHdpdGggdGhlIG5vdGlmaWVyLiBQYXN0 IHRoaXMgcG9pbnQgdGhlIGtmZF9wcm9jZXNzIGRvZXMgbm90IG5lZWQgdG8gYmUKY2xlYW5lZCB1 cCBhcyBpdCBpcyBmdWxseSByZWFkeS4KClRoZSBmaW5hbCBmYWlsYWJsZSBzdGVwIGRvZXMgYSB2 bV9tbWFwKCkgYW5kIGRvZXMgbm90IHNlZW0gdG8gaW1wYWN0IHRoZQprZmRfcHJvY2VzcyBnbG9i YWwgc3RhdGUuIFNpbmNlIGl0IGFsc28gY2Fubm90IGJlIHVuZG9uZSAoYW5kIGFscmVhZHkgaGFz CnByb2JsZW1zIHdpdGggdW5kbyBpZiBpdCBpbnRlcm5hbGx5IGZhaWxzKSwgaXQgaGFzIHRvIGJl IGxhc3QuCgpUaGlzIHdheSB3ZSBkb24ndCBoYXZlIHRvIHRyeSB0byB1bndpbmQgdGhlIG1tdV9u b3RpZmllcl9yZWdpc3RlcigpIGFuZAphdm9pZCB0aGUgcHJvYmxlbSB3aXRoIHRoZSBTUkNVLgoK QWxvbmcgdGhlIHdheSB0aGlzIGFsc28gZml4ZXMgdmFyaW91cyBvdGhlciBlcnJvciB1bndpbmQg YnVncyBpbiB0aGUgZmxvdy4KCkZpeGVzOiA0NTEwMjA0OGY3N2UgKCJhbWRrZmQ6IEFkZCBwcm9j ZXNzIHF1ZXVlIG1hbmFnZXIgbW9kdWxlIikKU2lnbmVkLW9mZi1ieTogSmFzb24gR3VudGhvcnBl IDxqZ2dAbWVsbGFub3guY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9w cm9jZXNzLmMgfCA3NCArKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAz NSBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKCmFtZGtmZCBmb2xrcywgdGhpcyBsaXR0 bGUgYnVnIGlzIGJsb2NraW5nIHNvbWUgcmV3b3JrIEkgaGF2ZSBmb3IgdGhlCm1tdSBub3RpZmll cnMgKGllIG1tL21tdV9ub3RpZmllcnM6IHJlbW92ZSB1bnJlZ2lzdGVyX25vX3JlbGVhc2UpCgpD YW4gSSBnZXQgeW91ciBoZWxwIHRvIHJldmlldyBhbmQgaWYgbmVlZGVkIHBvbGlzaCB0aGlzIGNo YW5nZT8gSSdkCmxpa2UgdG8gc2VuZCB0aGlzIHBhdGNoIHRocm91Z2ggdGhlIGhtbSB0cmVlIGFs b25nIHdpdGggdGhlIHJld29yaywKdGhhbmtzCgpZb3UgY2FuIHNlZSB0aGUgbGFyZ2VyIHNlcmll cyBoZXJlOgoKaHR0cHM6Ly9naXRodWIuY29tL2pndW50aG9ycGUvbGludXgvY29tbWl0cy9tbXVf bm90aWZpZXIKCkphc29uCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQv a2ZkX3Byb2Nlc3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzLmMK aW5kZXggOGYxMDc2YzBjODhhMjUuLjgxZTNlZTNmMTgxM2JmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJvY2Vzcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1ka2ZkL2tmZF9wcm9jZXNzLmMKQEAgLTYyLDggKzYyLDggQEAgc3RhdGljIHN0cnVjdCB3 b3JrcXVldWVfc3RydWN0ICprZmRfcmVzdG9yZV93cTsKIAogc3RhdGljIHN0cnVjdCBrZmRfcHJv Y2VzcyAqZmluZF9wcm9jZXNzKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqdGhyZWFkKTsKIHN0 YXRpYyB2b2lkIGtmZF9wcm9jZXNzX3JlZl9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpOwotc3Rh dGljIHN0cnVjdCBrZmRfcHJvY2VzcyAqY3JlYXRlX3Byb2Nlc3MoY29uc3Qgc3RydWN0IHRhc2tf c3RydWN0ICp0aHJlYWQsCi0JCQkJCXN0cnVjdCBmaWxlICpmaWxlcCk7CitzdGF0aWMgc3RydWN0 IGtmZF9wcm9jZXNzICpjcmVhdGVfcHJvY2Vzcyhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRo cmVhZCk7CitzdGF0aWMgaW50IGtmZF9wcm9jZXNzX2luaXRfY3dzcl9hcHUoc3RydWN0IGtmZF9w cm9jZXNzICpwLCBzdHJ1Y3QgZmlsZSAqZmlsZXApOwogCiBzdGF0aWMgdm9pZCBldmljdF9wcm9j ZXNzX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogc3RhdGljIHZvaWQgcmVzdG9y ZV9wcm9jZXNzX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwpAQCAtMjg5LDcgKzI4 OSwxNSBAQCBzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKmtmZF9jcmVhdGVfcHJvY2VzcyhzdHJ1Y3QgZmls ZSAqZmlsZXApCiAJaWYgKHByb2Nlc3MpIHsKIAkJcHJfZGVidWcoIlByb2Nlc3MgYWxyZWFkeSBm b3VuZFxuIik7CiAJfSBlbHNlIHsKLQkJcHJvY2VzcyA9IGNyZWF0ZV9wcm9jZXNzKHRocmVhZCwg ZmlsZXApOworCQlwcm9jZXNzID0gY3JlYXRlX3Byb2Nlc3ModGhyZWFkKTsKKwkJaWYgKElTX0VS Uihwcm9jZXNzKSkKKwkJCWdvdG8gb3V0OworCisJCXJldCA9IGtmZF9wcm9jZXNzX2luaXRfY3dz cl9hcHUocHJvY2VzcywgZmlsZXApOworCQlpZiAocmV0KSB7CisJCQlwcm9jZXNzID0gRVJSX1BU UihyZXQpOworCQkJZ290byBvdXQ7CisJCX0KIAogCQlpZiAoIXByb2Nmcy5rb2JqKQogCQkJZ290 byBvdXQ7CkBAIC02MDksNjQgKzYxNyw1NiBAQCBzdGF0aWMgaW50IGtmZF9wcm9jZXNzX2Rldmlj ZV9pbml0X2N3c3JfZGdwdShzdHJ1Y3Qga2ZkX3Byb2Nlc3NfZGV2aWNlICpwZGQpCiAJcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKmNyZWF0ZV9wcm9jZXNzKGNvbnN0 IHN0cnVjdCB0YXNrX3N0cnVjdCAqdGhyZWFkLAotCQkJCQlzdHJ1Y3QgZmlsZSAqZmlsZXApCisv KgorICogT24gcmV0dXJuIHRoZSBrZmRfcHJvY2VzcyBpcyBmdWxseSBvcGVyYXRpb25hbCBhbmQg d2lsbCBiZSBmcmVlZCB3aGVuIHRoZQorICogbW0gaXMgcmVsZWFzZWQKKyAqLworc3RhdGljIHN0 cnVjdCBrZmRfcHJvY2VzcyAqY3JlYXRlX3Byb2Nlc3MoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0 ICp0aHJlYWQpCiB7CiAJc3RydWN0IGtmZF9wcm9jZXNzICpwcm9jZXNzOwogCWludCBlcnIgPSAt RU5PTUVNOwogCiAJcHJvY2VzcyA9IGt6YWxsb2Moc2l6ZW9mKCpwcm9jZXNzKSwgR0ZQX0tFUk5F TCk7Ci0KIAlpZiAoIXByb2Nlc3MpCiAJCWdvdG8gZXJyX2FsbG9jX3Byb2Nlc3M7CiAKLQlwcm9j ZXNzLT5wYXNpZCA9IGtmZF9wYXNpZF9hbGxvYygpOwotCWlmIChwcm9jZXNzLT5wYXNpZCA9PSAw KQotCQlnb3RvIGVycl9hbGxvY19wYXNpZDsKLQotCWlmIChrZmRfYWxsb2NfcHJvY2Vzc19kb29y YmVsbHMocHJvY2VzcykgPCAwKQotCQlnb3RvIGVycl9hbGxvY19kb29yYmVsbHM7Ci0KIAlrcmVm X2luaXQoJnByb2Nlc3MtPnJlZik7Ci0KIAltdXRleF9pbml0KCZwcm9jZXNzLT5tdXRleCk7Ci0K IAlwcm9jZXNzLT5tbSA9IHRocmVhZC0+bW07Ci0KLQkvKiByZWdpc3RlciBub3RpZmllciAqLwot CXByb2Nlc3MtPm1tdV9ub3RpZmllci5vcHMgPSAma2ZkX3Byb2Nlc3NfbW11X25vdGlmaWVyX29w czsKLQllcnIgPSBtbXVfbm90aWZpZXJfcmVnaXN0ZXIoJnByb2Nlc3MtPm1tdV9ub3RpZmllciwg cHJvY2Vzcy0+bW0pOwotCWlmIChlcnIpCi0JCWdvdG8gZXJyX21tdV9ub3RpZmllcjsKLQotCWhh c2hfYWRkX3JjdShrZmRfcHJvY2Vzc2VzX3RhYmxlLCAmcHJvY2Vzcy0+a2ZkX3Byb2Nlc3NlcywK LQkJCSh1aW50cHRyX3QpcHJvY2Vzcy0+bW0pOwotCiAJcHJvY2Vzcy0+bGVhZF90aHJlYWQgPSB0 aHJlYWQtPmdyb3VwX2xlYWRlcjsKLQlnZXRfdGFza19zdHJ1Y3QocHJvY2Vzcy0+bGVhZF90aHJl YWQpOwotCiAJSU5JVF9MSVNUX0hFQUQoJnByb2Nlc3MtPnBlcl9kZXZpY2VfZGF0YSk7Ci0KKwlJ TklUX0RFTEFZRURfV09SSygmcHJvY2Vzcy0+ZXZpY3Rpb25fd29yaywgZXZpY3RfcHJvY2Vzc193 b3JrZXIpOworCUlOSVRfREVMQVlFRF9XT1JLKCZwcm9jZXNzLT5yZXN0b3JlX3dvcmssIHJlc3Rv cmVfcHJvY2Vzc193b3JrZXIpOworCXByb2Nlc3MtPmxhc3RfcmVzdG9yZV90aW1lc3RhbXAgPSBn ZXRfamlmZmllc182NCgpOwogCWtmZF9ldmVudF9pbml0X3Byb2Nlc3MocHJvY2Vzcyk7CisJcHJv Y2Vzcy0+aXNfMzJiaXRfdXNlcl9tb2RlID0gaW5fY29tcGF0X3N5c2NhbGwoKTsKKworCXByb2Nl c3MtPnBhc2lkID0ga2ZkX3Bhc2lkX2FsbG9jKCk7CisJaWYgKHByb2Nlc3MtPnBhc2lkID09IDAp CisJCWdvdG8gZXJyX2FsbG9jX3Bhc2lkOworCisJaWYgKGtmZF9hbGxvY19wcm9jZXNzX2Rvb3Ji ZWxscyhwcm9jZXNzKSA8IDApCisJCWdvdG8gZXJyX2FsbG9jX2Rvb3JiZWxsczsKIAogCWVyciA9 IHBxbV9pbml0KCZwcm9jZXNzLT5wcW0sIHByb2Nlc3MpOwogCWlmIChlcnIgIT0gMCkKIAkJZ290 byBlcnJfcHJvY2Vzc19wcW1faW5pdDsKIAogCS8qIGluaXQgcHJvY2VzcyBhcGVydHVyZXMqLwot CXByb2Nlc3MtPmlzXzMyYml0X3VzZXJfbW9kZSA9IGluX2NvbXBhdF9zeXNjYWxsKCk7CiAJZXJy ID0ga2ZkX2luaXRfYXBlcnR1cmVzKHByb2Nlc3MpOwogCWlmIChlcnIgIT0gMCkKIAkJZ290byBl cnJfaW5pdF9hcGVydHVyZXM7CiAKLQlJTklUX0RFTEFZRURfV09SSygmcHJvY2Vzcy0+ZXZpY3Rp b25fd29yaywgZXZpY3RfcHJvY2Vzc193b3JrZXIpOwotCUlOSVRfREVMQVlFRF9XT1JLKCZwcm9j ZXNzLT5yZXN0b3JlX3dvcmssIHJlc3RvcmVfcHJvY2Vzc193b3JrZXIpOwotCXByb2Nlc3MtPmxh c3RfcmVzdG9yZV90aW1lc3RhbXAgPSBnZXRfamlmZmllc182NCgpOwotCi0JZXJyID0ga2ZkX3By b2Nlc3NfaW5pdF9jd3NyX2FwdShwcm9jZXNzLCBmaWxlcCk7CisJLyogTXVzdCBiZSBsYXN0LCBo YXZlIHRvIHVzZSByZWxlYXNlIGRlc3RydWN0aW9uIGFmdGVyIHRoaXMgKi8KKwlwcm9jZXNzLT5t bXVfbm90aWZpZXIub3BzID0gJmtmZF9wcm9jZXNzX21tdV9ub3RpZmllcl9vcHM7CisJZXJyID0g bW11X25vdGlmaWVyX3JlZ2lzdGVyKCZwcm9jZXNzLT5tbXVfbm90aWZpZXIsIHByb2Nlc3MtPm1t KTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9pbml0X2N3c3I7CiAKKwlnZXRfdGFza19zdHJ1Y3Qo cHJvY2Vzcy0+bGVhZF90aHJlYWQpOworCWhhc2hfYWRkX3JjdShrZmRfcHJvY2Vzc2VzX3RhYmxl LCAmcHJvY2Vzcy0+a2ZkX3Byb2Nlc3NlcywKKwkJCSh1aW50cHRyX3QpcHJvY2Vzcy0+bW0pOwor CiAJcmV0dXJuIHByb2Nlc3M7CiAKIGVycl9pbml0X2N3c3I6CkBAIC02NzUsMTUgKzY3NSwxMSBA QCBzdGF0aWMgc3RydWN0IGtmZF9wcm9jZXNzICpjcmVhdGVfcHJvY2Vzcyhjb25zdCBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRocmVhZCwKIGVycl9pbml0X2FwZXJ0dXJlczoKIAlwcW1fdW5pbml0KCZw cm9jZXNzLT5wcW0pOwogZXJyX3Byb2Nlc3NfcHFtX2luaXQ6Ci0JaGFzaF9kZWxfcmN1KCZwcm9j ZXNzLT5rZmRfcHJvY2Vzc2VzKTsKLQlzeW5jaHJvbml6ZV9yY3UoKTsKLQltbXVfbm90aWZpZXJf dW5yZWdpc3Rlcl9ub19yZWxlYXNlKCZwcm9jZXNzLT5tbXVfbm90aWZpZXIsIHByb2Nlc3MtPm1t KTsKLWVycl9tbXVfbm90aWZpZXI6Ci0JbXV0ZXhfZGVzdHJveSgmcHJvY2Vzcy0+bXV0ZXgpOwog CWtmZF9mcmVlX3Byb2Nlc3NfZG9vcmJlbGxzKHByb2Nlc3MpOwogZXJyX2FsbG9jX2Rvb3JiZWxs czoKIAlrZmRfcGFzaWRfZnJlZShwcm9jZXNzLT5wYXNpZCk7CiBlcnJfYWxsb2NfcGFzaWQ6CisJ bXV0ZXhfZGVzdHJveSgmcHJvY2Vzcy0+bXV0ZXgpOwogCWtmcmVlKHByb2Nlc3MpOwogZXJyX2Fs bG9jX3Byb2Nlc3M6CiAJcmV0dXJuIEVSUl9QVFIoZXJyKTsKLS0gCjIuMjIuMAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxp c3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4