John Hurley <john.hur...@netronome.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.

Reply via email to