treewide: compare syscall.Errno directly instead of interface type

Change-Id: I03eba72177113cf40afc38981c5311a8013855f9
Reviewed-on: https://review.monogon.dev/c/monogon/+/3042
Reviewed-by: Leopold Schabel <leo@monogon.tech>
Tested-by: Jenkins CI
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 {