The recvmsg() call can return zero for a zero-length UDP message, which
should be handled as a bad message and not a fault of the port. This was
addressed in commit 6b61ba29c78e ("Avoid fault when receiving zero
length packets"), but later regressed in commit a6e0b83bd503
("sk: Convey transmit path errors to the caller.").

Signed-off-by: Miroslav Lichvar <mlich...@redhat.com>
Fixes: a6e0b83bd503 ("sk: Convey transmit path errors to the caller.")
---
 sk.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sk.c b/sk.c
index c9ef4d2..8be0708 100644
--- a/sk.c
+++ b/sk.c
@@ -391,7 +391,7 @@ int sk_receive(int fd, void *buf, int buflen,
 
        if (!ts) {
                memset(&hwts->ts, 0, sizeof(hwts->ts));
-               return cnt < 1 ? -errno : cnt;
+               return cnt < 0 ? -errno : cnt;
        }
 
        switch (hwts->type) {
@@ -407,7 +407,7 @@ int sk_receive(int fd, void *buf, int buflen,
                hwts->ts = timespec_to_tmv(ts[1]);
                break;
        }
-       return cnt < 1 ? -errno : cnt;
+       return cnt < 0 ? -errno : cnt;
 }
 
 int sk_set_priority(int fd, int family, uint8_t dscp)
-- 
2.26.2



_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to