Re: [PATCH] net: sched: fix handling of singleton qdiscs with qdisc_hash

From: Jiri Kosina
Date: Tue Aug 16 2016 - 10:35:37 EST


On Tue, 16 Aug 2016, Jiri Kosina wrote:

> From: Jiri Kosina <jkosina@xxxxxxx>
>
> qdisc_match_from_root() is now iterating over per-netdevice qdisc
> hashtable instead of going through a linked-list of qdiscs (independently
> on the actual underlying netdev), which used to be the case before the
> switch to hashtable for qdiscs.
>
> For singleton qdiscs, there is no underlying netdev associated though, and
> therefore dumping a singleton qdisc will panic, as qdisc_dev(root) will
> always be NULL.
[ ... snip ... ]
> @@ -1456,6 +1459,10 @@ static int tc_dump_qdisc_root(struct Qdisc *root, struct sk_buff *skb,
> goto done;
> q_idx++;
> }
> +
> + if (!qdisc_dev(root))
> + goto done;
> +

Ok, this will cause default singleton-only devices being missed in the
dump.

I am now working on creating a automation that'd test as many use cases as
possible; will send up a new patch once I have all the known corner cases
covered (including the ingress / clsact dump duplication).

Please drop this one for now, I'll send up an accumulated followup fixes
asap.

Thanks,

--
Jiri Kosina
SUSE Labs