]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - lib/vsprintf.c
Merge tag 'for-4.20-part2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave...
[linux.git] / lib / vsprintf.c
index ad4fbe5bc730d5c332b46bcdabef282a2385bcfe..37a54a6dd59481f0696d9c365cf0f1e06e762110 100644 (file)
@@ -1684,6 +1684,7 @@ char *device_node_string(char *buf, char *end, struct device_node *dn,
                fmt = "f";
 
        for (pass = false; strspn(fmt,"fnpPFcC"); fmt++, pass = true) {
+               int precision;
                if (pass) {
                        if (buf < end)
                                *buf = ':';
@@ -1695,7 +1696,11 @@ char *device_node_string(char *buf, char *end, struct device_node *dn,
                        buf = device_node_gen_full_name(dn, buf, end);
                        break;
                case 'n':       /* name */
-                       buf = string(buf, end, dn->name, str_spec);
+                       p = kbasename(of_node_full_name(dn));
+                       precision = str_spec.precision;
+                       str_spec.precision = strchrnul(p, '@') - p;
+                       buf = string(buf, end, p, str_spec);
+                       str_spec.precision = precision;
                        break;
                case 'p':       /* phandle */
                        buf = number(buf, end, (unsigned int)dn->phandle, num_spec);