2021-11-30 08:02:23

by Tianjia Zhang

[permalink] [raw]
Subject: [PATCH] fs: remove duplicate permission checks in do_sendfile()

The permission check for out.file is mainly performed in the function
rw_verify_area(), and this check is called twice in the function
do_splice_direct() and before calling do_splice_direct(). This is a
redundant check and it is necessary to remove.

Signed-off-by: Tianjia Zhang <[email protected]>
---
fs/read_write.c | 3 ---
1 file changed, 3 deletions(-)

diff --git a/fs/read_write.c b/fs/read_write.c
index 0074afa7ecb3..bc7c3fcc3400 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -1238,9 +1238,6 @@ static ssize_t do_sendfile(int out_fd, int in_fd, loff_t *ppos,
#endif
opipe = get_pipe_info(out.file, true);
if (!opipe) {
- retval = rw_verify_area(WRITE, out.file, &out_pos, count);
- if (retval < 0)
- goto fput_out;
file_start_write(out.file);
retval = do_splice_direct(in.file, &pos, out.file, &out_pos,
count, fl);
--
2.32.0



2022-01-30 16:16:06

by Tianjia Zhang

[permalink] [raw]
Subject: Re: [PATCH] fs: remove duplicate permission checks in do_sendfile()

ping.

Thanks.

On 11/30/21 4:02 PM, Tianjia Zhang wrote:
> The permission check for out.file is mainly performed in the function
> rw_verify_area(), and this check is called twice in the function
> do_splice_direct() and before calling do_splice_direct(). This is a
> redundant check and it is necessary to remove.
>
> Signed-off-by: Tianjia Zhang <[email protected]>
> ---
> fs/read_write.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/fs/read_write.c b/fs/read_write.c
> index 0074afa7ecb3..bc7c3fcc3400 100644
> --- a/fs/read_write.c
> +++ b/fs/read_write.c
> @@ -1238,9 +1238,6 @@ static ssize_t do_sendfile(int out_fd, int in_fd, loff_t *ppos,
> #endif
> opipe = get_pipe_info(out.file, true);
> if (!opipe) {
> - retval = rw_verify_area(WRITE, out.file, &out_pos, count);
> - if (retval < 0)
> - goto fput_out;
> file_start_write(out.file);
> retval = do_splice_direct(in.file, &pos, out.file, &out_pos,
> count, fl);