From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kay Sievers Date: Sat, 05 Feb 2005 14:58:29 +0000 Subject: Re: [PATCH, UDEV] fix permission inconsistency in relation to Message-Id: <1107615509.5494.84.camel@localhost.localdomain> MIME-Version: 1 Content-Type: multipart/mixed; boundary="=-ZUnIETdpRtadW82Wl26u" List-Id: References: <200502051426.14173.mbuesch@freenet.de> In-Reply-To: <200502051426.14173.mbuesch@freenet.de> To: linux-hotplug@vger.kernel.org --=-ZUnIETdpRtadW82Wl26u Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sat, 2005-02-05 at 15:33 +0100, Marco d'Itri wrote: > On Feb 05, Kay Sievers wrote: > > > Should we change that now, so that permissions are applied from a > > symlink-only rule too? > Yes! > I think it's the sensible semantic: the second rule adds a new SYMLINK > *and* sets the permissions of the node, which are two distinct > operations applied by the same rule. Yeah, we should do that now. > Unless you think it's broken, I will add the patch to the debian package > of 051 (almost ready). I think we can make it even simpler, by applying the permission unconditionally, right? Thanks, Kay --=-ZUnIETdpRtadW82Wl26u Content-Disposition: inline; filename=udev-symlink-perms-01.patch Content-Type: text/x-patch; name=udev-symlink-perms-01.patch; charset=UTF-8 Content-Transfer-Encoding: 7bit ===== namedev.c 1.173 vs edited ===== --- 1.173/namedev.c 2004-12-21 17:41:02 +01:00 +++ edited/namedev.c 2005-02-05 15:51:06 +01:00 @@ -670,7 +670,6 @@ try_parent: dbg("sysfs_device->path='%s'", sysfs_device->path); dbg("sysfs_device->bus_id='%s'", sysfs_device->bus_id); } - } int namedev_name_device(struct udevice *udev, struct sysfs_class_device *class_dev) @@ -716,32 +715,32 @@ int namedev_name_device(struct udevice * list_for_each_entry(dev, &config_device_list, node) { dbg("process rule"); if (match_rule(udev, dev, class_dev, sysfs_device) == 0) { - if (dev->name[0] == '\0' && dev->symlink[0] == '\0') { - /* empty name, symlink, perms will not create any node */ - if (dev->mode == 0000 && dev->owner[0] == '\0' && dev->group[0] == '\0') { - info("configured rule in '%s[%i]' applied, '%s' is ignored", - dev->config_file, dev->config_line, udev->kernel_name); - return -1; - } - - /* apply permissions only rule values */ - if (dev->mode != 0000) { - udev->mode = dev->mode; - dbg("applied mode=%#o to '%s'", udev->mode, udev->kernel_name); - } - if (dev->owner[0] != '\0') { - strfieldcpy(udev->owner, dev->owner); - apply_format(udev, udev->owner, sizeof(udev->owner), class_dev, sysfs_device); - dbg("applied owner='%s' to '%s'", udev->owner, udev->kernel_name); - } - if (dev->group[0] != '\0') { - strfieldcpy(udev->group, dev->group); - apply_format(udev, udev->group, sizeof(udev->group), class_dev, sysfs_device); - dbg("applied group='%s' to '%s'", udev->group, udev->kernel_name); - } + + /* empty name, symlink, perms will not create any node */ + if (dev->name[0] == '\0' && dev->symlink[0] == '\0' && + dev->mode == 0000 && dev->owner[0] == '\0' && dev->group[0] == '\0') { + info("configured rule in '%s[%i]' applied, '%s' is ignored", + dev->config_file, dev->config_line, udev->kernel_name); + return -1; + } + + /* apply permissions */ + if (dev->mode != 0000) { + udev->mode = dev->mode; + dbg("applied mode=%#o to '%s'", udev->mode, udev->kernel_name); + } + if (dev->owner[0] != '\0') { + strfieldcpy(udev->owner, dev->owner); + apply_format(udev, udev->owner, sizeof(udev->owner), class_dev, sysfs_device); + dbg("applied owner='%s' to '%s'", udev->owner, udev->kernel_name); + } + if (dev->group[0] != '\0') { + strfieldcpy(udev->group, dev->group); + apply_format(udev, udev->group, sizeof(udev->group), class_dev, sysfs_device); + dbg("applied group='%s' to '%s'", udev->group, udev->kernel_name); } - /* collect symlinks for the final matching rule */ + /* collect symlinks for this or the final matching rule */ if (dev->symlink[0] != '\0') { char temp[NAME_SIZE]; @@ -774,19 +773,9 @@ int namedev_name_device(struct udevice * goto exit; udev->partitions = dev->partitions; - 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); - } - dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o", - udev->name, udev->owner, udev->group, udev->mode); + dbg("name, '%s' is going to have owner='%s', group='%s', mode=%#o partitions=%i", + udev->name, udev->owner, udev->group, udev->mode, udev->partitions); goto exit; } --=-ZUnIETdpRtadW82Wl26u-- ------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel