* [LTP] [PATCH 0/2] Fix inotify{07,08} TBROK where it should TFAIL
@ 2026-05-26 8:34 Cyril Hrubis
2026-05-26 8:34 ` [LTP] [PATCH v2 1/2] safe_macros: Add SAFE_READ_ANY_EAGAIN Cyril Hrubis
2026-05-26 8:34 ` [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels Cyril Hrubis
0 siblings, 2 replies; 12+ messages in thread
From: Cyril Hrubis @ 2026-05-26 8:34 UTC (permalink / raw)
To: ltp
Fixes regression cause by deda021818a4 ('inotify: modernize with SAFE_ wrappers')
v2: Fix all the typos
Cyril Hrubis (2):
safe_macros: Add SAFE_READ_ANY_EAGAIN
syscalls/inotify{07,08}: Fix TBROK on older kernels
include/safe_macros_fn.h | 16 ++++++++++++++--
lib/safe_macros.c | 10 +++++++---
testcases/kernel/syscalls/inotify/inotify07.c | 2 +-
testcases/kernel/syscalls/inotify/inotify08.c | 2 +-
4 files changed, 23 insertions(+), 7 deletions(-)
--
2.53.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 12+ messages in thread* [LTP] [PATCH v2 1/2] safe_macros: Add SAFE_READ_ANY_EAGAIN 2026-05-26 8:34 [LTP] [PATCH 0/2] Fix inotify{07,08} TBROK where it should TFAIL Cyril Hrubis @ 2026-05-26 8:34 ` Cyril Hrubis 2026-05-26 11:56 ` Avinesh Kumar via ltp 2026-05-26 13:39 ` Petr Vorel 2026-05-26 8:34 ` [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels Cyril Hrubis 1 sibling, 2 replies; 12+ messages in thread From: Cyril Hrubis @ 2026-05-26 8:34 UTC (permalink / raw) To: ltp Similarly to the safe_write() this turns the len_strict into three way switch with the new value SAFE_READ_ANY_EAGAIN=2 that turns EAGAIN into a read with a zero length. Signed-off-by: Cyril Hrubis <chrubis@suse.cz> --- include/safe_macros_fn.h | 16 ++++++++++++++-- lib/safe_macros.c | 10 +++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/include/safe_macros_fn.h b/include/safe_macros_fn.h index 9a09c4922..e8dc02539 100644 --- a/include/safe_macros_fn.h +++ b/include/safe_macros_fn.h @@ -36,6 +36,18 @@ enum safe_write_opts { SAFE_WRITE_RETRY = 2, }; +/* supported values for safe_read() len_strict parameter */ +enum safe_read_opts { + /* no length strictness, short reads are ok */ + SAFE_READ_ANY = 0, + + /* strict length, short reads trigger TBROK */ + SAFE_READ_ALL = 1, + + /* converts EAGAIN to read that returns 0 */ + SAFE_READ_ANY_EAGAIN = 2, +}; + char* safe_basename(const char *file, const int lineno, void (*cleanup_fn)(void), char *path); @@ -80,8 +92,8 @@ int safe_pipe(const char *file, const int lineno, void (*cleanup_fn)(void), int fildes[2]); ssize_t safe_read(const char *file, const int lineno, - void (*cleanup_fn)(void), char len_strict, int fildes, - void *buf, size_t nbyte); + void (*cleanup_fn)(void), enum safe_read_opts len_strict, + int fildes, void *buf, size_t nbyte); int safe_setegid(const char *file, const int lineno, void (*cleanup_fn)(void), gid_t egid); diff --git a/lib/safe_macros.c b/lib/safe_macros.c index 68b8747b4..f95c5fdc5 100644 --- a/lib/safe_macros.c +++ b/lib/safe_macros.c @@ -286,14 +286,18 @@ int safe_pipe(const char *file, const int lineno, void (*cleanup_fn) (void), return rval; } -ssize_t safe_read(const char *file, const int lineno, void (*cleanup_fn) (void), - char len_strict, int fildes, void *buf, size_t nbyte) +ssize_t safe_read(const char *file, const int lineno, + void (*cleanup_fn) (void), enum safe_read_opts len_strict, + int fildes, void *buf, size_t nbyte) { ssize_t rval; rval = read(fildes, buf, nbyte); if (rval == -1) { + if (len_strict == SAFE_READ_ANY_EAGAIN && errno == EAGAIN) + return 0; + tst_brkm_(file, lineno, TBROK | TERRNO, cleanup_fn, "read(%d,%p,%zu) failed, returned %zd", fildes, buf, nbyte, rval); @@ -301,7 +305,7 @@ ssize_t safe_read(const char *file, const int lineno, void (*cleanup_fn) (void), tst_brkm_(file, lineno, TBROK | TERRNO, cleanup_fn, "Invalid read(%d,%p,%zu) return value %zd", fildes, buf, nbyte, rval); - } else if (len_strict && (size_t)rval != nbyte) { + } else if (len_strict == SAFE_READ_ALL && (size_t)rval != nbyte) { tst_brkm_(file, lineno, TBROK, cleanup_fn, "Short read(%d,%p,%zu) returned only %zd", fildes, buf, nbyte, rval); -- 2.53.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v2 1/2] safe_macros: Add SAFE_READ_ANY_EAGAIN 2026-05-26 8:34 ` [LTP] [PATCH v2 1/2] safe_macros: Add SAFE_READ_ANY_EAGAIN Cyril Hrubis @ 2026-05-26 11:56 ` Avinesh Kumar via ltp 2026-05-26 13:39 ` Petr Vorel 1 sibling, 0 replies; 12+ messages in thread From: Avinesh Kumar via ltp @ 2026-05-26 11:56 UTC (permalink / raw) To: Cyril Hrubis, ltp Hi, Reviewed-by: Avinesh Kumar <avinesh.kumar@suse.com> for both patches. Thanks, Avinesh -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v2 1/2] safe_macros: Add SAFE_READ_ANY_EAGAIN 2026-05-26 8:34 ` [LTP] [PATCH v2 1/2] safe_macros: Add SAFE_READ_ANY_EAGAIN Cyril Hrubis 2026-05-26 11:56 ` Avinesh Kumar via ltp @ 2026-05-26 13:39 ` Petr Vorel 2026-05-26 14:02 ` Cyril Hrubis 1 sibling, 1 reply; 12+ messages in thread From: Petr Vorel @ 2026-05-26 13:39 UTC (permalink / raw) To: Cyril Hrubis; +Cc: ltp Hi Cyril, ... > +/* supported values for safe_read() len_strict parameter */ Could we have kerneldoc (ok to fix before merge). /** * enum safe_read_opts - supported values for safe_read() len_strict parameter */ * * @SAFE_READ_ANY: no length strictness, short reads are ok. * @SAFE_READ_ALL: strict length, short reads trigger :c:enum:`TBROK <tst_res_flags>`. * @SAFE_READ_ANY_EAGAIN: converts EAGAIN to read that returns 0. */ Otherwise LGTM, thanks for spotting the error. Reviewed-by: Petr Vorel <pvorel@suse.cz> Kind regards, Petr > +enum safe_read_opts { > + /* no length strictness, short reads are ok */ > + SAFE_READ_ANY = 0, > + > + /* strict length, short reads trigger TBROK */ > + SAFE_READ_ALL = 1, > + > + /* converts EAGAIN to read that returns 0 */ > + SAFE_READ_ANY_EAGAIN = 2, > +}; ... -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v2 1/2] safe_macros: Add SAFE_READ_ANY_EAGAIN 2026-05-26 13:39 ` Petr Vorel @ 2026-05-26 14:02 ` Cyril Hrubis 2026-05-26 14:15 ` Petr Vorel 0 siblings, 1 reply; 12+ messages in thread From: Cyril Hrubis @ 2026-05-26 14:02 UTC (permalink / raw) To: Petr Vorel; +Cc: ltp Hi! > ... > > +/* supported values for safe_read() len_strict parameter */ > Could we have kerneldoc (ok to fix before merge). > > /** > * enum safe_read_opts - supported values for safe_read() len_strict parameter */ > * > * @SAFE_READ_ANY: no length strictness, short reads are ok. > * @SAFE_READ_ALL: strict length, short reads trigger :c:enum:`TBROK <tst_res_flags>`. > * @SAFE_READ_ANY_EAGAIN: converts EAGAIN to read that returns 0. > */ > > Otherwise LGTM, thanks for spotting the error. I would avoid that for now, since we are likely going to change the API after the release. Is that okay? -- Cyril Hrubis chrubis@suse.cz -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v2 1/2] safe_macros: Add SAFE_READ_ANY_EAGAIN 2026-05-26 14:02 ` Cyril Hrubis @ 2026-05-26 14:15 ` Petr Vorel 0 siblings, 0 replies; 12+ messages in thread From: Petr Vorel @ 2026-05-26 14:15 UTC (permalink / raw) To: Cyril Hrubis; +Cc: ltp > Hi! > > ... > > > +/* supported values for safe_read() len_strict parameter */ > > Could we have kerneldoc (ok to fix before merge). > > /** > > * enum safe_read_opts - supported values for safe_read() len_strict parameter */ > > * > > * @SAFE_READ_ANY: no length strictness, short reads are ok. > > * @SAFE_READ_ALL: strict length, short reads trigger :c:enum:`TBROK <tst_res_flags>`. > > * @SAFE_READ_ANY_EAGAIN: converts EAGAIN to read that returns 0. > > */ > > Otherwise LGTM, thanks for spotting the error. > I would avoid that for now, since we are likely going to change the API > after the release. Is that okay? Sure, I'm sorry I overlooked expected API change. Kind regards, Petr -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 12+ messages in thread
* [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels 2026-05-26 8:34 [LTP] [PATCH 0/2] Fix inotify{07,08} TBROK where it should TFAIL Cyril Hrubis 2026-05-26 8:34 ` [LTP] [PATCH v2 1/2] safe_macros: Add SAFE_READ_ANY_EAGAIN Cyril Hrubis @ 2026-05-26 8:34 ` Cyril Hrubis 2026-05-26 8:44 ` Martin Doucha 2026-05-26 13:45 ` Petr Vorel 1 sibling, 2 replies; 12+ messages in thread From: Cyril Hrubis @ 2026-05-26 8:34 UTC (permalink / raw) To: ltp When kernel fails to generate events the read returns EAGAIN and since we switched to SAFE_READ() the tests now TBROK when kernel does not generate events. Fix this by passing the newly introduced SAFE_READ_ANY_EAGAIN flag to the SAFE_READ(). Fixes: deda021818a4 ('inotify: modernize with SAFE_ wrappers') Signed-off-by: Cyril Hrubis <chrubis@suse.cz> --- testcases/kernel/syscalls/inotify/inotify07.c | 2 +- testcases/kernel/syscalls/inotify/inotify08.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testcases/kernel/syscalls/inotify/inotify07.c b/testcases/kernel/syscalls/inotify/inotify07.c index b4000f353..9cadbf656 100644 --- a/testcases/kernel/syscalls/inotify/inotify07.c +++ b/testcases/kernel/syscalls/inotify/inotify07.c @@ -88,7 +88,7 @@ void verify_inotify(void) strcpy(event_set[test_cnt].name, FILE_NAME); test_cnt++; - int len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN); + int len = SAFE_READ(SAFE_READ_ANY_EAGAIN, fd_notify, event_buf, EVENT_BUF_LEN); int i = 0, test_num = 0; while (i < len) { diff --git a/testcases/kernel/syscalls/inotify/inotify08.c b/testcases/kernel/syscalls/inotify/inotify08.c index e0837cac3..23d3c5a65 100644 --- a/testcases/kernel/syscalls/inotify/inotify08.c +++ b/testcases/kernel/syscalls/inotify/inotify08.c @@ -86,7 +86,7 @@ void verify_inotify(void) SAFE_TOUCH(OVL_LOWER"/"FILE_NAME, 0644, NULL); SAFE_TOUCH(OVL_UPPER"/"FILE_NAME, 0644, NULL); - int len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN); + int len = SAFE_READ(SAFE_READ_ANY_EAGAIN, fd_notify, event_buf, EVENT_BUF_LEN); int i = 0, test_num = 0; while (i < len) { -- 2.53.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels 2026-05-26 8:34 ` [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels Cyril Hrubis @ 2026-05-26 8:44 ` Martin Doucha 2026-05-26 13:45 ` Petr Vorel 1 sibling, 0 replies; 12+ messages in thread From: Martin Doucha @ 2026-05-26 8:44 UTC (permalink / raw) To: Cyril Hrubis, ltp Hi, for both patches: Reviewed-by: Martin Doucha <mdoucha@suse.cz> On 5/26/26 10:34, Cyril Hrubis wrote: > When kernel fails to generate events the read returns EAGAIN and since > we switched to SAFE_READ() the tests now TBROK when kernel does not > generate events. Fix this by passing the newly introduced > SAFE_READ_ANY_EAGAIN flag to the SAFE_READ(). > > Fixes: deda021818a4 ('inotify: modernize with SAFE_ wrappers') > Signed-off-by: Cyril Hrubis <chrubis@suse.cz> > --- > testcases/kernel/syscalls/inotify/inotify07.c | 2 +- > testcases/kernel/syscalls/inotify/inotify08.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/testcases/kernel/syscalls/inotify/inotify07.c b/testcases/kernel/syscalls/inotify/inotify07.c > index b4000f353..9cadbf656 100644 > --- a/testcases/kernel/syscalls/inotify/inotify07.c > +++ b/testcases/kernel/syscalls/inotify/inotify07.c > @@ -88,7 +88,7 @@ void verify_inotify(void) > strcpy(event_set[test_cnt].name, FILE_NAME); > test_cnt++; > > - int len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN); > + int len = SAFE_READ(SAFE_READ_ANY_EAGAIN, fd_notify, event_buf, EVENT_BUF_LEN); > > int i = 0, test_num = 0; > while (i < len) { > diff --git a/testcases/kernel/syscalls/inotify/inotify08.c b/testcases/kernel/syscalls/inotify/inotify08.c > index e0837cac3..23d3c5a65 100644 > --- a/testcases/kernel/syscalls/inotify/inotify08.c > +++ b/testcases/kernel/syscalls/inotify/inotify08.c > @@ -86,7 +86,7 @@ void verify_inotify(void) > SAFE_TOUCH(OVL_LOWER"/"FILE_NAME, 0644, NULL); > SAFE_TOUCH(OVL_UPPER"/"FILE_NAME, 0644, NULL); > > - int len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN); > + int len = SAFE_READ(SAFE_READ_ANY_EAGAIN, fd_notify, event_buf, EVENT_BUF_LEN); > > int i = 0, test_num = 0; > while (i < len) { -- Martin Doucha mdoucha@suse.cz SW Quality Engineer SUSE LINUX, s.r.o. CORSO IIa Krizikova 148/34 186 00 Prague 8 Czech Republic -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels 2026-05-26 8:34 ` [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels Cyril Hrubis 2026-05-26 8:44 ` Martin Doucha @ 2026-05-26 13:45 ` Petr Vorel 2026-05-26 13:59 ` Cyril Hrubis 1 sibling, 1 reply; 12+ messages in thread From: Petr Vorel @ 2026-05-26 13:45 UTC (permalink / raw) To: Cyril Hrubis; +Cc: ltp Hi Cyril, Reviewed-by: Petr Vorel <pvorel@suse.cz> Thanks for fixing it! > - int len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN); > + int len = SAFE_READ(SAFE_READ_ANY_EAGAIN, fd_notify, event_buf, EVENT_BUF_LEN); Maybe later after the release we could think about about shorten this with definitions. I'm ok if you consider this as not useful. Kind regards, Petr +++ include/tst_safe_macros.h @@ -117,6 +117,15 @@ int safe_pipe2(const char *file, const int lineno, int fildes[2], int flags); #define SAFE_READ(len_strict, fildes, buf, nbyte) \ safe_read(__FILE__, __LINE__, NULL, (len_strict), (fildes), (buf), (nbyte)) +#define SAFE_READ_ANY(fildes, buf, nbyte) \ + SAFE_READ(SAFE_READ_ANY, fildes, buf, nbyte) + +#define SAFE_READ_ALL(fildes, buf, nbyte) \ + SAFE_READ(SAFE_READ_ALL, fildes, buf, nbyte) + +#define SAFE_READ_ANY_EAGAIN(fildes, buf, nbyte) \ + SAFE_READ(SAFE_READ_ANY_EAGAIN, fildes, buf, nbyte) + #define SAFE_SETEGID(egid) \ safe_setegid(__FILE__, __LINE__, NULL, (egid)) -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels 2026-05-26 13:45 ` Petr Vorel @ 2026-05-26 13:59 ` Cyril Hrubis 2026-05-26 14:16 ` Petr Vorel 0 siblings, 1 reply; 12+ messages in thread From: Cyril Hrubis @ 2026-05-26 13:59 UTC (permalink / raw) To: Petr Vorel; +Cc: ltp Hi! > Maybe later after the release we could think about about shorten this with > definitions. I'm ok if you consider this as not useful. I was thinking about this, but I wanted to have minimal fix before the release. We can rethink the SAFE_WRITE and SAFE_READ API later on. -- Cyril Hrubis chrubis@suse.cz -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels 2026-05-26 13:59 ` Cyril Hrubis @ 2026-05-26 14:16 ` Petr Vorel 2026-05-26 15:03 ` Cyril Hrubis 0 siblings, 1 reply; 12+ messages in thread From: Petr Vorel @ 2026-05-26 14:16 UTC (permalink / raw) To: Cyril Hrubis; +Cc: ltp > Hi! > > Maybe later after the release we could think about about shorten this with > > definitions. I'm ok if you consider this as not useful. > I was thinking about this, but I wanted to have minimal fix before the > release. We can rethink the SAFE_WRITE and SAFE_READ API later on. Good. Sure I agree with minimal changes as these are pre-release fixes. Kind regards, Petr -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels 2026-05-26 14:16 ` Petr Vorel @ 2026-05-26 15:03 ` Cyril Hrubis 0 siblings, 0 replies; 12+ messages in thread From: Cyril Hrubis @ 2026-05-26 15:03 UTC (permalink / raw) To: Petr Vorel; +Cc: ltp Hi! > Good. Sure I agree with minimal changes as these are pre-release fixes. Pushed. -- Cyril Hrubis chrubis@suse.cz -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-05-26 15:04 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-26 8:34 [LTP] [PATCH 0/2] Fix inotify{07,08} TBROK where it should TFAIL Cyril Hrubis
2026-05-26 8:34 ` [LTP] [PATCH v2 1/2] safe_macros: Add SAFE_READ_ANY_EAGAIN Cyril Hrubis
2026-05-26 11:56 ` Avinesh Kumar via ltp
2026-05-26 13:39 ` Petr Vorel
2026-05-26 14:02 ` Cyril Hrubis
2026-05-26 14:15 ` Petr Vorel
2026-05-26 8:34 ` [LTP] [PATCH v2 2/2] syscalls/inotify{07, 08}: Fix TBROK on older kernels Cyril Hrubis
2026-05-26 8:44 ` Martin Doucha
2026-05-26 13:45 ` Petr Vorel
2026-05-26 13:59 ` Cyril Hrubis
2026-05-26 14:16 ` Petr Vorel
2026-05-26 15:03 ` Cyril Hrubis
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox