chiark / gitweb /
Revert "tree-wide: Always use recvmsg with MSG_CMSG_CLOEXEC"
[elogind.git] / src / udev / scsi_id / scsi_serial.c
index 2f2afcee6edfea097b8ba9ada823be2c605708c5..dcfff1d4ea07594630c5508f810312de03d80f65 100644 (file)
@@ -26,7 +26,6 @@
 #include <fcntl.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <syslog.h>
 #include <time.h>
 #include <inttypes.h>
 #include <scsi/scsi.h>
@@ -362,7 +361,7 @@ resend:
                         dev_scsi->use_sg = 3;
                         goto resend;
                 }
-                log_debug("%s: ioctl failed: %m", dev_scsi->kernel);
+                log_debug_errno(errno, "%s: ioctl failed: %m", dev_scsi->kernel);
                 goto error;
         }
 
@@ -818,14 +817,14 @@ int scsi_std_inquiry(struct udev *udev,
         struct stat statbuf;
         int err = 0;
 
-        fd = open(devname, O_RDONLY | O_NONBLOCK);
+        fd = open(devname, O_RDONLY | O_NONBLOCK | O_CLOEXEC);
         if (fd < 0) {
-                log_debug("scsi_id: cannot open %s: %m", devname);
+                log_debug_errno(errno, "scsi_id: cannot open %s: %m", devname);
                 return 1;
         }
 
         if (fstat(fd, &statbuf) < 0) {
-                log_debug("scsi_id: cannot stat %s: %m", devname);
+                log_debug_errno(errno, "scsi_id: cannot stat %s: %m", devname);
                 err = 2;
                 goto out;
         }
@@ -862,11 +861,11 @@ int scsi_get_serial(struct udev *udev,
         int retval;
 
         memzero(dev_scsi->serial, len);
-        srand((unsigned int)getpid());
+        initialize_srand();
         for (cnt = 20; cnt > 0; cnt--) {
                 struct timespec duration;
 
-                fd = open(devname, O_RDONLY | O_NONBLOCK);
+                fd = open(devname, O_RDONLY | O_NONBLOCK | O_CLOEXEC);
                 if (fd >= 0 || errno != EBUSY)
                         break;
                 duration.tv_sec = 0;