From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oi1-f175.google.com (mail-oi1-f175.google.com [209.85.167.175]) (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 6C4471D5170 for ; Wed, 11 Feb 2026 15:06:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770822392; cv=none; b=tX8OAdPJ3fjLZct0jkDGawqG7NZLrrxAbyDgcLwQicw9nzDBKkmrvsKUB+9OHzr2nyvdcIuthJsfyfPpVxP5ApO1/iqVtQRnLIHBQImFjHEMp86OkQlNV9piIZmBWRotm9HUa6EhbyNPmCD08PlYRkKptmOOmkAcR8iBQeV+dIg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770822392; c=relaxed/simple; bh=vqUgzeBGphbWscnLiGMMp+Ll5Vp9310ge1UFbsr2GsM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=brHPQqtmaXDQxTSk1g/MT4dsEVrc9mbkNPP4KVGoXnMcUBw5Yj4YTvGciSQGOEHTyF3TgV4V3bbvTT4HY3cjYu3V16CrIwSYXxblYJUU8QVA+g+HFANXoZ0LlTbUY2MxRvhQyA4zs2SjGeK3cZZrJ6HhBqPBbtJ3LP8kpzZCLkA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.dk; spf=pass smtp.mailfrom=kernel.dk; dkim=pass (2048-bit key) header.d=kernel-dk.20230601.gappssmtp.com header.i=@kernel-dk.20230601.gappssmtp.com header.b=iBDnVmA4; arc=none smtp.client-ip=209.85.167.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.dk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kernel.dk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel-dk.20230601.gappssmtp.com header.i=@kernel-dk.20230601.gappssmtp.com header.b="iBDnVmA4" Received: by mail-oi1-f175.google.com with SMTP id 5614622812f47-45c7c841904so3427405b6e.3 for ; Wed, 11 Feb 2026 07:06:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1770822389; x=1771427189; 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=zI8R76tRAizCYBV08Iw9JV2oSM2l9MroeSbZuX5v43Q=; b=iBDnVmA4hHwExoKsIHjmOTEwx55Vh89jFjma9LYd/zzwAkUSNI6OevsTv+jwGjxuAx 8adOfgduErDohENbq57gWnodCc+LBmBzkeRt9CoTlJD6R+IMer5rwiXL5fNtOamd9Bqa pOu3NfX9tU3I45Xe9/zUAr7SWK6KdU74sBC30M1oDaNqVoe9SRO0PQOM9idZ/Rnl0TQV py5IJ3jBOBywE9WwiNGWY+9aMLJ+TKkA33BCz6nXOed1w/BN/XkG+T012Sp/qbO6ceTg aXWmWHkTZw3lpRelWgKSoDwl6Z9Yj9/j9Rf2ZC48q9/oVD3W2Hfenr3mvqqAT38wvk9F gIWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770822389; x=1771427189; 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=zI8R76tRAizCYBV08Iw9JV2oSM2l9MroeSbZuX5v43Q=; b=iCkyJAt9fvwbop7QSUExKEpLY1XDn4hw9ZzJyqVwwwtojTVSJVy+nME9b4+co+9dgo eFhihAp2JiZMTVXnhs/tsnBLc4CbxdfT7mlZSspp/h25Y7oCbVUxhpjWl95p6mUn+/7Y UTAXcJ24CkxJV8PNtENuDSk02TZI0KP/7uQPtbdrrhwf0QNktcnQqPQj+Z4KFUvWbkTp f5Pt4tmfxxDhC4VoVircRBcssnDQbSFHRiUW64SIA28yjI6laXC1Ia1LjG4+xfcijHcP wMVvRniWvv6IYZCPpLa0Ik5/+uMscVGDSudk6wwgQJGRlzo3qQwsf04Y6N/IBtgnvDTn H30A== X-Forwarded-Encrypted: i=1; AJvYcCWS2Jo/jsxbVcQJ6R6k7P4050wdHVHJMU3Cc5QZfcD/KvbGOdwZZCC1oCI7iJBFQalkFSMieRApY8WKEJo=@vger.kernel.org X-Gm-Message-State: AOJu0Yzf7lPJzY1VNNspzHlppEnRvsTUeS8GfL44jk2p+bO0/b3pzn+S c0y7YT7GVw+g/O3+zx5oOCYu9kB6DDw+uyqYHkbruKeH2R+X6X3HzOfrn1HCvyGB8YY= X-Gm-Gg: AZuq6aK+xCjboaS1KTNUjd2rMMy5qkt9TdrjHOqgOpN/JSXCz4m+FflzuX1ZDOslopZ 1srcqsQ/hDUpuf+4wcykd12b/1cGwLEwwOBw5eRYSZJ1KI9SKr1SVxN8Dh8px1xLTgnCnpvCoka 1FVg+4sdqHlsvSfxyi6smeFm8gsCw9Iw7kJr20+OCSBV2wBRuY1XY5W52MY3++QCq2iZNvlfBuU 2NmdhaweIYJHJwpNwVUmbbQSdiydhfPK0fcvxFQeSGdWiTmb4lEXaSmi0HhuOmVYXPBttNaNOx5 p9sogwrO4BXq2dpKVbVVK4s+qbig0IYC8g70o10HujI9AxAW9T3l3M8pyU2gSsH8t4Ojl2FMnW1 ri9wQ1xBidizE9e+uBqtOhOu2LRXcvO5TvNu03xsPWXfyXtF2MrLjF/16G7jRyDmB+BhDmNODAO 1vu+VkJcrKUJvQKs6aK0Xiyu/FC93fr1vGjNubi/jM8B5y1pXa7m6klw/FOjaaG5SwTXGL X-Received: by 2002:a05:6808:1924:b0:45e:a52c:e4cd with SMTP id 5614622812f47-463664e06bdmr1577711b6e.27.1770822389227; Wed, 11 Feb 2026 07:06:29 -0800 (PST) Received: from m2max ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-40eaf16c383sm1462414fac.14.2026.02.11.07.06.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 07:06:28 -0800 (PST) From: Jens Axboe To: io-uring@vger.kernel.org Cc: brauner@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCHSET 0/2] cBPF filter API adjustment Date: Wed, 11 Feb 2026 08:01:16 -0700 Message-ID: <20260211150626.136826-1-axboe@kernel.dk> X-Mailer: git-send-email 2.51.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 Hi, Christian brought up a good point on the API - what if the task and kernel differ on what the payload size is for an opcode? Currently there are two defined payloads, inside struct io_uring_bpf_ctx: struct { __u32 family; __u32 type; __u32 protocol; } socket; struct { __u64 flags; __u64 mode; __u64 resolve; } open; and it could be a requirement that a filter exactly matches the payload that the kernel uses, if extensions have been made on the kernel side. Hence this small series updates the API slightly: struct io_uring_bpf_filter adds a pdu_size field, which userspace can set to the size if expects. For an OPENAT/OPENAT2 filter, that would be sizeof(struct open) above. The kernel can validate that they match, where the mismatch policy is controlled by userspace. See patch 2 for details. In case of a mismatch that causes an error, the kernel side pdu_size is copied back to userspace. Patch 1 exposes the pdu_size by shoving the filtering and pdu_size into the issue side definitions, and patch 2 implements the above size checking. The liburing master branch has been updated as well for this, as copying back the pdu_size necessitates changing the API on that side. Test cases and man pages are updated as well. include/uapi/linux/io_uring/bpf_filter.h | 8 ++- io_uring/bpf_filter.c | 82 ++++++++++++++++-------- io_uring/opdef.c | 6 ++ io_uring/opdef.h | 6 ++ 4 files changed, 74 insertions(+), 28 deletions(-) -- Jens Axboe