]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'forbid-goto_chain-fallback'
authorDavid S. Miller <davem@davemloft.net>
Tue, 23 Oct 2018 02:42:58 +0000 (19:42 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 23 Oct 2018 02:42:58 +0000 (19:42 -0700)
commit1e869c0e2f8f59d288e98441fd66d241d142033a
tree3f8ec7bf23a3aff1f50523acd41000f852de2e88
parent85cf6926fe6e3e426c60dba36c6007fbb5ba8b0a
parentaa4b347af623905b9f9258dbd6c1ebd8095ee6de
Merge branch 'forbid-goto_chain-fallback'

Davide Caratti says:

====================
net/sched: forbid 'goto_chain' on fallback actions

the following command:

 # tc actions add action police rate 1mbit burst 1k conform-exceed \
 > pass / goto chain 42

generates a NULL pointer dereference when packets exceed the configured
rate. Similarly, the following command:

 # tc actions add action pass random determ goto chain 42 2

makes the kernel crash with NULL dereference when the first packet does
not match the 'pass' action.

gact and police allow users to specify a fallback control action, that is
stored in the action private data. 'goto chain x' never worked for these
cases, since a->goto_chain handle was never initialized. There is only one
goto_chain handle per TC action, and it is designed to be non-NULL only if
tcf_action contains a 'goto chain' command. So, let's forbid 'goto chain'
on fallback actions.

Patch 1/4 and 2/4 change the .init() functions of police and gact, to let
them return an error when users try to set 'goto chain x' in the fallback
action. Patch 3/4 and 4/4 add TDC selftest coverage to this new behavior.
====================

Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>