Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af7f2158 authored by Jim Cromie's avatar Jim Cromie Committed by Greg Kroah-Hartman
Browse files

drivers-core: make structured logging play nice with dynamic-debug



commit c4e00daa changed __dev_printk
in a way that broke dynamic-debug's ability to control the dynamic
prefix of dev_dbg(dev,..), but not dev_dbg(NULL,..) or pr_debug(..),
which is why it wasnt noticed sooner.

When dev==NULL, __dev_printk() just calls printk(), which just works.
But otherwise, it assumed that level was always a string like "<L>"
and just plucked out the 'L', ignoring the rest.  However,
dynamic_emit_prefix() adds "[tid] module:func:line:" to the string,
those additions all got lost.

Signed-off-by: default avatarJim Cromie <jim.cromie@gmail.com>
Acked-by: default avatarJason Baron <jbaron@redhat.com>
Cc: stable <stable@vger.kernel.org>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0d7614f0
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -1865,6 +1865,7 @@ int __dev_printk(const char *level, const struct device *dev,
		 struct va_format *vaf)
{
	char dict[128];
	const char *level_extra = "";
	size_t dictlen = 0;
	const char *subsys;

@@ -1911,10 +1912,14 @@ int __dev_printk(const char *level, const struct device *dev,
				    "DEVICE=+%s:%s", subsys, dev_name(dev));
	}
skip:
	if (level[3])
		level_extra = &level[3]; /* skip past "<L>" */

	return printk_emit(0, level[1] - '0',
			   dictlen ? dict : NULL, dictlen,
			   "%s %s: %pV",
			   dev_driver_string(dev), dev_name(dev), vaf);
			   "%s %s: %s%pV",
			   dev_driver_string(dev), dev_name(dev),
			   level_extra, vaf);
}
EXPORT_SYMBOL(__dev_printk);