Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp1331367rwd; Wed, 7 Jun 2023 14:44:37 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4RtqlW650BIj8bvUqPC0/Z7JE9h64VyApphEZ6yS7MaEfxPnsBJmBfNYpwT9T+UtjJSrI2 X-Received: by 2002:a05:6a20:394b:b0:10c:2c30:4765 with SMTP id r11-20020a056a20394b00b0010c2c304765mr399447pzg.1.1686174276712; Wed, 07 Jun 2023 14:44:36 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1686174276; cv=pass; d=google.com; s=arc-20160816; b=Gg0pCBs3i6CaaFcFmQjBuUdbJ7LlFeCackACj1FqOg0mcIwpwDq62gXg89pFasHs9m apTwhFiOo4ga+COIMpNhnIweCtMSQagp5suT1gEfqwgwbU9fZrtuDsK2E7Gcexxr3FGA CJA4aW/ULEWjmESYg77jMmC+ElqDty6CJV6g87CM6VoZYSWiJHVdU28fe3ktU+L54u10 KncJh+bI/zSoKENTWmThCoccWEm46ElLknYTCNCkh0LaYDhDzHT2Y1yoOOTIuVvYITCn fNNUeD23qbtNZftlld6g90cZa19WKMOSHiPpl8pjn+6kGGZ43/CCWMgy5z/Q22nhwJT3 io9w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=GNnQmH+wS+zURx3eyS+tueWtQk84sc6MMvTdEAlLPgk=; b=nfHjt5JguoZL8dSREtj9OXb8xMiM5c2bUeY2AYO28eeyLlxBzj5gDB/wgYKPGWpWBS gdbMn/dd0EpNXsOklClYmQybIkVZEWuwCagxccA0iMQVtqG340Ycs05WnV7fKvPVWkOn Ft+mrDJAyTPD8ANXKXQAacpGBn+fIbdh0G83o1u3pj2pg+hhdYSyyeGzvK9tx+eCfTmb qnsSG7fD7JeBVwWGKbw5Fer5fVwmcBii+yNnDyEMFZqKsnTppQrgQumPcfy1z2tiJlNr 6U/3XN1Gw4t17jrApFrv7H70hehp7iG/s2EAMq4x8xsqps1WCGwmVB3CDeu0ZOZ6xWN4 apsA== ARC-Authentication-Results: i=2; mx.google.com; dkim=fail header.i=@templeofstupid.com header.s=dreamhost header.b=S9bzB4RJ; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s6-20020a625e06000000b0065300b42889si1923363pfb.363.2023.06.07.14.44.25; Wed, 07 Jun 2023 14:44:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=fail header.i=@templeofstupid.com header.s=dreamhost header.b=S9bzB4RJ; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236056AbjFGVFm (ORCPT + 99 others); Wed, 7 Jun 2023 17:05:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236548AbjFGVFD (ORCPT ); Wed, 7 Jun 2023 17:05:03 -0400 Received: from grey.apple.relay.mailchannels.net (grey.apple.relay.mailchannels.net [23.83.208.78]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B07E226B0 for ; Wed, 7 Jun 2023 14:04:34 -0700 (PDT) X-Sender-Id: dreamhost|x-authsender|kjlx@templeofstupid.com Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 0E32810113C for ; Wed, 7 Jun 2023 21:04:34 +0000 (UTC) Received: from pdx1-sub0-mail-a233.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 91C67100981 for ; Wed, 7 Jun 2023 21:04:33 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1686171873; a=rsa-sha256; cv=none; b=Lp8e4kSX/0Vusg0aSHDRrkw2oJjWNp3d1eY+CRi5L3KTz6T1iTPH0JHPopcjjP9/w56QSR mFOyDnT4kL8SK0kcmZfuCI5DEzTZIKhV0ZLY86CbRy5MTAvRYg2jyD3nRB+1KQMljFmxxN uBhWm4wX8uEOPpThn2doKhLLMOPW30h8am0LwIHF1CG7E/J+UMt/ekC2O69sU1N3QggsF/ DhnCujEEEcDm3P6wAnSZjbAY4LO+DoNrdND34Crt+X8K4tKlXgOD29gxVOs+eymuknzv2t VVmw4crMqz3+PnXdzkwdHmH2bpJMxp5XG3UzGil+eTIjStfGjZKGBpPbOj2Q5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1686171873; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references:dkim-signature; bh=GNnQmH+wS+zURx3eyS+tueWtQk84sc6MMvTdEAlLPgk=; b=i6d5PtONtLMGQMbAuvpFETAKfGOEEczPydFUlSmgb2G+VN33UAApUHTf0apf7BHnDZpNp1 w+AGNVBvivDK8wlLL3sYnq3XcYB9Ed6A5vpiwLylWwWaP+yQbbjzkkBTKQWCvXAMwc9c14 Jcn2httvqCwlrgIP+ixsMG7LL7zpyjPRSNeSSPSaeiX/iT8SaYfKDDsYW8OGC1su6fDBF6 cKHi6sqtYEcsnW0/KJ+Epnk9e4cbQk5kWQWzqg4OjGdi8seG6g3vGbRar5BfIsrk0Iphr+ RwXNbO30mDzpQt3SUvaPnLwxSosDgwTnE2IgevNx2OraZBsqfSDwDyoa2rt6Ig== ARC-Authentication-Results: i=1; rspamd-6f5cfd578c-4pvfv; auth=pass smtp.auth=dreamhost smtp.mailfrom=kjlx@templeofstupid.com X-Sender-Id: dreamhost|x-authsender|kjlx@templeofstupid.com X-MC-Relay: Good X-MailChannels-SenderId: dreamhost|x-authsender|kjlx@templeofstupid.com X-MailChannels-Auth-Id: dreamhost X-Shrill-Tart: 2cdad1392b8c6c89_1686171873837_2066418381 X-MC-Loop-Signature: 1686171873837:230062419 X-MC-Ingress-Time: 1686171873837 Received: from pdx1-sub0-mail-a233.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.103.24.122 (trex/6.8.1); Wed, 07 Jun 2023 21:04:33 +0000 Received: from kmjvbox (c-73-93-64-36.hsd1.ca.comcast.net [73.93.64.36]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kjlx@templeofstupid.com) by pdx1-sub0-mail-a233.dreamhost.com (Postfix) with ESMTPSA id 4Qc0G86Xvpzl7 for ; Wed, 7 Jun 2023 14:04:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=templeofstupid.com; s=dreamhost; t=1686171872; bh=GNnQmH+wS+zURx3eyS+tueWtQk84sc6MMvTdEAlLPgk=; h=Date:From:To:Cc:Subject:Content-Type; b=S9bzB4RJPOCOTOBe1eHyTI2ybvqkq7haGr0inpIci+G56RBFJf1PH6YsHOAlTxm0N qB15gt4jUq4eDHjdp9QECico3dubCY4Lmd5qPH20vn8Io3UlzN+0xHouAGzOZy41CS f/BbPxLP8Ea87E2RvSCJ3ehO1sNJ1Tfml7i+ckzM= Received: from johansen (uid 1000) (envelope-from kjlx@templeofstupid.com) id e005f by kmjvbox (DragonFly Mail Agent v0.12); Wed, 07 Jun 2023 14:04:31 -0700 Date: Wed, 7 Jun 2023 14:04:31 -0700 From: Krister Johansen To: bpf@vger.kernel.org Cc: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Mykola Lysenko , Shuah Khan , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH bpf v2 2/2] bpf: ensure main program has an extable Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When bpf subprograms are in use, the main program is not jit'd after the subprograms because jit_subprogs sets a value for prog->bpf_func upon success. Subsequent calls to the JIT are bypassed when this value is non-NULL. This leads to a situation where the main program and its func[0] counterpart are both in the bpf kallsyms tree, but only func[0] has an extable. Extables are only created during JIT. Now there are two nearly identical program ksym entries in the tree, but only one has an extable. Depending upon how the entries are placed, there's a chance that a fault will call search_extable on the aux with the NULL entry. Since jit_subprogs already copies state from func[0] to the main program, include the extable pointer in this state duplication. The alternative is to skip adding the main program to the bpf_kallsyms table, but that would mean adding a check for subprograms into the middle of bpf_prog_load. Cc: stable@vger.kernel.org Fixes: 1c2a088a6626 ("bpf: x64: add JIT support for multi-function programs") Signed-off-by: Krister Johansen --- kernel/bpf/verifier.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 5871aa78d01a..d6939db9fbf9 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -17242,6 +17242,7 @@ static int jit_subprogs(struct bpf_verifier_env *env) prog->jited = 1; prog->bpf_func = func[0]->bpf_func; prog->jited_len = func[0]->jited_len; + prog->aux->extable = func[0]->aux->extable; prog->aux->func = func; prog->aux->func_cnt = env->subprog_cnt; bpf_prog_jit_attempt_done(prog); -- 2.25.1