Commit e97e1267e9faa6480898a1fc34c8e40d74d702f2

Authored by Alex Elder
Committed by Linus Torvalds
1 parent 23b2899f7f

printk: tweak do_syslog() to match comments

In do_syslog() there's a path used by kmsg_poll() and kmsg_read() that
only needs to know whether there's any data available to read (and not
its size).  These callers only check for non-zero return.  As a
shortcut, do_syslog() returns the difference between what has been
logged and what has been "seen."

The comments say that the "count of records" should be returned but it's
not.  Instead it returns (log_next_idx - syslog_idx), which is a
difference between buffer offsets--and the result could be negative.

The behavior is the same (it'll be zero or not in the same cases), but
the count of records is more meaningful and it matches what the comments
say.  So change the code to return that.

Signed-off-by: Alex Elder <elder@linaro.org>
Cc: Petr Mladek <pmladek@suse.cz>
Cc: Jan Kara <jack@suse.cz>
Cc: Joe Perches <joe@perches.com>
Cc: John Stultz <john.stultz@linaro.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff

kernel/printk/printk.c
... ... @@ -1351,7 +1351,7 @@
1351 1351 * for pending data, not the size; return the count of
1352 1352 * records, not the length.
1353 1353 */
1354   - error = log_next_idx - syslog_idx;
  1354 + error = log_next_seq - syslog_seq;
1355 1355 } else {
1356 1356 u64 seq = syslog_seq;
1357 1357 u32 idx = syslog_idx;