Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5617876imu; Mon, 26 Nov 2018 03:04:51 -0800 (PST) X-Google-Smtp-Source: AFSGD/Xu06GLGt+WAiUpZjY2UReXU71njape+VGim97RomaZsJvKpzrFx7WujbBcIwvjtlLVzHNw X-Received: by 2002:a62:e90a:: with SMTP id j10-v6mr8027033pfh.228.1543230291594; Mon, 26 Nov 2018 03:04:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543230291; cv=none; d=google.com; s=arc-20160816; b=V5oyt4/IkXJC6Bdr1ivR32/l1hHspRlJmN0KFyeVMll6RwRyHETUdzW5NuROn/vkKu IX19MW+z//ingKYdMQSr+MIF5z99Z22i2b0hFIoY9sK/KpFlZTLTKHqOVBsWRnSViFf6 s4IZU2tZaDHPXSe8sJ6Zk+0klUmptTKAndYvZo6/hlMQVsOsxOGXBLlV+NGq1VmLBEg2 hgfYV46tRf2g1BEj1Y7lV6KsumQEZTHhmKNfNENiQQGomg8po7KXcgW9en6x/rhit47D pK/SdyeQ9zOyQuqYkG6FIEJW/FH/cdeTO+XYYW0ZVkn2KwjrTfwPz2wlpOFEYm/crMcw iOUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=roZQd/TTZE79rNG6M4tbUbfJ47o9/FPlnONDTGulRdI=; b=WT5GdsdtYhHS+OIr/PWmmtM41vfhuQa9z4CnhKSNtSbdJi7l2dGprWqx+E31/MjPOZ 5VRlI+QXC8XudEBnM1IGkcwf6UksE6UOoNujHXr98oGrbXgsri53CK/gfdfIdTJ3VgQ1 edQftQ3ffBX+kKiCpeCcRyBxP/zO1vOBwT1PeF18XW/ETBoh2yKflMT8Yp79T91wGajJ XHum28ZX0kdW3XyZEemS76QnrYuJLAjBlXCxoJHp7g+mtFqUGOXGXsOuOixQFobqjB6q ZzaTu4c3GOl6j4vxw7jZJhWh7TQdJJAd9hcKmq3t45z4gT3XT6hFDKcAVR5D+Z/X5O5W WrLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="h95qrU/0"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l8si61704530pgr.345.2018.11.26.03.04.36; Mon, 26 Nov 2018 03:04:51 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="h95qrU/0"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730761AbeKZV5R (ORCPT + 99 others); Mon, 26 Nov 2018 16:57:17 -0500 Received: from mail.kernel.org ([198.145.29.99]:41274 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726729AbeKZV5Q (ORCPT ); Mon, 26 Nov 2018 16:57:16 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1E35620645; Mon, 26 Nov 2018 11:03:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1543230210; bh=oyLpCowr0TrPXNrAzakvHfSa1k0dB/Ffo55p6e70qd0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=h95qrU/0vy9JWVY+DTmtjIqZYlxouOypgFlSReRfDQ94CphHVeIz2r3fXaL5uV9fK JkaY5DTNXAHSqCrIKuBcZtsXUSqooHk7uXvhEzE5t1piDPuVNEeIMdNTEKx2gT/Bv+ MIdFXGOH5qT5uOdhRkKJO39k3WDr2tM7TfPz3Y+Q= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Florian Westphal , Pablo Neira Ayuso , Sasha Levin Subject: [PATCH 4.19 050/118] netfilter: nft_compat: ebtables nat table is normal chain type Date: Mon, 26 Nov 2018 11:50:44 +0100 Message-Id: <20181126105102.824844415@linuxfoundation.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181126105059.832485122@linuxfoundation.org> References: <20181126105059.832485122@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit e4844c9c62a0fe47980d6c3d4b7a096a5d755925 ] Unlike ip(6)tables, the ebtables nat table has no special properties. This bug causes 'ebtables -A' to fail when using a target such as 'snat' (ebt_snat target sets ".table = "nat"'). Targets that have no table restrictions work fine. Signed-off-by: Florian Westphal Signed-off-by: Pablo Neira Ayuso Signed-off-by: Sasha Levin --- net/netfilter/nft_compat.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/net/netfilter/nft_compat.c b/net/netfilter/nft_compat.c index 32535eea51b2..ad2fe6a7e47d 100644 --- a/net/netfilter/nft_compat.c +++ b/net/netfilter/nft_compat.c @@ -54,9 +54,11 @@ static bool nft_xt_put(struct nft_xt *xt) return false; } -static int nft_compat_chain_validate_dependency(const char *tablename, - const struct nft_chain *chain) +static int nft_compat_chain_validate_dependency(const struct nft_ctx *ctx, + const char *tablename) { + enum nft_chain_types type = NFT_CHAIN_T_DEFAULT; + const struct nft_chain *chain = ctx->chain; const struct nft_base_chain *basechain; if (!tablename || @@ -64,9 +66,12 @@ static int nft_compat_chain_validate_dependency(const char *tablename, return 0; basechain = nft_base_chain(chain); - if (strcmp(tablename, "nat") == 0 && - basechain->type->type != NFT_CHAIN_T_NAT) - return -EINVAL; + if (strcmp(tablename, "nat") == 0) { + if (ctx->family != NFPROTO_BRIDGE) + type = NFT_CHAIN_T_NAT; + if (basechain->type->type != type) + return -EINVAL; + } return 0; } @@ -323,8 +328,7 @@ static int nft_target_validate(const struct nft_ctx *ctx, if (target->hooks && !(hook_mask & target->hooks)) return -EINVAL; - ret = nft_compat_chain_validate_dependency(target->table, - ctx->chain); + ret = nft_compat_chain_validate_dependency(ctx, target->table); if (ret < 0) return ret; } @@ -570,8 +574,7 @@ static int nft_match_validate(const struct nft_ctx *ctx, if (match->hooks && !(hook_mask & match->hooks)) return -EINVAL; - ret = nft_compat_chain_validate_dependency(match->table, - ctx->chain); + ret = nft_compat_chain_validate_dependency(ctx, match->table); if (ret < 0) return ret; } -- 2.17.1