From 51ecd720406dc3254cf81d928856e637a8d75bf4 Mon Sep 17 00:00:00 2001 From: "Justin M. Forbes" Date: Thu, 20 Jan 2022 18:22:51 -0600 Subject: [PATCH] Add a fix for an issue uncovered by gcc 12 Signed-off-by: Justin M. Forbes --- linux-kernel-test.patch | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/linux-kernel-test.patch b/linux-kernel-test.patch index e69de29bb..83d7867b8 100644 --- a/linux-kernel-test.patch +++ b/linux-kernel-test.patch @@ -0,0 +1,51 @@ +From nobody Wed Jan 19 11:56:00 2022 +From: Sergei Trofimovich +To: Peter Zijlstra +Cc: linux-kernel@vger.kernel.org, Sergei Trofimovich , Josh Poimboeuf +Subject: [PATCH] objtool: check: give big enough buffer for pv_ops +Date: Fri, 14 Jan 2022 07:57:56 +0000 +Message-Id: <20220114075756.838243-1-slyich@gmail.com> +List-ID: +X-Mailing-List: linux-kernel@vger.kernel.org +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 7bit + +On gcc-12 build fails flagging possible buffer overflow: + + check.c: In function 'validate_call': + check.c:2865:58: error: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 9 [-Werror=format-truncation=] + 2865 | snprintf(pvname, sizeof(pvname), "pv_ops[%d]", idx); + | ^~ + +I think it's a valid warning: + + static char pvname[16]; + int idx; + ... + idx = (rel->addend / sizeof(void *)); + snprintf(pvname, sizeof(pvname), "pv_ops[%d]", idx); + +we have only 7 chars for %d while it could take up to 9. + +CC: Josh Poimboeuf +CC: Peter Zijlstra +--- + tools/objtool/check.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/objtool/check.c b/tools/objtool/check.c +index 8c1931eab5f1..0fae132ea59f 100644 +--- a/tools/objtool/check.c ++++ b/tools/objtool/check.c +@@ -2852,7 +2852,7 @@ static inline bool func_uaccess_safe(struct symbol *func) + + static inline const char *call_dest_name(struct instruction *insn) + { +- static char pvname[16]; ++ static char pvname[32]; + struct reloc *rel; + int idx; + +-- +2.34.1