Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3678406pxb; Mon, 24 Jan 2022 15:08:31 -0800 (PST) X-Google-Smtp-Source: ABdhPJz0CLiodCjD9T2leAZDrvTMYYzKnAgpI3gTTBoaX8Uf3Lu6xkbafyDiSuht51aoCAP9W/o4 X-Received: by 2002:a17:902:da88:b0:14b:337f:1918 with SMTP id j8-20020a170902da8800b0014b337f1918mr10904984plx.129.1643065711212; Mon, 24 Jan 2022 15:08:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643065711; cv=none; d=google.com; s=arc-20160816; b=bQXvCrUw6yPDJNLDkjgULRIFV8HrXjXYODb2JzBpJ7/ngm9a/o/VRLHAqN+tGeScQ/ XxbBlnjEhKNti6Ov4LcBdNKK1C96xk2k3CCPIUzXmZbugRMNwJEWn1yv1KqQ9x1H5GZX FfvS/W03A2h+eUfLwFy9Xf8oW0s79w3FQIGVoFmGS6xmyglIIvJQBuuupS2ntQWSgEBy 2HlJnaXzwgyZhCkpVMQ5b+wXWfcGfYTb4k03QXajVitch6HA8d9w2j3EUgj4Q3i496gQ dgff6BqA7QVyb4uC/kgou0TKe4/VTVeolvJfPUcYNly9U8fhTeD2R+eBcqEdEskZD9I+ feog== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=nUHmn75lrtrudzif0qQMB3k+AtOWJn/HNenxVsKlN3I=; b=ffZ6mYnBv3WdDIfYIRgfJZE0Et5HX+fwEL1a5SHlxyXs3IXjr+wZ2uVVdv2qy8+K+3 3MT32L5HG6KssfoZoHUiLsLQsdLBWqJV13huejNtmqr9ESm4FDn3RcVmZeQhqyW9Sw1q Yw+8NA0ymx1043XS/MrDBfoNtT6DmC5g3CC4naDpVopXkj1a57PefrQcnADOC+W+dcf2 3OZFeFZNiNA/edaXxLmst4cvjA4Rs3MJxSyD5XOxVZc6rT4lGJ3cDrSvS2tb+qECtHda 6Flwm34l2O0FRKGYNYrwHQ7V9SsYqhmCX5A8vIVTNSjRb0kzkBcGLikBsBDBGWTkDtmK yvVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Z4GWvnvc; 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=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 25si13964055pgm.381.2022.01.24.15.08.19; Mon, 24 Jan 2022 15:08:31 -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=@linuxfoundation.org header.s=korg header.b=Z4GWvnvc; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1843692AbiAXXFZ (ORCPT + 99 others); Mon, 24 Jan 2022 18:05:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1583232AbiAXWR1 (ORCPT ); Mon, 24 Jan 2022 17:17:27 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 124DDC06138F; Mon, 24 Jan 2022 12:48:19 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A3A2D60C19; Mon, 24 Jan 2022 20:48:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8570DC340E5; Mon, 24 Jan 2022 20:48:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643057298; bh=6i/Lc3WTadO3w1mqFn1HbvI5iuw8Z8mWohFm0Ksrknc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Z4GWvnvcj2yHScho/Dd7Z4H7qez3SyP2Lx9zY26ayyiCEN/xhYz69ATMxdgpTDKMJ Ko8w2ZzV/dS4LrteDklgDFf/cKKAkthl0Mhmox+GolW/1g6PudeWDVSbZ9Mj5tm9NE LwALerZMngssTMuziyRqDjj3H+K5fjnAi4KwZh7U= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Daniel Borkmann , John Fastabend , Alexei Starovoitov Subject: [PATCH 5.15 767/846] bpf: Mark PTR_TO_FUNC register initially with zero offset Date: Mon, 24 Jan 2022 19:44:44 +0100 Message-Id: <20220124184127.412298584@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184100.867127425@linuxfoundation.org> References: <20220124184100.867127425@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Daniel Borkmann commit d400a6cf1c8a57cdf10f35220ead3284320d85ff upstream. Similar as with other pointer types where we use ldimm64, clear the register content to zero first, and then populate the PTR_TO_FUNC type and subprogno number. Currently this is not done, and leads to reuse of stale register tracking data. Given for special ldimm64 cases we always clear the register offset, make it common for all cases, so it won't be forgotten in future. Fixes: 69c087ba6225 ("bpf: Add bpf_for_each_map_elem() helper") Signed-off-by: Daniel Borkmann Acked-by: John Fastabend Acked-by: Alexei Starovoitov Signed-off-by: Greg Kroah-Hartman --- kernel/bpf/verifier.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -9199,9 +9199,13 @@ static int check_ld_imm(struct bpf_verif return 0; } - if (insn->src_reg == BPF_PSEUDO_BTF_ID) { - mark_reg_known_zero(env, regs, insn->dst_reg); + /* All special src_reg cases are listed below. From this point onwards + * we either succeed and assign a corresponding dst_reg->type after + * zeroing the offset, or fail and reject the program. + */ + mark_reg_known_zero(env, regs, insn->dst_reg); + if (insn->src_reg == BPF_PSEUDO_BTF_ID) { dst_reg->type = aux->btf_var.reg_type; switch (dst_reg->type) { case PTR_TO_MEM: @@ -9238,7 +9242,6 @@ static int check_ld_imm(struct bpf_verif } map = env->used_maps[aux->map_index]; - mark_reg_known_zero(env, regs, insn->dst_reg); dst_reg->map_ptr = map; if (insn->src_reg == BPF_PSEUDO_MAP_VALUE ||