<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 31, 2019 at 7:01 PM Cyril Hrubis <<a href="mailto:chrubis@suse.cz">chrubis@suse.cz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi!<br>
> The patch as follows:<br>
> commit 11cbfb10775a ("vfs: deny copy_file_range() for non regular files")<br>
> <br>
> Signed-off-by: Jinhui huang <<a href="mailto:huangjh.jy@cn.fujitsu.com" target="_blank">huangjh.jy@cn.fujitsu.com</a>><br>
> ---<br>
>  .../syscalls/copy_file_range/copy_file_range02.c   | 33 +++++++++++++++-------<br>
>  1 file changed, 23 insertions(+), 10 deletions(-)<br>
> <br>
> diff --git a/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c b/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c<br>
> index 07c0207..9e6356c 100644<br>
> --- a/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c<br>
> +++ b/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c<br>
> @@ -54,19 +54,32 @@ static void verify_copy_file_range(unsigned int n)<br>
>       TEST(sys_copy_file_range(fd_src, 0, *tc->copy_to_fd,<br>
>                               0, CONTSIZE, tc->flags));<br>
>  <br>
> -     if (TST_RET == -1) {<br>
> -             if (tc->exp_err == TST_ERR) {<br>
> +     if (TST_RET != -1) {<br>
> +             tst_res(TFAIL,<br>
> +                     "copy_file_range returned wrong value: %ld", TST_RET);<br>
> +             return;<br>
> +     }<br>
> +<br>
> +     if (tc->exp_err == TST_ERR) {<br>
> +             tst_res(TPASS | TTERRNO,<br>
> +                     "copy_file_range failed as expected");<br>
> +     } else {<br>
> +             /* copy_file_range() returned EISDIR when copyed contents to<br>
> +              * directory on new kernels, but on old kernels, it returned<br>
> +              * EBADF.<br>
> +              *<br>
> +              * the patch as follws:<br>
> +              * commit 11cbfb10775a ("vfs: deny copy_file_range() for non regular files")<br>
> +              */<br>
> +             if (tc->exp_err == EISDIR && TST_ERR == EBADF) {<br>
>                       tst_res(TPASS | TTERRNO,<br>
> -                                     "copy_file_range failed as expected");<br>
<br>
If nothing else this should be guarded by kernel version check because<br>
if new kernel starts to return EBADFD again, that would be regression.<br>
<br>
So we should check the kernel version in test setup and set a flag that<br>
would be checked here as well.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">This is a good suggestion. Another point I can come up is, if an LTS Linux distribution backports that commit 11cbfb10775a to their old kernel as regression fix, then this flag will make no sense.</div></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">So, to strict we maybe need to regards the EISDIR as the only one legal errno(copying content to dir) when  kernel >= 4.10(includes commit 11cbfb10775a).</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
-- <br>
Cyril Hrubis<br>
<a href="mailto:chrubis@suse.cz" target="_blank">chrubis@suse.cz</a><br>
<br>
-- <br>
Mailing list info: <a href="https://lists.linux.it/listinfo/ltp" rel="noreferrer" target="_blank">https://lists.linux.it/listinfo/ltp</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>