udev: do not export "static node" tags for non-existing devices

This commit is contained in:
Kay Sievers 2014-04-02 15:47:09 +02:00
parent bc29e507e2
commit ca2bb1606a

View file

@ -2555,10 +2555,15 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
struct stat stats; struct stat stats;
/* we assure, that the permissions tokens are sorted before the static token */ /* we assure, that the permissions tokens are sorted before the static token */
if (mode == 0 && uid == 0 && gid == 0 && tags == NULL) if (mode == 0 && uid == 0 && gid == 0 && tags == NULL)
goto next; goto next;
strscpyl(device_node, sizeof(device_node), "/dev/", rules_str(rules, cur->key.value_off), NULL); strscpyl(device_node, sizeof(device_node), "/dev/", rules_str(rules, cur->key.value_off), NULL);
if (stat(device_node, &stats) != 0)
break;
if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
break;
/* export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */ /* export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */
if (tags) { if (tags) {
@ -2588,11 +2593,6 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
if (mode == 0 && uid == 0 && gid == 0) if (mode == 0 && uid == 0 && gid == 0)
break; break;
if (stat(device_node, &stats) != 0)
break;
if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
break;
if (mode == 0) { if (mode == 0) {
if (gid > 0) if (gid > 0)
mode = 0660; mode = 0660;