diff --git a/patches/ipipe-3.14/0001-ipipe-3.14.patch b/patches/ipipe-3.14/0001-ipipe-3.14.patch
index 98a6f4dc9cf2f208281f3aa283089ab44bea3cc3..2ceeb97d74c1f59f0f37c841e1574575d93ccfea 100644
--- a/patches/ipipe-3.14/0001-ipipe-3.14.patch
+++ b/patches/ipipe-3.14/0001-ipipe-3.14.patch
@@ -1,6 +1,6 @@
-From 82aec618681243fb76bf464f3be41c1251deb0fb Mon Sep 17 00:00:00 2001
+From 87d43d5a092508562094774c527ea4ed2b1a5ff5 Mon Sep 17 00:00:00 2001
 From: Robert Nelson <robertcnelson@gmail.com>
-Date: Tue, 5 May 2015 16:05:42 -0500
+Date: Thu, 7 May 2015 09:14:24 -0500
 Subject: [PATCH] ipipe-3.14
 
 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
@@ -441,7 +441,7 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
  kernel/timer.c                                   |   19 +
  kernel/trace/Kconfig                             |    1 +
  kernel/trace/ftrace.c                            |   27 +-
- kernel/trace/ring_buffer.c                       |   26 +-
+ kernel/trace/ring_buffer.c                       |   23 +-
  kernel/trace/trace.c                             |    6 +-
  kernel/trace/trace_clock.c                       |    4 +-
  kernel/trace/trace_functions.c                   |    4 +-
@@ -460,7 +460,7 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
  mm/mprotect.c                                    |   10 +-
  mm/vmalloc.c                                     |    2 +
  scripts/ipipe/genpatches.sh                      |  170 ++
- 455 files changed, 20441 insertions(+), 1607 deletions(-)
+ 455 files changed, 20440 insertions(+), 1605 deletions(-)
  create mode 100644 arch/arm/boot/dts/omap3-igep0020-3430.dts
  create mode 100644 arch/arm/boot/dts/omap3430-igep.dtsi
  create mode 100644 arch/arm/include/asm/fcse.h
@@ -22983,10 +22983,10 @@ index a311ffc..482b42f 100644
  
  	return IS_ERR(pd) ? PTR_ERR(pd) : 0;
 diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
-index 3fb8d95..5b7d190 100644
+index 1a1ff42..f4daaaa 100644
 --- a/arch/x86/kernel/process.c
 +++ b/arch/x86/kernel/process.c
-@@ -93,6 +93,10 @@ void arch_task_cache_init(void)
+@@ -94,6 +94,10 @@ void arch_task_cache_init(void)
          	kmem_cache_create("task_xstate", xstate_size,
  				  __alignof__(union thread_xstate),
  				  SLAB_PANIC | SLAB_NOTRACK, NULL);
@@ -22997,7 +22997,7 @@ index 3fb8d95..5b7d190 100644
  }
  
  /*
-@@ -107,8 +111,16 @@ void exit_thread(void)
+@@ -108,8 +112,16 @@ void exit_thread(void)
  	if (bp) {
  		struct tss_struct *tss = &per_cpu(init_tss, get_cpu());
  
@@ -23015,7 +23015,7 @@ index 3fb8d95..5b7d190 100644
  		/*
  		 * Careful, clear this in the TSS too:
  		 */
-@@ -128,12 +140,14 @@ void flush_thread(void)
+@@ -129,12 +141,14 @@ void flush_thread(void)
  	flush_ptrace_hw_breakpoint(tsk);
  	memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));
  	drop_init_fpu(tsk);
@@ -23030,7 +23030,7 @@ index 3fb8d95..5b7d190 100644
  }
  
  static void hard_disable_TSC(void)
-@@ -329,7 +343,7 @@ bool xen_set_default_idle(void)
+@@ -330,7 +344,7 @@ bool xen_set_default_idle(void)
  #endif
  void stop_this_cpu(void *dummy)
  {
@@ -23039,7 +23039,7 @@ index 3fb8d95..5b7d190 100644
  	/*
  	 * Remove this CPU:
  	 */
-@@ -368,6 +382,10 @@ static void amd_e400_idle(void)
+@@ -369,6 +383,10 @@ static void amd_e400_idle(void)
  			if (!boot_cpu_has(X86_FEATURE_NONSTOP_TSC))
  				mark_tsc_unstable("TSC halt in AMD C1E");
  			pr_info("System has AMD C1E enabled\n");
@@ -24707,7 +24707,7 @@ index 8ffdd7d..17e05a9 100644
  #define MXS_SET		0x4
  #define MXS_CLR		0x8
 diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
-index 9962da4..e0c7002 100644
+index 9962da4..1fab0c6 100644
 --- a/drivers/gpio/gpio-omap.c
 +++ b/drivers/gpio/gpio-omap.c
 @@ -28,6 +28,7 @@
@@ -25809,7 +25809,7 @@ index 97888f4..a3bc68d 100644
  
  static struct platform_driver mpc52xx_uart_of_driver = {
 diff --git a/fs/exec.c b/fs/exec.c
-index ea4449d..aa73a12 100644
+index 05f1942..836253a 100644
 --- a/fs/exec.c
 +++ b/fs/exec.c
 @@ -822,6 +822,7 @@ static int exec_mmap(struct mm_struct *mm)
@@ -34999,20 +34999,20 @@ index e3be87e..e6a7b54 100644
  	/* ftrace_dyn_arch_init places the return code in addr */
  	if (addr)
 diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
-index 774a080..8b2f9dd 100644
+index da41de9..8b2f9dd 100644
 --- a/kernel/trace/ring_buffer.c
 +++ b/kernel/trace/ring_buffer.c
 @@ -2651,7 +2651,8 @@ static DEFINE_PER_CPU(unsigned int, current_context);
  
  static __always_inline int trace_recursive_lock(void)
  {
--	unsigned int val = this_cpu_read(current_context);
+-	unsigned int val = __this_cpu_read(current_context);
 +	unsigned long flags;
 +	unsigned int val;
  	int bit;
  
  	if (in_interrupt()) {
-@@ -2664,22 +2665,35 @@ static __always_inline int trace_recursive_lock(void)
+@@ -2664,21 +2665,35 @@ static __always_inline int trace_recursive_lock(void)
  	} else
  		bit = 3;
  
@@ -35026,28 +35026,26 @@ index 774a080..8b2f9dd 100644
 +	}
  
  	val |= (1 << bit);
--	this_cpu_write(current_context, val);
-+	__this_cpu_write(current_context, val);
-+
-+	hard_local_irq_restore(flags);
+ 	__this_cpu_write(current_context, val);
  
++	hard_local_irq_restore(flags);
++
  	return 0;
  }
  
  static __always_inline void trace_recursive_unlock(void)
  {
--	unsigned int val = this_cpu_read(current_context);
+-	unsigned int val = __this_cpu_read(current_context);
 +	unsigned long flags;
 +	unsigned int val;
 +
 +	flags = hard_local_irq_save();
  
+-	val &= val & (val - 1);
 +	val = __this_cpu_read(current_context);
- 	val--;
--	val &= this_cpu_read(current_context);
--	this_cpu_write(current_context, val);
++	val--;
 +	val &= __this_cpu_read(current_context);
-+	__this_cpu_write(current_context, val);
+ 	__this_cpu_write(current_context, val);
 +
 +	hard_local_irq_restore(flags);
  }
diff --git a/patches/ref_omap2plus_defconfig b/patches/ref_omap2plus_defconfig
index 9c72859ffe2c164389dbe7b8d6857bd95a8bad52..85b13ebc5593489d0620bfd1c907694bf13b336d 100644
--- a/patches/ref_omap2plus_defconfig
+++ b/patches/ref_omap2plus_defconfig
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.14.40 Kernel Configuration
+# Linux/arm 3.14.41 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_IPIPE_WANT_ACTIVE_MM=y
diff --git a/version.sh b/version.sh
index 9a6524f0e9f0c45729cef8f227673add2cfb75f5..c43a409dd2bead3fad0093c902d924cb3e2573e3 100644
--- a/version.sh
+++ b/version.sh
@@ -16,8 +16,8 @@ toolchain="gcc_linaro_gnueabihf_4_8"
 
 #Kernel/Build
 KERNEL_REL=3.14
-KERNEL_TAG=${KERNEL_REL}.40
-BUILD=${build_prefix}-r62.3
+KERNEL_TAG=${KERNEL_REL}.41
+BUILD=${build_prefix}-r62.4
 
 #v3.X-rcX + upto SHA
 #prev_KERNEL_SHA=""
@@ -30,6 +30,6 @@ DISTRO=cross
 DEBARCH=armhf
 
 ti_git_old_release="b4c9b0f0582b515291974ac7543fa762f658ee08"
-ti_git_pre="32c63539640e8b7122b1bbdd3f16629e387de86d"
-ti_git_post="ad37716161e4e7a670607b4bd9b2407409918800"
+ti_git_pre="ad37716161e4e7a670607b4bd9b2407409918800"
+ti_git_post="4404e719e231bd5e2b7fa297c7cf965c100b2f3f"
 #