You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Revert "printk: create pr_<level> functions"
This reverts commit 874f9c7da9.
Geert Uytterhoeven reports:
"This change seems to have an (unintendent?) side-effect.
Before, pr_*() calls without a trailing newline characters would be
printed with a newline character appended, both on the console and in
the output of the dmesg command.
After this commit, no new line character is appended, and the output
of the next pr_*() call of the same type may be appended, like in:
- Truncating RAM at 0x0000000040000000-0x00000000c0000000 to -0x0000000070000000
- Ignoring RAM at 0x0000000200000000-0x0000000240000000 (!CONFIG_HIGHMEM)
+ Truncating RAM at 0x0000000040000000-0x00000000c0000000 to -0x0000000070000000Ignoring RAM at 0x0000000200000000-0x0000000240000000 (!CONFIG_HIGHMEM)"
Joe Perches says:
"No, that is not intentional.
The newline handling code inside vprintk_emit is a bit involved and
for now I suggest a revert until this has all the same behavior as
earlier"
Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Requested-by: Joe Perches <joe@perches.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
@@ -16,11 +16,9 @@
|
||||
*/
|
||||
#include <linux/percpu.h>
|
||||
|
||||
typedef __printf(2, 0) int (*printk_func_t)(int level, const char *fmt,
|
||||
va_list args);
|
||||
typedef __printf(1, 0) int (*printk_func_t)(const char *fmt, va_list args);
|
||||
|
||||
__printf(2, 0)
|
||||
int vprintk_default(int level, const char *fmt, va_list args);
|
||||
int __printf(1, 0) vprintk_default(const char *fmt, va_list args);
|
||||
|
||||
#ifdef CONFIG_PRINTK_NMI
|
||||
|
||||
@@ -33,10 +31,9 @@ extern raw_spinlock_t logbuf_lock;
|
||||
* via per-CPU variable.
|
||||
*/
|
||||
DECLARE_PER_CPU(printk_func_t, printk_func);
|
||||
__printf(2, 0)
|
||||
static inline int vprintk_func(int level, const char *fmt, va_list args)
|
||||
static inline __printf(1, 0) int vprintk_func(const char *fmt, va_list args)
|
||||
{
|
||||
return this_cpu_read(printk_func)(level, fmt, args);
|
||||
return this_cpu_read(printk_func)(fmt, args);
|
||||
}
|
||||
|
||||
extern atomic_t nmi_message_lost;
|
||||
@@ -47,10 +44,9 @@ static inline int get_nmi_message_lost(void)
|
||||
|
||||
#else /* CONFIG_PRINTK_NMI */
|
||||
|
||||
__printf(2, 0)
|
||||
static inline int vprintk_func(int level, const char *fmt, va_list args)
|
||||
static inline __printf(1, 0) int vprintk_func(const char *fmt, va_list args)
|
||||
{
|
||||
return vprintk_default(level, fmt, args);
|
||||
return vprintk_default(fmt, args);
|
||||
}
|
||||
|
||||
static inline int get_nmi_message_lost(void)
|
||||
|
||||
+2
-11
@@ -58,7 +58,7 @@ static DEFINE_PER_CPU(struct nmi_seq_buf, nmi_print_seq);
|
||||
* one writer running. But the buffer might get flushed from another
|
||||
* CPU, so we need to be careful.
|
||||
*/
|
||||
static int vprintk_nmi(int level, const char *fmt, va_list args)
|
||||
static int vprintk_nmi(const char *fmt, va_list args)
|
||||
{
|
||||
struct nmi_seq_buf *s = this_cpu_ptr(&nmi_print_seq);
|
||||
int add = 0;
|
||||
@@ -79,16 +79,7 @@ again:
|
||||
if (!len)
|
||||
smp_rmb();
|
||||
|
||||
if (level != LOGLEVEL_DEFAULT) {
|
||||
add = snprintf(s->buffer + len, sizeof(s->buffer) - len,
|
||||
KERN_SOH "%c", '0' + level);
|
||||
add += vsnprintf(s->buffer + len + add,
|
||||
sizeof(s->buffer) - len - add,
|
||||
fmt, args);
|
||||
} else {
|
||||
add = vsnprintf(s->buffer + len, sizeof(s->buffer) - len,
|
||||
fmt, args);
|
||||
}
|
||||
add = vsnprintf(s->buffer + len, sizeof(s->buffer) - len, fmt, args);
|
||||
|
||||
/*
|
||||
* Do it once again if the buffer has been flushed in the meantime.
|
||||
|
||||
+3
-22
@@ -1930,26 +1930,7 @@ asmlinkage int printk_emit(int facility, int level,
|
||||
}
|
||||
EXPORT_SYMBOL(printk_emit);
|
||||
|
||||
#define define_pr_level(func, loglevel) \
|
||||
asmlinkage __visible void func(const char *fmt, ...) \
|
||||
{ \
|
||||
va_list args; \
|
||||
\
|
||||
va_start(args, fmt); \
|
||||
vprintk_default(loglevel, fmt, args); \
|
||||
va_end(args); \
|
||||
} \
|
||||
EXPORT_SYMBOL(func)
|
||||
|
||||
define_pr_level(__pr_emerg, LOGLEVEL_EMERG);
|
||||
define_pr_level(__pr_alert, LOGLEVEL_ALERT);
|
||||
define_pr_level(__pr_crit, LOGLEVEL_CRIT);
|
||||
define_pr_level(__pr_err, LOGLEVEL_ERR);
|
||||
define_pr_level(__pr_warn, LOGLEVEL_WARNING);
|
||||
define_pr_level(__pr_notice, LOGLEVEL_NOTICE);
|
||||
define_pr_level(__pr_info, LOGLEVEL_INFO);
|
||||
|
||||
int vprintk_default(int level, const char *fmt, va_list args)
|
||||
int vprintk_default(const char *fmt, va_list args)
|
||||
{
|
||||
int r;
|
||||
|
||||
@@ -1959,7 +1940,7 @@ int vprintk_default(int level, const char *fmt, va_list args)
|
||||
return r;
|
||||
}
|
||||
#endif
|
||||
r = vprintk_emit(0, level, NULL, 0, fmt, args);
|
||||
r = vprintk_emit(0, LOGLEVEL_DEFAULT, NULL, 0, fmt, args);
|
||||
|
||||
return r;
|
||||
}
|
||||
@@ -1992,7 +1973,7 @@ asmlinkage __visible int printk(const char *fmt, ...)
|
||||
int r;
|
||||
|
||||
va_start(args, fmt);
|
||||
r = vprintk_func(LOGLEVEL_DEFAULT, fmt, args);
|
||||
r = vprintk_func(fmt, args);
|
||||
va_end(args);
|
||||
|
||||
return r;
|
||||
|
||||
Reference in New Issue
Block a user