chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c3ebdce
)
networkd: fix a couple of memory leaks
author
Lennart Poettering
<lennart@poettering.net>
Mon, 24 Mar 2014 22:45:33 +0000
(23:45 +0100)
committer
Lennart Poettering
<lennart@poettering.net>
Mon, 24 Mar 2014 22:46:13 +0000
(23:46 +0100)
src/libsystemd/sd-event/sd-event.c
patch
|
blob
|
history
src/libsystemd/sd-rtnl/sd-rtnl.c
patch
|
blob
|
history
src/network/networkd-netdev.c
patch
|
blob
|
history
src/network/networkd-network.c
patch
|
blob
|
history
diff --git
a/src/libsystemd/sd-event/sd-event.c
b/src/libsystemd/sd-event/sd-event.c
index 4552f4dad6994b3c94168adc0b7fbaaf55c76058..a4b67431ef66ffb97cb17a6afb065d6aa898ebf1 100644
(file)
--- a/
src/libsystemd/sd-event/sd-event.c
+++ b/
src/libsystemd/sd-event/sd-event.c
@@
-2170,7
+2170,7
@@
_public_ int sd_event_run(sd_event *e, uint64_t timeout) {
r = flush_timer(e, e->boottime_alarm.fd, ev_queue[i].events, &e->boottime_alarm.next);
else if (ev_queue[i].data.ptr == INT_TO_PTR(SOURCE_SIGNAL))
r = process_signal(e, ev_queue[i].events);
r = flush_timer(e, e->boottime_alarm.fd, ev_queue[i].events, &e->boottime_alarm.next);
else if (ev_queue[i].data.ptr == INT_TO_PTR(SOURCE_SIGNAL))
r = process_signal(e, ev_queue[i].events);
- else if (ev_queue[i].data.ptr ==
INT_TO_PTR(SOURCE_WATCHDOG))
+ else if (ev_queue[i].data.ptr == INT_TO_PTR(SOURCE_WATCHDOG))
r = flush_timer(e, e->watchdog_fd, ev_queue[i].events, NULL);
else
r = process_io(e, ev_queue[i].data.ptr, ev_queue[i].events);
r = flush_timer(e, e->watchdog_fd, ev_queue[i].events, NULL);
else
r = process_io(e, ev_queue[i].data.ptr, ev_queue[i].events);
diff --git
a/src/libsystemd/sd-rtnl/sd-rtnl.c
b/src/libsystemd/sd-rtnl/sd-rtnl.c
index 551e95b592d87eb48a3e34a21cb3ed80f13e29d4..695a2daccf28a850c22bee911dc8192a29953b33 100644
(file)
--- a/
src/libsystemd/sd-rtnl/sd-rtnl.c
+++ b/
src/libsystemd/sd-rtnl/sd-rtnl.c
@@
-178,6
+178,12
@@
sd_rtnl *sd_rtnl_unref(sd_rtnl *rtnl) {
}
safe_close(rtnl->fd);
}
safe_close(rtnl->fd);
+
+ sd_event_source_unref(rtnl->io_event_source);
+ sd_event_source_unref(rtnl->time_event_source);
+ sd_event_source_unref(rtnl->exit_event_source);
+ sd_event_unref(rtnl->event);
+
free(rtnl);
return NULL;
free(rtnl);
return NULL;
diff --git
a/src/network/networkd-netdev.c
b/src/network/networkd-netdev.c
index cdf07ad704ad204797edf7beb0275b60170b69ba..e333c47b1f724659b63885c0ae82f8e86f8b6ebf 100644
(file)
--- a/
src/network/networkd-netdev.c
+++ b/
src/network/networkd-netdev.c
@@
-67,6
+67,11
@@
void netdev_free(NetDev *netdev) {
free(netdev->description);
free(netdev->name);
free(netdev->description);
free(netdev->name);
+ condition_free_list(netdev->match_host);
+ condition_free_list(netdev->match_virt);
+ condition_free_list(netdev->match_kernel);
+ condition_free_list(netdev->match_arch);
+
free(netdev);
}
free(netdev);
}
diff --git
a/src/network/networkd-network.c
b/src/network/networkd-network.c
index 776a9d3040f75370ef399cb53232c5742feb5a95..47fab4ecb043defad9745664413f6c5573ac8c5d 100644
(file)
--- a/
src/network/networkd-network.c
+++ b/
src/network/networkd-network.c
@@
-176,6
+176,11
@@
void network_free(Network *network) {
if (network->manager && network->manager->networks)
LIST_REMOVE(networks, network->manager->networks, network);
if (network->manager && network->manager->networks)
LIST_REMOVE(networks, network->manager->networks, network);
+ condition_free_list(network->match_host);
+ condition_free_list(network->match_virt);
+ condition_free_list(network->match_kernel);
+ condition_free_list(network->match_arch);
+
free(network);
}
free(network);
}