* Re: [LTP] lib: tst_rtctime: close RTC fd on the ioctl() error path
2026-07-17 10:19 [LTP] [PATCH v2 1/2] lib: tst_rtctime: close RTC fd on the ioctl() error path Kuba Pawlak via ltp
@ 2026-07-17 11:26 ` linuxtestproject.agent
0 siblings, 0 replies; 5+ messages in thread
From: linuxtestproject.agent @ 2026-07-17 11:26 UTC (permalink / raw)
To: Kuba Pawlak; +Cc: ltp
Hi Kuba,
On Fri, 17 Jul 2026 12:19:59 +0200, Kuba Pawlak wrote:
> lib: tst_rtctime: close RTC fd on the ioctl() error path
Verdict - Reviewed
---
Note:
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] 5+ messages in thread
* [LTP] [PATCH v3 0/2] rtc02: handle RTCs that do not allow setting the time
@ 2026-07-23 9:49 Kuba Pawlak via ltp
2026-07-23 9:49 ` [LTP] [PATCH v3 1/2] lib: tst_rtctime: close RTC fd on the ioctl() error path Kuba Pawlak via ltp
2026-07-23 9:49 ` [LTP] [PATCH v3 2/2] rtc02: skip (TCONF) on read-only RTCs that reject RTC_SET_TIME Kuba Pawlak via ltp
0 siblings, 2 replies; 5+ messages in thread
From: Kuba Pawlak via ltp @ 2026-07-23 9:49 UTC (permalink / raw)
To: ltp
This series makes LTP's rtc02 cope with RTC hardware that does not allow
setting the time (e.g. Qualcomm PMIC RTCs, rtc-pm8xxx, which return -ENODEV
from RTC_SET_TIME when configured without allow-set-time or an nvmem/UEFI
offset). On such devices rtc02 currently fails a valid, working system.
Patch 1 fixes a pre-existing fd leak in tst_rtc_ioctl() that the new probe
in patch 2 would otherwise hit on every run (the RTC chardev is
exclusive-open, so the leak causes a follow-up EBUSY). Patch 2 probes
set-time support in setup and skips with TCONF when RTC_SET_TIME returns
ENODEV.
Tested on arm64:
- QCS8300 (read-only RTC): rtc02 now TCONF (skipped), was TFAIL.
- X1E80100 (writable RTC): rtc02 still TPASS.
Changes since v2:
- patch 1: drop the errno save/restore around SAFE_CLOSE(); a successful
close() does not clobber errno, and if SAFE_CLOSE() fails the test
breaks anyway (Andrea Cervesato).
- patch 2: drop the long explanatory comment and let the commit message
and code speak for themselves; add a blank line between the RTC_RD_TIME
and RTC_SET_TIME probes (Andrea Cervesato).
Link to v2:
https://lists.linux.it/pipermail/ltp/2026-July/049974.html
Kuba Pawlak (2):
lib: tst_rtctime: close RTC fd on the ioctl() error path
rtc02: skip (TCONF) on read-only RTCs that reject RTC_SET_TIME
lib/tst_rtctime.c | 7 ++++---
testcases/kernel/device-drivers/rtc/rtc02.c | 11 +++++++++++
2 files changed, 15 insertions(+), 3 deletions(-)
--
2.43.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 5+ messages in thread
* [LTP] [PATCH v3 1/2] lib: tst_rtctime: close RTC fd on the ioctl() error path
2026-07-23 9:49 [LTP] [PATCH v3 0/2] rtc02: handle RTCs that do not allow setting the time Kuba Pawlak via ltp
@ 2026-07-23 9:49 ` Kuba Pawlak via ltp
2026-07-23 11:14 ` [LTP] " linuxtestproject.agent
2026-07-23 9:49 ` [LTP] [PATCH v3 2/2] rtc02: skip (TCONF) on read-only RTCs that reject RTC_SET_TIME Kuba Pawlak via ltp
1 sibling, 1 reply; 5+ messages in thread
From: Kuba Pawlak via ltp @ 2026-07-23 9:49 UTC (permalink / raw)
To: ltp
tst_rtc_ioctl() opens the RTC device with SAFE_OPEN() but returns -1 on
an ioctl() failure without closing the descriptor, leaking it on every
failed call. The RTC character device is exclusive-open, so a leaked fd
makes the next tst_rtc_ioctl() open fail with EBUSY.
This was mostly latent because the failure path was rarely taken, but it
is now hit routinely on RTCs that reject RTC_SET_TIME (e.g. Qualcomm PMIC
RTCs returning -ENODEV). Close the fd on the error path and preserve
errno so callers can still inspect the ioctl() failure reason.
Signed-off-by: Kuba Pawlak <kuba.pawlak@canonical.com>
---
v3: drop the errno save/restore around SAFE_CLOSE(); a successful close()
does not clobber errno, and SAFE_CLOSE() breaks the test on failure.
lib/tst_rtctime.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/lib/tst_rtctime.c b/lib/tst_rtctime.c
index c62ac73..99c16ec 100644
--- a/lib/tst_rtctime.c
+++ b/lib/tst_rtctime.c
@@ -117,11 +117,12 @@ int tst_rtc_ioctl(const char *rtc_dev, unsigned long request,
ret = ioctl(rtc_fd, request, rtc_tm);
- if (ret != 0)
+ if (ret != 0) {
+ SAFE_CLOSE(rtc_fd);
return -1;
+ }
- if (rtc_fd > 0)
- SAFE_CLOSE(rtc_fd);
+ SAFE_CLOSE(rtc_fd);
return 0;
}
--
2.43.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [LTP] [PATCH v3 2/2] rtc02: skip (TCONF) on read-only RTCs that reject RTC_SET_TIME
2026-07-23 9:49 [LTP] [PATCH v3 0/2] rtc02: handle RTCs that do not allow setting the time Kuba Pawlak via ltp
2026-07-23 9:49 ` [LTP] [PATCH v3 1/2] lib: tst_rtctime: close RTC fd on the ioctl() error path Kuba Pawlak via ltp
@ 2026-07-23 9:49 ` Kuba Pawlak via ltp
1 sibling, 0 replies; 5+ messages in thread
From: Kuba Pawlak via ltp @ 2026-07-23 9:49 UTC (permalink / raw)
To: ltp
Some RTC hardware does not allow setting the time from the host. For
example Qualcomm PMIC RTCs (rtc-pm8xxx) that are configured without the
allow-set-time DT property and without an nvmem/UEFI offset return
-ENODEV from RTC_SET_TIME; the counter free-runs from the epoch and is
only usable as an uptime source. On such devices rtc02 currently reports
TFAIL, which is a hardware limitation rather than a kernel defect.
Probe whether the RTC can be set in the setup phase, writing back the
value just read so a writable RTC is left unchanged. When RTC_SET_TIME
fails with ENODEV, skip the whole test with TCONF. Only ENODEV is treated
as "not supported": wider errnos such as EINVAL are used broadly by the
kernel and could mask a genuine failure, so anything else still results
in TBROK.
Doing the check in setup, before tst_rtc_clock_save(), also avoids the
cleanup path (tst_rtc_clock_restore()) issuing RTC_SET_TIME and turning
the run into a TBROK on such devices. If the probe succeeds the test body
runs as before, so no additional handling is needed there.
Signed-off-by: Kuba Pawlak <kuba.pawlak@canonical.com>
---
v3: drop the long explanatory comment; add a blank line between the
RTC_RD_TIME and RTC_SET_TIME probes.
testcases/kernel/device-drivers/rtc/rtc02.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/testcases/kernel/device-drivers/rtc/rtc02.c b/testcases/kernel/device-drivers/rtc/rtc02.c
index 34509ab..1b954f3 100644
--- a/testcases/kernel/device-drivers/rtc/rtc02.c
+++ b/testcases/kernel/device-drivers/rtc/rtc02.c
@@ -16,6 +16,7 @@
*/
#include <stdio.h>
+#include <errno.h>
#include "tst_rtctime.h"
#include "tst_wallclock.h"
#include "tst_test.h"
@@ -133,10 +134,20 @@ static void set_rtc_test(void)
static void rtc_setup(void)
{
int exists = access(rtc_dev, F_OK);
+ struct rtc_time probe_tm;
if (exists < 0)
tst_brk(TCONF, "RTC device %s not available", rtc_dev);
+ if (tst_rtc_gettime(rtc_dev, &probe_tm))
+ tst_brk(TBROK | TERRNO, "ioctl() RTC_RD_TIME");
+
+ if (tst_rtc_settime(rtc_dev, &probe_tm)) {
+ if (errno == ENODEV)
+ tst_brk(TCONF | TERRNO, "RTC does not support setting the time");
+ tst_brk(TBROK | TERRNO, "ioctl() RTC_SET_TIME");
+ }
+
tst_rtc_clock_save(rtc_dev);
}
--
2.43.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [LTP] lib: tst_rtctime: close RTC fd on the ioctl() error path
2026-07-23 9:49 ` [LTP] [PATCH v3 1/2] lib: tst_rtctime: close RTC fd on the ioctl() error path Kuba Pawlak via ltp
@ 2026-07-23 11:14 ` linuxtestproject.agent
0 siblings, 0 replies; 5+ messages in thread
From: linuxtestproject.agent @ 2026-07-23 11:14 UTC (permalink / raw)
To: Kuba Pawlak; +Cc: ltp
Hi Kuba,
On 07/23/2026, Kuba Pawlak wrote:
> lib: tst_rtctime: close RTC fd on the ioctl() error path
Verdict - Reviewed
---
Note:
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] 5+ messages in thread
end of thread, other threads:[~2026-07-23 11:14 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-23 9:49 [LTP] [PATCH v3 0/2] rtc02: handle RTCs that do not allow setting the time Kuba Pawlak via ltp
2026-07-23 9:49 ` [LTP] [PATCH v3 1/2] lib: tst_rtctime: close RTC fd on the ioctl() error path Kuba Pawlak via ltp
2026-07-23 11:14 ` [LTP] " linuxtestproject.agent
2026-07-23 9:49 ` [LTP] [PATCH v3 2/2] rtc02: skip (TCONF) on read-only RTCs that reject RTC_SET_TIME Kuba Pawlak via ltp
-- strict thread matches above, loose matches on Subject: below --
2026-07-17 10:19 [LTP] [PATCH v2 1/2] lib: tst_rtctime: close RTC fd on the ioctl() error path Kuba Pawlak via ltp
2026-07-17 11:26 ` [LTP] " linuxtestproject.agent
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.