From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Subject: [PATCH v6 13/14] kprobes: port blacklist kprobes to linker table Date: Mon, 9 Jan 2017 06:58:31 -0800 Message-ID: <20170109145833.11502-14-mcgrof@kernel.org> References: <20161222023811.21246-1-mcgrof@kernel.org> <20170109145833.11502-1-mcgrof@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170109145833.11502-1-mcgrof@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: gnomes@lxorguk.ukuu.org.uk, linux-ia64@vger.kernel.org, jkosina@suse.cz, benh@kernel.crashing.org, ming.lei@canonical.com, linux@rasmusvillemoes.dk, platform-driver-x86@vger.kernel.org, James.Bottomley@HansenPartnership.com, paul.gortmaker@windriver.com, paulus@samba.org, sparclinux@vger.kernel.org, wangnan0@huawei.com, mchehab@osg.samsung.com, linux-arch@vger.kernel.org, markus.heiser@darmarit.de, xen-devel@lists.xensource.com, msalter@redhat.com, linux-sh@vger.kernel.org, mpe@ellerman.id.au, joro@8bytes.org, x86@kernel.org, fontana@sharpeleven.org, dsahern@gmail.com, linux-arm-kernel@lists.infradead.org, catalin.marinas@arm.com, dvhart@infradead.org, dwmw2@infradead.org, linux@roeck-us.net, linux-xtensa@linux-xtensa.org, pali.rohar@gmail.com, keescook@chromium.org, arnd@arndb.de, jani.nikula@intel.com, will.deacon@arm.com, rusty@rustcorp.com.au, rostedt@goodmis.org, ak@ List-Id: linux-arch.vger.kernel.org a3Byb2JlIG1ha2VzIHVzZSBvZiB0d28gc2VjdGlvbnMsIHRoZSBvbmUgZGVhbGluZyB3aXRoIHRo ZSBhY3R1YWwKa3Byb2JlcyB3YXMgcmVjZW50bHkgcG9ydGVkIHVzaW5nIHRoZSBzdGFuZGFyZCBz ZWN0aW9uIHJhbmdlIEFQSS4KVGhlIGJsYWNrbGlzdCBmdW5jdGlvbmFsaXR5IG9mIGtwcm9iZXMg aXMgc3RpbGwgdXNpbmcgYSBjdXN0b20Kc2VjdGlvbiBhbmQgZGVjbGFyaW5nIGl0cyBjdXN0b20g c2VjdGlvbiB1c2luZyB0aGUgbGlua2VyIHNjcmlwdAphcyBmb2xsb3dzOgoKdHlwZSAgTGludXgt c2VjdGlvbiBjdXN0b20gc2VjdGlvbiBuYW1lICBiZWdpbiAgICAgICAgICAgICAgICAgICAgZW5k CnRhYmxlIC5pbml0LmRhdGEgICAgX2twcm9iZV9ibGFja2xpc3QgICAgX19zdGFydF9rcHJvYmVf YmxhY2tsaXN0IF9fc3RvcF9rcHJvYmVfYmxhY2tsaXN0CgpUaGlzIHBvcnRzIHRoZSBfa3Byb2Jl X2JsYWNrbGlzdCBjdXN0b20gc2VjdGlvbiB0byB0aGUgc3RhbmRhcmQKTGludXggbGlua2VyIHRh YmxlIEFQSSBhbGxvd2luZyB1cyByZW1vdmUgYWxsIHRoZSBjdXN0b20gYmxhY2tsaXN0Cmtwcm9i ZSBzZWN0aW9uIGRlY2xhcmF0aW9ucyBmcm9tIHRoZSBsaW5rZXIgc2NyaXB0LgoKVGhpcyBoYXMg YmVlbiB0ZXN0ZWQgYnkgdHJ5aW5nIHRvIHJlZ2lzdGVyIGEga3Byb2JlIG9uIGEgYmxhY2tsaXN0 ZWQKc3ltYm9sICh0aGVzZSBhcmUgZGVjbGFyZWQgd2l0aCBOT0tQUk9CRV9TWU1CT0woKSksIGFu ZCBjb25maXJtcyB0aGF0CnRoaXMgZmFpbHMgdG8gd29yayBhcyBleHBlY3RlZC4gVGhpcyB3YXMg dGVzdGVkIHdpdGg6CgogIyBpbnNtb2Qgc2FtcGxlcy9rcHJvYmVzL2twcm9iZV9leGFtcGxlLmtv IHN5bWJvbD0iZ2V0X2twcm9iZSIKClRoaXMgZmFpbHMgdG8gbG9hZCBhcyBleHBlY3RlZCB3aXRo OgoKaW5zbW9kOiBFUlJPUjogY291bGQgbm90IGluc2VydCBtb2R1bGUgc2FtcGxlcy9rcHJvYmVz L2twcm9iZV9leGFtcGxlLmtvOiBJbnZhbGlkIHBhcmFtZXRlcnMKCnY1OiBVc2UgcHVzaF9zZWN0 aW9uX3RibCgpIGZvciBfQVNNX05PS1BST0JFKCkgZm9yIHg4NiwgYW5kCiAgICBfQVNNX05PS1BS T0JFX1NZTUJPTCgpIG9uIHBvd2VycGMKdjQ6IHBvcnRlZCBvdmVyIF9BU01fTk9LUFJPQkVfU1lN Qk9MKCkgb24gcG93ZXJwYyBhbmQKICAgIEFTTV9OT0tQUk9CRSgpIG9uIHg4Ngp2MzogdGhpcyBw YXRjaCB3YXMgaW50cm9kdWNlZCBpbiB0aGlzIHNlcmllcwoKQWNrZWQtYnk6IE1hc2FtaSBIaXJh bWF0c3UgPG1oaXJhbWF0QGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IEx1aXMgUi4gUm9kcmln dWV6IDxtY2dyb2ZAa2VybmVsLm9yZz4KLS0tCiBhcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHBj X2FzbS5oIHwgIDQgKystLQogYXJjaC94ODYvaW5jbHVkZS9hc20vYXNtLmggICAgICAgICB8ICA0 ICsrKy0KIGluY2x1ZGUvYXNtLWdlbmVyaWMva3Byb2Jlcy5oICAgICAgfCAgNCArKy0tCiBpbmNs dWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmggIHwgMTAgLS0tLS0tLS0tLQogaW5jbHVkZS9s aW51eC9rcHJvYmVzLmggICAgICAgICAgICB8ICAyICsrCiBrZXJuZWwva3Byb2Jlcy5jICAgICAg ICAgICAgICAgICAgIHwgMTEgKysrKy0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0 aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1 ZGUvYXNtL3BwY19hc20uaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wcGNfYXNtLmgKaW5k ZXggMDg0NjQxM2IzYTJlLi4yMGNkOWMwMGVlZjUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9p bmNsdWRlL2FzbS9wcGNfYXNtLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BwY19h c20uaApAQCAtOSw3ICs5LDcgQEAKICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVk ZSA8YXNtL3BwYy1vcGNvZGUuaD4KICNpbmNsdWRlIDxhc20vZmlybXdhcmUuaD4KLSNpbmNsdWRl IDxhc20vcmFuZ2VzLmg+CisjaW5jbHVkZSA8YXNtL3RhYmxlcy5oPgogCiAjaWZkZWYgX19BU1NF TUJMWV9fCiAKQEAgLTI2Niw3ICsyNjYsNyBAQCBHTFVFKC4sbmFtZSk6CiAgKi8KICNpZmRlZiBD T05GSUdfS1BST0JFUwogI2RlZmluZSBfQVNNX05PS1BST0JFX1NZTUJPTChlbnRyeSkJCQlcCi0J LnB1c2hzZWN0aW9uICJfa3Byb2JlX2JsYWNrbGlzdCIsImF3IjsJCVwKKwlwdXNoX3NlY3Rpb25f dGJsKC5pbml0LmRhdGEsIF9rcHJvYmVfYmxhY2tsaXN0LCBhbnksIGF3KTsgXAogCVBQQ19MT05H IChlbnRyeSkgOwkJCQlcCiAJLnBvcHNlY3Rpb24KICNlbHNlCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9hc20uaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FzbS5oCmluZGV4IDdh Y2I1MWM0OWZlYy4uNDhiMWJjODVjMGU2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9hc20uaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hc20uaApAQCAtMSw2ICsxLDggQEAK ICNpZm5kZWYgX0FTTV9YODZfQVNNX0gKICNkZWZpbmUgX0FTTV9YODZfQVNNX0gKIAorI2luY2x1 ZGUgPGFzbS90YWJsZXMuaD4KKwogI2lmZGVmIF9fQVNTRU1CTFlfXwogIyBkZWZpbmUgX19BU01f Rk9STSh4KQl4CiAjIGRlZmluZSBfX0FTTV9GT1JNX1JBVyh4KSAgICAgeApAQCAtNzQsNyArNzYs NyBAQAogCV9BU01fRVhUQUJMRV9IQU5ETEUoZnJvbSwgdG8sIGV4X2hhbmRsZXJfZXh0KQogCiAj IGRlZmluZSBfQVNNX05PS1BST0JFKGVudHJ5KQkJCQkJXAotCS5wdXNoc2VjdGlvbiAiX2twcm9i ZV9ibGFja2xpc3QiLCJhdyIgOwkJCVwKKwlwdXNoX3NlY3Rpb25fdGJsX2FueSguaW5pdC5kYXRh LCBfa3Byb2JlX2JsYWNrbGlzdCwgYXcpO1wKIAlfQVNNX0FMSUdOIDsJCQkJCQlcCiAJX0FTTV9Q VFIgKGVudHJ5KTsJCQkJCVwKIAkucG9wc2VjdGlvbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20t Z2VuZXJpYy9rcHJvYmVzLmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL2twcm9iZXMuaAppbmRleCAw MmEyNmI5NzUxODcuLjdkMjlhMjA4MzkwZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tZ2VuZXJp Yy9rcHJvYmVzLmgKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9rcHJvYmVzLmgKQEAgLTMsMTQg KzMsMTQgQEAKIAogI2lmIGRlZmluZWQoX19LRVJORUxfXykgJiYgIWRlZmluZWQoX19BU1NFTUJM WV9fKQogI2lmZGVmIENPTkZJR19LUFJPQkVTCisjaW5jbHVkZSA8bGludXgvdGFibGVzLmg+CiAj aW5jbHVkZSA8YXNtL3Jhbmdlcy5oPgogLyoKICAqIEJsYWNrbGlzdCBnYW5lcmF0aW5nIG1hY3Jv LiBTcGVjaWZ5IGZ1bmN0aW9ucyB3aGljaCBpcyBub3QgcHJvYmVkCiAgKiBieSB1c2luZyB0aGlz IG1hY3JvLgogICovCiAjIGRlZmluZSBfX05PS1BST0JFX1NZTUJPTChmbmFtZSkJCQkJXAotc3Rh dGljIHVuc2lnbmVkIGxvbmcgX191c2VkCQkJCQlcCi0JX19hdHRyaWJ1dGVfXygoX19zZWN0aW9u X18oIl9rcHJvYmVfYmxhY2tsaXN0IikpKQlcCitzdGF0aWMgTElOS1RBQkxFX0lOSVRfREFUQShf a3Byb2JlX2JsYWNrbGlzdCwgYWxsKQkJXAogCV9rYmxfYWRkcl8jI2ZuYW1lID0gKHVuc2lnbmVk IGxvbmcpZm5hbWU7CiAjIGRlZmluZSBOT0tQUk9CRV9TWU1CT0woZm5hbWUpCV9fTk9LUFJPQkVf U1lNQk9MKGZuYW1lKQogLyogVXNlIHRoaXMgdG8gZm9yYmlkIGEga3Byb2JlcyBhdHRhY2ggb24g dmVyeSBsb3cgbGV2ZWwgZnVuY3Rpb25zICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1nZW5l cmljL3ZtbGludXgubGRzLmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKaW5k ZXggNDk5Y2FmNWI0MzYxLi45ZjA2MmFmMWY3MjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWdl bmVyaWMvdm1saW51eC5sZHMuaAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRz LmgKQEAgLTExNCwxNSArMTE0LDYgQEAKICNkZWZpbmUgQlJBTkNIX1BST0ZJTEUoKQogI2VuZGlm CiAKLSNpZmRlZiBDT05GSUdfS1BST0JFUwotI2RlZmluZSBLUFJPQkVfQkxBQ0tMSVNUKCkJLiA9 IEFMSUdOKDgpOwkJCQkgICAgICBcCi0JCQkJVk1MSU5VWF9TWU1CT0woX19zdGFydF9rcHJvYmVf YmxhY2tsaXN0KSA9IC47IFwKLQkJCQlLRUVQKCooX2twcm9iZV9ibGFja2xpc3QpKQkJICAgICAg XAotCQkJCVZNTElOVVhfU1lNQk9MKF9fc3RvcF9rcHJvYmVfYmxhY2tsaXN0KSA9IC47Ci0jZWxz ZQotI2RlZmluZSBLUFJPQkVfQkxBQ0tMSVNUKCkKLSNlbmRpZgotCiAjaWZkZWYgQ09ORklHX0VW RU5UX1RSQUNJTkcKICNkZWZpbmUgRlRSQUNFX0VWRU5UUygpCS4gPSBBTElHTig4KTsJCQkJCVwK IAkJCVZNTElOVVhfU1lNQk9MKF9fc3RhcnRfZnRyYWNlX2V2ZW50cykgPSAuOwlcCkBAIC01NTEs NyArNTQyLDYgQEAKIAkqKC5pbml0LnJvZGF0YSkJCQkJCQkJXAogCUZUUkFDRV9FVkVOVFMoKQkJ CQkJCQlcCiAJVFJBQ0VfU1lTQ0FMTFMoKQkJCQkJCVwKLQlLUFJPQkVfQkxBQ0tMSVNUKCkJCQkJ CQlcCiAJTUVNX0RJU0NBUkQoaW5pdC5yb2RhdGEpCQkJCQlcCiAJQ0xLX09GX1RBQkxFUygpCQkJ CQkJCVwKIAlSRVNFUlZFRE1FTV9PRl9UQUJMRVMoKQkJCQkJCVwKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbGludXgva3Byb2Jlcy5oIGIvaW5jbHVkZS9saW51eC9rcHJvYmVzLmgKaW5kZXggNDQ1Y2M2 ZmU3YWZhLi4yNzA3ODIwY2JiNTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva3Byb2Jlcy5o CisrKyBiL2luY2x1ZGUvbGludXgva3Byb2Jlcy5oCkBAIC00NCw4ICs0NCwxMCBAQAogCiAjaWZk ZWYgQ09ORklHX0tQUk9CRVMKICNpbmNsdWRlIDxsaW51eC9yYW5nZXMuaD4KKyNpbmNsdWRlIDxs aW51eC90YWJsZXMuaD4KIAogREVDTEFSRV9TRUNUSU9OX1JBTkdFKGtwcm9iZXMpOworREVDTEFS RV9MSU5LVEFCTEUodW5zaWduZWQgbG9uZywgX2twcm9iZV9ibGFja2xpc3QpOwogCiAvKiBrcHJv YmVfc3RhdHVzIHNldHRpbmdzICovCiAjZGVmaW5lIEtQUk9CRV9ISVRfQUNUSVZFCTB4MDAwMDAw MDEKZGlmZiAtLWdpdCBhL2tlcm5lbC9rcHJvYmVzLmMgYi9rZXJuZWwva3Byb2Jlcy5jCmluZGV4 IDgyMTkxZjMyOGUyMS4uOWQxMDJhYzk1MjU2IDEwMDY0NAotLS0gYS9rZXJuZWwva3Byb2Jlcy5j CisrKyBiL2tlcm5lbC9rcHJvYmVzLmMKQEAgLTIwNTMsMTQgKzIwNTMsMTMgQEAgTk9LUFJPQkVf U1lNQk9MKGR1bXBfa3Byb2JlKTsKICAqIHNpbmNlIGEga3Byb2JlIG5lZWQgbm90IG5lY2Vzc2Fy aWx5IGJlIGF0IHRoZSBiZWdpbm5pbmcKICAqIG9mIGEgZnVuY3Rpb24uCiAgKi8KLXN0YXRpYyBp bnQgX19pbml0IHBvcHVsYXRlX2twcm9iZV9ibGFja2xpc3QodW5zaWduZWQgbG9uZyAqc3RhcnQs Ci0JCQkJCSAgICAgdW5zaWduZWQgbG9uZyAqZW5kKQorc3RhdGljIGludCBfX2luaXQgcG9wdWxh dGVfa3Byb2JlX2JsYWNrbGlzdCh2b2lkKQogewogCXVuc2lnbmVkIGxvbmcgKml0ZXI7CiAJc3Ry dWN0IGtwcm9iZV9ibGFja2xpc3RfZW50cnkgKmVudDsKIAl1bnNpZ25lZCBsb25nIGVudHJ5LCBv ZmZzZXQgPSAwLCBzaXplID0gMDsKIAotCWZvciAoaXRlciA9IHN0YXJ0OyBpdGVyIDwgZW5kOyBp dGVyKyspIHsKKwlsaW5rdGFibGVfZm9yX2VhY2goaXRlciwgX2twcm9iZV9ibGFja2xpc3QpIHsK IAkJZW50cnkgPSBhcmNoX2RlcmVmX2VudHJ5X3BvaW50KCh2b2lkICopKml0ZXIpOwogCiAJCWlm ICgha2VybmVsX3RleHRfYWRkcmVzcyhlbnRyeSkgfHwKQEAgLTIxMjUsOCArMjEyNCw3IEBAIHN0 YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sga3Byb2JlX21vZHVsZV9uYiA9IHsKIH07CiAKIC8q IE1hcmtlcnMgb2YgX2twcm9iZV9ibGFja2xpc3Qgc2VjdGlvbiAqLwotZXh0ZXJuIHVuc2lnbmVk IGxvbmcgX19zdGFydF9rcHJvYmVfYmxhY2tsaXN0W107Ci1leHRlcm4gdW5zaWduZWQgbG9uZyBf X3N0b3Bfa3Byb2JlX2JsYWNrbGlzdFtdOworREVGSU5FX0xJTktUQUJMRV9JTklUX0RBVEEodW5z aWduZWQgbG9uZywgX2twcm9iZV9ibGFja2xpc3QpOwogCiAvKiBBY3R1YWwga3Byb2JlcyBzZWN0 aW9uIHJhbmdlICovCiBERUZJTkVfU0VDVElPTl9SQU5HRShrcHJvYmVzLCAudGV4dCk7CkBAIC0y MTQzLDggKzIxNDEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBpbml0X2twcm9iZXModm9pZCkKIAkJ cmF3X3NwaW5fbG9ja19pbml0KCYoa3JldHByb2JlX3RhYmxlX2xvY2tzW2ldLmxvY2spKTsKIAl9 CiAKLQllcnIgPSBwb3B1bGF0ZV9rcHJvYmVfYmxhY2tsaXN0KF9fc3RhcnRfa3Byb2JlX2JsYWNr bGlzdCwKLQkJCQkJX19zdG9wX2twcm9iZV9ibGFja2xpc3QpOworCWVyciA9IHBvcHVsYXRlX2tw cm9iZV9ibGFja2xpc3QoKTsKIAlpZiAoZXJyKSB7CiAJCXByX2Vycigia3Byb2JlczogZmFpbGVk IHRvIHBvcHVsYXRlIGJsYWNrbGlzdDogJWRcbiIsIGVycik7CiAJCXByX2VycigiUGxlYXNlIHRh a2UgY2FyZSBvZiB1c2luZyBrcHJvYmVzLlxuIik7Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.kernel.org ([198.145.29.136]:53816 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S937976AbdAIO7r (ORCPT ); Mon, 9 Jan 2017 09:59:47 -0500 From: "Luis R. Rodriguez" Subject: [PATCH v6 13/14] kprobes: port blacklist kprobes to linker table Date: Mon, 9 Jan 2017 06:58:31 -0800 Message-ID: <20170109145833.11502-14-mcgrof@kernel.org> In-Reply-To: <20170109145833.11502-1-mcgrof@kernel.org> References: <20161222023811.21246-1-mcgrof@kernel.org> <20170109145833.11502-1-mcgrof@kernel.org> Sender: linux-arch-owner@vger.kernel.org List-ID: To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel.org, tony.luck@intel.com, akpm@linux-foundation.org, linux-ia64@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, catalin.marinas@arm.com, will.deacon@arm.com, rostedt@goodmis.org, jani.nikula@intel.com, mchehab@osg.samsung.com, markus.heiser@darmarit.de, jolsa@kernel.org, msalter@redhat.com, chris@zankel.net, jcmvbkbc@gmail.com, linux-xtensa@linux-xtensa.org, adrian.hunter@intel.com, dsahern@gmail.com, namhyung@kernel.org, wangnan0@huawei.com, dmitry.torokhov@gmail.com, joro@8bytes.org, paulus@samba.org, mpe@ellerman.id.au, James.Bottomley@HansenPartnership.com, "Luis R. Rodriguez" Message-ID: <20170109145831.k8bIgYe65FOTvCIfECyWyzRCn1ZK6Ni_YoNrREyBETM@z> kprobe makes use of two sections, the one dealing with the actual kprobes was recently ported using the standard section range API. The blacklist functionality of kprobes is still using a custom section and declaring its custom section using the linker script as follows: type Linux-section custom section name begin end table .init.data _kprobe_blacklist __start_kprobe_blacklist __stop_kprobe_blacklist This ports the _kprobe_blacklist custom section to the standard Linux linker table API allowing us remove all the custom blacklist kprobe section declarations from the linker script. This has been tested by trying to register a kprobe on a blacklisted symbol (these are declared with NOKPROBE_SYMBOL()), and confirms that this fails to work as expected. This was tested with: # insmod samples/kprobes/kprobe_example.ko symbol="get_kprobe" This fails to load as expected with: insmod: ERROR: could not insert module samples/kprobes/kprobe_example.ko: Invalid parameters v5: Use push_section_tbl() for _ASM_NOKPROBE() for x86, and _ASM_NOKPROBE_SYMBOL() on powerpc v4: ported over _ASM_NOKPROBE_SYMBOL() on powerpc and ASM_NOKPROBE() on x86 v3: this patch was introduced in this series Acked-by: Masami Hiramatsu Signed-off-by: Luis R. Rodriguez --- arch/powerpc/include/asm/ppc_asm.h | 4 ++-- arch/x86/include/asm/asm.h | 4 +++- include/asm-generic/kprobes.h | 4 ++-- include/asm-generic/vmlinux.lds.h | 10 ---------- include/linux/kprobes.h | 2 ++ kernel/kprobes.c | 11 ++++------- 6 files changed, 13 insertions(+), 22 deletions(-) diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h index 0846413b3a2e..20cd9c00eef5 100644 --- a/arch/powerpc/include/asm/ppc_asm.h +++ b/arch/powerpc/include/asm/ppc_asm.h @@ -9,7 +9,7 @@ #include #include #include -#include +#include #ifdef __ASSEMBLY__ @@ -266,7 +266,7 @@ GLUE(.,name): */ #ifdef CONFIG_KPROBES #define _ASM_NOKPROBE_SYMBOL(entry) \ - .pushsection "_kprobe_blacklist","aw"; \ + push_section_tbl(.init.data, _kprobe_blacklist, any, aw); \ PPC_LONG (entry) ; \ .popsection #else diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h index 7acb51c49fec..48b1bc85c0e6 100644 --- a/arch/x86/include/asm/asm.h +++ b/arch/x86/include/asm/asm.h @@ -1,6 +1,8 @@ #ifndef _ASM_X86_ASM_H #define _ASM_X86_ASM_H +#include + #ifdef __ASSEMBLY__ # define __ASM_FORM(x) x # define __ASM_FORM_RAW(x) x @@ -74,7 +76,7 @@ _ASM_EXTABLE_HANDLE(from, to, ex_handler_ext) # define _ASM_NOKPROBE(entry) \ - .pushsection "_kprobe_blacklist","aw" ; \ + push_section_tbl_any(.init.data, _kprobe_blacklist, aw);\ _ASM_ALIGN ; \ _ASM_PTR (entry); \ .popsection diff --git a/include/asm-generic/kprobes.h b/include/asm-generic/kprobes.h index 02a26b975187..7d29a208390e 100644 --- a/include/asm-generic/kprobes.h +++ b/include/asm-generic/kprobes.h @@ -3,14 +3,14 @@ #if defined(__KERNEL__) && !defined(__ASSEMBLY__) #ifdef CONFIG_KPROBES +#include #include /* * Blacklist ganerating macro. Specify functions which is not probed * by using this macro. */ # define __NOKPROBE_SYMBOL(fname) \ -static unsigned long __used \ - __attribute__((__section__("_kprobe_blacklist"))) \ +static LINKTABLE_INIT_DATA(_kprobe_blacklist, all) \ _kbl_addr_##fname = (unsigned long)fname; # define NOKPROBE_SYMBOL(fname) __NOKPROBE_SYMBOL(fname) /* Use this to forbid a kprobes attach on very low level functions */ diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 499caf5b4361..9f062af1f728 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -114,15 +114,6 @@ #define BRANCH_PROFILE() #endif -#ifdef CONFIG_KPROBES -#define KPROBE_BLACKLIST() . = ALIGN(8); \ - VMLINUX_SYMBOL(__start_kprobe_blacklist) = .; \ - KEEP(*(_kprobe_blacklist)) \ - VMLINUX_SYMBOL(__stop_kprobe_blacklist) = .; -#else -#define KPROBE_BLACKLIST() -#endif - #ifdef CONFIG_EVENT_TRACING #define FTRACE_EVENTS() . = ALIGN(8); \ VMLINUX_SYMBOL(__start_ftrace_events) = .; \ @@ -551,7 +542,6 @@ *(.init.rodata) \ FTRACE_EVENTS() \ TRACE_SYSCALLS() \ - KPROBE_BLACKLIST() \ MEM_DISCARD(init.rodata) \ CLK_OF_TABLES() \ RESERVEDMEM_OF_TABLES() \ diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h index 445cc6fe7afa..2707820cbb56 100644 --- a/include/linux/kprobes.h +++ b/include/linux/kprobes.h @@ -44,8 +44,10 @@ #ifdef CONFIG_KPROBES #include +#include DECLARE_SECTION_RANGE(kprobes); +DECLARE_LINKTABLE(unsigned long, _kprobe_blacklist); /* kprobe_status settings */ #define KPROBE_HIT_ACTIVE 0x00000001 diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 82191f328e21..9d102ac95256 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -2053,14 +2053,13 @@ NOKPROBE_SYMBOL(dump_kprobe); * since a kprobe need not necessarily be at the beginning * of a function. */ -static int __init populate_kprobe_blacklist(unsigned long *start, - unsigned long *end) +static int __init populate_kprobe_blacklist(void) { unsigned long *iter; struct kprobe_blacklist_entry *ent; unsigned long entry, offset = 0, size = 0; - for (iter = start; iter < end; iter++) { + linktable_for_each(iter, _kprobe_blacklist) { entry = arch_deref_entry_point((void *)*iter); if (!kernel_text_address(entry) || @@ -2125,8 +2124,7 @@ static struct notifier_block kprobe_module_nb = { }; /* Markers of _kprobe_blacklist section */ -extern unsigned long __start_kprobe_blacklist[]; -extern unsigned long __stop_kprobe_blacklist[]; +DEFINE_LINKTABLE_INIT_DATA(unsigned long, _kprobe_blacklist); /* Actual kprobes section range */ DEFINE_SECTION_RANGE(kprobes, .text); @@ -2143,8 +2141,7 @@ static int __init init_kprobes(void) raw_spin_lock_init(&(kretprobe_table_locks[i].lock)); } - err = populate_kprobe_blacklist(__start_kprobe_blacklist, - __stop_kprobe_blacklist); + err = populate_kprobe_blacklist(); if (err) { pr_err("kprobes: failed to populate blacklist: %d\n", err); pr_err("Please take care of using kprobes.\n"); -- 2.11.0