* [LTP] [PATCH v2 0/2] Introduce SAFE_SPLICE()
@ 2026-05-04 8:04 Andrea Cervesato
2026-05-04 8:04 ` [LTP] [PATCH v2 1/2] lib: Add SAFE_SPLICE() macro Andrea Cervesato
2026-05-04 8:04 ` [LTP] [PATCH v2 2/2] tee01, vmsplice01, af_alg08: Use SAFE_SPLICE() Andrea Cervesato
0 siblings, 2 replies; 4+ messages in thread
From: Andrea Cervesato @ 2026-05-04 8:04 UTC (permalink / raw)
To: Linux Test Project
- add SAFE_SPLICE()
- update tests to use the new macro
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
Changes in v2:
- fix compile issues by moving SAFE_SPLICE in lapi/splice.h
- Link to v1: https://lore.kernel.org/r/20260430-safe_splice-v1-0-d1d919ff2a3a@suse.com
---
Andrea Cervesato (2):
lib: Add SAFE_SPLICE() macro
tee01, vmsplice01, af_alg08: Use SAFE_SPLICE()
include/lapi/splice.h | 28 +++++++++++++++++++++++++
testcases/kernel/crypto/af_alg08.c | 9 ++------
testcases/kernel/syscalls/tee/tee01.c | 10 +++------
testcases/kernel/syscalls/vmsplice/vmsplice01.c | 5 +----
4 files changed, 34 insertions(+), 18 deletions(-)
---
base-commit: 72ca484cca53710b956ba2fcc1ff203fe9c9b73b
change-id: 20260430-safe_splice-a3d6403f99cd
Best regards,
--
Andrea Cervesato <andrea.cervesato@suse.com>
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 4+ messages in thread* [LTP] [PATCH v2 1/2] lib: Add SAFE_SPLICE() macro 2026-05-04 8:04 [LTP] [PATCH v2 0/2] Introduce SAFE_SPLICE() Andrea Cervesato @ 2026-05-04 8:04 ` Andrea Cervesato 2026-05-04 9:28 ` [LTP] " linuxtestproject.agent 2026-05-04 8:04 ` [LTP] [PATCH v2 2/2] tee01, vmsplice01, af_alg08: Use SAFE_SPLICE() Andrea Cervesato 1 sibling, 1 reply; 4+ messages in thread From: Andrea Cervesato @ 2026-05-04 8:04 UTC (permalink / raw) To: Linux Test Project From: Andrea Cervesato <andrea.cervesato@suse.com> Add new SAFE_SPLIT() in lapi/splice.h. Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com> --- include/lapi/splice.h | 28 +++++++++++++++++++++++++ testcases/kernel/crypto/af_alg08.c | 10 ++------- testcases/kernel/syscalls/tee/tee01.c | 9 ++------ testcases/kernel/syscalls/vmsplice/vmsplice01.c | 6 +----- 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/include/lapi/splice.h b/include/lapi/splice.h index 191b22d2d6397d1efad5e2025be5a2c4370724dc..e346e5cca9f44bd8421c6b99f84cd4646269ac1f 100644 --- a/include/lapi/splice.h +++ b/include/lapi/splice.h @@ -7,6 +7,13 @@ #ifndef LAPI_SPLICE_H__ #define LAPI_SPLICE_H__ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +#include <fcntl.h> +#include <sys/types.h> + #include "config.h" #include "lapi/syscalls.h" @@ -19,4 +26,25 @@ static inline ssize_t splice(int fd_in, loff_t *off_in, int fd_out, } #endif +static inline ssize_t safe_splice(const char *file, const int lineno, + int fd_in, loff_t *off_in, + int fd_out, loff_t *off_out, + size_t len, unsigned int flags) +{ + ssize_t ret; + + ret = splice(fd_in, off_in, fd_out, off_out, len, flags); + + if (ret < 0) { + tst_brk_(file, lineno, TBROK | TERRNO, + "splice(%d, %d, %zu) failed", fd_in, fd_out, len); + } + + return ret; +} + +#define SAFE_SPLICE(fd_in, off_in, fd_out, off_out, len, flags) \ + safe_splice(__FILE__, __LINE__, (fd_in), (off_in), (fd_out), \ + (off_out), (len), (flags)) + #endif /* LAPI_SPLICE_H__ */ diff --git a/testcases/kernel/crypto/af_alg08.c b/testcases/kernel/crypto/af_alg08.c index 4f27f3c9da7cc277926c6fe3eee1a4649a483763..05f17eea4797b7575c97e194e34c0390c6d6be22 100644 --- a/testcases/kernel/crypto/af_alg08.c +++ b/testcases/kernel/crypto/af_alg08.c @@ -27,7 +27,6 @@ #include "tst_test.h" #include "tst_af_alg.h" #include "lapi/socket.h" -#include "lapi/splice.h" #define TESTFILE "copy_fail" #define OVERWRITE_SIZE 4 @@ -92,13 +91,8 @@ static void try_corrupt(void) SAFE_PIPE(pipefd); - TEST(splice(file_fd, &off_in, pipefd[1], NULL, OVERWRITE_SIZE, 0)); - if (TST_RET < 0) - tst_brk(TBROK | TTERRNO, "splice(file -> pipe)"); - - TEST(splice(pipefd[0], NULL, reqfd, NULL, OVERWRITE_SIZE, 0)); - if (TST_RET < 0) - tst_brk(TBROK | TTERRNO, "splice(pipe -> AF_ALG)"); + SAFE_SPLICE(file_fd, &off_in, pipefd[1], NULL, OVERWRITE_SIZE, 0); + SAFE_SPLICE(pipefd[0], NULL, reqfd, NULL, OVERWRITE_SIZE, 0); /* Expected to fail (invalid ciphertext); triggers the scratch write */ TST_EXP_FAIL_SILENT(recv(reqfd, recvbuf, sizeof(recvbuf), 0), EBADMSG); diff --git a/testcases/kernel/syscalls/tee/tee01.c b/testcases/kernel/syscalls/tee/tee01.c index d1489d0453f11faab41ab6e8e2dabbb372566f60..680793eb2b21cfd2609492d3be3bef10abb25acf 100644 --- a/testcases/kernel/syscalls/tee/tee01.c +++ b/testcases/kernel/syscalls/tee/tee01.c @@ -15,7 +15,6 @@ #include "tst_test.h" #include "lapi/fcntl.h" #include "lapi/tee.h" -#include "lapi/splice.h" #define TEST_BLOCK_SIZE 1024 @@ -58,17 +57,13 @@ static void tee_test(void) SAFE_PIPE(pipe1); SAFE_PIPE(pipe2); - ret = splice(fd_in, NULL, pipe1[1], NULL, TEST_BLOCK_SIZE, 0); - if (ret < 0) - tst_brk(TBROK | TERRNO, "splice(fd_in, pipe1) failed"); + SAFE_SPLICE(fd_in, NULL, pipe1[1], NULL, TEST_BLOCK_SIZE, 0); ret = tee(pipe1[0], pipe2[1], TEST_BLOCK_SIZE, SPLICE_F_NONBLOCK); if (ret < 0) tst_brk(TBROK | TERRNO, "tee() failed"); - ret = splice(pipe2[0], NULL, fd_out, NULL, TEST_BLOCK_SIZE, 0); - if (ret < 0) - tst_brk(TBROK | TERRNO, "splice(pipe2, fd_out) failed"); + SAFE_SPLICE(pipe2[0], NULL, fd_out, NULL, TEST_BLOCK_SIZE, 0); SAFE_CLOSE(pipe2[0]); SAFE_CLOSE(pipe2[1]); diff --git a/testcases/kernel/syscalls/vmsplice/vmsplice01.c b/testcases/kernel/syscalls/vmsplice/vmsplice01.c index 17486179baa2a897c2efbf0d2b4d39273788aadc..7b55e66a373d2d72824fbb9146b2af353a5ff1c9 100644 --- a/testcases/kernel/syscalls/vmsplice/vmsplice01.c +++ b/testcases/kernel/syscalls/vmsplice/vmsplice01.c @@ -15,7 +15,6 @@ #include "tst_test.h" #include "lapi/fcntl.h" -#include "lapi/splice.h" #include "lapi/vmsplice.h" #define TEST_BLOCK_SIZE (1<<17) /* 128K */ @@ -50,7 +49,6 @@ static void vmsplice_test(void) { int pipes[2]; long written; - int ret; int fd_out; struct iovec v; loff_t offset; @@ -85,9 +83,7 @@ static void vmsplice_test(void) } } - ret = splice(pipes[0], NULL, fd_out, &offset, written, 0); - if (ret < 0) - tst_brk(TBROK | TERRNO, "splice() failed"); + SAFE_SPLICE(pipes[0], NULL, fd_out, &offset, written, 0); //printf("offset = %lld\n", (long long)offset); } -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [LTP] lib: Add SAFE_SPLICE() macro 2026-05-04 8:04 ` [LTP] [PATCH v2 1/2] lib: Add SAFE_SPLICE() macro Andrea Cervesato @ 2026-05-04 9:28 ` linuxtestproject.agent 0 siblings, 0 replies; 4+ messages in thread From: linuxtestproject.agent @ 2026-05-04 9:28 UTC (permalink / raw) To: Andrea Cervesato; +Cc: ltp Hi Andrea, --- [PATCH 1/2] --- On Mon, 4 May 2026, Andrea Cervesato wrote: > lib: Add SAFE_SPLICE() macro > > Add new SAFE_SPLIT() in lapi/splice.h. "SAFE_SPLIT()" -> "SAFE_SPLICE()". > -#include "lapi/splice.h" > ... > + SAFE_SPLICE(file_fd, &off_in, pipefd[1], NULL, OVERWRITE_SIZE, 0); After this commit, SAFE_SPLICE() is called in af_alg08.c, tee01.c, and vmsplice01.c but all three no longer include <lapi/splice.h> — the tree does not compile. The include removal and the SAFE_SPLICE() conversion must not be split across commits. This patch also mixes "add library macro" with "convert test files"; split them: patch 1 touches only lapi/splice.h, patch 2 adds the include and converts the splice() calls in all three test files. --- [PATCH 2/2] --- On Mon, 4 May 2026, Andrea Cervesato wrote: > tee01, vmsplice01, af_alg08: Use SAFE_SPLICE() > > Replace raw splice() calls with SAFE_SPLICE() in tests where splice is > utility plumbing, not the subject of testing. This patch only adds three "#include lapi/splice.h" lines; the actual splice()-to-SAFE_SPLICE() conversion is in patch 1/2. Subject and body must describe what this patch actually does, or better: restructure the series so the conversion and its include live in the same commit. --- Note: Our agent completed the review of the patch. The agent can sometimes produce false positives although often its findings are genuine. If you find issues with the review, please comment this email or ignore the suggestions. Regards, LTP AI Reviewer -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 4+ messages in thread
* [LTP] [PATCH v2 2/2] tee01, vmsplice01, af_alg08: Use SAFE_SPLICE() 2026-05-04 8:04 [LTP] [PATCH v2 0/2] Introduce SAFE_SPLICE() Andrea Cervesato 2026-05-04 8:04 ` [LTP] [PATCH v2 1/2] lib: Add SAFE_SPLICE() macro Andrea Cervesato @ 2026-05-04 8:04 ` Andrea Cervesato 1 sibling, 0 replies; 4+ messages in thread From: Andrea Cervesato @ 2026-05-04 8:04 UTC (permalink / raw) To: Linux Test Project From: Andrea Cervesato <andrea.cervesato@suse.com> Replace raw splice() calls with SAFE_SPLICE() in tests where splice is utility plumbing, not the subject of testing. Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com> --- testcases/kernel/crypto/af_alg08.c | 1 + testcases/kernel/syscalls/tee/tee01.c | 1 + testcases/kernel/syscalls/vmsplice/vmsplice01.c | 1 + 3 files changed, 3 insertions(+) diff --git a/testcases/kernel/crypto/af_alg08.c b/testcases/kernel/crypto/af_alg08.c index 05f17eea4797b7575c97e194e34c0390c6d6be22..5517a7cec31f56c6769d0a5ac37d20477986c3f0 100644 --- a/testcases/kernel/crypto/af_alg08.c +++ b/testcases/kernel/crypto/af_alg08.c @@ -27,6 +27,7 @@ #include "tst_test.h" #include "tst_af_alg.h" #include "lapi/socket.h" +#include "lapi/splice.h" #define TESTFILE "copy_fail" #define OVERWRITE_SIZE 4 diff --git a/testcases/kernel/syscalls/tee/tee01.c b/testcases/kernel/syscalls/tee/tee01.c index 680793eb2b21cfd2609492d3be3bef10abb25acf..24d1b6e4810492e4e4761038fd88505d1df8e49c 100644 --- a/testcases/kernel/syscalls/tee/tee01.c +++ b/testcases/kernel/syscalls/tee/tee01.c @@ -14,6 +14,7 @@ #include "tst_test.h" #include "lapi/fcntl.h" +#include "lapi/splice.h" #include "lapi/tee.h" #define TEST_BLOCK_SIZE 1024 diff --git a/testcases/kernel/syscalls/vmsplice/vmsplice01.c b/testcases/kernel/syscalls/vmsplice/vmsplice01.c index 7b55e66a373d2d72824fbb9146b2af353a5ff1c9..64eed8391797fb01b14c548ebcfe390a403da5ec 100644 --- a/testcases/kernel/syscalls/vmsplice/vmsplice01.c +++ b/testcases/kernel/syscalls/vmsplice/vmsplice01.c @@ -15,6 +15,7 @@ #include "tst_test.h" #include "lapi/fcntl.h" +#include "lapi/splice.h" #include "lapi/vmsplice.h" #define TEST_BLOCK_SIZE (1<<17) /* 128K */ -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-05-04 9:28 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-05-04 8:04 [LTP] [PATCH v2 0/2] Introduce SAFE_SPLICE() Andrea Cervesato 2026-05-04 8:04 ` [LTP] [PATCH v2 1/2] lib: Add SAFE_SPLICE() macro Andrea Cervesato 2026-05-04 9:28 ` [LTP] " linuxtestproject.agent 2026-05-04 8:04 ` [LTP] [PATCH v2 2/2] tee01, vmsplice01, af_alg08: Use SAFE_SPLICE() Andrea Cervesato
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox