summaryrefslogtreecommitdiff
path: root/lib/test_printf.c
diff options
context:
space:
mode:
authorMatthew Wilcox (Oracle) <willy@infradead.org>2021-10-19 17:26:21 +0300
committerPetr Mladek <pmladek@suse.com>2021-10-27 14:40:14 +0300
commit23efd0804c0a869dfb1e78470f80a27251317b7e (patch)
treee867289237ebd1050643b53f3202cbc9a99f5ad3 /lib/test_printf.c
parent507f98603607d43cb76ed39c370c4dc1ed6a94f9 (diff)
downloadlinux-23efd0804c0a869dfb1e78470f80a27251317b7e.tar.xz
vsprintf: Make %pGp print the hex value
All existing users of %pGp want the hex value as well as the decoded flag names. This looks awkward (passing the same parameter to printf twice), so move that functionality into the core. If we want, we can make that optional with flag arguments to %pGp in the future. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Yafang Shao <laoar.shao@gmail.com> Reviewed-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Petr Mladek <pmladek@suse.com> Link: https://lore.kernel.org/r/20211019142621.2810043-6-willy@infradead.org
Diffstat (limited to 'lib/test_printf.c')
-rw-r--r--lib/test_printf.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/test_printf.c b/lib/test_printf.c
index d09993fca463..07309c45f327 100644
--- a/lib/test_printf.c
+++ b/lib/test_printf.c
@@ -609,10 +609,14 @@ page_flags_test(int section, int node, int zone, int last_cpupid,
char *cmp_buf)
{
unsigned long values[] = {section, node, zone, last_cpupid, kasan_tag};
- unsigned long size = 0;
+ unsigned long size;
bool append = false;
int i;
+ for (i = 0; i < ARRAY_SIZE(values); i++)
+ flags |= (values[i] & pft[i].mask) << pft[i].shift;
+
+ size = scnprintf(cmp_buf, BUF_SIZE, "%#lx(", flags);
if (flags & PAGEFLAGS_MASK) {
size += scnprintf(cmp_buf + size, BUF_SIZE - size, "%s", name);
append = true;
@@ -625,7 +629,6 @@ page_flags_test(int section, int node, int zone, int last_cpupid,
if (append)
size += scnprintf(cmp_buf + size, BUF_SIZE - size, "|");
- flags |= (values[i] & pft[i].mask) << pft[i].shift;
size += scnprintf(cmp_buf + size, BUF_SIZE - size, "%s=",
pft[i].name);
size += scnprintf(cmp_buf + size, BUF_SIZE - size, pft[i].fmt,
@@ -633,6 +636,8 @@ page_flags_test(int section, int node, int zone, int last_cpupid,
append = true;
}
+ snprintf(cmp_buf + size, BUF_SIZE - size, ")");
+
test(cmp_buf, "%pGp", &flags);
}