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;
                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,
                append = true;
        }
 
+       snprintf(cmp_buf + size, BUF_SIZE - size, ")");
+
        test(cmp_buf, "%pGp", &flags);
 }
 
 
        bool append = false;
        int i;
 
+       buf = number(buf, end, flags, default_flag_spec);
+       if (buf < end)
+               *buf = '(';
+       buf++;
+
        /* Page flags from the main area. */
        if (main_flags) {
                buf = format_flags(buf, end, main_flags, pageflag_names);
 
                append = true;
        }
+       if (buf < end)
+               *buf = ')';
+       buf++;
 
        return buf;
 }
 
 out_mapping:
        BUILD_BUG_ON(ARRAY_SIZE(pageflag_names) != __NR_PAGEFLAGS + 1);
 
-       pr_warn("%sflags: %#lx(%pGp)%s\n", type, head->flags, &head->flags,
+       pr_warn("%sflags: %pGp%s\n", type, &head->flags,
                page_cma ? " CMA" : "");
        print_hex_dump(KERN_WARNING, "raw: ", DUMP_PREFIX_NONE, 32,
                        sizeof(unsigned long), page,
 
                        if (!list_empty(&pagelist))
                                putback_movable_pages(&pagelist);
 
-                       pr_info("soft offline: %#lx: %s migration failed %d, type %lx (%pGp)\n",
-                               pfn, msg_page[huge], ret, page->flags, &page->flags);
+                       pr_info("soft offline: %#lx: %s migration failed %d, type %pGp\n",
+                               pfn, msg_page[huge], ret, &page->flags);
                        if (ret > 0)
                                ret = -EBUSY;
                }
        } else {
-               pr_info("soft offline: %#lx: %s isolation failed, page count %d, type %lx (%pGp)\n",
-                       pfn, msg_page[huge], page_count(page), page->flags, &page->flags);
+               pr_info("soft offline: %#lx: %s isolation failed, page count %d, type %pGp\n",
+                       pfn, msg_page[huge], page_count(page), &page->flags);
                ret = -EBUSY;
        }
        return ret;
 
        pageblock_mt = get_pageblock_migratetype(page);
        page_mt  = gfp_migratetype(page_owner->gfp_mask);
        ret += snprintf(kbuf + ret, count - ret,
-                       "PFN %lu type %s Block %lu type %s Flags %#lx(%pGp)\n",
+                       "PFN %lu type %s Block %lu type %s Flags %pGp\n",
                        pfn,
                        migratetype_names[page_mt],
                        pfn >> pageblock_order,
                        migratetype_names[pageblock_mt],
-                       page->flags, &page->flags);
+                       &page->flags);
 
        if (ret >= count)
                goto err;
 
 
 static void print_page_info(struct page *page)
 {
-       pr_err("Slab 0x%p objects=%u used=%u fp=0x%p flags=%#lx(%pGp)\n",
+       pr_err("Slab 0x%p objects=%u used=%u fp=0x%p flags=%pGp\n",
               page, page->objects, page->inuse, page->freelist,
-              page->flags, &page->flags);
+              &page->flags);
 
 }