• Vlad Buslov's avatar
    net/sched: flower: fix error handler on replace · fd741f0d
    Vlad Buslov authored
    When replacing a filter (i.e. 'fold' pointer is not NULL) the insertion of
    new filter to idr is postponed until later in code since handle is already
    provided by the user. However, the error handling code in fl_change()
    always assumes that the new filter had been inserted into idr. If error
    handler is reached when replacing existing filter it may remove it from idr
    therefore making it unreachable for delete or dump afterwards. Fix the
    issue by verifying that 'fold' argument wasn't provided by caller before
    calling idr_remove().
    
    Fixes: 08a0063d ("net/sched: flower: Move filter handle initialization earlier")
    Signed-off-by: default avatarVlad Buslov <vladbu@nvidia.com>
    Reviewed-by: default avatarPedro Tammela <pctammela@mojatatu.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    fd741f0d
cls_flower.c 99.2 KB