logger: flush data from stdio writers under mutex 81/264381/1
authorŁukasz Stelmach <l.stelmach@samsung.com>
Wed, 15 Sep 2021 12:54:18 +0000 (14:54 +0200)
committerŁukasz Stelmach <l.stelmach@samsung.com>
Thu, 16 Sep 2021 20:34:42 +0000 (22:34 +0200)
Operations during flushing logs delivered via stdio need to be performed
with the mutex held.

Change-Id: I4655b0af75172f8f22b797c0caadd28cb4619cf0
Suggested-by: Mateusz Majewski <m.majewski2@samsung.com>
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
kernel/logger.c

index 48dbf4a..202703c 100644 (file)
@@ -806,10 +806,14 @@ static int logger_release(struct inode *ignored, struct file *file)
                kfree(reader);
        } else {
                struct logger_writer *writer = file->private_data;
-
+               struct logger_log *log = writer->log;
                bool from_stdio = writer->tag && writer->prio >= 2;
-               if (from_stdio && writer->b_off > 0)
+
+               if (from_stdio && writer->b_off > 0){
+                       mutex_lock(&log->mutex);
                        flush_thread_data(file);
+                       mutex_unlock(&log->mutex);
+               }
 
                kfree(writer->tag);
                kfree(writer->buffer);