Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp774334ybl; Wed, 11 Dec 2019 07:19:33 -0800 (PST) X-Google-Smtp-Source: APXvYqxbOwlk1lte8le6LnzPjscONMnjA7itPJXnCLAUA8SILcS7KkHmjpYbxYOTT8F40Ccav0ed X-Received: by 2002:aca:5117:: with SMTP id f23mr3104483oib.50.1576077573414; Wed, 11 Dec 2019 07:19:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576077573; cv=none; d=google.com; s=arc-20160816; b=EruloSCCn6CfOYzhIgdpokEXmvU4sqUG13EfmdCxkwOUrBPRjVCnY04elJ7l5oK/sp auds3YQnbFiv/A95tySTbRiMhMk3tTDHKJ07qKOlo6Da07SLJ8dnFPierEsuJmresp3U KN/zr+RcelWeq3RdfExa+BOp+/gdRU+KSNeAeimQNnWiAy744Q7WDIOZzYOmDzE8wbPi 72G1/1DDJPeJ79DT6prDA6HYZmWNozaF6g+ya5Uw5RO9Ze40o5z4XaHFYv6+BqjLiw5H NYb+FBjM8ewEWhUMzz8q+Xa+/RV14Nsrg3GwJC6xSriqppl/Ed15nOQYLsvF935P4yc+ WQWA== 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=UP2/cROUmuTKxTMlc8IRvou9mYKqAUmLkku0ZujNKUA=; b=03QX9Pr4iB3PeCVqAaWXPK9wUH4OCwVowmdm8rZc3+yVP/5qQf6hDtsf82GWvpUcm8 BUE6x2VaFfLd34SbZL9Bee0/vfDCWp6CXCfZ+1XDTvWznPiP4vFasp9WITVLR3sP33A/ kHMFTMNCBhTrlQI2Ai1iAzBKQUXeA7YKVNumdEpRV67hBwIWedu9QZ4ACFdGjwQlhgu9 cQRhjzwXLzrG79OqO3EkDpEMsJU9NZOb6hDJl1awjY/EUx7xYCiboeo71G44025ODrCu 6VW6IXJL9aPA2bErJ44s1GTBdYxyJ43VK1p4RKnj/r88G6AeXJRskSY+AxZjz+R03LyK c9mw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="QX/sgV7J"; 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 u21si1192322otq.137.2019.12.11.07.19.19; Wed, 11 Dec 2019 07:19:33 -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="QX/sgV7J"; 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 S1731887AbfLKPSu (ORCPT + 99 others); Wed, 11 Dec 2019 10:18:50 -0500 Received: from mail.kernel.org ([198.145.29.99]:46954 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732148AbfLKPSo (ORCPT ); Wed, 11 Dec 2019 10:18:44 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.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 883BF2073D; Wed, 11 Dec 2019 15:18:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576077524; bh=0Km0hqA+o6jePpaYFJIfYnahtjVcCr5z9KjPvtXxgzc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QX/sgV7J9fVADx5J3f/fkw+c89RopfDka3hjxuYYShcCRn8w4vIUGEoKD0ZQMcp/4 IB29DV0+ksvHT+7mU3y62xUwy0Aw51TJ4xC8MtzwTDV0hpoXZhlh1oIV5w9qa2PCiS DPot9o+mpewMzwjuCSmqtyrG0qWQk5oEszU9Qp4Q= 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 034/243] netfilter: nf_tables: dont use position attribute on rule replacement Date: Wed, 11 Dec 2019 16:03:16 +0100 Message-Id: <20191211150341.560986622@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191211150339.185439726@linuxfoundation.org> References: <20191211150339.185439726@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Florian Westphal [ Upstream commit 447750f281abef547be44fdcfe3bc4447b3115a8 ] Its possible to set both HANDLE and POSITION when replacing a rule. In this case, the rule at POSITION gets replaced using the userspace-provided handle. Rule handles are supposed to be generated by the kernel only. Duplicate handles should be harmless, however better disable this "feature" by only checking for the POSITION attribute on insert operations. Fixes: 5e94846686d0 ("netfilter: nf_tables: add insert operation") Signed-off-by: Florian Westphal Signed-off-by: Pablo Neira Ayuso Signed-off-by: Sasha Levin --- net/netfilter/nf_tables_api.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index ec0f8b5bde0aa..0e1b1f7f4745e 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -2610,17 +2610,14 @@ static int nf_tables_newrule(struct net *net, struct sock *nlsk, if (chain->use == UINT_MAX) return -EOVERFLOW; - } - - if (nla[NFTA_RULE_POSITION]) { - if (!(nlh->nlmsg_flags & NLM_F_CREATE)) - return -EOPNOTSUPP; - pos_handle = be64_to_cpu(nla_get_be64(nla[NFTA_RULE_POSITION])); - old_rule = __nft_rule_lookup(chain, pos_handle); - if (IS_ERR(old_rule)) { - NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_POSITION]); - return PTR_ERR(old_rule); + if (nla[NFTA_RULE_POSITION]) { + pos_handle = be64_to_cpu(nla_get_be64(nla[NFTA_RULE_POSITION])); + old_rule = __nft_rule_lookup(chain, pos_handle); + if (IS_ERR(old_rule)) { + NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_POSITION]); + return PTR_ERR(old_rule); + } } } -- 2.20.1