[PATCH] trace: Return ENOTCONN instead of EBADF

From: Peter Enderborg
Date: Mon Oct 12 2020 - 04:37:03 EST


When there is no clients listening on event the trace return
EBADF. The file is not a bad file descriptor and to get the
userspace able to do a proper error handling it need a different
error code that separate a bad file descriptor from a empty listening.

Signed-off-by: Peter Enderborg <peter.enderborg@xxxxxxxx>
---
kernel/trace/trace.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index d3e5de717df2..6e592bf736df 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -6651,8 +6651,8 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
event = __trace_buffer_lock_reserve(buffer, TRACE_PRINT, size,
irq_flags, preempt_count());
if (unlikely(!event))
- /* Ring buffer disabled, return as if not open for write */
- return -EBADF;
+ /* Ring buffer disabled, return as if not connected */
+ return -ENOTCONN;

entry = ring_buffer_event_data(event);
entry->ip = _THIS_IP_;
@@ -6731,8 +6731,8 @@ tracing_mark_raw_write(struct file *filp, const char __user *ubuf,
event = __trace_buffer_lock_reserve(buffer, TRACE_RAW_DATA, size,
irq_flags, preempt_count());
if (!event)
- /* Ring buffer disabled, return as if not open for write */
- return -EBADF;
+ /* Ring buffer disabled, return not connected */
+ return -ENOTCONN;

entry = ring_buffer_event_data(event);

--
2.17.1