diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 697b9395c29386fb195267cea0689c4e81b9596c..d5744204d9dbb355d393a9e18ff0e5cbf0b2422f 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -851,10 +851,10 @@ (define requirement
              (requirement `(udev ,@requirement))
              (documentation "Enable the given swap device.")
              (start #~(lambda ()
-                        (swapon #$device)
+                        (restart-on-EINTR (swapon #$device))
                         #t))
              (stop #~(lambda _
-                       (swapoff #$device)
+                       (restart-on-EINTR (swapoff #$device))
                        #f))
              (respawn? #f)))))
 
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 9ec7e8b4a9277a1631503a1fbba98c77de4c7fa1..3585bf27a87a03163babdee3bc587dac0195b32e 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -218,7 +218,7 @@ (define swapoff
       (let ((ret (proc (string->pointer device)))
             (err (errno)))
         (unless (zero? ret)
-          (throw 'system-error "swapff" "~S: ~A"
+          (throw 'system-error "swapoff" "~S: ~A"
                  (list device (strerror err))
                  (list err)))))))