1*4882a593SmuzhiyunFrom 194c626f2a026233b7383d75225419ab66389aaa Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Alistair Francis <alistair.francis@wdc.com> 3*4882a593SmuzhiyunDate: Tue, 24 Sep 2019 21:55:36 +0100 4*4882a593SmuzhiyunSubject: [PATCH 19/20] inet/net-internal.h: Fix uninitalised clntudp_call() 5*4882a593Smuzhiyun variable 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunThe total_deadline variable inside the clntudp_call() function inside 8*4882a593Smuzhiyunsunrpc/clnt_udp.c can cause uninitalised variable warnings when building 9*4882a593Smuzhiyunwith GCC 8.3 or 9.2 on a platform with a 64-bit tv_nsec on a 32-bit 10*4882a593Smuzhiyunarchitecture. To fix the warning let's use the DIAG_* macros to hide the 11*4882a593Smuzhiyunwarning. 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunA GCC bug case has also been submitted: 14*4882a593Smuzhiyun https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91691 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun2019-09-24 Alistair Francis <alistair.francis@wdc.com> 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun * inet/net-internal.h: Fix uninitalised clntudp_call() variable. 19*4882a593Smuzhiyun 20*4882a593SmuzhiyunReviewed-by: Carlos O'Donell <carlos@redhat.com> 21*4882a593Smuzhiyun(cherry picked from commit 5d245b5f8d9663953c20107e3bb16fe249e48126) 22*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 23*4882a593Smuzhiyun--- 24*4882a593Smuzhiyun inet/net-internal.h | 13 +++++++++++++ 25*4882a593Smuzhiyun 1 file changed, 13 insertions(+) 26*4882a593Smuzhiyun 27*4882a593Smuzhiyundiff --git a/inet/net-internal.h b/inet/net-internal.h 28*4882a593Smuzhiyunindex 0ba6736a..7019d23b 100644 29*4882a593Smuzhiyun--- a/inet/net-internal.h 30*4882a593Smuzhiyun+++ b/inet/net-internal.h 31*4882a593Smuzhiyun@@ -23,6 +23,7 @@ 32*4882a593Smuzhiyun #include <stdbool.h> 33*4882a593Smuzhiyun #include <stdint.h> 34*4882a593Smuzhiyun #include <sys/time.h> 35*4882a593Smuzhiyun+#include <libc-diag.h> 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun int __inet6_scopeid_pton (const struct in6_addr *address, 38*4882a593Smuzhiyun const char *scope, uint32_t *result); 39*4882a593Smuzhiyun@@ -96,6 +97,16 @@ __deadline_is_infinite (struct deadline deadline) 40*4882a593Smuzhiyun return deadline.absolute.tv_nsec < 0; 41*4882a593Smuzhiyun } 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun+/* GCC 8.3 and 9.2 both incorrectly report total_deadline 44*4882a593Smuzhiyun+ * (from sunrpc/clnt_udp.c) as maybe-uninitialized when tv_sec is 8 bytes 45*4882a593Smuzhiyun+ * (64-bits) wide on 32-bit systems. We have to set -Wmaybe-uninitialized 46*4882a593Smuzhiyun+ * here as it won't fix the error in sunrpc/clnt_udp.c. 47*4882a593Smuzhiyun+ * A GCC bug has been filed here: 48*4882a593Smuzhiyun+ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91691 49*4882a593Smuzhiyun+ */ 50*4882a593Smuzhiyun+DIAG_PUSH_NEEDS_COMMENT; 51*4882a593Smuzhiyun+DIAG_IGNORE_NEEDS_COMMENT (9, "-Wmaybe-uninitialized"); 52*4882a593Smuzhiyun+ 53*4882a593Smuzhiyun /* Return true if the current time is at the deadline or past it. */ 54*4882a593Smuzhiyun static inline bool 55*4882a593Smuzhiyun __deadline_elapsed (struct deadline_current_time current, 56*4882a593Smuzhiyun@@ -120,6 +131,8 @@ __deadline_first (struct deadline left, struct deadline right) 57*4882a593Smuzhiyun return right; 58*4882a593Smuzhiyun } 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun+DIAG_POP_NEEDS_COMMENT; 61*4882a593Smuzhiyun+ 62*4882a593Smuzhiyun /* Add TV to the current time and return it. Returns a special 63*4882a593Smuzhiyun infinite absolute deadline on overflow. */ 64*4882a593Smuzhiyun struct deadline __deadline_from_timeval (struct deadline_current_time, 65*4882a593Smuzhiyun-- 66*4882a593Smuzhiyun2.20.1 67*4882a593Smuzhiyun 68