1From 63ab887be90c7fe37d537ea75e60eb95d6d87d3f Mon Sep 17 00:00:00 2001 2From: Peter Seiderer <ps.report@gmx.net> 3Date: Sun, 5 Mar 2023 22:08:13 +0100 4Subject: [PATCH] uqmi: avoid gcc-12.x false error reporting (storing the 5 address of local variable 'complete' in '*req.complete') 6 7Avoid gcc-12.x false error reporting (req->complete is later reset to NULL 8in case of use of local complete): 9 10 dev.c:217:23: error: storing the address of local variable 'complete' in '*req.complete' [-Werror=dangling-pointer=] 11 217 | req->complete = &complete; 12 | ~~~~~~~~~~~~~~^~~~~~~~~~~ 13 14Signed-off-by: Peter Seiderer <ps.report@gmx.net> 15[Upstream: http://lists.openwrt.org/pipermail/openwrt-devel/2023-March/040667.html] 16Signed-off-by: Peter Seiderer <ps.report@gmx.net> 17--- 18Changes v1 -> v2: 19 - apply pragma ignored only for gcc >= 12.x (as the warning 20 '-Wdangling-pointer' was introduced with gcc-12.x) 21--- 22 dev.c | 12 ++++++++++++ 23 1 file changed, 12 insertions(+) 24 25diff --git a/dev.c b/dev.c 26index bd10207..dbd42d4 100644 27--- a/dev.c 28+++ b/dev.c 29@@ -203,6 +203,15 @@ void qmi_request_cancel(struct qmi_dev *qmi, struct qmi_request *req) 30 __qmi_request_complete(qmi, req, NULL); 31 } 32 33+/* avoid gcc-12.x false error reporting: 34+ * dev.c:217:23: error: storing the address of local variable ‘complete’ in ‘*req.complete’ [-Werror=dangling-pointer=] 35+ * 217 | req->complete = &complete; 36+ * | ~~~~~~~~~~~~~~^~~~~~~~~~~ 37+ */ 38+#if __GNUC__ >= 12 39+#pragma GCC diagnostic push 40+#pragma GCC diagnostic ignored "-Wdangling-pointer" 41+#endif 42 int qmi_request_wait(struct qmi_dev *qmi, struct qmi_request *req) 43 { 44 bool complete = false; 45@@ -231,6 +240,9 @@ int qmi_request_wait(struct qmi_dev *qmi, struct qmi_request *req) 46 47 return req->ret; 48 } 49+#if __GNUC__ >= 12 50+#pragma GCC diagnostic pop 51+#endif 52 53 struct qmi_connect_request { 54 struct qmi_request req; 55-- 562.39.2 57 58