Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

fbdev: arkfb: Cast ics5342_init() allocation type

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 dac_info *" but the returned type will be
"struct ics5342_info *", which has a larger allocation size. This is
by design, as struct ics5342_info contains struct dac_info as its first
member.
(patch slightly modified by Helge Deller)

Signed-off-by: Kees Cook <kees@kernel.org>
Signed-off-by: Helge Deller <deller@gmx.de>

authored by

Kees Cook and committed by
Helge Deller
ede481f6 34fe05cd

+3 -2
+3 -2
drivers/video/fbdev/arkfb.c
··· 431 431 432 432 static struct dac_info * ics5342_init(dac_read_regs_t drr, dac_write_regs_t dwr, void *data) 433 433 { 434 - struct dac_info *info = kzalloc(sizeof(struct ics5342_info), GFP_KERNEL); 434 + struct ics5342_info *ics_info = kzalloc(sizeof(struct ics5342_info), GFP_KERNEL); 435 + struct dac_info *info = &ics_info->dac; 435 436 436 - if (! info) 437 + if (!ics_info) 437 438 return NULL; 438 439 439 440 info->dacops = &ics5342_ops;