From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753405AbdK1Veg (ORCPT ); Tue, 28 Nov 2017 16:34:36 -0500 Received: from bombadil.infradead.org ([65.50.211.133]:59899 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752826AbdK1Vdd (ORCPT ); Tue, 28 Nov 2017 16:33:33 -0500 From: Matthew Wilcox Cc: Matthew Wilcox , Chris Mi , Jiri Pirko , "David S . Miller" , Cong Wang , Jamal Hadi Salim , Daniel Borkmann , Eric Biggers , Lai Jiangshan , Tejun Heo , Rehas Sachdeva , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 12/17] cls_flower: Convert to idr_alloc_u32 Date: Tue, 28 Nov 2017 13:33:07 -0800 Message-Id: <20171128213312.28983-13-willy@infradead.org> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20171128213312.28983-1-willy@infradead.org> References: <20171128213312.28983-1-willy@infradead.org> To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Matthew Wilcox Use the new helper which saves a temporary variable and a few lines of code. Signed-off-by: Matthew Wilcox --- net/sched/cls_flower.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index ec0dc92f6104..77a7a3c883b7 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -858,7 +858,6 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, struct cls_fl_filter *fnew; struct nlattr **tb; struct fl_flow_mask mask = {}; - unsigned long idr_index; int err; if (!tca[TCA_OPTIONS]) @@ -889,21 +888,17 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, goto errout; if (!handle) { - err = idr_alloc_ext(&head->handle_idr, fnew, &idr_index, - 1, 0x80000000, GFP_KERNEL); - if (err) - goto errout; - fnew->handle = idr_index; - } - - /* user specifies a handle and it doesn't exist */ - if (handle && !fold) { - err = idr_alloc_ext(&head->handle_idr, fnew, &idr_index, - handle, handle + 1, GFP_KERNEL); - if (err) - goto errout; - fnew->handle = idr_index; + handle = 1; + err = idr_alloc_u32(&head->handle_idr, fnew, &handle, + INT_MAX, GFP_KERNEL); + } else if (!fold) { + /* user specifies a handle and it doesn't exist */ + err = idr_alloc_u32(&head->handle_idr, fnew, &handle, + handle, GFP_KERNEL); } + if (err) + goto errout; + fnew->handle = handle; if (tb[TCA_FLOWER_FLAGS]) { fnew->flags = nla_get_u32(tb[TCA_FLOWER_FLAGS]); @@ -957,7 +952,6 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, *arg = fnew; if (fold) { - fnew->handle = handle; idr_replace(&head->handle_idr, fnew, fnew->handle); list_replace_rcu(&fold->list, &fnew->list); tcf_unbind_filter(tp, &fold->res); -- 2.15.0