From: Kees Cook <k...@kernel.org> Date: Mon, 28 Apr 2025 20:52:59 -0700 > On April 28, 2025 5:43:05 PM PDT, Kuniyuki Iwashima <kun...@amazon.com> wrote: > >Thanks for CC me, David. > > > >From: David Ahern <dsah...@kernel.org> > >Date: Mon, 28 Apr 2025 16:50:53 -0600 > >> On 4/25/25 11:05 PM, Kees Cook wrote: > >> > In preparation for making the kmalloc family of allocators type aware, > >> > we need to make sure that the returned type from the allocation matches > >> > the type of the variable being assigned. (Before, the allocator would > >> > always return "void *", which can be implicitly cast to any pointer > >> > type.) > >> > > >> > This was allocating many sizeof(struct hlist_head *) when it actually > >> > wanted sizeof(struct hlist_head). Luckily these are the same size. > >> > Adjust the allocation type to match the assignment. > >> > > >> > Signed-off-by: Kees Cook <k...@kernel.org> > >> > --- > >> > Cc: "David S. Miller" <da...@davemloft.net> > >> > Cc: David Ahern <dsah...@kernel.org> > >> > Cc: Eric Dumazet <eduma...@google.com> > >> > Cc: Jakub Kicinski <k...@kernel.org> > >> > Cc: Paolo Abeni <pab...@redhat.com> > >> > Cc: Simon Horman <ho...@kernel.org> > >> > Cc: <net...@vger.kernel.org> > >> > --- > >> > net/ipv4/fib_semantics.c | 2 +- > >> > 1 file changed, 1 insertion(+), 1 deletion(-) > >> > > >> > diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c > >> > index f68bb9e34c34..37d12b0bc6be 100644 > >> > --- a/net/ipv4/fib_semantics.c > >> > +++ b/net/ipv4/fib_semantics.c > >> > @@ -365,7 +365,7 @@ static struct hlist_head > >> > *fib_info_laddrhash_bucket(const struct net *net, > >> > static struct hlist_head *fib_info_hash_alloc(unsigned int hash_bits) > >> > { > >> > /* The second half is used for prefsrc */ > >> > - return kvcalloc((1 << hash_bits) * 2, sizeof(struct hlist_head > >> > *), > >> > + return kvcalloc((1 << hash_bits) * 2, sizeof(struct hlist_head), > >> > GFP_KERNEL); > >> > } > >> > > >> > >> Reviewed-by: David Ahern <dsah...@kernel.org> > >> > >> Fixes: fa336adc100e ("ipv4: fib: Allocate fib_info_hash[] and > >> fib_info_laddrhash[] by kvcalloc().) > > > >I agree this should target net.git as the last statement > >will be false with LOCKDEP. > > Which will be false with lockdep? Unless I'm missing it, I think hlist_head > is always pointer sized:
Oh sorry, now I'm not sure why I mentioned lockdep... maybe confused with other code :/ > > struct hlist_head { > struct hlist_node *first; > };