• Xiaoliang Yang's avatar
    net: mscc: ocelot: return error if VCAP filter is not found · ed5672d8
    Xiaoliang Yang authored
    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 aae4e500 ("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: default avatarXiaoliang Yang <xiaoliang.yang_1@nxp.com>
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ed5672d8
ocelot_vcap.c 29.4 KB