networkd: manager - don't leak kmod context

Also, keep the kmod_new internal to networkd-manager.c
This commit is contained in:
Tom Gundersen 2014-05-12 17:11:13 +02:00
parent 7c8ec321e7
commit 0b44d8c3d7
4 changed files with 7 additions and 22 deletions

View file

@ -353,6 +353,8 @@ int load_module(struct kmod_ctx *ctx, const char *mod_name) {
log_error("Failed to insert '%s': %s", kmod_module_get_name(mod),
strerror(-r));
}
kmod_module_unref(mod);
}
kmod_module_unref_list(modlist);

View file

@ -118,6 +118,10 @@ int manager_new(Manager **ret) {
return -ENOMEM;
}
m->kmod_ctx = kmod_new(NULL, NULL);
if (!m->kmod_ctx)
return -ENOMEM;
m->links = hashmap_new(uint64_hash_func, uint64_compare_func);
if (!m->links)
return -ENOMEM;
@ -144,6 +148,7 @@ void manager_free(Manager *m) {
free(m->state_file);
kmod_unref(m->kmod_ctx);
udev_monitor_unref(m->udev_monitor);
udev_unref(m->udev);
sd_bus_unref(m->bus);
@ -552,18 +557,3 @@ finish:
return r;
}
int manager_init_kmod_ctx(Manager *m) {
struct kmod_ctx *ctx;
assert(m);
ctx = kmod_new(NULL, NULL);
if (!ctx) {
return -ENOMEM;
}
m->kmod_ctx = ctx;
return 0;
}

View file

@ -87,12 +87,6 @@ int main(int argc, char *argv[]) {
goto out;
}
r = manager_init_kmod_ctx(m);
if (r < 0) {
log_error("Could not init kmod context: %s", strerror(-r));
goto out;
}
r = manager_rtnl_enumerate_links(m);
if (r < 0) {
log_error("Could not enumerate links: %s", strerror(-r));

View file

@ -277,7 +277,6 @@ int manager_bus_listen(Manager *m);
int manager_update_resolv_conf(Manager *m);
int manager_save(Manager *m);
int manager_init_kmod_ctx(Manager *m);
DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
#define _cleanup_manager_free_ _cleanup_(manager_freep)