diff --git a/mariadb-10.5-fix-prevent-optimizing-out-buf-argument-in-ch.patch b/mariadb-10.5-fix-prevent-optimizing-out-buf-argument-in-ch.patch new file mode 100644 index 0000000..5b7d471 --- /dev/null +++ b/mariadb-10.5-fix-prevent-optimizing-out-buf-argument-in-ch.patch @@ -0,0 +1,40 @@ +From 35c277851972267d4d020126ab8f893c4b17dd36 Mon Sep 17 00:00:00 2001 +From: Martin Liska +Date: Sun, 8 Dec 2019 10:52:27 +0100 +Subject: [PATCH] MDEV-21248: Prevent optimizing out buf argument in + check_stack_overrun. + +When using LTO, one can see optimization of stack variables that +are passed to check_stack_overrun as argument buf. That prevents +proper stack overrun detection. +--- + sql/sql_parse.cc | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc +index dc81e8a2b91..6f3c076709a 100644 +--- a/sql/sql_parse.cc ++++ b/sql/sql_parse.cc +@@ -7392,8 +7392,17 @@ long max_stack_used; + corresponding exec. (Thus we only have to check in fix_fields.) + - Passing to check_stack_overrun() prevents the compiler from removing it. + */ +-bool check_stack_overrun(THD *thd, long margin, +- uchar *buf __attribute__((unused))) ++ ++bool ++#ifdef __GNUC__ ++/* ++ Do not optimize the function in order to preserve a stack variable creation. ++ Otherwise, the variable pointed as "buf" can be removed due to a missing ++ usage. ++ */ ++__attribute__((optimize("-O0"))) ++#endif ++check_stack_overrun(THD *thd, long margin, uchar *buf __attribute__((unused))) + { + long stack_used; + DBUG_ASSERT(thd == current_thd); +-- +2.25.1 + diff --git a/mariadb.changes b/mariadb.changes index 5686905..983ed22 100644 --- a/mariadb.changes +++ b/mariadb.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Mar 24 05:46:49 UTC 2020 - Martin Liška + +- Add mariadb-10.5-fix-prevent-optimizing-out-buf-argument-in-ch.patch + in order to fix boo#1158405 (MDEV-21248). + ------------------------------------------------------------------- Wed Feb 26 16:25:55 UTC 2020 - Thorsten Kukuk diff --git a/mariadb.spec b/mariadb.spec index 673fcbd..c01248f 100644 --- a/mariadb.spec +++ b/mariadb.spec @@ -84,6 +84,7 @@ Patch8: mariadb-10.2.4-fortify-and-O.patch Patch9: mariadb-10.2.19-link-and-enable-c++11-atomics.patch Patch10: mariadb-10.4.12-harden_setuid.patch Patch11: mariadb-10.4.12-fix-install-db.patch +Patch12: mariadb-10.5-fix-prevent-optimizing-out-buf-argument-in-ch.patch # needed for bison SQL parser and wsrep API BuildRequires: bison BuildRequires: cmake @@ -370,6 +371,7 @@ find . -name "*.jar" -type f -exec rm --verbose -f {} \; %patch9 -p1 %patch10 -p1 %patch11 -p1 +%patch12 -p1 cp %{_sourcedir}/suse-test-run .