From: Bartosz Golaszewski Date: Wed, 15 Feb 2017 11:18:03 +0000 (+0100) Subject: module: fix a memory leak X-Git-Tag: v24~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b1982674ae994b6ceda36dbee3fba3b2a6ba10de;p=thirdparty%2Fkmod.git module: fix a memory leak When a module is removed and re-inserted without unrefing, the kmod_file is unconditionally re-opened. This results in a memory and file descriptor leak. Fix it by checking if the file is already open in kmod_module_insert_module(). Signed-off-by: Bartosz Golaszewski --- diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index bf6a8d60..57da0a2d 100644 --- a/libkmod/libkmod-module.c +++ b/libkmod/libkmod-module.c @@ -833,10 +833,12 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod, return -ENOENT; } - mod->file = kmod_file_open(mod->ctx, path); - if (mod->file == NULL) { - err = -errno; - return err; + if (!mod->file) { + mod->file = kmod_file_open(mod->ctx, path); + if (mod->file == NULL) { + err = -errno; + return err; + } } if (kmod_file_get_direct(mod->file)) {