diff --git a/valgrind-3.11.0-sighandler-stack.patch b/valgrind-3.11.0-sighandler-stack.patch
new file mode 100644
index 0000000..29a03aa
--- /dev/null
+++ b/valgrind-3.11.0-sighandler-stack.patch
@@ -0,0 +1,54 @@
+commit 13747d21fe69dd730fc4bbe21fc9320d349b41db
+Author: philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9>
+Date:   Sun Jul 10 21:17:58 2016 +0000
+
+    Fix 365273 - Invalid write to stack location reported after signal handler runs
+    
+    Analysis and patch by Earl Chew
+    
+    Tested on x86/amd64/ppc64
+    
+    
+    
+    git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15902 a5019735-40e9-0310-863c-91ae7b9d1cf9
+
+diff --git a/coregrind/m_signals.c b/coregrind/m_signals.c
+index 3e8326f..9146d0c 100644
+--- a/coregrind/m_signals.c
++++ b/coregrind/m_signals.c
+@@ -2519,6 +2519,7 @@ void async_signalhandler ( Int sigNo,
+ Bool VG_(extend_stack)(ThreadId tid, Addr addr)
+ {
+    SizeT udelta;
++   Addr new_stack_base;
+ 
+    /* Get the segment containing addr. */
+    const NSegment* seg = VG_(am_find_nsegment)(addr);
+@@ -2536,14 +2537,15 @@ Bool VG_(extend_stack)(ThreadId tid, Addr addr)
+    vg_assert(seg_next != NULL);
+ 
+    udelta = VG_PGROUNDUP(seg_next->start - addr);
++   new_stack_base = seg_next->start - udelta;
+ 
+    VG_(debugLog)(1, "signals", 
+-                    "extending a stack base 0x%lx down by %lu\n",
+-                    seg_next->start, udelta);
++                 "extending a stack base 0x%lx down by %lu"
++                 " new base 0x%lx to cover 0x%lx\n",
++                 seg_next->start, udelta, new_stack_base, addr);
+    Bool overflow;
+    if (! VG_(am_extend_into_adjacent_reservation_client)
+        ( seg_next->start, -(SSizeT)udelta, &overflow )) {
+-      Addr new_stack_base = seg_next->start - udelta;
+       if (overflow)
+          VG_(umsg)("Stack overflow in thread #%u: can't grow stack to %#lx\n",
+                    tid, new_stack_base);
+@@ -2555,7 +2557,7 @@ Bool VG_(extend_stack)(ThreadId tid, Addr addr)
+ 
+    /* When we change the main stack, we have to let the stack handling
+       code know about it. */
+-   VG_(change_stack)(VG_(clstk_id), addr, VG_(clstk_end));
++   VG_(change_stack)(VG_(clstk_id), new_stack_base, VG_(clstk_end));
+ 
+    if (VG_(clo_sanity_level) > 2)
+       VG_(sanity_check_general)(False);
diff --git a/valgrind.spec b/valgrind.spec
index 2e0c441..9fd4de2 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -175,6 +175,9 @@ Patch41: valgrind-3.11.0-shr.patch
 # KDE#359952 - Enable PCMPxSTRx cases 0x70 and 0x19.
 Patch42: valgrind-3.11.0-pcmpxstrx-0x70-0x19.patch
 
+# KDE#365273 - Invalid write to stack location reported after signal handler
+Patch43: valgrind-3.11.0-sighandler-stack.patch
+
 %if %{build_multilib}
 # Ensure glibc{,-devel} is installed for both multilib arches
 BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
@@ -326,6 +329,7 @@ chmod 755 memcheck/tests/arm64-linux/filter_stderr
 %patch40 -p1
 %patch41 -p1
 %patch42 -p1
+%patch43 -p1
 
 %build
 # We need to use the software collection compiler and binutils if available.
@@ -523,6 +527,7 @@ echo ===============END TESTING===============
 - Add valgrind-3.11.0-shr.patch
 - Add valgrind-3.11.0-pcmpxstrx-0x70-0x19.patch
 - Update valgrind-3.11.0-wrapmalloc.patch
+- Add valgrind-3.11.0-sighandler-stack.patch
 
 * Tue Jun 21 2016 Mark Wielaard <mjw@redhat.com> - 3.11.0-23
 - Update valgrind-3.11.0-ppoll-mask.patch (#1344082)