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.enderb...@sony.com>
---
 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

Reply via email to