Re: [Patch net-next 4/5] net_sched: forbid setting default qdisc to inappropriate ones
From: David Miller <davem@davemloft.net>
Date: 2015-08-27 22:30:50
From: Cong Wang <redacted> Date: Wed, 26 Aug 2015 15:41:26 -0700
Currently there is no check for if a qdisc is appropriate to be used as the default qdisc. This causes we get no error even we set the default qdisc to an inappropriate one but an error will be shown up later. This is not good. Also, for qdisc's like HTB, kernel will just crash when we use it as default qdisc, because some data structures are not even initialized yet before checking opt == NULL, the cleanup doing ->reset() or ->destroy() on them will just crash. Let's fail as early as we can. Cc: Jamal Hadi Salim <jhs@mojatatu.com> Cc: Stephen Hemminger <stephen@networkplumber.org> Signed-off-by: Cong Wang <redacted>
I don't like this. The situation is that some sophisticated qdiscs can function without explicit parameters, some cannot. That is the problem you need to solve. For example, if "opts" is NULL HTB should use a reasonable set of defaults instead of failing. Furthermore, you can improve the behavior when this happens. When qdisc_create_dflt() returns NULL because ops->init() fails, do something reasonable. I'm not applying this patch series, it papers over the issue rather than actually addressing it properly.