From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=none (p=none dis=none) header.from=gibson.dropbear.id.au Authentication-Results: passt.top; dkim=pass (2048-bit key; secure) header.d=gibson.dropbear.id.au header.i=@gibson.dropbear.id.au header.a=rsa-sha256 header.s=202410 header.b=Ex1Ma1PV; dkim-atps=neutral Received: from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by passt.top (Postfix) with ESMTPS id 8509C5A004C for ; Mon, 28 Oct 2024 03:14:26 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202410; t=1730081660; bh=qich/ZocWiZPYdj1N+p5sMwb/3JU7Ya5a9AReXUPHnA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Ex1Ma1PVbjJzfymdN/RtDkSkDqSkuRKJFY4ThbMM/BE+ormQvcYOWEZxhVcPam/XE Jn524CUNdw0JdLGi4YItLGqKEIuZBcPwo7u02HllJapaJPdOhURDEadc8xzz3d0wTs soASbuM2PFpVnHbgV3YBU58V/2hpKHWoR8cEuph6wgWIIjmMQI7pp5LPB/sdmkl8w4 CycbHfhDIltr3SY3M0gtsOHlwARp476Qj7TmPnP9mRBTpCGV+a6Ou/Hgnyz/vVaXvS i29lOZzxhvG2/OgiKFFDxk+cMxsVsxSIC3fP6PzBGYtNJX89rMZ6bpPukmPffqc++F EyMS3FqTAG3Qg== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4XcH585xBXz4x6k; Mon, 28 Oct 2024 13:14:20 +1100 (AEDT) Date: Mon, 28 Oct 2024 12:01:49 +1100 From: David Gibson To: Stefano Brivio Subject: Re: [PATCH v2 6/8] treewide: Address cert-err33-c clang-tidy warnings for clock and timer functions Message-ID: References: <20241025120814.3449347-1-sbrivio@redhat.com> <20241025120814.3449347-7-sbrivio@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="xhTYW/d0vlC6vXH7" Content-Disposition: inline In-Reply-To: <20241025120814.3449347-7-sbrivio@redhat.com> Message-ID-Hash: HDPP47WKGLYQZL5CLKB4LYCR72SE55LV X-Message-ID-Hash: HDPP47WKGLYQZL5CLKB4LYCR72SE55LV X-MailFrom: dgibson@gandalf.ozlabs.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --xhTYW/d0vlC6vXH7 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Oct 25, 2024 at 02:08:12PM +0200, Stefano Brivio wrote: > For clock_gettime(), we shouldn't ignore errors if they happen at > initialisation phase, because something is seriously wrong and it's > not helpful if we proceed as if nothing happened. >=20 > As we're up and running, though, it's probably better to report the > error and use a stale value than to terminate altogether. Make sure > we use a zero value if we don't have a stale one somewhere. >=20 > For timerfd_gettime() and timerfd_settime() failures, just report an > error, there isn't much else we can do. >=20 > Signed-off-by: Stefano Brivio Reviewed-by: David Gibson > --- > passt.c | 9 ++++++--- > pcap.c | 17 +++++++++++------ > tcp.c | 12 +++++++++--- > 3 files changed, 26 insertions(+), 12 deletions(-) >=20 > diff --git a/passt.c b/passt.c > index ad6f0bc..eaf231d 100644 > --- a/passt.c > +++ b/passt.c > @@ -207,7 +207,8 @@ int main(int argc, char **argv) > struct timespec now; > struct sigaction sa; > =20 > - clock_gettime(CLOCK_MONOTONIC, &log_start); > + if (clock_gettime(CLOCK_MONOTONIC, &log_start)) > + die_perror("Failed to get CLOCK_MONOTONIC time"); > =20 > arch_avx2_exec(argv); > =20 > @@ -265,7 +266,8 @@ int main(int argc, char **argv) > =20 > secret_init(&c); > =20 > - clock_gettime(CLOCK_MONOTONIC, &now); > + if (clock_gettime(CLOCK_MONOTONIC, &now)) > + die_perror("Failed to get CLOCK_MONOTONIC time"); > =20 > flow_init(); > =20 > @@ -313,7 +315,8 @@ loop: > if (nfds =3D=3D -1 && errno !=3D EINTR) > die_perror("epoll_wait() failed in main loop"); > =20 > - clock_gettime(CLOCK_MONOTONIC, &now); > + if (clock_gettime(CLOCK_MONOTONIC, &now)) > + err_perror("Failed to get CLOCK_MONOTONIC time"); > =20 > for (i =3D 0; i < nfds; i++) { > union epoll_ref ref =3D *((union epoll_ref *)&events[i].data.u64); > diff --git a/pcap.c b/pcap.c > index 6753cfb..cab813f 100644 > --- a/pcap.c > +++ b/pcap.c > @@ -100,12 +100,14 @@ static void pcap_frame(const struct iovec *iov, siz= e_t iovcnt, > void pcap(const char *pkt, size_t l2len) > { > struct iovec iov =3D { (char *)pkt, l2len }; > - struct timespec now; > + struct timespec now =3D { 0 }; > =20 > if (pcap_fd =3D=3D -1) > return; > =20 > - clock_gettime(CLOCK_REALTIME, &now); > + if (clock_gettime(CLOCK_REALTIME, &now)) > + err_perror("Failed to get CLOCK_REALTIME time"); > + > pcap_frame(&iov, 1, 0, &now); > } > =20 > @@ -119,13 +121,14 @@ void pcap(const char *pkt, size_t l2len) > void pcap_multiple(const struct iovec *iov, size_t frame_parts, unsigned= int n, > size_t offset) > { > - struct timespec now; > + struct timespec now =3D { 0 }; > unsigned int i; > =20 > if (pcap_fd =3D=3D -1) > return; > =20 > - clock_gettime(CLOCK_REALTIME, &now); > + if (clock_gettime(CLOCK_REALTIME, &now)) > + err_perror("Failed to get CLOCK_REALTIME time"); > =20 > for (i =3D 0; i < n; i++) > pcap_frame(iov + i * frame_parts, frame_parts, offset, &now); > @@ -143,12 +146,14 @@ void pcap_multiple(const struct iovec *iov, size_t = frame_parts, unsigned int n, > /* cppcheck-suppress unusedFunction */ > void pcap_iov(const struct iovec *iov, size_t iovcnt, size_t offset) > { > - struct timespec now; > + struct timespec now =3D { 0 }; > =20 > if (pcap_fd =3D=3D -1) > return; > =20 > - clock_gettime(CLOCK_REALTIME, &now); > + if (clock_gettime(CLOCK_REALTIME, &now)) > + err_perror("Failed to get CLOCK_REALTIME time"); > + > pcap_frame(iov, iovcnt, offset, &now); > } > =20 > diff --git a/tcp.c b/tcp.c > index 0d22e07..d55caee 100644 > --- a/tcp.c > +++ b/tcp.c > @@ -548,7 +548,8 @@ static void tcp_timer_ctl(const struct ctx *c, struct= tcp_tap_conn *conn) > (unsigned long long)it.it_value.tv_sec, > (unsigned long long)it.it_value.tv_nsec / 1000 / 1000); > =20 > - timerfd_settime(conn->timer, 0, &it, NULL); > + if (timerfd_settime(conn->timer, 0, &it, NULL)) > + flow_err(conn, "failed to set timer: %s", strerror(errno)); > } > =20 > /** > @@ -2240,7 +2241,9 @@ void tcp_timer_handler(const struct ctx *c, union e= poll_ref ref) > * timer is currently armed, this event came from a previous setting, > * and we just set the timer to a new point in the future: discard it. > */ > - timerfd_gettime(conn->timer, &check_armed); > + if (timerfd_gettime(conn->timer, &check_armed)) > + flow_err(conn, "failed to read timer: %s", strerror(errno)); > + > if (check_armed.it_value.tv_sec || check_armed.it_value.tv_nsec) > return; > =20 > @@ -2278,7 +2281,10 @@ void tcp_timer_handler(const struct ctx *c, union = epoll_ref ref) > * case. This avoids having to preemptively reset the timer on > * ~ACK_TO_TAP_DUE or ~ACK_FROM_TAP_DUE. > */ > - timerfd_settime(conn->timer, 0, &new, &old); > + if (timerfd_settime(conn->timer, 0, &new, &old)) > + flow_err(conn, "failed to set timer: %s", > + strerror(errno)); > + > if (old.it_value.tv_sec =3D=3D ACT_TIMEOUT) { > flow_dbg(conn, "activity timeout"); > tcp_rst(c, conn); --=20 David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson --xhTYW/d0vlC6vXH7 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmce4nwACgkQzQJF27ox 2GeCVRAArUGTkAoTg80GitYrsViS94mkjgEoyH6Jts05g5VSoiB6u96Oa1UHb10G RkxZdPVqTQ+DdkthVjMdGwR6KI36Bhbfokp5/BasheTobklfjkvh4iBmBCjn0aa5 1PXQ5t52baE5C5CRazEyPQ+r47YYXmbCNDv8KNZU7K3qCGzQ5WP9pB4RPgPfyVVM 299Bj2xoD2WzBJKQ2qgzS3v6829uqr1eBC84ZtXddhTHLpIRqoKaiSEYWOBdQo+s ynEbXZxxy2Rr4bRQr4Qek4bwQzBkIuFGCU2JzAntXnFglKxarZSOfCiwg0+Nhg6z CYKwYZgOh6znsrq9dZHir2AzKMW0yCym+GAywLwiM+UwnlMfvEyRRLP32SGdYFzd KQxsmZL2HZYa/EYimpHVAQYXWw6bc19j/uJq0JRWrYXvDLH2+PJzP3c/JLYND9lW A3FVmKz/qZzntTBwSe3dAMaRFsYRisRuIZuydQjV7P2EwuGMPFCrAr6aLDjZUmR1 GeVuFwtjOz0f9BjTKWt7U+ys7rG0cowt4TTrSRziMqH7NrF4B2SMjA2NqrltTnY0 8ZXAHjbwieXCBJCcGoQg66ziSVIS4TUF+S4VUDIBr6N2cqA12j1RgZy9GlrDOs6G C/ty2SWs6dBkSAD1Gqq4vzNSSzszpTq92lakv6iLG070jYWNgJs= =Z6dM -----END PGP SIGNATURE----- --xhTYW/d0vlC6vXH7--