projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: memory and fd leaks in error counter
[lttng-ust.git]
/
liblttng-ust
/
lttng-ust-comm.c
diff --git
a/liblttng-ust/lttng-ust-comm.c
b/liblttng-ust/lttng-ust-comm.c
index 682992ca3d46fe719a8b22cfb761fd86ea47fa70..8d90e2c367dafae1a88b8f077208a8fb0596e82d 100644
(file)
--- a/
liblttng-ust/lttng-ust-comm.c
+++ b/
liblttng-ust/lttng-ust-comm.c
@@
-1203,6
+1203,7
@@
int handle_message(struct sock_info *sock_info,
&args, sock_info);
else
ret = -ENOSYS;
&args, sock_info);
else
ret = -ENOSYS;
+ free(args.counter.counter_data);
break;
}
case LTTNG_UST_COUNTER_GLOBAL:
break;
}
case LTTNG_UST_COUNTER_GLOBAL:
@@
-1220,6
+1221,16
@@
int handle_message(struct sock_info *sock_info,
&args, sock_info);
else
ret = -ENOSYS;
&args, sock_info);
else
ret = -ENOSYS;
+ if (args.counter_shm.shm_fd >= 0) {
+ int close_ret;
+
+ lttng_ust_lock_fd_tracker();
+ close_ret = close(args.counter_shm.shm_fd);
+ lttng_ust_unlock_fd_tracker();
+ args.counter_shm.shm_fd = -1;
+ if (close_ret)
+ PERROR("close");
+ }
break;
}
case LTTNG_UST_COUNTER_CPU:
break;
}
case LTTNG_UST_COUNTER_CPU:
@@
-1237,6
+1248,16
@@
int handle_message(struct sock_info *sock_info,
&args, sock_info);
else
ret = -ENOSYS;
&args, sock_info);
else
ret = -ENOSYS;
+ if (args.counter_shm.shm_fd >= 0) {
+ int close_ret;
+
+ lttng_ust_lock_fd_tracker();
+ close_ret = close(args.counter_shm.shm_fd);
+ lttng_ust_unlock_fd_tracker();
+ args.counter_shm.shm_fd = -1;
+ if (close_ret)
+ PERROR("close");
+ }
break;
}
case LTTNG_UST_EVENT_NOTIFIER_CREATE:
break;
}
case LTTNG_UST_EVENT_NOTIFIER_CREATE:
This page took
0.023822 seconds
and
4
git commands to generate.