[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190614144528.fmmjqdguqlnonpyt@breakpoint.cc>
Date: Fri, 14 Jun 2019 16:45:28 +0200
From: Florian Westphal <fw@...len.de>
To: John Hurley <john.hurley@...ronome.com>
Cc: netdev@...r.kernel.org, davem@...emloft.net, fw@...len.de,
jhs@...atatu.com, simon.horman@...ronome.com,
jakub.kicinski@...ronome.com, oss-drivers@...ronome.com
Subject: Re: [RFC net-next 2/2] net: sched: protect against stack overflow in
TC act_mirred
John Hurley <john.hurley@...ronome.com> wrote:
> TC hooks allow the application of filters and actions to packets at both
> ingress and egress of the network stack. It is possible, with poor
> configuration, that this can produce loops whereby an ingress hook calls
> a mirred egress action that has an egress hook that redirects back to
> the first ingress etc. The TC core classifier protects against loops when
> doing reclassifies but there is no protection against a packet looping
> between multiple hooks and recursively calling act_mirred. This can lead
> to stack overflow panics.
>
> Add a per CPU counter to act_mirred that is incremented for each recursive
> call of the action function when processing a packet. If a limit is passed
> then the packet is dropped and CPU counter reset.
>
> Note that this patch does not protect against loops in TC datapaths. Its
> aim is to prevent stack overflow kernel panics that can be a consequence
> of such loops.
LGTM, thanks.
Powered by blists - more mailing lists