Merge branch 'mlxsw-Fix-ACL-actions-error-condition-handling'
authorDavid S. Miller <davem@davemloft.net>
Fri, 3 Aug 2018 19:28:02 +0000 (12:28 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 Aug 2018 19:28:02 +0000 (12:28 -0700)
commit60a01828f33051feec8bf74f74e980a163d5a208
treeefe603173134e9aa9dda6043038d0d22edf6b454
parentafb41bb039656f0cecb54eeb8b2e2088201295f5
parentcaebd1b389708bf3d0465be829480fc706a68720
Merge branch 'mlxsw-Fix-ACL-actions-error-condition-handling'

Ido Schimmel says:

====================
mlxsw: Fix ACL actions error condition handling

Nir says:

Two issues were lately noticed within mlxsw ACL actions error condition
handling. The first patch deals with conflicting actions such as:

 # tc filter add dev swp49 parent ffff: \
   protocol ip pref 10 flower skip_sw dst_ip 192.168.101.1 \
   action goto chain 100 \
   action mirred egress redirect dev swp4

The second action will never execute, however SW model allows this
configuration, while the mlxsw driver cannot allow for it as it
implements actions in sets of up to three actions per set with a single
termination marking. Conflicting actions create a contradiction over
this single marking and thus cannot be configured. The fix replaces a
misplaced warning with an error code to be returned.

Patches 2-4 fix a condition of duplicate destruction of resources. Some
actions require allocation of specific resource prior to setting the
action itself. On error condition this resource was destroyed twice,
leading to a crash when using mirror action, and to a redundant
destruction in other cases, since for error condition rule destruction
also takes care of resource destruction. In order to fix this state a
symmetry in behavior is added and resource destruction also takes care
of removing the resource from rule's resource list.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>