chiark / gitweb /
udev: guard REREADP logic with open(O_ECXL)
authorKay Sievers <kay@vrfy.org>
Wed, 4 Jun 2014 12:09:31 +0000 (14:09 +0200)
committerKay Sievers <kay@vrfy.org>
Wed, 4 Jun 2014 12:09:31 +0000 (14:09 +0200)
src/udev/udevd.c

index 763062f..d79891a 100644 (file)
@@ -754,7 +754,7 @@ static int synthesize_change(struct udev_device *dev) {
                  * The kernel will send out a change event for the disk, and
                  * "remove/add" for all partitions.
                  */
                  * The kernel will send out a change event for the disk, and
                  * "remove/add" for all partitions.
                  */
-                fd = open(udev_device_get_devnode(dev), O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
+                fd = open(udev_device_get_devnode(dev), O_RDONLY|O_EXCL|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
                 if (fd >= 0) {
                         r = ioctl(fd, BLKRRPART, 0);
                         close(fd);
                 if (fd >= 0) {
                         r = ioctl(fd, BLKRRPART, 0);
                         close(fd);