diff mbox series

ARM: OMAP2+: Fix null pointer dereference and memory leak in omap_soc_device_init

Message ID 20231123145237.609442-1-chentao@kylinos.cn
State New
Headers show
Series ARM: OMAP2+: Fix null pointer dereference and memory leak in omap_soc_device_init | expand

Commit Message

Kunwu Chan Nov. 23, 2023, 2:52 p.m. UTC
kasprintf() returns a pointer to dynamically allocated memory which can
be NULL upon failure. When 'soc_dev_attr->family' is NULL,it'll trigger
the null pointer dereference issue, such as in 'soc_info_show'.

And when 'soc_device_register' fails, it's necessary to release
'soc_dev_attr->family' to avoid memory leaks.

Fixes: 6770b2114325 ("ARM: OMAP2+: Export SoC information to userspace")
Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
---
 arch/arm/mach-omap2/id.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Tony Lindgren Nov. 30, 2023, 11:57 a.m. UTC | #1
* Kunwu Chan <chentao@kylinos.cn> [231123 16:53]:
> kasprintf() returns a pointer to dynamically allocated memory which can
> be NULL upon failure. When 'soc_dev_attr->family' is NULL,it'll trigger
> the null pointer dereference issue, such as in 'soc_info_show'.

Applying into fixes thanks.

Tony
diff mbox series

Patch

diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index 98999aa8cc0c..7f387706368a 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -793,11 +793,16 @@  void __init omap_soc_device_init(void)
 
 	soc_dev_attr->machine  = soc_name;
 	soc_dev_attr->family   = omap_get_family();
+	if (!soc_dev_attr->family) {
+		kfree(soc_dev_attr);
+		return;
+	}
 	soc_dev_attr->revision = soc_rev;
 	soc_dev_attr->custom_attr_group = omap_soc_groups[0];
 
 	soc_dev = soc_device_register(soc_dev_attr);
 	if (IS_ERR(soc_dev)) {
+		kfree(soc_dev_attr->family);
 		kfree(soc_dev_attr);
 		return;
 	}