diff --git a/System/Linux/Ptrace/Syscall.hs b/System/Linux/Ptrace/Syscall.hs
--- a/System/Linux/Ptrace/Syscall.hs
+++ b/System/Linux/Ptrace/Syscall.hs
@@ -71,17 +71,17 @@
 ptrace2 n pid = ptrace4 n pid 0 0
 ptrace1 n = ptrace2 n 0
 
--- | Perform one of the PTRACE_PEEK* operations.
 -- FIXME: better handling of EFAULT/EIO here (invalid read/write in other process's memory)
+
+-- | Perform one of the PTRACE_PEEK* operations.
 ptracePeek n pid addr = fromIntegral `fmap` (throwErrnoIfSet $ c_ptrace n pid addr 0)
 -- | Perform one of the PTRACE_POKE* operations.
--- FIXME: better handling of EFAULT/EIO here (invalid read/write in other process's memory)
-ptracePoke n pid addr val = alloca (\ptr -> poke ptr val >> ptrace4 n pid addr (ptrToWordPtr ptr))
+ptracePoke n pid addr val = ptrace4 n pid addr (fromIntegral val)
 
 -- | Perform one of the PTRACE_GET* operations.
 ptraceGet n pid = alloca (\ptr -> ptrace4 n pid 0 (ptrToWordPtr ptr) >> peek ptr)
 -- | Perform one of the PTRACE_SET* operations.
-ptraceSet n pid val = ptracePoke n pid 0 val
+ptraceSet n pid val = alloca (\ptr -> poke ptr val >> ptrace4 n pid 0 (ptrToWordPtr ptr))
 
 -- | Resume a traced process.
 ptraceResume n pid sig = ptrace4 n pid 0 (maybe 0 fromIntegral sig)
diff --git a/linux-ptrace.cabal b/linux-ptrace.cabal
--- a/linux-ptrace.cabal
+++ b/linux-ptrace.cabal
@@ -1,5 +1,5 @@
 name:                linux-ptrace
-version:             0.1
+version:             0.1.1
 synopsis:            Wrapping of Linux' ptrace(2).
 description:         An interface for using ptrace to inspect the state of other processes, under Linux.
 category:            System
