printk: Fix log_buf_copy termination.
Arve Hjønnevåg [Tue, 15 Apr 2008 04:35:25 +0000 (21:35 -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 4f3a648..2a8a61c 100644 (file)
@@ -319,8 +319,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)