diff --git a/smartmontools/os_freebsd.cpp b/smartmontools/os_freebsd.cpp
index 01cfadb5a56f9ac8b081d06e29fbed916f656209..3f31ca063eb0b604ba92e81049711ea9a5d368ff 100644
--- a/smartmontools/os_freebsd.cpp
+++ b/smartmontools/os_freebsd.cpp
@@ -1172,12 +1172,11 @@ freebsd_cciss_device::freebsd_cciss_device(smart_interface * intf,
 
 bool freebsd_cciss_device::scsi_pass_through(scsi_cmnd_io * iop)
 {
-  int report=con->reportscsiioctl;
-  int fd=get_fd();
-
 #ifdef HAVE_DEV_CISS_CISSIO_H
-  // check that "file descriptor" is valid
-  return cciss_io_interface(fd, m_disknum-1, iop, report);
+  int status = cciss_io_interface(get_fd(), m_disknum, iop, con->reportscsiioctl);
+  if (status < 0)
+      return set_err(-status);
+  return true;
 #else
   {
     static int warned = 0;