printk: Fix log_buf_copy termination.
authorArve Hjønnevåg <arve@android.com>
Tue, 15 Apr 2008 04:35:25 +0000 (21:35 -0700)
committerArve Hjønnevåg <arve@android.com>
Mon, 8 Feb 2010 23:35:53 +0000 (15:35 -0800)
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 448fdc68c8dfe1d513aebea5cf20aeca3c055e48..a2c0a05d4a8592f7d59c16fe97a38f0e2ff20999 100644 (file)
@@ -285,8 +285,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)