OSDN Git Service

printk: Fix log_buf_copy termination.
authorArve Hjønnevåg <arve@android.com>
Tue, 15 Apr 2008 04:35:25 +0000 (21:35 -0700)
committerIliyan Malchev <malchev@google.com>
Mon, 23 May 2011 22:43:28 +0000 (15:43 -0700)
If idx was non-zero and the log had wrapped, len did not get truncated
to stop at the last byte written to the log.

kernel/printk.c

index ea54a43..a155c43 100644 (file)
@@ -290,8 +290,8 @@ int log_buf_copy(char *dest, int idx, int len)
        if (idx < 0 || idx >= max) {
                ret = -1;
        } else {
-               if (len > max)
-                       len = max;
+               if (len > max - idx)
+                       len = max - idx;
                ret = len;
                idx += (log_end - max);
                while (len-- > 0)