From f360af08896a727403dcf7c2cf54f0f4c1730318 Mon Sep 17 00:00:00 2001 From: Nils Tonnaett Date: Fri, 16 Jan 2026 21:25:04 -0800 Subject: [PATCH] module-avb: check return value of read when clearing ptp_fd input buffer --- src/modules/module-avb/gptp.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/modules/module-avb/gptp.c b/src/modules/module-avb/gptp.c index d542a5063..0b5469259 100644 --- a/src/modules/module-avb/gptp.c +++ b/src/modules/module-avb/gptp.c @@ -77,13 +77,18 @@ static bool update_ts_refclk(struct gptp *gptp) { // Read if something is left in the socket int avail; uint8_t tmp; + ssize_t ret; if (ioctl(gptp->ptp_fd, FIONREAD, &avail) == -1) { pw_log_warn("Failed to get number of byes in ptp_fd input buffer: %m"); return false; } - pw_log_debug("Flushing stale data: %u bytes", avail); - while (avail-- && read(gptp->ptp_fd, &tmp, 1)); + pw_log_debug("Clearing stale data: %u bytes", avail); + while (avail-- && (ret = read(gptp->ptp_fd, &tmp, 1)) > 0); + if (ret == -1) { + pw_log_warn("Failed to clear ptp_fd input buffer: %m"); + return false; + } struct ptp_management_msg req; spa_zero(req); @@ -117,7 +122,7 @@ static bool update_ts_refclk(struct gptp *gptp) { } uint8_t buf[sizeof(struct ptp_management_msg) + sizeof(struct ptp_parent_data_set)]; - ssize_t ret = read(gptp->ptp_fd, &buf, sizeof(buf)); + ret = read(gptp->ptp_fd, &buf, sizeof(buf)); if (ret == -1) { pw_log_warn("Failed to receive PTP management response: %m"); return false;