diff --git a/valgrind-3.8.1-xaddb.patch b/valgrind-3.8.1-xaddb.patch
new file mode 100644
index 0000000..f15213d
--- /dev/null
+++ b/valgrind-3.8.1-xaddb.patch
@@ -0,0 +1,32 @@
+--- valgrind/VEX/priv/guest_amd64_toIR.c.jj	2012-10-16 09:53:54.000000000 +0200
++++ valgrind/VEX/priv/guest_amd64_toIR.c	2012-10-16 11:06:26.007515653 +0200
+@@ -20117,6 +20117,14 @@ Long dis_ESC_0F (
+       delta = dis_movx_E_G ( vbi, pfx, delta, 2, sz, True );
+       return delta;
+ 
++   case 0xC0: { /* XADD Gb,Eb */ 
++      Bool decode_OK = False;
++      delta = dis_xadd_G_E ( &decode_OK, vbi, pfx, 1, delta );
++      if (!decode_OK)
++         goto decode_failure;
++      return delta;
++   }
++
+    case 0xC1: { /* XADD Gv,Ev */ 
+       Bool decode_OK = False;
+       delta = dis_xadd_G_E ( &decode_OK, vbi, pfx, sz, delta );
+@@ -26992,14 +27000,6 @@ DisResult disInstr_AMD64_WRK (
+ 
+       /* =-=-=-=-=-=-=-=-=- XADD -=-=-=-=-=-=-=-=-=-= */
+ 
+-      case 0xC0: { /* XADD Gb,Eb */ 
+-         Bool decode_OK = False;
+-         delta = dis_xadd_G_E ( &decode_OK, vbi, pfx, 1, delta );
+-         if (!decode_OK)
+-            goto decode_failure;
+-         break;
+-      }
+-
+       /* =-=-=-=-=-=-=-=-=- SGDT and SIDT =-=-=-=-=-=-=-=-=-=-= */
+ 
+       /* =-=-=-=-=-=-=-=-=- unimp2 =-=-=-=-=-=-=-=-=-=-= */
diff --git a/valgrind.spec b/valgrind.spec
index cc83b56..94677f6 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -3,7 +3,7 @@
 Summary: Tool for finding memory management bugs in programs
 Name: %{?scl_prefix}valgrind
 Version: 3.8.1
-Release: 3%{?dist}
+Release: 4%{?dist}
 Epoch: 1
 License: GPLv2
 URL: http://www.valgrind.org/
@@ -121,6 +121,9 @@ Patch27: valgrind-3.8.1-aspacemgr_VG_N_SEGs.patch
 #              depends on uninitialized value [workaround, suppression]
 Patch28: valgrind-3.8.1-s390_tsearch_supp.patch
 
+# KDE#307106 - unhandled instruction bytes: f0 0f c0 02 (lock xadd)
+Patch29: valgrind-3.8.1-xaddb.patch
+
 Obsoletes: valgrind-callgrind
 %ifarch x86_64 ppc64
 # Ensure glibc{,-devel} is installed for both multilib arches
@@ -250,6 +253,8 @@ touch ./none/tests/amd64/bmi.stderr.exp
 %patch28 -p1
 %endif
 
+%patch29 -p1
+
 # To suppress eventual automake warnings/errors
 rm -f gdbserver_tests/filter_gdb.orig
 
@@ -398,6 +403,9 @@ echo ===============END TESTING===============
 %endif
 
 %changelog
+* Tue Oct 16 2012 Mark Wielaard <mjw@redhat.com> 3.8.1-4
+- Add valgrind-3.8.1-xaddb.patch (#866793, KDE#307106)
+
 * Mon Oct 15 2012 Mark Wielaard <mjw@redhat.com> 3.8.1-3
 - Add valgrind-3.8.1-x86_amd64_features-avx.patch (KDE#307285)
 - Add valgrind-3.8.1-gdbserver_tests-syscall-template-source.patch (KDE#307155)