I'm puzzled by this function: int udev_queue_get_seqnum_is_finished(struct udev_queue *udev_queue, unsigned long long int seqnum) { char filename[UTIL_PATH_SIZE]; struct stat statbuf; if (udev_queue == NULL) return -EINVAL; /* if we have not seen this seqnum, check if it is/was already queued */ if (seqnum < udev_queue->last_seen_udev_seqnum) { udev_queue_get_udev_seqnum(udev_queue); if (seqnum < udev_queue->last_seen_udev_seqnum) return 0; } Shouldn't the test be (seqnum > udev_queue->last_seen_udev_seqnum) ? I.e. "greater than" instead of "less than". If the code is right, then why does it need to re-check after calling udev_queue_get_udev_seqnum() ? The udev seqnum can only increase, so if the first test is true then the second cannot fail either. Thanks Alan -- To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html