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 {