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]: > > 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