Thread (19 messages) 19 messages, 3 authors, 2021-07-14

Re: [PATCH v2 2/4] lib/vsprintf.c: make '%pD' print the full path of file

From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: 2021-06-23 09:15:14
Also in: linux-fsdevel, lkml

On Wed, Jun 23, 2021 at 01:50:09PM +0800, Jia He wrote:
Previously, the specifier '%pD' is for printing dentry name of struct
file. It may not be perfect (by default it only prints one component.)

As suggested by Linus [1]:
quoted
A dentry has a parent, but at the same time, a dentry really does
inherently have "one name" (and given just the dentry pointers, you
can't show mount-related parenthood, so in many ways the "show just
one name" makes sense for "%pd" in ways it doesn't necessarily for
"%pD"). But while a dentry arguably has that "one primary component",
a _file_ is certainly not exclusively about that last component.
Hence change the behavior of '%pD' to print the full path of that file.

If someone invokes snprintf() with small but positive space,
prepend_name_with_len() moves or truncates the string partially. More
than that, kasprintf() will pass NULL @buf and @end as the parameters,
and @end - @buf can be negative in some case. Hence make it return at
the very beginning with false in these cases.

Precision is never going to be used with %p (or any of its kernel
extensions) if -Wformat is turned on.
...
+	char *p;
+	const struct path *path;
+	int prepend_len, widen_len, dpath_len;
Reversed xmas tree order?

-- 
With Best Regards,
Andy Shevchenko

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help