File 0023-udev-fix-rules-timestamp-race.patch of Package udev
--- udev-182.orig/src/udev-rules.c.orig 2012-08-01 14:23:16.000000000 +0000
+++ udev-182/src/udev-rules.c 2012-08-01 14:26:48.000000000 +0000
@@ -1754,6 +1754,7 @@ struct udev_rules *udev_rules_new(struct
struct udev_list_entry *file_loop;
struct token end_token;
char **s;
+ unsigned long long *stamp_usec;
rules = calloc(1, sizeof(struct udev_rules));
if (rules == NULL)
@@ -1795,8 +1796,12 @@ struct udev_rules *udev_rules_new(struct
memset(rules->trie_nodes, 0x00, sizeof(struct trie_node));
rules->trie_nodes_cur = 1;
- for (udev_get_rules_path(udev, &s, NULL); *s != NULL; s++)
+ for (udev_get_rules_path(udev, &s, &stamp_usec); *s != NULL; s++, stamp_usec++) {
+ struct stat stats;
+ if (stat(*s, &stats) == 0)
+ *stamp_usec = ts_usec(&stats.st_mtim);
add_matching_files(udev, &file_list, *s, ".rules");
+ }
/* add all filenames to the string buffer */
udev_list_entry_foreach(file_loop, udev_list_get_entry(&file_list)) {