Commit 07c17732 authored by Tetsuo Handa's avatar Tetsuo Handa Committed by Petr Mladek
Browse files

printk: Remove print_prefix() calls with NULL buffer.

We can save lines/size by removing print_prefix() with buf == NULL.
This patch makes no functional change.

Link: http://lkml.kernel.org/r/1544521745-11925-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp


To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Reviewed-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
parent e80c1a9d
Loading
Loading
Loading
Loading
+14 −25
Original line number Original line Diff line number Diff line
@@ -1228,13 +1228,15 @@ static inline void boot_delay_msec(int level)
static bool printk_time = IS_ENABLED(CONFIG_PRINTK_TIME);
static bool printk_time = IS_ENABLED(CONFIG_PRINTK_TIME);
module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);
module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);


static size_t print_syslog(unsigned int level, char *buf)
{
	return sprintf(buf, "<%u>", level);
}

static size_t print_time(u64 ts, char *buf)
static size_t print_time(u64 ts, char *buf)
{
{
	unsigned long rem_nsec = do_div(ts, 1000000000);
	unsigned long rem_nsec = do_div(ts, 1000000000);


	if (!buf)
		return snprintf(NULL, 0, "[%5lu.000000] ", (unsigned long)ts);

	return sprintf(buf, "[%5lu.%06lu] ",
	return sprintf(buf, "[%5lu.%06lu] ",
		       (unsigned long)ts, rem_nsec / 1000);
		       (unsigned long)ts, rem_nsec / 1000);
}
}
@@ -1243,24 +1245,11 @@ static size_t print_prefix(const struct printk_log *msg, bool syslog,
			   bool time, char *buf)
			   bool time, char *buf)
{
{
	size_t len = 0;
	size_t len = 0;
	unsigned int prefix = (msg->facility << 3) | msg->level;

	if (syslog) {
		if (buf) {
			len += sprintf(buf, "<%u>", prefix);
		} else {
			len += 3;
			if (prefix > 999)
				len += 3;
			else if (prefix > 99)
				len += 2;
			else if (prefix > 9)
				len++;
		}
	}


	if (syslog)
		len = print_syslog((msg->facility << 3) | msg->level, buf);
	if (time)
	if (time)
		len += print_time(msg->ts_nsec, buf ? buf + len : NULL);
		len += print_time(msg->ts_nsec, buf + len);
	return len;
	return len;
}
}


@@ -1270,6 +1259,8 @@ static size_t msg_print_text(const struct printk_log *msg, bool syslog,
	const char *text = log_text(msg);
	const char *text = log_text(msg);
	size_t text_size = msg->text_len;
	size_t text_size = msg->text_len;
	size_t len = 0;
	size_t len = 0;
	char prefix[PREFIX_MAX];
	const size_t prefix_len = print_prefix(msg, syslog, time, prefix);


	do {
	do {
		const char *next = memchr(text, '\n', text_size);
		const char *next = memchr(text, '\n', text_size);
@@ -1284,19 +1275,17 @@ static size_t msg_print_text(const struct printk_log *msg, bool syslog,
		}
		}


		if (buf) {
		if (buf) {
			if (print_prefix(msg, syslog, time, NULL) +
			if (prefix_len + text_len + 1 >= size - len)
			    text_len + 1 >= size - len)
				break;
				break;


			len += print_prefix(msg, syslog, time, buf + len);
			memcpy(buf + len, prefix, prefix_len);
			len += prefix_len;
			memcpy(buf + len, text, text_len);
			memcpy(buf + len, text, text_len);
			len += text_len;
			len += text_len;
			buf[len++] = '\n';
			buf[len++] = '\n';
		} else {
		} else {
			/* SYSLOG_ACTION_* buffer size only calculation */
			/* SYSLOG_ACTION_* buffer size only calculation */
			len += print_prefix(msg, syslog, time, NULL);
			len += prefix_len + text_len + 1;
			len += text_len;
			len++;
		}
		}


		text = next;
		text = next;