From: Kees Cook <[email protected]> In preparation for making the devm_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 type_c_cfg *", but the converted allocation type would be "const struct type_c_cfg *", as the size was taken from the local "type_c_cfg", which points to const as it comes from of_device_get_match_data(). As there is no general way to remove const qualifiers, take the size from the assignment target instead. No change in allocation size results. Build tested ARCH=x86_64 allmodconfig with GCC 16.2.0: drivers/extcon/extcon-rtk-type-c.o Assisted-by: LLM coccinelle Signed-off-by: Kees Cook <[email protected]> --- Cc: MyungJoo Ham <[email protected]> Cc: Chanwoo Choi <[email protected]> --- drivers/extcon/extcon-rtk-type-c.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/extcon/extcon-rtk-type-c.c b/drivers/extcon/extcon-rtk-type-c.c index 82b60b927e41..da0b3fd3676e 100644 --- a/drivers/extcon/extcon-rtk-type-c.c +++ b/drivers/extcon/extcon-rtk-type-c.c @@ -1368,7 +1368,8 @@ static int extcon_rtk_type_c_probe(struct platform_device *pdev) goto err; } - type_c->type_c_cfg = devm_kzalloc(dev, sizeof(*type_c_cfg), GFP_KERNEL); + type_c->type_c_cfg = devm_kzalloc(dev, sizeof(*type_c->type_c_cfg), + GFP_KERNEL); if (!type_c->type_c_cfg) return -ENOMEM; -- 2.34.1

