From patchwork Tue Sep 27 13:38:35 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aaron Conole X-Patchwork-Id: 675595 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 3sk2483jSVz9sBr for ; Tue, 27 Sep 2016 23:39:04 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bytheb-org.20150623.gappssmtp.com header.i=@bytheb-org.20150623.gappssmtp.com header.b=rA5mbKsX; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753736AbcI0Niz (ORCPT ); Tue, 27 Sep 2016 09:38:55 -0400 Received: from mail-qt0-f193.google.com ([209.85.216.193]:33852 "EHLO mail-qt0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752826AbcI0Niq (ORCPT ); Tue, 27 Sep 2016 09:38:46 -0400 Received: by mail-qt0-f193.google.com with SMTP id t63so405006qtd.1 for ; Tue, 27 Sep 2016 06:38:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytheb-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=fyQVWJpzbMpWcnRo99JzxLzMU/IKWrDsiPE8vl/08sQ=; b=rA5mbKsX/R6NyJdbaQ8AG0iyXxn76LR7HueiQ77QQ58LbXYGjnTVgeIhfsWucFRkNU 15qMays5J9KxpmVaf/D6xHJXBtrQSLy2rgsAHJsDXWc15jOhkIUB8uvYkri4Ov2/z9cD LCVOmyBCwj2AmscgJor8+Ih7bdWTiyee/Mkt723RT9n8QJiADUN0xmNmAAb7jlC9oli1 xe98Cx98ml4xENKOZV5KUTHX0k0MLqHA1ADwN8cZLKEWN0PQxsdU3FgGCVdfVPYuc4+Q ruhe+vRj6NtEoQuT74pShfFl7zAuewSkv+Tk/kYCMXpG7tmCJKqoxOGnaEyhv3Xt8VVn xpsQ== 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=fyQVWJpzbMpWcnRo99JzxLzMU/IKWrDsiPE8vl/08sQ=; b=PglbJlYi7hEQNqQsBD32rcGVT/tc4d1vXu+K6BIH6ZYVuPCtFi/0BCKchQ9YNh0d4+ MwXzB38izNtyhUPE0EfjDN/Owq7tn8hUTlijNzkyqDpYyDjqLRwZvo2igRCefMInbixU BMvWTECnZOB7ymQjzYIiazUeRSI+AHGzASZWaMOHLRi/0OJHl13kdttOZgnhgihildzR 6XZp1zCgL+0/I/eRm7Zb0TLHkEWyjWWkAKEiUyTdbmhzLy0QlfzX6XUEUZUT7OKydKZw AgyIUuJyO6bDashO2p+teGsgr8zDJte1nn2NA44M6itQKGzEGbI41mIG5vP7gGUEIAzC /UDg== X-Gm-Message-State: AA6/9RnRWo7y39Ii/3PrjgCttJ+VVKtyPDSYhczE6ksY7HKbt32n3BctWGd+KBoqkohsUg== X-Received: by 10.237.53.174 with SMTP id c43mr28216600qte.84.1474983524926; Tue, 27 Sep 2016 06:38:44 -0700 (PDT) Received: from dhcp-25-97.bos.redhat.com (nat-pool-bos-t.redhat.com. [66.187.233.206]) by smtp.gmail.com with ESMTPSA id r5sm1200201qkf.34.2016.09.27.06.38.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 27 Sep 2016 06:38:44 -0700 (PDT) From: Aaron Conole To: netfilter-devel@vger.kernel.org, netdev@vger.kernel.org Cc: Florian Westphal , Pablo Neira Ayuso Subject: [PATCH nf-next v2 2/2] nf_set_hooks_head: acommodate different kconfig Date: Tue, 27 Sep 2016 09:38:35 -0400 Message-Id: <1474983515-4115-3-git-send-email-aconole@bytheb.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1474983515-4115-1-git-send-email-aconole@bytheb.org> References: <1474983515-4115-1-git-send-email-aconole@bytheb.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When CONFIG_NETFILTER_INGRESS is unset (or no), we need to handle the request for registration properly by dropping the hook. This releases the entry during the set. Signed-off-by: Aaron Conole --- net/netfilter/core.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/net/netfilter/core.c b/net/netfilter/core.c index e58e420..61e8a9d 100644 --- a/net/netfilter/core.c +++ b/net/netfilter/core.c @@ -90,10 +90,12 @@ static void nf_set_hooks_head(struct net *net, const struct nf_hook_ops *reg, { switch (reg->pf) { case NFPROTO_NETDEV: +#ifdef CONFIG_NETFILTER_INGRESS /* We already checked in nf_register_net_hook() that this is * used from ingress. */ rcu_assign_pointer(reg->dev->nf_hooks_ingress, entry); +#endif break; default: rcu_assign_pointer(net->nf.hooks[reg->pf][reg->hooknum], @@ -107,10 +109,15 @@ int nf_register_net_hook(struct net *net, const struct nf_hook_ops *reg) struct nf_hook_entry *hooks_entry; struct nf_hook_entry *entry; - if (reg->pf == NFPROTO_NETDEV && - (reg->hooknum != NF_NETDEV_INGRESS || - !reg->dev || dev_net(reg->dev) != net)) - return -EINVAL; + if (reg->pf == NFPROTO_NETDEV) { +#ifndef CONFIG_NETFILTER_INGRESS + if (reg->hooknum == NF_NETDEV_INGRESS) + return -EOPNOTSUPP; +#endif + if (reg->hooknum != NF_NETDEV_INGRESS || + !reg->dev || dev_net(reg->dev) != net) + return -EINVAL; + } entry = kmalloc(sizeof(*entry), GFP_KERNEL); if (!entry)