From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ot1-f48.google.com (mail-ot1-f48.google.com [209.85.210.48]) (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 53BC62FFF89 for ; Sat, 20 Jun 2026 17:44:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.48 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781977458; cv=none; b=E5GJcYhktjHE6X8Tay2qZ5dQYmgBKawiR3A7avIrl5k33u7KcvvaPUoXQf7GCngL8lY65jnahk4bbEAflSP1wmPVRXKfBX7KfaLsxJ+AbJGZk8yZopn0/3pkcps1PdwgYnbi4Nko4H0X1zb6IxcWX4c3s8IUrdo0rVyGc9XwRo0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781977458; c=relaxed/simple; bh=XdjL+DsZlxx/MaXCS+LVig1iCqZ/grsNtC+27vPV6MU=; h=Mime-Version:Content-Type:Date:Message-Id:Cc:Subject:From:To: References:In-Reply-To; b=fgsWTCodBa6tE8bCx5mTAM2FoRIes2eq5tKzrD/xifn5RmRq9NUjJX3wgKHsUojhZ+6LcvXQrewtyTucf5m5aHGvLlh+TSKbSYNUqhxWsB4tDBi5u8yP/zJLblQu/OKkwQdwOanVca/vnCJ//VHJEA55N7vXiPPiZ05Z5WmbUbU= 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=XVfTNxbn; arc=none smtp.client-ip=209.85.210.48 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="XVfTNxbn" Received: by mail-ot1-f48.google.com with SMTP id 46e09a7af769-7e6da33a561so2595420a34.3 for ; Sat, 20 Jun 2026 10:44:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781977455; x=1782582255; darn=vger.kernel.org; h=in-reply-to:references:to:from:subject:cc:message-id:date :content-transfer-encoding:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=MeGJYdAKjr2ewIveC64bw2Gycnlw9u3WsN5+LRl0ZgE=; b=XVfTNxbnUm0gYBB5EKzPoKyGh4SwD5sWLLw4HBofL2HSCH2fDAlEEavV4enDaI5D+a yrjqgmtng8FNtqTaf99b2qhTQPTkbkv0KQZuxlUinww2AcyVRMYGyknid4RAraG9B9Dp epG/1x3u295OmMXIeHnMIRzhpk99jBLp7UDwKBnIXEBOKmg1OrQMVWMA7nJHMeuNFDfI QP67rGhW5Okhwk+0attJ3GgvBbGhCsh51AmUYkXzjYbkhARiBA7is2o13BTWaxVR8znF eVJqowHkoaYgSasFJ1SMQe0WqWHvbu+YnHTKq4y6MGXa5jIVXZbMT8CjmzxFNcjln2Pr xVQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781977455; x=1782582255; h=in-reply-to:references:to:from:subject:cc:message-id:date :content-transfer-encoding:mime-version:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=MeGJYdAKjr2ewIveC64bw2Gycnlw9u3WsN5+LRl0ZgE=; b=H+iu0a/b2SOAtKxWJkzoTxQCvMRKy/bVgTNfExpB/xjjLwON9q48Qtm6uavDmY9ZEf duqYvlxDBqPe9abuhHKp/JOPoRyDOIhfoO/DSJHwA1JiFind2bYm0C0WsZ8p6jv5zCDu z5aYaHvmIgXCL0qrLbmv7/IeCPbEZWfg+LQMElsdI75FLwH1zHNAmWpq11/MfolFHyD6 pinVKWhlGM1iLpNeb+VCAHJwbnSB1Bo9ANHK8BNFGSM1rHROqeDiXU8IbzATTXXV+bjz 9+VSO1xnglpFuR8M8o6Tnkfl19qbz45eFvMG+80kBANIkIMcPEvFbwxkG2z7fH2ST17G r7CA== X-Forwarded-Encrypted: i=1; AFNElJ8opTXcsLb7kFSEDluyfK5jWCtcrI5TATONE1ECmUJUtejvwpaxiErzzsvGGYmLiNO2Y5N5gnL0XzQmltI=@vger.kernel.org X-Gm-Message-State: AOJu0YylQI6LoFHPut5ts6f4w5q6RAh2spJQDX2ULi1Ruh8zN/jtZmZN y882bk8wxXX2tJm+9rp5NYkLCFa5gSePaNBQGqeIoW/ZqsFyA4/IcORB X-Gm-Gg: AfdE7cl99O/HwDUJRKYJXrva+5M50RgDpvXZJNlxb6bZ/oYM+G89cyy6G+0TehSWqRv OZ0BbsoZt7U9qptSuBxa1V0vuc/+oDUBE1CYAM38lMwd1jH8Xt4+uYrHvKMjvgflALqir9tQsIC uJbcDao6xkcCn4ceKEMu3VC/cSF7hxaZhTaNhsJ1r+RxbpeYXvQdbvVbFpwkFh2aX919wGEobzQ X770LvKpieGIBpkCE+gQPP3CbeY8+28UaMc6F6j0lOKt3mH+xuBFV8jeWXRsSICTUK0CeWJmWyH t2BhxOPbEJ1vA3KrkzKtOHuXD8SWTEx27bW1ojfzst68621Z1fgIWNo1WKAH5va3Jk0piRcNLfv P6DZZlNEazIuOFNctVBdUCc23fnIQtJABIEeHXQBbjrZmbr8+CxZlRAL9EVpojBjc591a+PD421 2tB29SqDcv4x9b7fAuEFUf/zemVlFvMQOttcdnIkmwhLwghu7nwNYI7fC2LIlSPiP4NhuBn4kSw GtRChKKb9CaQR3OzA== X-Received: by 2002:a05:6820:1b19:b0:69e:b86b:1acb with SMTP id 006d021491bc7-6a0d8c61d96mr6582265eaf.24.1781977455160; Sat, 20 Jun 2026 10:44:15 -0700 (PDT) Received: from localhost ([2a03:2880:10ff:43::]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-4472e79af8fsm2187384fac.0.2026.06.20.10.44.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 20 Jun 2026 10:44:14 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Sat, 20 Jun 2026 10:44:13 -0700 Message-Id: Cc: "John Fastabend" , "Martin KaFai Lau" , "Song Liu" , "Yonghong Song" , "Jiri Olsa" , "Emil Tsalapatis" , "Shuah Khan" , , , Subject: Re: [PATCH bpf-next 1/2] bpf: Preserve nullable RCU pointer state on unlock From: "Alexei Starovoitov" To: "Yiyang Chen" , "Alexei Starovoitov" , "Daniel Borkmann" , "Andrii Nakryiko" , "Eduard Zingerman" , "Kumar Kartikeya Dwivedi" X-Mailer: aerc References: In-Reply-To: On Sat Jun 20, 2026 at 8:17 AM PDT, Yiyang Chen wrote: > bpf_rcu_read_unlock() converts RCU-protected verifier registers to > untrusted pointers so that programs cannot keep using RCU-trusted > references after the read-side critical section ends. > > That conversion also clears PTR_MAYBE_NULL. For fields from the > BTF_TYPE_SAFE_RCU_OR_NULL allowlist, such as skb->sk, the verifier record= s > MEM_RCU | PTR_MAYBE_NULL while inside the RCU read-side critical section. > Clearing both flags on unlock drops the nullable state and allows a direc= t > post-unlock BTF member load without an explicit NULL check. That's exactly the point. The code works as designed. > Only clear MEM_RCU during RCU unlock invalidation. Preserve PTR_MAYBE_NUL= L > so normal nullable-pointer checks reject direct access, while an explicit > NULL check can still refine the pointer before use. > > Fixes: 30ee9821f943 ("bpf: Allowlist few fields similar to __rcu tag.") Nothing to fix. pw-bot: cr > Signed-off-by: Yiyang Chen > --- > kernel/bpf/verifier.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c > index 2abc79dbf..e53c4bfe4 100644 > --- a/kernel/bpf/verifier.c > +++ b/kernel/bpf/verifier.c > @@ -9001,7 +9001,7 @@ static void invalidate_rcu_protected_refs(struct bp= f_verifier_env *env) > =20 > bpf_for_each_reg_in_vstate_mask(env->cur_state, state, reg, stack, clea= r_mask, ({ > if (reg->type & MEM_RCU) { > - reg->type &=3D ~(MEM_RCU | PTR_MAYBE_NULL); > + reg->type &=3D ~MEM_RCU; > reg->type |=3D PTR_UNTRUSTED; > } > }));