In module_add_modinfo_attrs() if sysfs_create_file() fails
on the first iteration of the loop (so i = 0), we forget to
free the modinfo_attrs.
Fixes: bc6f2a757d52 ("kernel/module: Fix mem leak in module_add_modinfo_attrs")
Signed-off-by: YueHaibing <[email protected]>
---
kernel/module.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/module.c b/kernel/module.c
index c3770b2..8ec670e 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1784,6 +1784,8 @@ static int module_add_modinfo_attrs(struct module *mod)
error_out:
if (i > 0)
module_remove_modinfo_attrs(mod, --i);
+ else
+ kfree(mod->modinfo_attrs);
return error;
}
--
2.7.4
On Sat, 28 Dec 2019, YueHaibing wrote:
> In module_add_modinfo_attrs() if sysfs_create_file() fails
> on the first iteration of the loop (so i = 0), we forget to
> free the modinfo_attrs.
>
> Fixes: bc6f2a757d52 ("kernel/module: Fix mem leak in module_add_modinfo_attrs")
> Signed-off-by: YueHaibing <[email protected]>
Reviewed-by: Miroslav Benes <[email protected]>
M
+++ YueHaibing [28/12/19 19:54 +0800]:
>In module_add_modinfo_attrs() if sysfs_create_file() fails
>on the first iteration of the loop (so i = 0), we forget to
>free the modinfo_attrs.
>
>Fixes: bc6f2a757d52 ("kernel/module: Fix mem leak in module_add_modinfo_attrs")
>Signed-off-by: YueHaibing <[email protected]>
Applied, thanks!
Jessica
>---
> kernel/module.c | 2 ++
> 1 file changed, 2 insertions(+)
>
>diff --git a/kernel/module.c b/kernel/module.c
>index c3770b2..8ec670e 100644
>--- a/kernel/module.c
>+++ b/kernel/module.c
>@@ -1784,6 +1784,8 @@ static int module_add_modinfo_attrs(struct module *mod)
> error_out:
> if (i > 0)
> module_remove_modinfo_attrs(mod, --i);
>+ else
>+ kfree(mod->modinfo_attrs);
> return error;
> }
>
>--
>2.7.4
>
>