From patchwork Sun Apr 8 15:00:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 896036 X-Patchwork-Delegate: pablo@netfilter.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.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=netfilter-devel-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="CJ/29tlc"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40JxSX62BDz9s31 for ; Mon, 9 Apr 2018 01:00:28 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751799AbeDHPA2 (ORCPT ); Sun, 8 Apr 2018 11:00:28 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:45528 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751631AbeDHPA1 (ORCPT ); Sun, 8 Apr 2018 11:00:27 -0400 Received: by mail-pf0-f193.google.com with SMTP id l27so4172676pfk.12 for ; Sun, 08 Apr 2018 08:00:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=wPRJRUEy2GYxKdj4GPggXdGF00aOafb+MM9HMlatCpA=; b=CJ/29tlcPIkBsgqZE3y4ZYW82N+g5ZVZPPsaoeT+pp+TA9M/KckpZ0m31p8pKtClum mPkj+DeSuoVCMPH0MSFsYITsl3AeQGE+5m5ugohUn5brw9O3hHoeZGK12iZhFPbnNksk ZsAVOBXD8oSKzrTArgkwdT9cgQqt7VY35dQVQIRmphZ184MpwWFnBMUV8ZG+8wJl0KZb ae/b4zpIKLvc2eBftBePNu/iphfQRO6A0abm+SHdGpwp0LB5yAemjpRyJa+aLp9j8efn pnehS4SSX9Ygv/v/q7VHpyME0zuxvqBTZfgg8+aG99gmaUCNlYbk+ZUHSL8yigZtdn99 +hUw== 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; bh=wPRJRUEy2GYxKdj4GPggXdGF00aOafb+MM9HMlatCpA=; b=GK2rTEmMnm8nn9SJGYXiApNp3/i1XRQC856BJ32yRqykVxvlngvSkR6PkTXnOMlG95 mCspatu/7pr+FDCBKIQzcHjfWr/EY+Epi7lwD99QdwqL84q0JawPAZFtbVAA9cSpat9Q ZvfvRn42Onv1afV/k/RnqJPyYcoSZkRWkcfFGLSkYpLXoW5KZ2R2V7/wZBFUQm6ayJVy MweMZEoWVrHjXM4hnOUzVqpml2LMgxk1mf+oYZ8A6wZlnltiOetr5e5sIua7ifN/zm0W RUx5FK+nAw4vKu8irdVusYfEcpl0ZKjxo1mFRCoxloFYa5SM3gGwMj2V60jU4/Xxt2du PZlQ== X-Gm-Message-State: ALQs6tCGkP3QTm+/NArqfGk/MgUvZ8XD39NKIxhRGa8xKFxzXNqgM0UV 7g263bNOSqlN5LQqg717mx4= X-Google-Smtp-Source: AIpwx4/A1atQAQTMwxMjY+xhBPp3mSAnVK54r31RbRqtzi9yero+dmZivK48ah4sji8uajylofjJSA== X-Received: by 10.101.72.133 with SMTP id n5mr582672pgs.390.1523199627257; Sun, 08 Apr 2018 08:00:27 -0700 (PDT) Received: from ap-To-be-filled-by-O-E-M.8.8.8.8 ([125.130.197.10]) by smtp.gmail.com with ESMTPSA id k78sm30484957pfk.111.2018.04.08.08.00.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 08 Apr 2018 08:00:26 -0700 (PDT) From: Taehee Yoo To: pablo@netfilter.org, netfilter-devel@vger.kernel.org Cc: ap420073@gmail.com Subject: [PATCH nf-next] netfilter: ebtables: add ebt_free_table_info function Date: Mon, 9 Apr 2018 00:00:21 +0900 Message-Id: <20180408150021.24954-1-ap420073@gmail.com> X-Mailer: git-send-email 2.9.3 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org A ebt_free_table_info frees all of chainstacks. It similar to xt_free_table_info. this inline function reduces code line. Signed-off-by: Taehee Yoo --- net/bridge/netfilter/ebtables.c | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c index b176d67..feb963c 100644 --- a/net/bridge/netfilter/ebtables.c +++ b/net/bridge/netfilter/ebtables.c @@ -343,6 +343,16 @@ find_table_lock(struct net *net, const char *name, int *error, "ebtable_", error, mutex); } +static inline void ebt_free_table_info(struct ebt_table_info *info) +{ + int i; + + if (info->chainstack) { + for_each_possible_cpu(i) + vfree(info->chainstack[i]); + vfree(info->chainstack); + } +} static inline int ebt_check_match(struct ebt_entry_match *m, struct xt_mtchk_param *par, unsigned int *cnt) @@ -975,7 +985,7 @@ static void get_counters(const struct ebt_counter *oldcounters, static int do_replace_finish(struct net *net, struct ebt_replace *repl, struct ebt_table_info *newinfo) { - int ret, i; + int ret; struct ebt_counter *counterstmp = NULL; /* used to be able to unlock earlier */ struct ebt_table_info *table; @@ -1051,13 +1061,8 @@ static int do_replace_finish(struct net *net, struct ebt_replace *repl, ebt_cleanup_entry, net, NULL); vfree(table->entries); - if (table->chainstack) { - for_each_possible_cpu(i) - vfree(table->chainstack[i]); - vfree(table->chainstack); - } + ebt_free_table_info(table); vfree(table); - vfree(counterstmp); #ifdef CONFIG_AUDIT @@ -1078,11 +1083,7 @@ static int do_replace_finish(struct net *net, struct ebt_replace *repl, free_counterstmp: vfree(counterstmp); /* can be initialized in translate_table() */ - if (newinfo->chainstack) { - for_each_possible_cpu(i) - vfree(newinfo->chainstack[i]); - vfree(newinfo->chainstack); - } + ebt_free_table_info(newinfo); return ret; } @@ -1147,8 +1148,6 @@ static int do_replace(struct net *net, const void __user *user, static void __ebt_unregister_table(struct net *net, struct ebt_table *table) { - int i; - mutex_lock(&ebt_mutex); list_del(&table->list); mutex_unlock(&ebt_mutex); @@ -1157,11 +1156,7 @@ static void __ebt_unregister_table(struct net *net, struct ebt_table *table) if (table->private->nentries) module_put(table->me); vfree(table->private->entries); - if (table->private->chainstack) { - for_each_possible_cpu(i) - vfree(table->private->chainstack[i]); - vfree(table->private->chainstack); - } + ebt_free_table_info(table->private); vfree(table->private); kfree(table); } @@ -1263,11 +1258,7 @@ int ebt_register_table(struct net *net, const struct ebt_table *input_table, free_unlock: mutex_unlock(&ebt_mutex); free_chainstack: - if (newinfo->chainstack) { - for_each_possible_cpu(i) - vfree(newinfo->chainstack[i]); - vfree(newinfo->chainstack); - } + ebt_free_table_info(newinfo); vfree(newinfo->entries); free_newinfo: vfree(newinfo);