Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp521303pxb; Thu, 12 Nov 2020 09:21:14 -0800 (PST) X-Google-Smtp-Source: ABdhPJxjqzMUYCIg7fi+9Td0XZ8+c6/6KpYuvue0ndaEoBoAAaEYeyfLkcOGoJIasEvLZam3/pHU X-Received: by 2002:a17:906:1643:: with SMTP id n3mr267166ejd.459.1605201673910; Thu, 12 Nov 2020 09:21:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605201673; cv=none; d=google.com; s=arc-20160816; b=JPq6sPt3GcfQEV1Qla/MRQBIpDAA2qGkHTze3NdlEsvRGbl80aGVYDKkvpobljx65e 8D2FuEwPnTpoTcoMHm72boS/Kg+SXdqUZ4J1DsJmDJyXAORMCpzOyPeJaLwbbztu7vNG KSBCtJW9pqwW6E8mp8b0e8jsWmtp6A9AFYPFzfxfnajpJ9wKfrDq/YruDHtcJ4ZktsBi woQjrbH6S5d2j8eBaJAmTNs5ueGLx1LAAzaSnOKSnv9ETekllmUMNi5/eic9VkN4HW1m 8+fywXqX0225kH0JFc4r0S/8/uk3AOjB8YGVS/p9vOS/EcGCV1lGOoJAgAeMNxGGqEH5 P6oQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=6XvDI+wpjgB/udB/U6ZUMsnDIItG6AuNAvWmNdWpIRQ=; b=vfW78RJmskk9UjoAd8K2SFFsvEwzTDM4se9YpD6boiO4V6UcZl+aKgbfkqpuPE1IJT LH7Dww/fPF4RSUSu4rhnPYlJqwprDjpu5QhbhenNHLR1jYP4NjrBAd5Vmb0O2Usbp9pX G0KqLyMnb0b1gXuzViJ391EBAWn5joEiVTW4QrQhOHoMKpnqGLiH91oEMX/RdLqGX5l4 ujHlu1Sfz76p3seEPYKtBdBvVUtCHJQy4vKZrStMUy4YQ4I0VHaI5SIv4B+2wmawq3/H uZXyRnLaqE0nTXQGsjG5kuD5X0h0DRIdRB/41TpvjdMuD/HtpmrAWaPEpEXe/qkRjpd4 RIgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Ew9Ci5IV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id qn24si4057166ejb.680.2020.11.12.09.20.49; Thu, 12 Nov 2020 09:21:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Ew9Ci5IV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726064AbgKLRTP (ORCPT + 99 others); Thu, 12 Nov 2020 12:19:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57120 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725999AbgKLRTO (ORCPT ); Thu, 12 Nov 2020 12:19:14 -0500 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 54AA8C0613D4 for ; Thu, 12 Nov 2020 09:19:14 -0800 (PST) Received: by mail-wm1-x342.google.com with SMTP id a3so6180912wmb.5 for ; Thu, 12 Nov 2020 09:19:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6XvDI+wpjgB/udB/U6ZUMsnDIItG6AuNAvWmNdWpIRQ=; b=Ew9Ci5IVEs+gXfeUj+EvmQeFjAbr4dHKtv3Q3ejJ8NSL+09gHjalNqMwvH7jSXUnR9 a4Lr0WZFY2l2AdDrYTOYylgMH2JKENkBtXVuo9NUP0YS3kVKM04aiing3JNEWP0pMxLK mnqWCDWbV6bLa8p/t5rs39VQCW0X13zMHlSX8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6XvDI+wpjgB/udB/U6ZUMsnDIItG6AuNAvWmNdWpIRQ=; b=Jd2IVoKnbKWBRmi2NOT3tpZD5P6MThevFsI+99I597oEfcmytJoMfg3utuswf7robD fbCY1zAH1wIBl3TjNgxBxfM+GUclBoCQIKuYxkPQLy9hwI6iLs7W6SelkNs1LsrsZi8H U5taMvtM+tIYLItaScofm6d8DV8IrZbcHosF78AEau96HIsl2d6RRPu2Dv8wvrl4geGc avQbjMRvmSt9Dtpxah94j4zhfda9F8/SfKK2yv0b+NIxfTKWKUL5wYVv+T1nnkRLHr5I OTILFr1yGbhAWF0vChoXeRdhl2LbBuqARM0tll36SNKsOo1LAi6Pii7TsSFzT3sAYc/2 THJg== X-Gm-Message-State: AOAM531R2XuuswFJ+17T8mFQirUk3/fncHYLV2lPGqplGC84OxdmcY++ Sv77le40LLWNXRHtJfQidmRWZU+pq/m7QJ90 X-Received: by 2002:a7b:c309:: with SMTP id k9mr681965wmj.14.1605201552803; Thu, 12 Nov 2020 09:19:12 -0800 (PST) Received: from kpsingh.c.googlers.com.com (203.75.199.104.bc.googleusercontent.com. [104.199.75.203]) by smtp.gmail.com with ESMTPSA id m18sm5574938wru.37.2020.11.12.09.19.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Nov 2020 09:19:12 -0800 (PST) From: KP Singh To: linux-kernel@vger.kernel.org, bpf@vger.kernel.org Cc: Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Jann Horn , Hao Luo , Florent Revest , Brendan Jackman Subject: [PATCH bpf-next 2/2] bpf: Expose bpf_d_path helper to sleepable LSM hooks Date: Thu, 12 Nov 2020 17:19:07 +0000 Message-Id: <20201112171907.373433-2-kpsingh@chromium.org> X-Mailer: git-send-email 2.29.2.222.g5d2a92d10f8-goog In-Reply-To: <20201112171907.373433-1-kpsingh@chromium.org> References: <20201112171907.373433-1-kpsingh@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: KP Singh Sleepable hooks are never called from an NMI/interrupt context, so it is safe to use the bpf_d_path helper in LSM programs attaching to these hooks. The helper is not restricted to sleepable programs and merely uses the list of sleeable hooks as the initial subset of LSM hooks where it can be used. Signed-off-by: KP Singh --- kernel/trace/bpf_trace.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c index e4515b0f62a8..eab1af02c90d 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -1178,7 +1179,11 @@ BTF_SET_END(btf_allowlist_d_path) static bool bpf_d_path_allowed(const struct bpf_prog *prog) { - return btf_id_set_contains(&btf_allowlist_d_path, prog->aux->attach_btf_id); + if (prog->type == BPF_PROG_TYPE_LSM) + return bpf_lsm_is_sleepable_hook(prog->aux->attach_btf_id); + + return btf_id_set_contains(&btf_allowlist_d_path, + prog->aux->attach_btf_id); } BTF_ID_LIST_SINGLE(bpf_d_path_btf_ids, struct, path) -- 2.29.2.222.g5d2a92d10f8-goog