diff --git a/valgrind-3.8.1-ppc-setxattr.patch b/valgrind-3.8.1-ppc-setxattr.patch
new file mode 100644
index 0000000..7e2c8ca
--- /dev/null
+++ b/valgrind-3.8.1-ppc-setxattr.patch
@@ -0,0 +1,43 @@
+commit 2f456f6524ad5edb7af6bdff8d2766738f3c76cc
+Author: mjw <mjw@a5019735-40e9-0310-863c-91ae7b9d1cf9>
+Date:   Fri Jul 5 09:50:26 2013 +0000
+
+    Bug 321969. Support [lf]setxattr on ppc32 and ppc64 linux kernel.
+    
+    git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13449 a5019735-40e9-0310-863c-91ae7b9d1cf9
+
+diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c
+index c866fae..cf714cb 100644
+--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c
++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c
+@@ -1130,9 +1130,9 @@ static SyscallTableEntry syscall_table[] = {
+    GENXY(__NR_mincore,           sys_mincore),           // 206
+    LINX_(__NR_gettid,            sys_gettid),            // 207
+ //..    LINX_(__NR_tkill,             sys_tkill),             // 208 */Linux
+-//..    LINX_(__NR_setxattr,          sys_setxattr),          // 209
+-//..    LINX_(__NR_lsetxattr,         sys_lsetxattr),         // 210
+-//..    LINX_(__NR_fsetxattr,         sys_fsetxattr),         // 211
++   LINX_(__NR_setxattr,          sys_setxattr),          // 209
++   LINX_(__NR_lsetxattr,         sys_lsetxattr),         // 210
++   LINX_(__NR_fsetxattr,         sys_fsetxattr),         // 211
+    LINXY(__NR_getxattr,          sys_getxattr),          // 212
+    LINXY(__NR_lgetxattr,         sys_lgetxattr),         // 213
+    LINXY(__NR_fgetxattr,         sys_fgetxattr),         // 214
+diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
+index d3a5b0f..7310b2a 100644
+--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
+@@ -927,10 +927,10 @@ static SyscallTableEntry syscall_table[] = {
+ // _____(__NR_mincore,           sys_mincore),            // 206
+    LINX_(__NR_gettid,            sys_gettid),             // 207
+ // _____(__NR_tkill,             sys_tkill),              // 208
+-// _____(__NR_setxattr,          sys_setxattr),           // 209
++   LINX_(__NR_setxattr,          sys_setxattr),           // 209
+ 
+-// _____(__NR_lsetxattr,         sys_lsetxattr),          // 210
+-// _____(__NR_fsetxattr,         sys_fsetxattr),          // 211
++   LINX_(__NR_lsetxattr,         sys_lsetxattr),          // 210
++   LINX_(__NR_fsetxattr,         sys_fsetxattr),          // 211
+    LINXY(__NR_getxattr,          sys_getxattr),           // 212
+    LINXY(__NR_lgetxattr,         sys_lgetxattr),          // 213
+    LINXY(__NR_fgetxattr,         sys_fgetxattr),          // 214
diff --git a/valgrind.spec b/valgrind.spec
index 30e80fa..7b1b32b 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -162,6 +162,9 @@ Patch40: valgrind-3.8.1-zero-size-sections.patch
 # KDE#289360 - parse_type_DIE confused by DW_TAG_enumeration_type
 Patch41: valgrind-3.8.1-dwarf-anon-enum.patch
 
+# KDE#321969 - Support [lf]setxattr on ppc32 and ppc64 linux kernel
+Patch42: valgrind-3.8.1-ppc-setxattr.patch
+
 %ifarch x86_64 ppc64
 # 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
@@ -302,6 +305,7 @@ touch ./memcheck/tests/linux/getregset.stderr.exp
 %patch39 -p1
 %patch40 -p1
 %patch41 -p1
+%patch42 -p1
 
 # These tests go into an endless loop on ARM
 # There is a __sync_add_and_fetch in the testcase.
@@ -466,6 +470,7 @@ echo ===============END TESTING===============
 * Mon Jul 08 2013 Mark Wielaard <mjw@redhat.com>
 - Add valgrind-3.8.1-dwarf-anon-enum.patch
 - Cleanup valgrind-3.8.1-sigill_diag.patch .orig file changes (#949687).
+- Add valgrind-3.8.1-ppc-setxattr.patch
 
 * Tue May 28 2013 Michael Schwendt <mschwendt@fedoraproject.org> - 1:3.8.1-16
 - Provide virtual -static package in -devel subpackage (#609624).