From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6D5B3CA0EC3 for ; Tue, 12 Sep 2023 06:56:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=Kg5eAuJ7CyFwkCn/d3y7R0nHeCb5iCwVvZ68DP+asCk=; b=gHFChKEG39/cFC v5N3Grh6ZC4f6OFjHaXLPE11ZlC3698Ikwh+gsfg0kfaQrvQdgmWCb7Kf+bXXDVdUgrq8jfDsCswJ 16vkQibeMo4lQrAG1ndEd+XBnJSGKVFvLjZ/Ahj2tvP4uPfm0Z9V3f9WxZtjYNArfIR0P69F8WhyS hTbfc+4mXFF7kyUcpDh2PhBIbpbwdqY6Qo+UeCZHsDEdYiYhv6bV/1CA5ZwF82MLQdLcw3boGBHXe bncp1/GUVnAdBVsQtkVu1eVGrp+/TzZk8Ox4NYkQ3bGDOkQPlc/TprRC+NXv6ZxHTb4R2QmXdw8Y/ J43hkc0l7gWTnCC+nxjw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qfxKA-002Kd3-0s; Tue, 12 Sep 2023 06:56:38 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qfxK7-002KcM-10 for linux-riscv@lists.infradead.org; Tue, 12 Sep 2023 06:56:36 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 359A660F98; Tue, 12 Sep 2023 06:56:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D400C433C7; Tue, 12 Sep 2023 06:56:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1694501793; bh=ACq4UovHGdsS/35TyjryQ/+Lm+A5dK/cB8Beun04Eg4=; h=From:To:Cc:Subject:Date:From; b=hl8PyhhukPibWgT7UB5eKKyk1cSrK6mmQfdkENKV5r9iIl1rgqSx0kMjsvFosBy2V 6Bt+bm0l/X1sWzOwqeImCQCCLXEt5Z+5aOPIBRrnRW4eH0JwVVHVbn6Sytykb9YYyG uBX0ta5sWPf59uk4juiqRgroHKrqRBNguVOWaZwGS+U4RY8sKJ/SkFSAuEA/y0aecS 9plt4R4apoX9MffEtQ7xsMQVp05QS8JfMR4ZoBXJU5M0c3Y5pTozsuV9PYo3bg07ng RsoIhaeUyPN3MlR/r+Q091tLCVTOwUGPJawYWr+hMTsDPzZivRl95VMw644VR/bZC0 NT+kQR2L8gk+w== From: =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= To: Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Guo Ren Cc: =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Nam Cao , Puranjay Mohan Subject: [PATCH v3] riscv: Only consider swbp/ss handlers for correct privileged mode Date: Tue, 12 Sep 2023 08:56:19 +0200 Message-Id: <20230912065619.62020-1-bjorn@kernel.org> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230911_235635_460739_EE06FCDE X-CRM114-Status: GOOD ( 14.25 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogQmrDtnJuIFTDtnBlbCA8Ympvcm5Acml2b3NpbmMuY29tPgoKUklTQy1WIHNvZnR3YXJl IGJyZWFrcG9pbnQgdHJhcCBoYW5kbGVycyBhcmUgdXNlZCBmb3Ige2ssdX1wcm9iZXMuCgpXaGVu IHRyYXBwaW5nIGZyb20ga2VybmVsbW9kZSwgb25seSB0aGUga2VybmVsbW9kZSBoYW5kbGVycyBz aG91bGQgYmUKY29uc2lkZXJlZC4gVmljZSB2ZXJzYSwgb25seSB1c2VybW9kZSBoYW5kbGVycyBm b3IgdXNlcm1vZGUKdHJhcHMuIFRoaXMgaXMgbm90IHRoZSBjYXNlIG9uIFJJU0MtViwgd2hpY2gg Y2FuIHRyaWdnZXIgYSBidWcgaWYgYQp1c2Vyc3BhY2UgcHJvY2VzcyB1c2VzIHVwcm9iZXMsIGFu ZCBhIFdBUk4oKSBpcyB0cmlnZ2VyZWQgZnJvbQprZXJuZWxtb2RlICh3aGljaCBpcyBpbXBsZW1l bnRlZCB2aWEge2MuLH1lYnJlYWspLgoKVGhlIGtlcm5lbCB3aWxsIHRyYXAgb24gdGhlIGtlcm5l bG1vZGUge2MuLH1lYnJlYWssIGxvb2sgZm9yIHVwcm9iZXMKaGFuZGxlcnMsIHJlYWxpemUgaW5j b3JyZWN0bHkgdGhhdCB1cHJvYmVzIG5lZWQgdG8gYmUgaGFuZGxlZCwgYW5kCmV4aXQgdGhlIHRy YXAgaGFuZGxlciBlYXJseS4gVGhlIHRyYXAgcmV0dXJucyB0byByZS1leGVjdXRpbmcgdGhlCntj Lix9ZWJyZWFrLCBhbmQgZW50ZXIgYW4gaW5maW5pdGUgdHJhcC1sb29wLgoKVGhlIGlzc3VlIHdh cyBmb3VuZCBydW5uaW5nIHRoZSBCUEYgc2VsZnRlc3QgWzFdLgoKRml4IHRoaXMgaXNzdWUgYnkg b25seSBjb25zaWRlcmluZyB0aGUgc3dicC9zcyBoYW5kbGVycyBmb3IKa2VybmVsL3VzZXJtb2Rl IHJlc3BlY3RpdmVseS4gQWxzbywgbW92ZSBDT05GSUcgaWZkZWZmZXJ5IGZyb20gdHJhcHMuYwp0 byB0aGUgYXNtL3trLHV9cHJvYmVzLmggaGVhZGVycy4KCk5vdGUgdGhhdCBsaW51eC91cHJvYmVz Lmggb25seSBpbmNsdWRlIGFzbS91cHJvYmVzLmggaWYgQ09ORklHX1VQUk9CRVMKaXMgZGVmaW5l ZCwgd2hpY2ggaXMgd2h5IGFzbS91cHJvYmVzLmggbmVlZHMgdG8gYmUgdW5jb25kaXRpb25hbGx5 CmluY2x1ZGVkIGluIHRyYXBzLmMKCkxpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4 LXJpc2N2Lzg3djhkMTlhdW4uZnNmQGFsbC55b3VyLmJhc2UuYXJlLmJlbG9uZy50by51cy8gIyBb MV0KRml4ZXM6IDc0Nzg0MDgxYWFjOCAoInJpc2N2OiBBZGQgdXByb2JlcyBzdXBwb3J0ZWQiKQpS ZXZpZXdlZC1ieTogR3VvIFJlbiA8Z3VvcmVuQGtlcm5lbC5vcmc+ClJldmlld2VkLWJ5OiBOYW0g Q2FvIDxuYW1jYW92QGdtYWlsLmNvbT4KVGVzdGVkLWJ5OiBQdXJhbmpheSBNb2hhbiA8cHVyYW5q YXkxMkBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IEJqw7ZybiBUw7ZwZWwgPGJqb3JuQHJpdm9z aW5jLmNvbT4KLS0tCnYyLT52MzogUmVtb3ZlIGluY29ycmVjdCB0YWdzIChDb25vcikKICAgICAg ICBDb2xsZWN0IHJldmlldy90ZXN0IHRhZ3MKdjEtPnYyOiBGaXggQ2xhbmcgYnVpbGQgd2Fybmlu ZyAoa2VybmVsIHRlc3Qgcm9ib3QpCi0tLQogYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rcHJvYmVz LmggfCAxMSArKysrKysrKysrLQogYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmggfCAx MyArKysrKysrKysrKystCiBhcmNoL3Jpc2N2L2tlcm5lbC90cmFwcy5jICAgICAgICB8IDI4ICsr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9u cygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2Fz bS9rcHJvYmVzLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2twcm9iZXMuaAppbmRleCBlNzg4 MmNjYjBmZDQuLjc4ZWE0NGY3NjcxOCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2Fz bS9rcHJvYmVzLmgKKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKQEAgLTQw LDYgKzQwLDE1IEBAIHZvaWQgYXJjaF9yZW1vdmVfa3Byb2JlKHN0cnVjdCBrcHJvYmUgKnApOwog aW50IGtwcm9iZV9mYXVsdF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBp bnQgdHJhcG5yKTsKIGJvb2wga3Byb2JlX2JyZWFrcG9pbnRfaGFuZGxlcihzdHJ1Y3QgcHRfcmVn cyAqcmVncyk7CiBib29sIGtwcm9iZV9zaW5nbGVfc3RlcF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdz ICpyZWdzKTsKLQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgYm9vbCBrcHJvYmVfYnJlYWtwb2ludF9o YW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXJldHVybiBmYWxzZTsKK30KKworc3Rh dGljIGlubGluZSBib29sIGtwcm9iZV9zaW5nbGVfc3RlcF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdz ICpyZWdzKQoreworCXJldHVybiBmYWxzZTsKK30KICNlbmRpZiAvKiBDT05GSUdfS1BST0JFUyAq LwogI2VuZGlmIC8qIF9BU01fUklTQ1ZfS1BST0JFU19IICovCmRpZmYgLS1naXQgYS9hcmNoL3Jp c2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdXByb2Jl cy5oCmluZGV4IGYyMTgzZTAwZmRkMi4uM2ZjN2RlZGE5MTkwIDEwMDY0NAotLS0gYS9hcmNoL3Jp c2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaAorKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vw cm9iZXMuaApAQCAtMzQsNyArMzQsMTggQEAgc3RydWN0IGFyY2hfdXByb2JlIHsKIAlib29sIHNp bXVsYXRlOwogfTsKIAorI2lmZGVmIENPTkZJR19VUFJPQkVTCiBib29sIHVwcm9iZV9icmVha3Bv aW50X2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwogYm9vbCB1cHJvYmVfc2luZ2xlX3N0 ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7Ci0KKyNlbHNlCitzdGF0aWMgaW5saW5l IGJvb2wgdXByb2JlX2JyZWFrcG9pbnRfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sK KwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCB1cHJvYmVfc2luZ2xlX3N0 ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlyZXR1cm4gZmFsc2U7Cit9Cisj ZW5kaWYgLyogQ09ORklHX1VQUk9CRVMgKi8KICNlbmRpZiAvKiBfQVNNX1JJU0NWX1VQUk9CRVNf SCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvcmlzY3Yv a2VybmVsL3RyYXBzLmMKaW5kZXggMTk4MDdjNGQzODA1Li5mYWU4ZjYxMGQ4NjcgMTAwNjQ0Ci0t LSBhL2FyY2gvcmlzY3Yva2VybmVsL3RyYXBzLmMKKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvdHJh cHMuYwpAQCAtMTMsNiArMTMsOCBAQAogI2luY2x1ZGUgPGxpbnV4L2tkZWJ1Zy5oPgogI2luY2x1 ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxsaW51eC9rcHJvYmVzLmg+CisjaW5jbHVk ZSA8bGludXgvdXByb2Jlcy5oPgorI2luY2x1ZGUgPGFzbS91cHJvYmVzLmg+CiAjaW5jbHVkZSA8 bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9p cnEuaD4KQEAgLTI0NywyMiArMjQ5LDI4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBn ZXRfYnJlYWtfaW5zbl9sZW5ndGgodW5zaWduZWQgbG9uZyBwYykKIAlyZXR1cm4gR0VUX0lOU05f TEVOR1RIKGluc24pOwogfQogCitzdGF0aWMgYm9vbCBwcm9iZV9zaW5nbGVfc3RlcF9oYW5kbGVy KHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCWJvb2wgdXNlciA9IHVzZXJfbW9kZShyZWdzKTsK KworCXJldHVybiB1c2VyID8gdXByb2JlX3NpbmdsZV9zdGVwX2hhbmRsZXIocmVncykgOiBrcHJv YmVfc2luZ2xlX3N0ZXBfaGFuZGxlcihyZWdzKTsKK30KKworc3RhdGljIGJvb2wgcHJvYmVfYnJl YWtwb2ludF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCWJvb2wgdXNlciA9IHVz ZXJfbW9kZShyZWdzKTsKKworCXJldHVybiB1c2VyID8gdXByb2JlX2JyZWFrcG9pbnRfaGFuZGxl cihyZWdzKSA6IGtwcm9iZV9icmVha3BvaW50X2hhbmRsZXIocmVncyk7Cit9CisKIHZvaWQgaGFu ZGxlX2JyZWFrKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotI2lmZGVmIENPTkZJR19LUFJPQkVT Ci0JaWYgKGtwcm9iZV9zaW5nbGVfc3RlcF9oYW5kbGVyKHJlZ3MpKQorCWlmIChwcm9iZV9zaW5n bGVfc3RlcF9oYW5kbGVyKHJlZ3MpKQogCQlyZXR1cm47CiAKLQlpZiAoa3Byb2JlX2JyZWFrcG9p bnRfaGFuZGxlcihyZWdzKSkKLQkJcmV0dXJuOwotI2VuZGlmCi0jaWZkZWYgQ09ORklHX1VQUk9C RVMKLQlpZiAodXByb2JlX3NpbmdsZV9zdGVwX2hhbmRsZXIocmVncykpCisJaWYgKHByb2JlX2Jy ZWFrcG9pbnRfaGFuZGxlcihyZWdzKSkKIAkJcmV0dXJuOwogCi0JaWYgKHVwcm9iZV9icmVha3Bv aW50X2hhbmRsZXIocmVncykpCi0JCXJldHVybjsKLSNlbmRpZgogCWN1cnJlbnQtPnRocmVhZC5i YWRfY2F1c2UgPSByZWdzLT5jYXVzZTsKIAogCWlmICh1c2VyX21vZGUocmVncykpCgpiYXNlLWNv bW1pdDogMGJiODBlY2MzM2E4ZmI1YTY4MjIzNjQ0M2MxZTc0MGQ1YzkxN2QxZAotLSAKMi4zOS4y CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt cmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 61D52CA0EC3 for ; Tue, 12 Sep 2023 06:56:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230296AbjILG4j (ORCPT ); Tue, 12 Sep 2023 02:56:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55162 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230265AbjILG4h (ORCPT ); Tue, 12 Sep 2023 02:56:37 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FAC1E75; Mon, 11 Sep 2023 23:56:34 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D400C433C7; Tue, 12 Sep 2023 06:56:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1694501793; bh=ACq4UovHGdsS/35TyjryQ/+Lm+A5dK/cB8Beun04Eg4=; h=From:To:Cc:Subject:Date:From; b=hl8PyhhukPibWgT7UB5eKKyk1cSrK6mmQfdkENKV5r9iIl1rgqSx0kMjsvFosBy2V 6Bt+bm0l/X1sWzOwqeImCQCCLXEt5Z+5aOPIBRrnRW4eH0JwVVHVbn6Sytykb9YYyG uBX0ta5sWPf59uk4juiqRgroHKrqRBNguVOWaZwGS+U4RY8sKJ/SkFSAuEA/y0aecS 9plt4R4apoX9MffEtQ7xsMQVp05QS8JfMR4ZoBXJU5M0c3Y5pTozsuV9PYo3bg07ng RsoIhaeUyPN3MlR/r+Q091tLCVTOwUGPJawYWr+hMTsDPzZivRl95VMw644VR/bZC0 NT+kQR2L8gk+w== From: =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= To: Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, Guo Ren Cc: =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Nam Cao , Puranjay Mohan Subject: [PATCH v3] riscv: Only consider swbp/ss handlers for correct privileged mode Date: Tue, 12 Sep 2023 08:56:19 +0200 Message-Id: <20230912065619.62020-1-bjorn@kernel.org> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-trace-kernel@vger.kernel.org From: Björn Töpel RISC-V software breakpoint trap handlers are used for {k,u}probes. When trapping from kernelmode, only the kernelmode handlers should be considered. Vice versa, only usermode handlers for usermode traps. This is not the case on RISC-V, which can trigger a bug if a userspace process uses uprobes, and a WARN() is triggered from kernelmode (which is implemented via {c.,}ebreak). The kernel will trap on the kernelmode {c.,}ebreak, look for uprobes handlers, realize incorrectly that uprobes need to be handled, and exit the trap handler early. The trap returns to re-executing the {c.,}ebreak, and enter an infinite trap-loop. The issue was found running the BPF selftest [1]. Fix this issue by only considering the swbp/ss handlers for kernel/usermode respectively. Also, move CONFIG ifdeffery from traps.c to the asm/{k,u}probes.h headers. Note that linux/uprobes.h only include asm/uprobes.h if CONFIG_UPROBES is defined, which is why asm/uprobes.h needs to be unconditionally included in traps.c Link: https://lore.kernel.org/linux-riscv/87v8d19aun.fsf@all.your.base.are.belong.to.us/ # [1] Fixes: 74784081aac8 ("riscv: Add uprobes supported") Reviewed-by: Guo Ren Reviewed-by: Nam Cao Tested-by: Puranjay Mohan Signed-off-by: Björn Töpel --- v2->v3: Remove incorrect tags (Conor) Collect review/test tags v1->v2: Fix Clang build warning (kernel test robot) --- arch/riscv/include/asm/kprobes.h | 11 ++++++++++- arch/riscv/include/asm/uprobes.h | 13 ++++++++++++- arch/riscv/kernel/traps.c | 28 ++++++++++++++++++---------- 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/arch/riscv/include/asm/kprobes.h b/arch/riscv/include/asm/kprobes.h index e7882ccb0fd4..78ea44f76718 100644 --- a/arch/riscv/include/asm/kprobes.h +++ b/arch/riscv/include/asm/kprobes.h @@ -40,6 +40,15 @@ void arch_remove_kprobe(struct kprobe *p); int kprobe_fault_handler(struct pt_regs *regs, unsigned int trapnr); bool kprobe_breakpoint_handler(struct pt_regs *regs); bool kprobe_single_step_handler(struct pt_regs *regs); - +#else +static inline bool kprobe_breakpoint_handler(struct pt_regs *regs) +{ + return false; +} + +static inline bool kprobe_single_step_handler(struct pt_regs *regs) +{ + return false; +} #endif /* CONFIG_KPROBES */ #endif /* _ASM_RISCV_KPROBES_H */ diff --git a/arch/riscv/include/asm/uprobes.h b/arch/riscv/include/asm/uprobes.h index f2183e00fdd2..3fc7deda9190 100644 --- a/arch/riscv/include/asm/uprobes.h +++ b/arch/riscv/include/asm/uprobes.h @@ -34,7 +34,18 @@ struct arch_uprobe { bool simulate; }; +#ifdef CONFIG_UPROBES bool uprobe_breakpoint_handler(struct pt_regs *regs); bool uprobe_single_step_handler(struct pt_regs *regs); - +#else +static inline bool uprobe_breakpoint_handler(struct pt_regs *regs) +{ + return false; +} + +static inline bool uprobe_single_step_handler(struct pt_regs *regs) +{ + return false; +} +#endif /* CONFIG_UPROBES */ #endif /* _ASM_RISCV_UPROBES_H */ diff --git a/arch/riscv/kernel/traps.c b/arch/riscv/kernel/traps.c index 19807c4d3805..fae8f610d867 100644 --- a/arch/riscv/kernel/traps.c +++ b/arch/riscv/kernel/traps.c @@ -13,6 +13,8 @@ #include #include #include +#include +#include #include #include #include @@ -247,22 +249,28 @@ static inline unsigned long get_break_insn_length(unsigned long pc) return GET_INSN_LENGTH(insn); } +static bool probe_single_step_handler(struct pt_regs *regs) +{ + bool user = user_mode(regs); + + return user ? uprobe_single_step_handler(regs) : kprobe_single_step_handler(regs); +} + +static bool probe_breakpoint_handler(struct pt_regs *regs) +{ + bool user = user_mode(regs); + + return user ? uprobe_breakpoint_handler(regs) : kprobe_breakpoint_handler(regs); +} + void handle_break(struct pt_regs *regs) { -#ifdef CONFIG_KPROBES - if (kprobe_single_step_handler(regs)) + if (probe_single_step_handler(regs)) return; - if (kprobe_breakpoint_handler(regs)) - return; -#endif -#ifdef CONFIG_UPROBES - if (uprobe_single_step_handler(regs)) + if (probe_breakpoint_handler(regs)) return; - if (uprobe_breakpoint_handler(regs)) - return; -#endif current->thread.bad_cause = regs->cause; if (user_mode(regs)) base-commit: 0bb80ecc33a8fb5a682236443c1e740d5c917d1d -- 2.39.2