drivers/md/dm-zoned-metadata.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
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.)
The assigned type is "struct dmz_mblock **" but the returned type will
be "struct dmz_mblk **". These are the same allocation size (pointer
size), but the types do not match. Adjust the allocation type to match
the assignment.
Signed-off-by: Kees Cook <kees@kernel.org>
---
Cc: Alasdair Kergon <agk@redhat.com>
Cc: Mike Snitzer <snitzer@kernel.org>
Cc: Mikulas Patocka <mpatocka@redhat.com>
Cc: <dm-devel@lists.linux.dev>
---
drivers/md/dm-zoned-metadata.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/md/dm-zoned-metadata.c b/drivers/md/dm-zoned-metadata.c
index deff22ecccbb..8934ad20012c 100644
--- a/drivers/md/dm-zoned-metadata.c
+++ b/drivers/md/dm-zoned-metadata.c
@@ -1687,7 +1687,7 @@ static int dmz_load_mapping(struct dmz_metadata *zmd)
/* Metadata block array for the chunk mapping table */
zmd->map_mblk = kcalloc(zmd->nr_map_blocks,
- sizeof(struct dmz_mblk *), GFP_KERNEL);
+ sizeof(*zmd->map_mblk), GFP_KERNEL);
if (!zmd->map_mblk)
return -ENOMEM;
--
2.34.1
Hi I accepted both patches. Just nit-picking - I prefer type name as an argument to the sizeof operator rather than variable name - because when someone needs to find out where variables with a particular type are allocated, it can be easily done with grep if the sizeof operator contains the type name. So I changed your patches so that there are type names. Mikulas On Fri, 25 Apr 2025, 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.) > > The assigned type is "struct dmz_mblock **" but the returned type will > be "struct dmz_mblk **". These are the same allocation size (pointer > size), but the types do not match. Adjust the allocation type to match > the assignment. > > Signed-off-by: Kees Cook <kees@kernel.org> > --- > Cc: Alasdair Kergon <agk@redhat.com> > Cc: Mike Snitzer <snitzer@kernel.org> > Cc: Mikulas Patocka <mpatocka@redhat.com> > Cc: <dm-devel@lists.linux.dev> > --- > drivers/md/dm-zoned-metadata.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/md/dm-zoned-metadata.c b/drivers/md/dm-zoned-metadata.c > index deff22ecccbb..8934ad20012c 100644 > --- a/drivers/md/dm-zoned-metadata.c > +++ b/drivers/md/dm-zoned-metadata.c > @@ -1687,7 +1687,7 @@ static int dmz_load_mapping(struct dmz_metadata *zmd) > > /* Metadata block array for the chunk mapping table */ > zmd->map_mblk = kcalloc(zmd->nr_map_blocks, > - sizeof(struct dmz_mblk *), GFP_KERNEL); > + sizeof(*zmd->map_mblk), GFP_KERNEL); > if (!zmd->map_mblk) > return -ENOMEM; > > -- > 2.34.1 >
On Mon, Apr 28, 2025 at 12:49:53PM +0200, Mikulas Patocka wrote: > I accepted both patches. > > Just nit-picking - I prefer type name as an argument to the sizeof > operator rather than variable name - because when someone needs to find > out where variables with a particular type are allocated, it can be easily > done with grep if the sizeof operator contains the type name. So I changed > your patches so that there are type names. Thanks for the fix-ups! I wanted to check on these patches, though, since I still don't see them in -next and the merge window is expected to open next week. Thanks! -Kees -- Kees Cook
© 2016 - 2026 Red Hat, Inc.