From mboxrd@z Thu Jan 1 00:00:00 1970 From: Al Viro Subject: Re: [PATCH 2/7] mark root hnode explicitly Date: Fri, 7 Sep 2018 04:04:38 +0100 Message-ID: <20180907030438.GX19965@ZenIV.linux.org.uk> References: <20180905190134.GQ19965@ZenIV.linux.org.uk> <20180905190414.5477-1-viro@ZenIV.linux.org.uk> <20180905190414.5477-2-viro@ZenIV.linux.org.uk> <8d3e140a-eb1b-3aae-d9e7-36d103a54e5e@mojatatu.com> <5689c19a-c4fb-24c1-4594-86f2639faa98@mojatatu.com> <20180906105933.GU19965@ZenIV.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Jamal Hadi Salim , Linux Kernel Network Developers , Jiri Pirko To: Cong Wang Return-path: Received: from zeniv.linux.org.uk ([195.92.253.2]:44856 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725785AbeIGHnT (ORCPT ); Fri, 7 Sep 2018 03:43:19 -0400 Content-Disposition: inline In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: On Thu, Sep 06, 2018 at 07:57:25PM -0700, Cong Wang wrote: > > - if (root_ht == ht) { > > + if (ht->is_root) { > > > What's wrong with comparing pointers with root ht? The fact that there may be more than one tcf_proto sharing tp->data. > > NL_SET_ERR_MSG_MOD(extack, "Not allowed to delete root node"); > > return -EINVAL; > > } > > @@ -795,6 +797,10 @@ static int u32_set_parms(struct net *net, struct tcf_proto *tp, > > NL_SET_ERR_MSG_MOD(extack, "Link hash table not found"); > > return -EINVAL; > > } > > + if (ht_down->is_root) { > > root ht is saved in tp->root, so you can compare ht_down with it too, > if you want. > > If this check is all what you need, you don't need an extra flag. Again, *which* tp? We can trivially check that we are not linking to/deleting our own root, sure. But there's nothing to stop doing the same via another tcf_proto...