diff options
author | Matthew Wilcox <mawilcox@microsoft.com> | 2017-11-28 18:36:09 +0300 |
---|---|---|
committer | Matthew Wilcox <mawilcox@microsoft.com> | 2018-02-07 00:41:26 +0300 |
commit | 05af0ebb0810ba3f9669649134b4b4ad42540eba (patch) | |
tree | 88275c5ed31f272f70d0d9f4e1fa2bfb3d69e6bc /net/sched | |
parent | 9ce75499ac140af71f0003322c99b6e58f39dfbe (diff) | |
download | linux-05af0ebb0810ba3f9669649134b4b4ad42540eba.tar.xz |
cls_basic: Convert to use idr_alloc_u32
Use the new helper which saves a temporary variable and a few lines of
code.
Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
Diffstat (limited to 'net/sched')
-rw-r--r-- | net/sched/cls_basic.c | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/net/sched/cls_basic.c b/net/sched/cls_basic.c index 588c635f195e..6b7ab3512f5b 100644 --- a/net/sched/cls_basic.c +++ b/net/sched/cls_basic.c @@ -185,7 +185,6 @@ static int basic_change(struct net *net, struct sk_buff *in_skb, struct nlattr *tb[TCA_BASIC_MAX + 1]; struct basic_filter *fold = (struct basic_filter *) *arg; struct basic_filter *fnew; - unsigned long idr_index; if (tca[TCA_OPTIONS] == NULL) return -EINVAL; @@ -208,21 +207,17 @@ static int basic_change(struct net *net, struct sk_buff *in_skb, if (err < 0) goto errout; - if (handle) { - fnew->handle = handle; - if (!fold) { - err = idr_alloc_ext(&head->handle_idr, fnew, &idr_index, - handle, handle + 1, GFP_KERNEL); - if (err) - goto errout; - } - } else { - err = idr_alloc_ext(&head->handle_idr, fnew, &idr_index, - 1, 0x7FFFFFFF, GFP_KERNEL); - if (err) - goto errout; - fnew->handle = idr_index; + if (!handle) { + handle = 1; + err = idr_alloc_u32(&head->handle_idr, fnew, &handle, + INT_MAX, GFP_KERNEL); + } else if (!fold) { + err = idr_alloc_u32(&head->handle_idr, fnew, &handle, + handle, GFP_KERNEL); } + if (err) + goto errout; + fnew->handle = handle; err = basic_set_parms(net, tp, fnew, base, tb, tca[TCA_RATE], ovr, extack); |