diff --git a/SOURCES/atlas-memleak.patch b/SOURCES/atlas-memleak.patch
new file mode 100644
index 0000000..f4e1372
--- /dev/null
+++ b/SOURCES/atlas-memleak.patch
@@ -0,0 +1,57 @@
+From 5ef079e305fdfe7275e6a241704fb071f7c9345d Mon Sep 17 00:00:00 2001
+From: "R. Clint Whaley" <whaley@cs.utsa.edu>
+Date: Sat, 2 Nov 2013 13:04:29 -0500
+Subject: [PATCH] fixed possible memory leek in threaded QR
+
+---
+ AtlasBase/Students/qr.base | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/threads/lapack/ATL_tgeqr2.c b/src/threads/lapack/ATL_tgeqr2.c
+index 2263042..daf44a9 100644
+--- a/src/threads/lapack/ATL_tgeqr2.c   
++++ b/src/threads/lapack/ATL_tgeqr2.c
+@@ -10372,7 +10372,7 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK,
+ /* We use a data-owner split, each thread gets 1/p of the data,               */
+ /* and does all computation related to it.                                    */
+ /*----------------------------------------------------------------------------*/
+-   TYPE *myA = A, *myOldA = A, *allMem, *workMem;
++   TYPE *myA = A, *myOldA = A, *allMem=NULL, *workMem;
+    int i, j, k, b0, b, th;
+    long unsigned int CPU;
+    size_t mem[ATL_NTHREADS], totmem, workSize;
+@@ -10523,9 +10523,8 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK,
+    ATL_goparallel(th, ATL_geqr2Worker, ts, NULL);
+ 
+
+-   #if defined(local_copy)
+-   free(allMem);                            /* release copied area.           */
+-   #endif                                   /* defined(local_copy)            */
++   if (allMem)
++      free(allMem);                         /* release copied area.           */
+    free(workMem);                           /* release work area.             */
+    return(0);                               /* Done with dgeqr2.              */
+ }  /* END ATL_t_dgeqr2. */
+diff --git a/src/threads/lapack/ATL_tgeql2.c b/src/threads/lapack/ATL_tgeql2.c
+index 2263042..daf44a9 100644
+--- a/src/threads/lapack/ATL_tgeql2.c   
++++ b/src/threads/lapack/ATL_tgeql2.c
+@@ -11660,7 +11659,7 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK,
+ /* We use a data-owner split, each thread gets 1/p of the data,               */
+ /* and does all computation related to it.                                    */
+ /*----------------------------------------------------------------------------*/
+-   TYPE *myA = A, *allMem, *workMem;
++   TYPE *myA = A, *allMem=NULL, *workMem;
+    int i, j, k, b0, b, th;
+    long unsigned int CPU;
+    size_t mem[ATL_NTHREADS], totmem, workSize;
+@@ -11823,7 +11822,8 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK,
+    ATL_goparallel(th, ATL_geql2Worker, ts, NULL);
+
+ 
+-   if (myCopy) free(allMem);                /* release copied area.           */
++   if (allMem) 
++      free(allMem);                         /* release copied area.           */
+    free(workMem);                           /* release work area.             */
+    return(0);                               /* Done with dgeql2.              */
+ } /* END ATL_t_dgeql2 */
diff --git a/SPECS/atlas.spec b/SPECS/atlas.spec
index 6a352d4..a97e4fa 100644
--- a/SPECS/atlas.spec
+++ b/SPECS/atlas.spec
@@ -5,7 +5,7 @@ Version:        3.10.1
 %if "%{?enable_native_atlas}" != "0"
 %define dist .native
 %endif
-Release:        10%{?dist}
+Release:        12%{?dist}
 Summary:        Automatically Tuned Linear Algebra Software
 
 Group:          System Environment/Libraries
@@ -44,6 +44,7 @@ Patch6:		atlas-affinity.patch
 Patch7:		atlas-aarch64port.patch
 Patch8:		atlas-genparse.patch
 
+Patch9:		atlas-memleak.patch
 # ppc64le patches
 Patch95:	initialize_malloc_memory.invtrsm.wms.oct23.patch
 Patch96:	xlf.command.not.found.patch
@@ -329,6 +330,7 @@ ix86 architecture.
 %patch7 -p1 -b .aarch64
 %endif
 %patch8 -p1 -b .genparse
+%patch9 -p1 -b .memleak
 cp %{SOURCE1} CONFIG/ARCHS/
 #cp %{SOURCE2} CONFIG/ARCHS/
 cp %{SOURCE3} doc
@@ -340,6 +342,14 @@ cp %{SOURCE14} CONFIG/ARCHS/
 #cp %{SOURCE8} CONFIG/ARCHS/
 #cp %{SOURCE9} CONFIG/ARCHS/
 
+%ifarch ppc ppc64
+%patch99 -p2
+#%patch98 -p2
+#%patch95 -p2
+#%patch100 -p2
+%patch110 -p1
+%endif
+
 %ifarch ppc64le
 %patch99 -p2
 %patch98 -p2
@@ -367,6 +377,8 @@ for type in %{types}; do
 	--libdir=%{buildroot}%{_libdir}/${libname}	\
 	--with-netlib-lapack-tarfile=%{SOURCE10}
 
+sed -i 's#F77FLAGS =\(.*\)#F77FLAGS=\1 -frecursive#' Make.inc
+
 %if "%{?enable_native_atlas}" == "0"
 %ifarch x86_64
 	if [ "$type" = "base" ]; then
@@ -374,18 +386,18 @@ for type in %{types}; do
 #		sed -i 's#ARCH =.*#ARCH = HAMMER64SSE3#' Make.inc
 		sed -i 's#ARCH =.*#ARCH = P4E64SSE3#' Make.inc
 #		sed -i 's#-DATL_SSE3##' Make.inc
-		sed -i 's#-DATL_AVX##' Make.inc 
-#		sed -i 's#-msse3#-msse2#' Make.inc 
-		sed -i 's#-mavx#-msse3#' Make.inc
-		echo 'base makefile edited' 
-#		sed -i 's#PMAKE = $(MAKE) .*#PMAKE = $(MAKE) -j 1#' Make.inc 
+		sed -i 's#-DATL_AVX\b##' Make.inc
+#		sed -i 's#-msse3#-msse2#' Make.inc
+		sed -i 's#-mavx\b#-msse3#' Make.inc
+		echo 'base makefile edited'
+#		sed -i 's#PMAKE = $(MAKE) .*#PMAKE = $(MAKE) -j 1#' Make.inc
 	elif [ "$type" = "sse3" ]; then
 #		sed -i 's#ARCH =.*#ARCH = Corei264AVX#' Make.inc
 #		sed -i 's#PMAKE = $(MAKE) .*#PMAKE = $(MAKE) -j 1#' Make.inc
-		sed -i 's#-DATL_AVX##' Make.inc
+		sed -i 's#-DATL_AVX\b##' Make.inc
 		sed -i 's#-DATL_SSE2##' Make.inc
-		sed -i 's#-mavx#-msse2#' Make.inc 
-		sed -i 's#-msse3#-msse2#' Make.inc 
+		sed -i 's#-mavx\b#-msse2#' Make.inc
+		sed -i 's#-msse3#-msse2#' Make.inc
 		echo 'sse makefile edited'
 		%define pr_sse3 %(echo $((%{__isa_bits}+4)))
 	fi
@@ -437,16 +449,16 @@ for type in %{types}; do
 	sed -i 's#ARCH =.*#ARCH = POWER332#' Make.inc
 	sed -i 's#-DATL_ARCH_POWER7#-DATL_ARCH_POWER3#g' Make.inc
 	sed -i 's#power7#power3#g' Make.inc
-	sed -i 's#-DATL_VSX##g' Make.inc
-	sed -i 's#-mvsx##g' Make.inc
+	sed -i 's#-DATL_VSX\b##g' Make.inc
+	sed -i 's#-mvsx\b##g' Make.inc
 	sed -i 's#-DATL_AltiVec##g' Make.inc
 	sed -i 's#-m64#-m32#g' Make.inc
 %endif
 
 %ifarch ppc64le
 	sed -i 's#-mvsx##g' Make.inc
-	sed -i 's#-DATL_VSX##g' Make.inc
-	sed -i 's#-DATL_AltiVec##g' Make.inc
+	sed -i 's#-DATL_VSX\b##g' Make.inc
+	sed -i 's#-DATL_AltiVec\b##g' Make.inc
 	sed -i 's#-maltivec##g' Make.inc
 	sed -i 's#ARCH =.*#ARCH = POWER464#' Make.inc
 %endif
@@ -785,6 +797,19 @@ fi
 %endif
 
 %changelog
+* Wed Mar 15 2017 Jakub Martisko <jamartis@redhat.com> - 3.10.1-12
+- cleanup: merge the application of ppc patches from previous commit
+  into single block
+- Related: rhbz#1350536
+
+* Mon Feb 27 2017 Jakub Martisko <jamartis@redhat.com> - 3.10.1-11
+- apply patches 99 and 110 to all ppc variants
+- build lapack with -frecursive flag (#1176026)
+- fix possible memory leak (#1350536)
+- fix wrong sed substitutions (#1402627)
+- Resolves: rhbz#1350536
+- Related: rhbz#1176026
+
 * Thu Oct 23 2014 Jaromir Capik <jcapik@redhat.com> - 3.10.1-10
 - patching for Power8 to pass performance tunings and tests on P8 builders
 - re-enabling tests on ppc64le