• Arnd Bergmann's avatar
    flow_dissector: work around stack frame size warning · 0af413bd
    Arnd Bergmann authored
    The fl_flow_key structure is around 500 bytes, so having two of them
    on the stack in one function now exceeds the warning limit after an
    otherwise correct change:
    
    net/sched/cls_flower.c:298:12: error: stack frame size of 1056 bytes in function 'fl_classify' [-Werror,-Wframe-larger-than=]
    
    I suspect the fl_classify function could be reworked to only have one
    of them on the stack and modify it in place, but I could not work out
    how to do that.
    
    As a somewhat hacky workaround, move one of them into an out-of-line
    function to reduce its scope. This does not necessarily reduce the stack
    usage of the outer function, but at least the second copy is removed
    from the stack during most of it and does not add up to whatever is
    called from there.
    
    I now see 552 bytes of stack usage for fl_classify(), plus 528 bytes
    for fl_mask_lookup().
    
    Fixes: 58cff782 ("flow_dissector: Parse multiple MPLS Label Stack Entries")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
    Acked-by: default avatarGuillaume Nault <gnault@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0af413bd
cls_flower.c 89.9 KB