idr: introduce idr_for_each_entry_continue_ul()
authorCong Wang <xiyou.wangcong@gmail.com>
Fri, 28 Jun 2019 18:03:42 +0000 (11:03 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 2 Jul 2019 02:15:46 +0000 (19:15 -0700)
commitd39d714969cda5cbda291402c8c6b1fb1047f42e
tree6e8b7f868b4bd79fa2f07df468072dc22b0fdc54
parente33d2b74d805af0e4c8060f41040595ba105a520
idr: introduce idr_for_each_entry_continue_ul()

Similarly, other callers of idr_get_next_ul() suffer the same
overflow bug as they don't handle it properly either.

Introduce idr_for_each_entry_continue_ul() to help these callers
iterate from a given ID.

cls_flower needs more care here because it still has overflow when
does arg->cookie++, we have to fold its nested loops into one
and remove the arg->cookie++.

Fixes: 01683a146999 ("net: sched: refactor flower walk to iterate over idr")
Fixes: 12d6066c3b29 ("net/mlx5: Add flow counters idr")
Reported-by: Li Shuang <shuali@redhat.com>
Cc: Davide Caratti <dcaratti@redhat.com>
Cc: Vlad Buslov <vladbu@mellanox.com>
Cc: Chris Mi <chrism@mellanox.com>
Cc: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Tested-by: Davide Caratti <dcaratti@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx5/core/fs_counters.c
include/linux/idr.h
net/sched/cls_flower.c