diff options
Diffstat (limited to 'sound/core/misc.c')
| -rw-r--r-- | sound/core/misc.c | 13 | 
1 files changed, 9 insertions, 4 deletions
diff --git a/sound/core/misc.c b/sound/core/misc.c index 768167925409..30e027ecf4da 100644 --- a/sound/core/misc.c +++ b/sound/core/misc.c @@ -68,6 +68,7 @@ void __snd_printk(unsigned int level, const char *path, int line,  {  	va_list args;  #ifdef CONFIG_SND_VERBOSE_PRINTK +	int kern_level;  	struct va_format vaf;  	char verbose_fmt[] = KERN_DEFAULT "ALSA %s:%d %pV";  #endif @@ -81,12 +82,16 @@ void __snd_printk(unsigned int level, const char *path, int line,  #ifdef CONFIG_SND_VERBOSE_PRINTK  	vaf.fmt = format;  	vaf.va = &args; -	if (format[0] == '<' && format[2] == '>') { -		memcpy(verbose_fmt, format, 3); -		vaf.fmt = format + 3; + +	kern_level = printk_get_level(format); +	if (kern_level) { +		const char *end_of_header = printk_skip_level(format); +		memcpy(verbose_fmt, format, end_of_header - format); +		vaf.fmt = end_of_header;  	} else if (level) -		memcpy(verbose_fmt, KERN_DEBUG, 3); +		memcpy(verbose_fmt, KERN_DEBUG, sizeof(KERN_DEBUG) - 1);  	printk(verbose_fmt, sanity_file_name(path), line, &vaf); +  #else  	vprintk(format, args);  #endif  | 
