Eric Dumazet wrote: > [PATCH] netfilter : struct xt_table_info diet > > Instead of using a big array of NR_CPUS entries, we can compute the size > needed at runtime, using nr_cpu_ids > > This should save some ram (especially on David's machines where > NR_CPUS=4096 : > 32 KB can be saved per table, and 64KB for dynamically allocated ones > (because > of slab/slub alignements) ) > > In particular, the 'bootstrap' tables are not any more static (in data > section) but on stack as their size is now very small. > > This also should reduce the size used on stack in compat functions > (get_info() declares an automatic variable, that could be bigger than > kernel > stack size for big NR_CPUS)
I fixed a compilation error with CONFIG_COMPAT and applied it, thanks Eric. One question though: > +#define XT_TABLE_INFO_SZ (offsetof(struct xt_table_info, entries) \ > + + nr_cpu_ids * sizeof(char *)) > /* overflow check */ > - if (tmp.size >= (INT_MAX - sizeof(struct xt_table_info)) / NR_CPUS - > - SMP_CACHE_BYTES) > + if (tmp.size >= INT_MAX / num_possible_cpus()) > return -ENOMEM; We need to make sure offsetof(struct xt_table_info, entries) + nr_cpu_ids * sizeof(char *) doesn't overflow, so why doesn't it use nr_cpu_ids here as well? - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html