[arch/arm/mach-mvebu] Question about kzalloc NULL check in i2c_quirk

Zijie Zhao zzjas98 at gmail.com
Tue Mar 19 20:03:22 PDT 2024


Dear ARM/Marvell maintainers,

We came across an unusual usage of kzalloc in 
arch/arm/mach-mvebu/board-v7.c, function i2c_quirk:

https://elixir.bootlin.com/linux/v6.8/source/arch/arm/mach-mvebu/board-v7.c#L127
```
static void __init i2c_quirk(void)
{
	struct device_node *np;
	u32 dev, rev;

	/*
	 * Only revisons more recent than A0 support the offload
	 * mechanism. We can exit only if we are sure that we can
	 * get the SoC revision and it is more recent than A0.
	 */
	if (mvebu_get_soc_id(&dev, &rev) == 0 && rev > MV78XX0_A0_REV)
		return;

	for_each_compatible_node(np, NULL, "marvell,mv78230-i2c") {
		struct property *new_compat;

		new_compat = kzalloc(sizeof(*new_compat), GFP_KERNEL);

		new_compat->name = kstrdup("compatible", GFP_KERNEL);
		new_compat->length = sizeof("marvell,mv78230-a0-i2c");
		new_compat->value = kstrdup("marvell,mv78230-a0-i2c",
						GFP_KERNEL);

		of_update_property(np, new_compat);
	}
}
```

Should the new_compat be checked against NULL in case kzalloc fails, to 
avoid NULL dereference later in the code?

Please kindly let us know if we missed any key information and this is 
actually intended. We appreciate your information and time! Thanks!

Best,
Zijie



More information about the linux-arm-kernel mailing list