Re: XDP BPF Stack Limit Issues

Christian Deacon <[email protected]>
Newsgroups org.kernel.vger.xdp-newbies
Message-ID <[email protected]>
Thank you for pointing this out Jesper! I'm honestly surprised I didn't 
realize this before.


I've made this change and I'm able to compile the XDP/BPF program 
without any issues now.


Thank you again!

On 12/17/2020 2:50 AM, Jesper Dangaard Brouer wrote:
> I have to look elsewhere[2] to see that:
>   #define MAX_FILTERS 55
>
> Your problem is that you create an array with 55 pointers each 8 bytes
> equal 440 bytes on the stack (max stack is 512).  Why do you need to
> lookup all 55 map elements in a loop before using them?
>
> https://gist.github.com/gamemann/663674924e16286b02a835637912c2a5#file-xdp_fw_ipv6_maps-c-L267
>
>   struct filter *filter[MAX_FILTERS];
>   for (uint8_t i = 0; i < MAX_FILTERS; i++)
>      {
>          key = i;
>          
>          filter[i] = bpf_map_lookup_elem(&filters_map, &key);
>      }
>   [...]
>   for (uint8_t i = 0; i < MAX_FILTERS; i++)
>      {
>          // Check if ID is above 0 (if 0, it's an invalid rule).
>          if (!filter[i] || filter[i]->id < 1)
>    [...]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.