Re: [PATCH nf] netfilter: nf_tables: fix infinite loop when expr is not available

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 05, 2020 at 11:15:36AM +0100, Florian Westphal wrote:
> nft will loop forever if the kernel doesn't support an expression:
> 
> 1. nft_expr_type_get() appends the family specific name to the module list.
> 2. -EAGAIN is returned to nfnetlink, nfnetlink calls abort path.
> 3. abort path sets ->done to true and calls request_module for the
>    expression.
> 4. nfnetlink replays the batch, we end up in nft_expr_type_get() again.
> 5. nft_expr_type_get attempts to append family-specific name. This
>    one already exists on the list, so we continue
> 6. nft_expr_type_get adds the generic expression name to the module
>    list. -EAGAIN is returned, nfnetlink calls abort path.
> 7. abort path encounters the family-specific expression which
>    has 'done' set, so it gets removed.
> 8. abort path requests the generic expression name, sets done to true.
> 9. batch is replayed.
> 
> If the expression could not be loaded, then we will end up back at 1),
> because the family-specific name got removed and the cycle starts again.
> 
> Note that userspace can SIGKILL the nft process to stop the cycle, but
> the desired behaviour is to return an error after the generic expr name
> fails to load the expression.

Applied, thanks Florian.



[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux