]> git.baikalelectronics.ru Git - kernel.git/commit
net: mscc: ocelot: return error if VCAP filter is not found
authorXiaoliang Yang <xiaoliang.yang_1@nxp.com>
Tue, 29 Sep 2020 22:27:22 +0000 (01:27 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 30 Sep 2020 01:26:12 +0000 (18:26 -0700)
commit23be45919893f2af8efcf2adabdd9d86064f11f8
tree9ffa138b9c206b54063fcafc4a74fdb0e662522f
parenta4dc79e4f0112ff8cdc9e7c7a3e96d15b8c0470d
net: mscc: ocelot: return error if VCAP filter is not found

Although it doesn't look like it is possible to hit these conditions
from user space, there are 2 separate, but related, issues.

First, the ocelot_vcap_block_get_filter_index function, née
ocelot_ace_rule_get_index_id prior to the 54591138af53 ("net: mscc:
ocelot: generalize the "ACE/ACL" names") rename, does not do what the
author probably intended. If the desired filter entry is not present in
the ACL block, this function returns an index equal to the total number
of filters, instead of -1, which is maybe what was intended, judging
from the curious initialization with -1, and the "++index" idioms.
Either way, none of the callers seems to expect this behavior.

Second issue, the callers don't actually check the return value at all.
So in case the filter is not found in the rule list, propagate the
return code.

So update the callers and also take the opportunity to get rid of the
odd coding idioms that appear to work but don't.

Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mscc/ocelot_vcap.c