From patchwork Fri May 4 01:37:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 908408 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="2JTAYCXX"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40cZQL51jRz9s0q for ; Fri, 4 May 2018 11:37:46 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751374AbeEDBho (ORCPT ); Thu, 3 May 2018 21:37:44 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:39245 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751301AbeEDBhj (ORCPT ); Thu, 3 May 2018 21:37:39 -0400 Received: by mail-qt0-f196.google.com with SMTP id f1-v6so25520181qtj.6 for ; Thu, 03 May 2018 18:37:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=xStEFh7UCP2GARl03KpuEoHvGFhUKvnZkLc2DWs26zc=; b=2JTAYCXX/ody3Kkxiuz7eNrjlydR0o290yz8ucjVAMNwQKfE5ZjHtqSGqp3vDlCNwp HIFqQvoEdF1J7V3yxzdszwYXxG87hTJtc7ZvdeQvN/MLD1eobVUbW2ts9CgbIA+OHk+F HS+30gnNz8oTlx6EbiXUEXROVUKTw1y48UIPbVubRO+FEFCsw4jzjDEYu5wfnwOWuadE UXCNe/sIcIRDXmAOqYwGdZC/Ycxs+UXAUGDPADZSocYLCLpPrFLPVyWr6rDo4IM2o1ou QCtRYzut6KJsDiVVFlg/RyQ0xEvVb5OXfLOcwBU73sKFhVVQUSTHEQO+3L1ekxmJeye0 terg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=xStEFh7UCP2GARl03KpuEoHvGFhUKvnZkLc2DWs26zc=; b=TQ3WhMJjY3Os66jrBo3JbljD6sRONwRqTgUl4cDMKupJaJwhos2THC4s+jdGe309SY /z+L58lay9sZnuQwFpSAYcAc0a5KRIJu9Pj/ilsWvmdjGZkhaRHTNzts6fJIqJoJoirf nlsfztbiDHWMGHNncYIHywjvhcrnQydHjHnE21BlkeDBLBhelMxjeIzHJSUFgY4/qnuB DhJu3BQFfNxGyCBwfGtHprbpnRWDQHPKEuJIzr7e4ATAZwCU1gecOJkYf+NBfSgssg1n Vy//L9zm13kyEZ/9hxMq96I0PIliD6HavZCfxS8nkrZ2LnDVs/7cRUKDjtIHOIp19wpS Xzxw== X-Gm-Message-State: ALQs6tBzspXS06gJ3ebAVeak6zfqNKkRYaaK/joeyQIg6LEpoZ1DSQ+N LmztLLu8qd1eqHotGNduiUZdyA== X-Google-Smtp-Source: AB8JxZqM4amM1Bx7EBVMdhPytE5603TQDmbDmLVcNPhdYX/9KmUr8AaR3ihuwiWRPkDszPTfReEVbA== X-Received: by 2002:ac8:347c:: with SMTP id v57-v6mr21672359qtb.219.1525397858496; Thu, 03 May 2018 18:37:38 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id i89sm1866294qkh.76.2018.05.03.18.37.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 May 2018 18:37:38 -0700 (PDT) From: Jakub Kicinski To: alexei.starovoitov@gmail.com, daniel@iogearbox.net Cc: oss-drivers@netronome.com, netdev@vger.kernel.org, Jakub Kicinski Subject: [PATCH bpf-next 04/10] bpf: replace map pointer loads before calling into offloads Date: Thu, 3 May 2018 18:37:11 -0700 Message-Id: <20180504013717.29317-5-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504013717.29317-1-jakub.kicinski@netronome.com> References: <20180504013717.29317-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Offloads may find host map pointers more useful than map fds. Map pointers can be used to identify the map, while fds are only valid within the context of loading process. Jump to skip_full_check on error in case verifier log overflow has to be handled (replace_map_fd_with_map_ptr() prints to the log, driver prep may do that too in the future). Signed-off-by: Jakub Kicinski Reviewed-by: Quentin Monnet Reviewed-by: Jiong Wang --- kernel/bpf/verifier.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 712d8655e916..23ec9efeb91d 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -5712,16 +5712,16 @@ int bpf_check(struct bpf_prog **prog, union bpf_attr *attr) if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)) env->strict_alignment = true; + ret = replace_map_fd_with_map_ptr(env); + if (ret < 0) + goto skip_full_check; + if (bpf_prog_is_dev_bound(env->prog->aux)) { ret = bpf_prog_offload_verifier_prep(env); if (ret) - goto err_unlock; + goto skip_full_check; } - ret = replace_map_fd_with_map_ptr(env); - if (ret < 0) - goto skip_full_check; - env->explored_states = kcalloc(env->prog->len, sizeof(struct bpf_verifier_state_list *), GFP_USER);