From patchwork Fri Aug 26 18:06:07 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 663208 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3sLTkQ5sjNz9sRB for ; Sat, 27 Aug 2016 04:15:58 +1000 (AEST) 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=dGEqXmSI; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754121AbcHZSPz (ORCPT ); Fri, 26 Aug 2016 14:15:55 -0400 Received: from mail-wm0-f47.google.com ([74.125.82.47]:35759 "EHLO mail-wm0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751547AbcHZSPx (ORCPT ); Fri, 26 Aug 2016 14:15:53 -0400 Received: by mail-wm0-f47.google.com with SMTP id f65so3067239wmi.0 for ; Fri, 26 Aug 2016 11:15:53 -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=TBL0AgVsSpv3EW7lodCRYkmLhyVOCb1kepcWDFPq2rE=; b=dGEqXmSIXVJ8v6Ce2NWKduKNTe335GCD2fkPi0geDXo+Kkr/on30gyF2oogE7biH0f w4fVQbmz7r9nJaIqWpRvtLpUmxUyPxeFKGfe24arxR0rfkNm9NaTfar9CRhsa3Wkdhz1 rkukO9ddd9wWbwbG4L8+8u4/MyIEat42H2kAvdBd0oUVJxf4r1mIac5ePNDCrzAMLU3q cTdC6NOzo3qL/6QhAcNoaTG9NqdMaGMUxeNU33D6LZ2evP5arGXuei7QJiRzymYriSgr MMrADs8yMPui87+Uksk6X93pD5iJWsAB3/6u7i9IV61/1dePfRWrmnVkcuRmN0vlb1bO wTYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=TBL0AgVsSpv3EW7lodCRYkmLhyVOCb1kepcWDFPq2rE=; b=bE2twtuNDat7T8DdOg+Ji09K+iWbfH6I0VXEzTOGleN+QWMzT21DWHQkPH1R1HHF6Z Nnbsii7ptW9IWM2AL0QFsVGgYwU+skHBP3XFQFNlGE58ix2ujHutOzpY4+9KqahzbOnI K77D0eJPPQhFf3YX2IDvW+1gI7jzMght6SzgTMh780/nIMWrKp7kvn1hRDBwnPxH61GI wugvCWOmjXEPanFgGzCEZYE5DgEf8zjZrFEReuQqEt3K/nQGckrt+05hDP0hKfhGaKkm Twnt0qKQKLUxtKWwvA2LRzj/334XHF+YXWv/XLSb9JelQBxX311uyb0HzthNyCYHahmd HiZQ== X-Gm-Message-State: AE9vXwOiV3JzLcLFWuq5MqNbq25K4OFKiVUh7RVHi8W0s4pMb1cBPn0NZk/ATZS1Gk6zmysJ X-Received: by 10.28.56.195 with SMTP id f186mr119271wma.59.1472234874301; Fri, 26 Aug 2016 11:07:54 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com (host-79-78-33-110.static.as9105.net. [79.78.33.110]) by smtp.gmail.com with ESMTPSA id 4sm184536wmu.2.2016.08.26.11.07.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 26 Aug 2016 11:07:53 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, dinan.gunawardena@netronome.com, jiri@resnulli.us, john.fastabend@gmail.com, kubakici@wp.pl, Jakub Kicinski Subject: [RFCv2 08/16] bpf: export bpf_prog_clone functions Date: Fri, 26 Aug 2016 19:06:07 +0100 Message-Id: <1472234775-29453-9-git-send-email-jakub.kicinski@netronome.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1472234775-29453-1-git-send-email-jakub.kicinski@netronome.com> References: <1472234775-29453-1-git-send-email-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Export bpf_prog_clone_create() and bpf_prog_clone_free(). Signed-off-by: Jakub Kicinski --- include/linux/bpf.h | 4 ++++ kernel/bpf/core.c | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/linux/bpf.h b/include/linux/bpf.h index 11134238417d..39f32c5ad445 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -319,4 +319,8 @@ extern const struct bpf_func_proto bpf_get_stackid_proto; void bpf_user_rnd_init_once(void); u64 bpf_user_rnd_u32(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5); +struct bpf_prog *bpf_prog_clone_create(struct bpf_prog *fp_other, + gfp_t gfp_extra_flags); +void bpf_prog_clone_free(struct bpf_prog *fp); + #endif /* _LINUX_BPF_H */ diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index 03fd23d4d587..c6e7ed9b6a24 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -351,8 +351,8 @@ out: return to - to_buff; } -static struct bpf_prog *bpf_prog_clone_create(struct bpf_prog *fp_other, - gfp_t gfp_extra_flags) +struct bpf_prog *bpf_prog_clone_create(struct bpf_prog *fp_other, + gfp_t gfp_extra_flags) { gfp_t gfp_flags = GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO | gfp_extra_flags; @@ -371,8 +371,9 @@ static struct bpf_prog *bpf_prog_clone_create(struct bpf_prog *fp_other, return fp; } +EXPORT_SYMBOL_GPL(bpf_prog_clone_create); -static void bpf_prog_clone_free(struct bpf_prog *fp) +void bpf_prog_clone_free(struct bpf_prog *fp) { /* aux was stolen by the other clone, so we cannot free * it from this path! It will be freed eventually by the @@ -384,6 +385,7 @@ static void bpf_prog_clone_free(struct bpf_prog *fp) fp->aux = NULL; __bpf_prog_free(fp); } +EXPORT_SYMBOL_GPL(bpf_prog_clone_free); void bpf_jit_prog_release_other(struct bpf_prog *fp, struct bpf_prog *fp_other) {