Re: [PATCH RFCv3 3/3] lib/test_printf: add test cases for '%pD'
From: Petr Mladek <pmladek@suse.com>
Date: 2021-06-14 15:44:15
Also in:
linux-doc, lkml
On Fri 2021-06-11 23:59:53, Jia He wrote:
quoted hunk ↗ jump to hunk
After the behaviour of specifier '%pD' is changed to print full path of struct file, the related test cases are also updated. Given the string is prepended from the end of the buffer, the check of "wrote beyond the nul-terminator" should be skipped. Signed-off-by: Jia He <redacted> --- lib/test_printf.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-)diff --git a/lib/test_printf.c b/lib/test_printf.c index ec0d5976bb69..3632bd6cf906 100644 --- a/lib/test_printf.c +++ b/lib/test_printf.c@@ -78,7 +80,7 @@ do_test(int bufsize, const char *expect, int elen, return 1; } - if (memchr_inv(test_buffer + written + 1, FILL_CHAR, BUF_SIZE + PAD_SIZE - (written + 1))) { + if (!is_prepend_buf && memchr_inv(test_buffer + written + 1, FILL_CHAR, BUF_SIZE + PAD_SIZE - (written + 1))) { pr_warn("vsnprintf(buf, %d, \"%s\", ...) wrote beyond the nul-terminator\n", bufsize, fmt); return 1;@@ -496,6 +498,27 @@ dentry(void) test(" bravo/alfa| bravo/alfa", "%12pd2|%*pd2", &test_dentry[2], 12, &test_dentry[2]); } +static struct vfsmount test_vfsmnt = {}; + +static struct file test_file __initdata = { + .f_path = { .dentry = &test_dentry[2], + .mnt = &test_vfsmnt, + }, +}; + +static void __init +f_d_path(void) +{ + test("(null)", "%pD", NULL); + test("(efault)", "%pD", PTR_INVALID); + + is_prepend_buf = true; + test("/bravo/alfa |/bravo/alfa ", "%-14pD|%*pD", &test_file, -14, &test_file); + test(" /bravo/alfa| /bravo/alfa", "%14pD|%*pD", &test_file, 14, &test_file); + test(" /bravo/alfa|/bravo/alfa ", "%14pD|%-14pD", &test_file, &test_file);
Please, add more test for scenarios when the path does not fit into the buffer or when there are no limitations, ... I still have to think about is_prepend_buf hack.
+ is_prepend_buf = false;
+}
+
static void __init
struct_va_format(void)
{Best Regards, PEtr