[PATCH] simplify permission application

We have only one source of permissions now, so apply the default
permissions at udev init.
This commit is contained in:
kay.sievers@vrfy.org 2004-12-20 01:31:56 +01:00 committed by Greg KH
parent 2a270316e4
commit 65ab133412
3 changed files with 20 additions and 23 deletions

View File

@ -680,7 +680,6 @@ int namedev_name_device(struct udevice *udev, struct sysfs_class_device *class_d
struct config_device *dev;
char *pos;
udev->mode = 0;
dbg("class_dev->name='%s'", class_dev->name);
/* Figure out where the "device"-symlink is at. For char devices this will
@ -757,34 +756,28 @@ int namedev_name_device(struct udevice *udev, struct sysfs_class_device *class_d
goto exit;
udev->partitions = dev->partitions;
udev->mode = dev->mode;
strfieldcpy(udev->owner, dev->owner);
apply_format(udev, udev->owner, sizeof(udev->owner), class_dev, sysfs_device);
strfieldcpy(udev->group, dev->group);
apply_format(udev, udev->group, sizeof(udev->group), class_dev, sysfs_device);
if (dev->mode != 0000)
udev->mode = dev->mode;
if (dev->owner[0] != '\0') {
strfieldcpy(udev->owner, dev->owner);
apply_format(udev, udev->owner, sizeof(udev->owner), class_dev, sysfs_device);
}
if (dev->group[0] != '\0') {
strfieldcpy(udev->group, dev->group);
apply_format(udev, udev->group, sizeof(udev->group), class_dev, sysfs_device);
}
goto perms;
dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o",
udev->name, udev->owner, udev->group, udev->mode);
goto exit;
}
}
}
/* no rule matched, so we use the kernel name */
strfieldcpy(udev->name, udev->kernel_name);
if (udev->type == 'n')
goto exit;
perms:
/* apply default permissions to empty fields */
if (udev->mode == 0000)
udev->mode = default_mode;
if (udev->owner[0] == '\0')
strfieldcpy(udev->owner, default_owner);
if (udev->group[0] == '\0')
strfieldcpy(udev->group, default_group);
dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o",
udev->name, udev->owner, udev->group, udev->mode);
dbg("no rule found, use kernel name '%s'", udev->name);
exit:
return 0;

View File

@ -189,7 +189,7 @@ static int create_node(struct udevice *udev)
} else {
info("creating device node '%s', major = '%d', minor = '%d', "
"mode = '%#o', uid = '%d', gid = '%d'", filename,
udev->major, udev->minor, (mode_t)udev->mode, uid, gid);
udev->major, udev->minor, udev->mode, uid, gid);
}
/* create all_partitions if requested */

View File

@ -55,6 +55,10 @@ void udev_init_device(struct udevice *udev, const char* devpath, const char *sub
udev->type = 'n';
else if (strncmp(udev->devpath, "/class/", 7) == 0)
udev->type = 'c';
udev->mode = default_mode;
strfieldcpy(udev->owner, default_owner);
strfieldcpy(udev->group, default_group);
}
int kernel_release_satisfactory(int version, int patchlevel, int sublevel)