Merge branch 'for-5.16-vsprintf-pgp' into for-linus
[linux-2.6-microblaze.git] / lib / vsprintf.c
index 3bcb7be..f90f91d 100644 (file)
@@ -408,8 +408,9 @@ int num_to_str(char *buf, int size, unsigned long long num, unsigned int width)
 #define SMALL  32              /* use lowercase in hex (must be 32 == 0x20) */
 #define SPECIAL        64              /* prefix hex with "0x", octal with "0" */
 
+static_assert(SIGN == 1);
 static_assert(ZEROPAD == ('0' - ' '));
-static_assert(SMALL == ' ');
+static_assert(SMALL == ('a' ^ 'A'));
 
 enum format_type {
        FORMAT_TYPE_NONE, /* Just a string part */
@@ -2019,10 +2020,15 @@ static const struct page_flags_fields pff[] = {
 static
 char *format_page_flags(char *buf, char *end, unsigned long flags)
 {
-       unsigned long main_flags = flags & (BIT(NR_PAGEFLAGS) - 1);
+       unsigned long main_flags = flags & PAGEFLAGS_MASK;
        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);
@@ -2051,6 +2057,9 @@ char *format_page_flags(char *buf, char *end, unsigned long flags)
 
                append = true;
        }
+       if (buf < end)
+               *buf = ')';
+       buf++;
 
        return buf;
 }