* - Takes instrumentation source specific arguments.
*/
+#include <asm/barrier.h>
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/anon_inodes.h>
#include <ringbuffer/frontend.h>
#include <wrapper/compiler_attributes.h>
#include <wrapper/poll.h>
-#include <wrapper/file.h>
#include <wrapper/kref.h>
-#include <wrapper/barrier.h>
#include <lttng/string-utils.h>
#include <lttng/abi.h>
#include <lttng/abi-old.h>
session = lttng_session_create();
if (!session)
return -ENOMEM;
- session_fd = lttng_get_unused_fd();
+ session_fd = get_unused_fd_flags(0);
if (session_fd < 0) {
ret = session_fd;
goto fd_error;
if (!event_notifier_group)
return -ENOMEM;
- event_notifier_group_fd = lttng_get_unused_fd();
+ event_notifier_group_fd = get_unused_fd_flags(0);
if (event_notifier_group_fd < 0) {
ret = event_notifier_group_fd;
goto fd_error;
struct file *tracepoint_list_file;
int file_fd, ret;
- file_fd = lttng_get_unused_fd();
+ file_fd = get_unused_fd_flags(0);
if (file_fd < 0) {
ret = file_fd;
goto fd_error;
struct file *syscall_list_file;
int file_fd, ret;
- file_fd = lttng_get_unused_fd();
+ file_fd = get_unused_fd_flags(0);
if (file_fd < 0) {
ret = file_fd;
goto fd_error;
int chan_fd;
int ret = 0;
- chan_fd = lttng_get_unused_fd();
+ chan_fd = get_unused_fd_flags(0);
if (chan_fd < 0) {
ret = chan_fd;
goto fd_error;
if (validate_zeroed_padding(local_counter_read.padding,
sizeof(local_counter_read.padding)))
return -EINVAL;
+ if (local_counter_read.index.number_dimensions > LTTNG_KERNEL_ABI_COUNTER_DIMENSION_MAX)
+ return -EINVAL;
/* Cast all indexes into size_t. */
for (i = 0; i < local_counter_read.index.number_dimensions; i++)
if (validate_zeroed_padding(local_counter_aggregate.padding,
sizeof(local_counter_aggregate.padding)))
return -EINVAL;
+ if (local_counter_aggregate.index.number_dimensions > LTTNG_KERNEL_ABI_COUNTER_DIMENSION_MAX)
+ return -EINVAL;
/* Cast all indexes into size_t. */
for (i = 0; i < local_counter_aggregate.index.number_dimensions; i++)
if (validate_zeroed_padding(local_counter_clear.padding,
sizeof(local_counter_clear.padding)))
return -EINVAL;
+ if (local_counter_clear.index.number_dimensions > LTTNG_KERNEL_ABI_COUNTER_DIMENSION_MAX)
+ return -EINVAL;
/* Cast all indexes into size_t. */
for (i = 0; i < local_counter_clear.index.number_dimensions; i++)
return lttng_kernel_counter_clear(counter, indexes);
}
default:
- WARN_ON_ONCE(1);
return -ENOSYS;
}
}
/* Finish copy of previous record */
if (*ppos != 0) {
- if (read_count < count) {
+ if (count != 0) {
len = chan->iter.len_left;
read_offset = *ppos;
goto skip_get_next;
chan->iter.len_left = 0;
put_record:
- lib_ring_buffer_put_current_record(buf);
+ if (*ppos == 0)
+ lib_ring_buffer_put_current_record(buf);
return read_count;
}
int stream_fd, ret;
struct file *stream_file;
- stream_fd = lttng_get_unused_fd();
+ stream_fd = get_unused_fd_flags(0);
if (stream_fd < 0) {
ret = stream_fd;
goto fd_error;
return -EINVAL;
}
- event_fd = lttng_get_unused_fd();
+ event_fd = get_unused_fd_flags(0);
if (event_fd < 0) {
ret = event_fd;
goto fd_error;
* will stay invariant for the rest of the session.
*/
event = lttng_kernel_event_create(&event_enabler->parent, NULL);
- WARN_ON_ONCE(!event);
+ WARN_ON_ONCE(IS_ERR(event));
lttng_event_enabler_destroy(&event_enabler->parent);
if (IS_ERR(event)) {
ret = PTR_ERR(event);
event_notifier_param->event.name[LTTNG_KERNEL_ABI_SYM_NAME_LEN - 1] = '\0';
- event_notifier_fd = lttng_get_unused_fd();
+ event_notifier_fd = get_unused_fd_flags(0);
if (event_notifier_fd < 0) {
ret = event_notifier_fd;
goto fd_error;
goto event_notifier_error;
}
event = lttng_kernel_event_create(&event_notifier_enabler->parent, NULL);
- WARN_ON_ONCE(!event);
+ WARN_ON_ONCE(IS_ERR(event));
lttng_event_enabler_destroy(&event_notifier_enabler->parent);
if (IS_ERR(event)) {
ret = PTR_ERR(event);
goto fd_error;
}
- counter_fd = lttng_get_unused_fd();
+ counter_fd = get_unused_fd_flags(0);
if (counter_fd < 0) {
ret = counter_fd;
goto fd_error;
* in record_error. Ensures the counter is created and the
* error_counter_len is set before they are used.
*/
- lttng_smp_store_release(&event_notifier_group->error_counter, counter);
+ smp_store_release(&event_notifier_group->error_counter, counter);
counter->file = counter_file;
counter->owner = event_notifier_group->file;