diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+0.3.1.5
+  * Retry flock call on EINTR. Thanks to Niklas Baumstark.
+
 0.3.1.4
   * Relax dependency on lifted-base. Thanks to John Lato.
 
diff --git a/System/Lock/FLock.hsc b/System/Lock/FLock.hsc
--- a/System/Lock/FLock.hsc
+++ b/System/Lock/FLock.hsc
@@ -17,13 +17,13 @@
 import Control.Monad.IO.Class      ( MonadIO (..) )
 import Control.Monad.Trans.Control ( MonadBaseControl )
 import Data.Bits                   ( (.|.) )
-import Foreign.C.Error             ( throwErrnoIfMinus1_ )
+import Foreign.C.Error             ( throwErrnoIfMinus1Retry_ )
 #if __GLASGOW_HASKELL__ > 702
 import Foreign.C.Types             ( CInt(..) )
 #else
 import Foreign.C.Types             ( CInt )
 #endif
-import System.Posix.Error          ( throwErrnoPathIfMinus1_ )
+import System.Posix.Error          ( throwErrnoPathIfMinus1Retry_ )
 import System.Posix.IO             ( openFd
                                    , defaultFileFlags
                                    , closeFd
@@ -75,7 +75,7 @@
 lock :: MonadIO m => FilePath -> SharedExclusive -> Block -> m Lock
 lock fp se b = liftIO $
   do Fd fd <- openFd fp om Nothing defaultFileFlags
-     throwErrnoPathIfMinus1_ "flock" fp $ flock fd (operation se b)
+     throwErrnoPathIfMinus1Retry_ "flock" fp $ flock fd (operation se b)
      return (Lock fd)
   where
     om = case se of
@@ -85,7 +85,7 @@
 lockFd :: MonadIO m => Fd -> SharedExclusive -> Block -> m Lock
 lockFd fd se b = liftIO $
   do (Fd fd') <- dup fd
-     throwErrnoIfMinus1_ "flock" $ flock fd' (operation se b)
+     throwErrnoIfMinus1Retry_ "flock" $ flock fd' (operation se b)
      return (Lock fd')
 
 unlock :: MonadIO m => Lock -> m ()
diff --git a/flock.cabal b/flock.cabal
--- a/flock.cabal
+++ b/flock.cabal
@@ -1,5 +1,5 @@
 Name:               flock
-Version:            0.3.1.4
+Version:            0.3.1.5
 License:            OtherLicense
 License-File:       COPYING
 Copyright:          Ian Lynagh, 2007
