[LTP] [PATCH] syscalls/copy_file_range02.c: Add new check for EINVAL
Jinhui huang
huangjh.jy@cn.fujitsu.com
Mon Jun 10 11:49:49 CEST 2019
Add a new checkpoint that copy_file_range() returns EINVAL when
copying contents to non regular file.
Signed-off-by: Jinhui huang <huangjh.jy@cn.fujitsu.com>
---
.../kernel/syscalls/copy_file_range/copy_file_range02.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c b/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c
index 07c0207..db99344 100644
--- a/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c
+++ b/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c
@@ -19,6 +19,13 @@
* -> EBADF
* 6) Try to copy contents with invalid 'flags' value
* -> EINVAL
+ * 7) Try to copy contents to pipe ->EINVAL
+ *
+ * Note:
+ * copy_file_range() returns EISDIR and EINVAL when copying contents to
+ * directory and any other non regualr files since the commit:
+ * 11cbfb10775a vfs: deny copy_file_range() for non regular files
+ *
*/
#define _GNU_SOURCE
@@ -33,6 +40,7 @@ static int fd_mnted;
static int fd_dir;
static int fd_closed;
static int fd_append;
+static int fd_pipe[2];
static struct tcase {
int *copy_to_fd;
@@ -45,6 +53,7 @@ static struct tcase {
{&fd_append, 0, EBADF},
{&fd_closed, 0, EBADF},
{&fd_dest, -1, EINVAL},
+ {&fd_pipe[0], 0, EINVAL},
};
static void verify_copy_file_range(unsigned int n)
@@ -84,6 +93,10 @@ static void cleanup(void)
SAFE_CLOSE(fd_dest);
if (fd_src > 0)
SAFE_CLOSE(fd_src);
+ if (fd_pipe[0] > 0)
+ SAFE_CLOSE(fd_pipe[0]);
+ if (fd_pipe[1] > 0)
+ SAFE_CLOSE(fd_pipe[1]);
}
static void setup(void)
@@ -101,6 +114,7 @@ static void setup(void)
fd_closed = -1;
fd_append = SAFE_OPEN(FILE_DEST_PATH,
O_RDWR | O_CREAT | O_APPEND, 0664);
+ SAFE_PIPE(fd_pipe);
SAFE_WRITE(1, fd_src, CONTENT, CONTSIZE);
}
--
1.8.3.1
More information about the ltp
mailing list