diff --git a/metropolis/pkg/blockdev/blockdev_linux.go b/metropolis/pkg/blockdev/blockdev_linux.go
index b5ef106..c5fa784 100644
--- a/metropolis/pkg/blockdev/blockdev_linux.go
+++ b/metropolis/pkg/blockdev/blockdev_linux.go
@@ -68,19 +68,22 @@
 	var err error
 	args[0] = uint64(startByte)
 	args[1] = uint64(endByte - startByte)
-	if ctrlErr := d.rawConn.Control(func(fd uintptr) {
+	ctrlErr := d.rawConn.Control(func(fd uintptr) {
 		// Attempts to leverage discard guarantees to provide extremely quick
 		// metadata-only zeroing.
 		err = unix.Fallocate(int(fd), unix.FALLOC_FL_PUNCH_HOLE|unix.FALLOC_FL_KEEP_SIZE, startByte, endByte-startByte)
 		if errors.Is(err, unix.EOPNOTSUPP) {
 			// Tries Write Same and friends and then just falls back to writing
 			// zeroes.
-			_, _, err = unix.Syscall(unix.SYS_IOCTL, fd, unix.BLKZEROOUT, uintptr(unsafe.Pointer(&args[0])))
-			if err == unix.Errno(0) {
+			_, _, errNo := unix.Syscall(unix.SYS_IOCTL, fd, unix.BLKZEROOUT, uintptr(unsafe.Pointer(&args[0])))
+			if errNo == unix.Errno(0) {
 				err = nil
+			} else {
+				err = errNo
 			}
 		}
-	}); ctrlErr != nil {
+	})
+	if ctrlErr != nil {
 		return ctrlErr
 	}
 	if err != nil {
@@ -134,7 +137,7 @@
 	}
 
 	var sizeBytes uint64
-	var getSizeErr error
+	var getSizeErr syscall.Errno
 	outFileC.Control(func(fd uintptr) {
 		_, _, getSizeErr = unix.Syscall(unix.SYS_IOCTL, fd, unix.BLKGETSIZE64, uintptr(unsafe.Pointer(&sizeBytes)))
 	})
diff --git a/metropolis/pkg/fsquota/quotactl/quotactl.go b/metropolis/pkg/fsquota/quotactl/quotactl.go
index 9f44ab3..c7939ed 100644
--- a/metropolis/pkg/fsquota/quotactl/quotactl.go
+++ b/metropolis/pkg/fsquota/quotactl/quotactl.go
@@ -107,9 +107,9 @@
 	if err != nil {
 		return err
 	}
-	_, _, err = unix.Syscall6(unix.SYS_QUOTACTL_FD, fd.Fd(), uintptr(Q_QUOTAON|uint(qtype)), uintptr(quotaFormat), uintptr(unsafe.Pointer(pathArg)), 0, 0)
-	if err != unix.Errno(0) {
-		return err
+	_, _, errNo := unix.Syscall6(unix.SYS_QUOTACTL_FD, fd.Fd(), uintptr(Q_QUOTAON|uint(qtype)), uintptr(quotaFormat), uintptr(unsafe.Pointer(pathArg)), 0, 0)
+	if errNo != unix.Errno(0) {
+		return errNo
 	}
 	return nil
 }
diff --git a/metropolis/pkg/kmod/syscall.go b/metropolis/pkg/kmod/syscall.go
index c4e7471..41d3233 100644
--- a/metropolis/pkg/kmod/syscall.go
+++ b/metropolis/pkg/kmod/syscall.go
@@ -19,14 +19,15 @@
 	if err != nil {
 		return errors.New("invalid null byte in params")
 	}
+	var errNo unix.Errno
 	ctrlErr := sc.Control(func(fd uintptr) {
-		_, _, err = unix.Syscall(unix.SYS_FINIT_MODULE, fd, uintptr(unsafe.Pointer(paramsRaw)), flags)
+		_, _, errNo = unix.Syscall(unix.SYS_FINIT_MODULE, fd, uintptr(unsafe.Pointer(paramsRaw)), flags)
 	})
 	if ctrlErr != nil {
 		return fmt.Errorf("unable to get control handle: %w", ctrlErr)
 	}
-	if err != unix.Errno(0) {
-		return err
+	if errNo != unix.Errno(0) {
+		return errNo
 	}
 	return nil
 }
@@ -37,9 +38,9 @@
 	if err != nil {
 		return errors.New("invalid null byte in name")
 	}
-	_, _, err = unix.Syscall(unix.SYS_DELETE_MODULE, uintptr(unsafe.Pointer(nameRaw)), flags, 0)
-	if err != unix.Errno(0) {
-		return err
+	_, _, errNo := unix.Syscall(unix.SYS_DELETE_MODULE, uintptr(unsafe.Pointer(nameRaw)), flags, 0)
+	if errNo != unix.Errno(0) {
+		return errNo
 	}
-	return err
+	return nil
 }
diff --git a/metropolis/pkg/loop/loop.go b/metropolis/pkg/loop/loop.go
index a8be907..b302c0b 100644
--- a/metropolis/pkg/loop/loop.go
+++ b/metropolis/pkg/loop/loop.go
@@ -185,15 +185,15 @@
 		return nil, fmt.Errorf("failed to open device: %w", err)
 	}
 	var loopInfo loopInfo64
-	_, _, err = syscall.Syscall(unix.SYS_IOCTL, potentialDevice.Fd(), unix.LOOP_GET_STATUS64, uintptr(unsafe.Pointer(&loopInfo)))
-	if err == syscall.Errno(0) {
+	_, _, errNo := syscall.Syscall(unix.SYS_IOCTL, potentialDevice.Fd(), unix.LOOP_GET_STATUS64, uintptr(unsafe.Pointer(&loopInfo)))
+	if errNo == syscall.Errno(0) {
 		return &Device{dev: potentialDevice, num: loopInfo.number}, nil
 	}
 	potentialDevice.Close()
-	if err == syscall.EINVAL {
+	if errNo == syscall.EINVAL {
 		return nil, errors.New("not a loop device")
 	}
-	return nil, fmt.Errorf("failed to determine state of potential loop device: %w", err)
+	return nil, fmt.Errorf("failed to determine state of potential loop device: %w", errNo)
 }
 
 func (d *Device) ensureOpen() error {
