]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev/cdrom: use random_u64() and usleep()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 24 Dec 2020 06:22:12 +0000 (15:22 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Fri, 8 Jan 2021 14:08:38 +0000 (14:08 +0000)
src/udev/cdrom_id/cdrom_id.c

index 14b204ee4534479208065334a499d372e27bc6ae..6ac875dde40eb82c43daa84ccd48fcbd6614f7bb 100644 (file)
@@ -1050,7 +1050,6 @@ static int parse_argv(int argc, char *argv[]) {
 
 int main(int argc, char *argv[]) {
         int fd = -1;
-        int cnt;
         int rc = 0;
         int r;
 
@@ -1065,16 +1064,13 @@ int main(int argc, char *argv[]) {
                 goto exit;
         }
 
-        initialize_srand();
-        for (cnt = 20; cnt > 0; cnt--) {
-                struct timespec duration;
+        for (int cnt = 0; cnt < 20; cnt++) {
+                if (cnt != 0)
+                        (void) usleep(100 * USEC_PER_MSEC + random_u64() % (100 * USEC_PER_MSEC));
 
                 fd = open(arg_node, O_RDONLY|O_NONBLOCK|O_CLOEXEC);
                 if (fd >= 0 || errno != EBUSY)
                         break;
-                duration.tv_sec = 0;
-                duration.tv_nsec = (100 * 1000 * 1000) + (rand() % 100 * 1000 * 1000);
-                nanosleep(&duration, NULL);
         }
         if (fd < 0) {
                 log_debug("unable to open '%s'", arg_node);