{
        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
 #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