From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D9FD3ACF16 for ; Wed, 8 Apr 2026 18:36:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775673366; cv=none; b=YFxvD9IWiiNU1E/Y5CaVr/08/BdTnx+353s236mcqxQS9C6KA1jxHXMKXDonBChbcKBnNFt9Uw+4l00ohUyJXUNbuNamzZ17dvNQ8pfsqw1vFWzAnE/mTkC5Cvvh21OzWlNh90MftboQz8x9z9z6ybXu1nVkEu8bdYJ5Nk4az9U= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775673366; c=relaxed/simple; bh=QkNqJWdiHPGsG4cNBuwXpj/Znwg2gcVxzViiz/Qan1w=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=LB5THq5wzY8FIlcnJTM5ZPD16OyWkg57RGFf2GgxdWnHCg8+w70f7SjyCLl9b32kVR9HnFShaBTQS9TMKFx44UuzzfXnSbzPXCfUXANDLaPLycklvMGE+yAbZ9au0OqJj+YJFw7TKdwMYU9o3myrSJGO9G9DCKFiVm2qsH6x7qg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=EqpKOGHQ; arc=none smtp.client-ip=209.85.210.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EqpKOGHQ" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-82d03827316so31503b3a.0 for ; Wed, 08 Apr 2026 11:36:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775673363; x=1776278163; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=o/ARlU+1nW3k8dDz7lLQIusgUbHwPm589AVKJkGX+KM=; b=EqpKOGHQuYnzSkLz6Ru1tayxL4jeciq6Qg7ffvDGuNckPdVYPv8vsWLrbZ0JAaMdvb Q1lIRpbTUUueVcbLwdib1S+k5dzKactMHsG1cM16hNvkksp4L0YayrX1/Fw5F8xeA9xC GAtC6yJaKRVLSWx+xclaCATZXATI9AaCpnoql9MMe2kgl0bWdD0v2FAZr3ouH+qIJBkj 9NNgFSQe43SkHwv/hSS9U34jJCMG/oCc4uNB/F6gcuxnjI+77aoa+grYOQbs3qSWLnVg 47G6G2gXudCH9wBKi62qTEy9y5yTH8xdZxXWP8iPuQW+7KFxd//uC+OIrAkagl6CZu9S pt+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775673363; x=1776278163; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=o/ARlU+1nW3k8dDz7lLQIusgUbHwPm589AVKJkGX+KM=; b=mHgloRYX74E1QEn1LFDcUdeG4Wv57bYasaj2nYGk5ZLvPF4bD7kevLqbNGlT8a5F+7 5qWuesfQdvYtcz9DwP6XSKFpHdrtsm5QQfYDY75E/CESGjPXMzUPIHFgmCt3PfCQERdp UWyDwpsZ//HTh2PHHDujounMY92x2J8Q2Omhzxo66RXVPOxbZbkTyd4TXfTFwb+uO1/R 69evfYMo5X3LdUzmbWUwkjLYo1KB6E416zgAvFqFJnXalmoMKfLmO6DIgqv9AqDeU3gh emD+Bnt+kz1VJeA7WzvzA921Z4VkiBFrPwW+D6g0ZMe4e1wxAYy/bNcje3ESneJRCwzb mFGg== X-Forwarded-Encrypted: i=1; AJvYcCV0M75stNeVGLyuCTyG5eDQihm0RANdlsbEyL9iI1FPfwndPymFucOxGggua5xgSuPGMvagXIDm7FC39Y8=@vger.kernel.org X-Gm-Message-State: AOJu0YzFVvN/3pq9aAjA7V3kFawLXwU0EUP/nr2HQvBVjB8ps9UbGB1g bKbTzFWgIJtj+VOiS4iwjzG8YUY+sKyASkmcKT4cZXMFPnTQdKsgnl1k X-Gm-Gg: AeBDietLCvmJdYKfMFPIGdxl4gfdEkeTvnKGnI6/XYTtDBM6hzqXsc5Bbdm/Xn1Jlku 5jZ/CysT8K+wlqF/u5f8qQzGTrsDAvnu3iweewlzYHAwaXI6kGcvxcZSnZeJwjS8YjS+2tAQMFJ iM6W1AxgQwt9l5ng/D3V1Y8M661QJPonCrAdz92vCw+UQoHPWVxCDAoJo1zYVOf8gG3WuY+J0n1 2MRV0Ofw0farQS5OshQXZsPi5CnWBgP6kZp4Um5Tt4glS1WTUFxc8My4vBgyyLQUIXVfw31wZ3e /gsCFxcANRvqyjA+n4nCsH9XMgAwMfs3B6OBgK/8tD0J04xlJcBy22hTbne1/gXLStFKiOPFH/f X8zZqF01iNdKq7vNr+mvQfX8foQSzQjGSdy4Y6713oQpC+UF10wM3veGGZPnUbpGvPWaF7soHrU lcOARFEbRP4UVZkTEK8n4zthuYp3BQBgwMeL/1DLo9+yFIy/LGD+uLtESlkE4UXHXwugeL X-Received: by 2002:a05:6a00:230a:b0:81c:5bca:8104 with SMTP id d2e1a72fcca58-82dd8b3a2bfmr488089b3a.24.1775673362420; Wed, 08 Apr 2026 11:36:02 -0700 (PDT) Received: from computer.goose-salary.ts.net ([2a09:bac5:40b2:1a96::2a6:4e]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82cf9b21c92sm23113251b3a.11.2026.04.08.11.35.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 11:36:02 -0700 (PDT) From: Varun R Mallya To: bpf@vger.kernel.org, leon.hwang@linux.dev, memxor@gmail.com, jolsa@kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, yonghong.song@linux.dev, rostedt@goodmis.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, varunrmallya@gmail.com Subject: [PATCH bpf-next v4 0/2] Reject sleepable kprobe_multi programs at attach time Date: Thu, 9 Apr 2026 00:05:47 +0530 Message-ID: <20260408183549.92990-1-varunrmallya@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit These patches fix an issue where sleepable kprobe_multi programs were allowed to attach, leading to "sleeping function called from invalid context" splats. Because kprobe.multi programs run in atomic/RCU context, they cannot sleep. However, `bpf_kprobe_multi_link_attach()` previously lacked validation for the `prog->sleepable` flag. This allowed sleepable helpers, such as `bpf_copy_from_user()`, to be invoked from an invalid non-sleepable context. This series addresses the issue by: 1. Rejecting sleepable kprobe_multi programs early in `bpf_kprobe_multi_link_attach()` by returning -EINVAL. 2. Adding selftests to explicitly verify that attaching a sleepable kprobe_multi program is rejected by the kernel. P.S: The first of these two commits has been applied to the bpf tree. Changes: v1->v2: - v1: https://lore.kernel.org/bpf/20260401134921.362148-1-varunrmallya@gmail.com/ - Defective selftest added v2->v3: - v2: https://lore.kernel.org/bpf/CAP01T74YgnKop-dgwBToOcfg4_D44t1wUBopFYPMquirCmaLfg@mail.gmail.com/ - Selftest separated from change into different commit. v3->v4: - v3: https://lore.kernel.org/bpf/20260401191126.440683-1-varunrmallya@gmail.com/ - Selftest moved to test_attach_api_fails. - Changed attachment symbol to bpf_fentry_test1 for stability. - Changes suggested by Leon implemented. Varun R Mallya (2): bpf: Reject sleepable kprobe_multi programs at attach time selftests/bpf: Add test to ensure kprobe_multi is not sleepable kernel/trace/bpf_trace.c | 4 + .../bpf/prog_tests/kprobe_multi_test.c | 78 ++++++++++++++++++- .../bpf/progs/kprobe_multi_sleepable.c | 25 ++++++ 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/bpf/progs/kprobe_multi_sleepable.c -- 2.53.0