Message ID | 20190813204513.4790-3-skunberg.kelsey@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | PCI: pci-sysfs.c cleanup | expand |
[+cc Bodong, Don, Greg for permission question] On Tue, Aug 13, 2019 at 02:45:12PM -0600, Kelsey Skunberg wrote: > Symbolic permissions such as "(S_IWUSR | S_IWGRP)" are not > preferred and octal permissions should be used instead. Change all > symbolic permissions to octal permissions. > > Example of old: > > "(S_IWUSR | S_IWGRP)" > > Example of new: > > "0220" > static DEVICE_ATTR_RO(sriov_totalvfs); > -static DEVICE_ATTR(sriov_numvfs, (S_IRUGO | S_IWUSR | S_IWGRP), > - sriov_numvfs_show, sriov_numvfs_store); > +static DEVICE_ATTR(sriov_numvfs, 0664, sriov_numvfs_show, sriov_numvfs_store); > static DEVICE_ATTR_RO(sriov_offset); > static DEVICE_ATTR_RO(sriov_stride); > static DEVICE_ATTR_RO(sriov_vf_device); > -static DEVICE_ATTR(sriov_drivers_autoprobe, (S_IRUGO | S_IWUSR | S_IWGRP), > - sriov_drivers_autoprobe_show, sriov_drivers_autoprobe_store); > +static DEVICE_ATTR(sriov_drivers_autoprobe, 0664, sriov_drivers_autoprobe_show, > + sriov_drivers_autoprobe_store); Greg noticed that sriov_numvfs and sriov_drivers_autoprobe have "unusual" permissions. These were added by: 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control VF driver binding") 1789382a72a5 ("PCI: SRIOV control and status via sysfs") Kelsey's patch correctly preserves the existing permissions, but we should double-check that they are the permissions they want, and possibly add a comment about why they're different from the rest. Bjorn
On Wed, Aug 14, 2019 at 12:38:46AM -0500, Bjorn Helgaas wrote: > [+cc Bodong, Don, Greg for permission question] > > On Tue, Aug 13, 2019 at 02:45:12PM -0600, Kelsey Skunberg wrote: > > Symbolic permissions such as "(S_IWUSR | S_IWGRP)" are not > > preferred and octal permissions should be used instead. Change all > > symbolic permissions to octal permissions. > > > > Example of old: > > > > "(S_IWUSR | S_IWGRP)" > > > > Example of new: > > > > "0220" > > > > static DEVICE_ATTR_RO(sriov_totalvfs); > > -static DEVICE_ATTR(sriov_numvfs, (S_IRUGO | S_IWUSR | S_IWGRP), > > - sriov_numvfs_show, sriov_numvfs_store); > > +static DEVICE_ATTR(sriov_numvfs, 0664, sriov_numvfs_show, sriov_numvfs_store); > > static DEVICE_ATTR_RO(sriov_offset); > > static DEVICE_ATTR_RO(sriov_stride); > > static DEVICE_ATTR_RO(sriov_vf_device); > > -static DEVICE_ATTR(sriov_drivers_autoprobe, (S_IRUGO | S_IWUSR | S_IWGRP), > > - sriov_drivers_autoprobe_show, sriov_drivers_autoprobe_store); > > +static DEVICE_ATTR(sriov_drivers_autoprobe, 0664, sriov_drivers_autoprobe_show, > > + sriov_drivers_autoprobe_store); > > Greg noticed that sriov_numvfs and sriov_drivers_autoprobe have > "unusual" permissions. These were added by: > > 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control VF driver binding") > 1789382a72a5 ("PCI: SRIOV control and status via sysfs") > > Kelsey's patch correctly preserves the existing permissions, but we > should double-check that they are the permissions they want, and > possibly add a comment about why they're different from the rest. I agree. And if those permissions are ok, please put a HUGE comment in here saying why they are what they are and why they need to stay that way so we don't have this conversation again in a few years :) thanks, greg k-h
On 08/14/2019 01:38 AM, Bjorn Helgaas wrote: > [+cc Bodong, Don, Greg for permission question] > > On Tue, Aug 13, 2019 at 02:45:12PM -0600, Kelsey Skunberg wrote: >> Symbolic permissions such as "(S_IWUSR | S_IWGRP)" are not >> preferred and octal permissions should be used instead. Change all >> symbolic permissions to octal permissions. >> >> Example of old: >> >> "(S_IWUSR | S_IWGRP)" >> >> Example of new: >> >> "0220" > > >> static DEVICE_ATTR_RO(sriov_totalvfs); >> -static DEVICE_ATTR(sriov_numvfs, (S_IRUGO | S_IWUSR | S_IWGRP), >> - sriov_numvfs_show, sriov_numvfs_store); >> +static DEVICE_ATTR(sriov_numvfs, 0664, sriov_numvfs_show, sriov_numvfs_store); >> static DEVICE_ATTR_RO(sriov_offset); >> static DEVICE_ATTR_RO(sriov_stride); >> static DEVICE_ATTR_RO(sriov_vf_device); >> -static DEVICE_ATTR(sriov_drivers_autoprobe, (S_IRUGO | S_IWUSR | S_IWGRP), >> - sriov_drivers_autoprobe_show, sriov_drivers_autoprobe_store); >> +static DEVICE_ATTR(sriov_drivers_autoprobe, 0664, sriov_drivers_autoprobe_show, >> + sriov_drivers_autoprobe_store); > > Greg noticed that sriov_numvfs and sriov_drivers_autoprobe have > "unusual" permissions. These were added by: > > 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control VF driver binding") > 1789382a72a5 ("PCI: SRIOV control and status via sysfs") > > Kelsey's patch correctly preserves the existing permissions, but we > should double-check that they are the permissions they want, and > possibly add a comment about why they're different from the rest. > > Bjorn > The rest being? ... 0644 vs 0664 ? The file is read & written, thus the (first) 6; I'll have to dig through very old (7 yr) notes to see if the second 6 is needed for libvirt (so it doesn't have to be root to enable). -dd
On Thu, Aug 15, 2019 at 10:37:13AM -0400, Don Dutile wrote: > On 08/14/2019 01:38 AM, Bjorn Helgaas wrote: > > [+cc Bodong, Don, Greg for permission question] > > > > On Tue, Aug 13, 2019 at 02:45:12PM -0600, Kelsey Skunberg wrote: > > > Symbolic permissions such as "(S_IWUSR | S_IWGRP)" are not > > > preferred and octal permissions should be used instead. Change all > > > symbolic permissions to octal permissions. > > > > > > Example of old: > > > > > > "(S_IWUSR | S_IWGRP)" > > > > > > Example of new: > > > > > > "0220" > > > > > > > static DEVICE_ATTR_RO(sriov_totalvfs); > > > -static DEVICE_ATTR(sriov_numvfs, (S_IRUGO | S_IWUSR | S_IWGRP), > > > - sriov_numvfs_show, sriov_numvfs_store); > > > +static DEVICE_ATTR(sriov_numvfs, 0664, sriov_numvfs_show, sriov_numvfs_store); > > > static DEVICE_ATTR_RO(sriov_offset); > > > static DEVICE_ATTR_RO(sriov_stride); > > > static DEVICE_ATTR_RO(sriov_vf_device); > > > -static DEVICE_ATTR(sriov_drivers_autoprobe, (S_IRUGO | S_IWUSR | S_IWGRP), > > > - sriov_drivers_autoprobe_show, sriov_drivers_autoprobe_store); > > > +static DEVICE_ATTR(sriov_drivers_autoprobe, 0664, sriov_drivers_autoprobe_show, > > > + sriov_drivers_autoprobe_store); > > > > Greg noticed that sriov_numvfs and sriov_drivers_autoprobe have > > "unusual" permissions. These were added by: > > > > 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control VF driver binding") > > 1789382a72a5 ("PCI: SRIOV control and status via sysfs") > > > > Kelsey's patch correctly preserves the existing permissions, but we > > should double-check that they are the permissions they want, and > > possibly add a comment about why they're different from the rest. > > > > Bjorn > > Hi Don, > The rest being? ... 0644 vs 0664 ? > The file is read & written, thus the (first) 6; I'll have to dig through very old (7 yr) notes to see if the second 6 is needed for libvirt (so it doesn't have to be root to enable). > > -dd > Were you able to see if the unusual permissions (0664) are needed for libvirt? I appreciate your help! -Kelsey
On 09/04/2019 02:22 AM, Kelsey Skunberg wrote: > On Thu, Aug 15, 2019 at 10:37:13AM -0400, Don Dutile wrote: >> On 08/14/2019 01:38 AM, Bjorn Helgaas wrote: >>> [+cc Bodong, Don, Greg for permission question] >>> >>> On Tue, Aug 13, 2019 at 02:45:12PM -0600, Kelsey Skunberg wrote: >>>> Symbolic permissions such as "(S_IWUSR | S_IWGRP)" are not >>>> preferred and octal permissions should be used instead. Change all >>>> symbolic permissions to octal permissions. >>>> >>>> Example of old: >>>> >>>> "(S_IWUSR | S_IWGRP)" >>>> >>>> Example of new: >>>> >>>> "0220" >>> >>> >>>> static DEVICE_ATTR_RO(sriov_totalvfs); >>>> -static DEVICE_ATTR(sriov_numvfs, (S_IRUGO | S_IWUSR | S_IWGRP), >>>> - sriov_numvfs_show, sriov_numvfs_store); >>>> +static DEVICE_ATTR(sriov_numvfs, 0664, sriov_numvfs_show, sriov_numvfs_store); >>>> static DEVICE_ATTR_RO(sriov_offset); >>>> static DEVICE_ATTR_RO(sriov_stride); >>>> static DEVICE_ATTR_RO(sriov_vf_device); >>>> -static DEVICE_ATTR(sriov_drivers_autoprobe, (S_IRUGO | S_IWUSR | S_IWGRP), >>>> - sriov_drivers_autoprobe_show, sriov_drivers_autoprobe_store); >>>> +static DEVICE_ATTR(sriov_drivers_autoprobe, 0664, sriov_drivers_autoprobe_show, >>>> + sriov_drivers_autoprobe_store); >>> >>> Greg noticed that sriov_numvfs and sriov_drivers_autoprobe have >>> "unusual" permissions. These were added by: >>> >>> 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control VF driver binding") >>> 1789382a72a5 ("PCI: SRIOV control and status via sysfs") >>> >>> Kelsey's patch correctly preserves the existing permissions, but we >>> should double-check that they are the permissions they want, and >>> possibly add a comment about why they're different from the rest. >>> >>> Bjorn >>> > > Hi Don, > >> The rest being? ... 0644 vs 0664 ? >> The file is read & written, thus the (first) 6; I'll have to dig through very old (7 yr) notes to see if the second 6 is needed for libvirt (so it doesn't have to be root to enable). >> >> -dd >> > > Were you able to see if the unusual permissions (0664) are needed for > libvirt? I appreciate your help! > > -Kelsey > Asking libvirt team in RH; will get back as soon as I hear back. LPC time sink may delay the response. -dd
On 09/04/2019 02:22 AM, Kelsey Skunberg wrote: > On Thu, Aug 15, 2019 at 10:37:13AM -0400, Don Dutile wrote: >> On 08/14/2019 01:38 AM, Bjorn Helgaas wrote: >>> [+cc Bodong, Don, Greg for permission question] >>> >>> On Tue, Aug 13, 2019 at 02:45:12PM -0600, Kelsey Skunberg wrote: >>>> Symbolic permissions such as "(S_IWUSR | S_IWGRP)" are not >>>> preferred and octal permissions should be used instead. Change all >>>> symbolic permissions to octal permissions. >>>> >>>> Example of old: >>>> >>>> "(S_IWUSR | S_IWGRP)" >>>> >>>> Example of new: >>>> >>>> "0220" >>> >>> >>>> static DEVICE_ATTR_RO(sriov_totalvfs); >>>> -static DEVICE_ATTR(sriov_numvfs, (S_IRUGO | S_IWUSR | S_IWGRP), >>>> - sriov_numvfs_show, sriov_numvfs_store); >>>> +static DEVICE_ATTR(sriov_numvfs, 0664, sriov_numvfs_show, sriov_numvfs_store); >>>> static DEVICE_ATTR_RO(sriov_offset); >>>> static DEVICE_ATTR_RO(sriov_stride); >>>> static DEVICE_ATTR_RO(sriov_vf_device); >>>> -static DEVICE_ATTR(sriov_drivers_autoprobe, (S_IRUGO | S_IWUSR | S_IWGRP), >>>> - sriov_drivers_autoprobe_show, sriov_drivers_autoprobe_store); >>>> +static DEVICE_ATTR(sriov_drivers_autoprobe, 0664, sriov_drivers_autoprobe_show, >>>> + sriov_drivers_autoprobe_store); >>> >>> Greg noticed that sriov_numvfs and sriov_drivers_autoprobe have >>> "unusual" permissions. These were added by: >>> >>> 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control VF driver binding") >>> 1789382a72a5 ("PCI: SRIOV control and status via sysfs") >>> >>> Kelsey's patch correctly preserves the existing permissions, but we >>> should double-check that they are the permissions they want, and >>> possibly add a comment about why they're different from the rest. >>> >>> Bjorn >>> > > Hi Don, > >> The rest being? ... 0644 vs 0664 ? >> The file is read & written, thus the (first) 6; I'll have to dig through very old (7 yr) notes to see if the second 6 is needed for libvirt (so it doesn't have to be root to enable). >> >> -dd >> > > Were you able to see if the unusual permissions (0664) are needed for > libvirt? I appreciate your help! > > -Kelsey > Daniel Berrangé reported that libvirt runs as root when dealing with anything PCI, and chowns files for qemu needs, so there is no need for the 664 permission. For all I know, it's a simple typo that was allowed to creep in. :-/ Feel free to modify to 644. -dd
On Wed, Sep 04, 2019 at 02:33:44PM -0400, Don Dutile wrote: > On 09/04/2019 02:22 AM, Kelsey Skunberg wrote: > > On Thu, Aug 15, 2019 at 10:37:13AM -0400, Don Dutile wrote: > > > On 08/14/2019 01:38 AM, Bjorn Helgaas wrote: > > > > [+cc Bodong, Don, Greg for permission question] > > > > > > > > On Tue, Aug 13, 2019 at 02:45:12PM -0600, Kelsey Skunberg wrote: > > > > > Symbolic permissions such as "(S_IWUSR | S_IWGRP)" are not > > > > > preferred and octal permissions should be used instead. Change all > > > > > symbolic permissions to octal permissions. > > > > > > > > > > Example of old: > > > > > > > > > > "(S_IWUSR | S_IWGRP)" > > > > > > > > > > Example of new: > > > > > > > > > > "0220" > > > > > > > > > > > > > static DEVICE_ATTR_RO(sriov_totalvfs); > > > > > -static DEVICE_ATTR(sriov_numvfs, (S_IRUGO | S_IWUSR | S_IWGRP), > > > > > - sriov_numvfs_show, sriov_numvfs_store); > > > > > +static DEVICE_ATTR(sriov_numvfs, 0664, sriov_numvfs_show, sriov_numvfs_store); > > > > > static DEVICE_ATTR_RO(sriov_offset); > > > > > static DEVICE_ATTR_RO(sriov_stride); > > > > > static DEVICE_ATTR_RO(sriov_vf_device); > > > > > -static DEVICE_ATTR(sriov_drivers_autoprobe, (S_IRUGO | S_IWUSR | S_IWGRP), > > > > > - sriov_drivers_autoprobe_show, sriov_drivers_autoprobe_store); > > > > > +static DEVICE_ATTR(sriov_drivers_autoprobe, 0664, sriov_drivers_autoprobe_show, > > > > > + sriov_drivers_autoprobe_store); > > > > > > > > Greg noticed that sriov_numvfs and sriov_drivers_autoprobe have > > > > "unusual" permissions. These were added by: > > > > > > > > 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control VF driver binding") > > > > 1789382a72a5 ("PCI: SRIOV control and status via sysfs") > > > > > > > > Kelsey's patch correctly preserves the existing permissions, but we > > > > should double-check that they are the permissions they want, and > > > > possibly add a comment about why they're different from the rest. > > > > > > > > Bjorn > > > > > > > > Hi Don, > > > > > The rest being? ... 0644 vs 0664 ? > > > The file is read & written, thus the (first) 6; I'll have to dig through very old (7 yr) notes to see if the second 6 is needed for libvirt (so it doesn't have to be root to enable). > > > > > > -dd > > > > > > > Were you able to see if the unusual permissions (0664) are needed for > > libvirt? I appreciate your help! > > > > -Kelsey > > > Daniel Berrangé reported that libvirt runs as root when dealing with anything PCI, and chowns files for qemu needs, so there is no need for the 664 permission. > For all I know, it's a simple typo that was allowed to creep in. :-/ > > Feel free to modify to 644. > > -dd > Thank you for checking into this and getting back so quick! I'll cc you in the patch. :) Thanks again! -Kelsey
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c index 8af7944fdccb..346193ca4826 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c @@ -464,7 +464,7 @@ static ssize_t dev_rescan_store(struct device *dev, } return count; } -static DEVICE_ATTR(rescan, (S_IWUSR | S_IWGRP), NULL, dev_rescan_store); +static DEVICE_ATTR(rescan, 0220, NULL, dev_rescan_store); static ssize_t remove_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) @@ -478,7 +478,7 @@ static ssize_t remove_store(struct device *dev, struct device_attribute *attr, pci_stop_and_remove_bus_device_locked(to_pci_dev(dev)); return count; } -static DEVICE_ATTR_IGNORE_LOCKDEP(remove, (S_IWUSR | S_IWGRP), NULL, +static DEVICE_ATTR_IGNORE_LOCKDEP(remove, 0220, NULL, remove_store); static ssize_t dev_bus_rescan_store(struct device *dev, @@ -501,7 +501,7 @@ static ssize_t dev_bus_rescan_store(struct device *dev, } return count; } -static DEVICE_ATTR(bus_rescan, (S_IWUSR | S_IWGRP), NULL, dev_bus_rescan_store); +static DEVICE_ATTR(bus_rescan, 0220, NULL, dev_bus_rescan_store); #if defined(CONFIG_PM) && defined(CONFIG_ACPI) static ssize_t d3cold_allowed_store(struct device *dev, @@ -685,13 +685,12 @@ static ssize_t sriov_drivers_autoprobe_store(struct device *dev, } static DEVICE_ATTR_RO(sriov_totalvfs); -static DEVICE_ATTR(sriov_numvfs, (S_IRUGO | S_IWUSR | S_IWGRP), - sriov_numvfs_show, sriov_numvfs_store); +static DEVICE_ATTR(sriov_numvfs, 0664, sriov_numvfs_show, sriov_numvfs_store); static DEVICE_ATTR_RO(sriov_offset); static DEVICE_ATTR_RO(sriov_stride); static DEVICE_ATTR_RO(sriov_vf_device); -static DEVICE_ATTR(sriov_drivers_autoprobe, (S_IRUGO | S_IWUSR | S_IWGRP), - sriov_drivers_autoprobe_show, sriov_drivers_autoprobe_store); +static DEVICE_ATTR(sriov_drivers_autoprobe, 0664, sriov_drivers_autoprobe_show, + sriov_drivers_autoprobe_store); #endif /* CONFIG_PCI_IOV */ static ssize_t driver_override_store(struct device *dev, @@ -1080,7 +1079,7 @@ void pci_create_legacy_files(struct pci_bus *b) sysfs_bin_attr_init(b->legacy_io); b->legacy_io->attr.name = "legacy_io"; b->legacy_io->size = 0xffff; - b->legacy_io->attr.mode = S_IRUSR | S_IWUSR; + b->legacy_io->attr.mode = 0600; b->legacy_io->read = pci_read_legacy_io; b->legacy_io->write = pci_write_legacy_io; b->legacy_io->mmap = pci_mmap_legacy_io; @@ -1094,7 +1093,7 @@ void pci_create_legacy_files(struct pci_bus *b) sysfs_bin_attr_init(b->legacy_mem); b->legacy_mem->attr.name = "legacy_mem"; b->legacy_mem->size = 1024*1024; - b->legacy_mem->attr.mode = S_IRUSR | S_IWUSR; + b->legacy_mem->attr.mode = 0600; b->legacy_mem->mmap = pci_mmap_legacy_mem; pci_adjust_legacy_attr(b, pci_mmap_mem); error = device_create_bin_file(&b->dev, b->legacy_mem); @@ -1301,7 +1300,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine) } } res_attr->attr.name = res_attr_name; - res_attr->attr.mode = S_IRUSR | S_IWUSR; + res_attr->attr.mode = 0600; res_attr->size = pci_resource_len(pdev, num); res_attr->private = (void *)(unsigned long)num; retval = sysfs_create_bin_file(&pdev->dev.kobj, res_attr); @@ -1414,7 +1413,7 @@ static ssize_t pci_read_rom(struct file *filp, struct kobject *kobj, static const struct bin_attribute pci_config_attr = { .attr = { .name = "config", - .mode = S_IRUGO | S_IWUSR, + .mode = 0644, }, .size = PCI_CFG_SPACE_SIZE, .read = pci_read_config, @@ -1424,7 +1423,7 @@ static const struct bin_attribute pci_config_attr = { static const struct bin_attribute pcie_config_attr = { .attr = { .name = "config", - .mode = S_IRUGO | S_IWUSR, + .mode = 0644, }, .size = PCI_CFG_SPACE_EXP_SIZE, .read = pci_read_config, @@ -1506,7 +1505,7 @@ int __must_check pci_create_sysfs_dev_files(struct pci_dev *pdev) sysfs_bin_attr_init(attr); attr->size = rom_size; attr->attr.name = "rom"; - attr->attr.mode = S_IRUSR | S_IWUSR; + attr->attr.mode = 0600; attr->read = pci_read_rom; attr->write = pci_write_rom; retval = sysfs_create_bin_file(&pdev->dev.kobj, attr);
Symbolic permissions such as "(S_IWUSR | S_IWGRP)" are not preferred and octal permissions should be used instead. Change all symbolic permissions to octal permissions. Example of old: "(S_IWUSR | S_IWGRP)" Example of new: "0220" Signed-off-by: Kelsey Skunberg <skunberg.kelsey@gmail.com> --- drivers/pci/pci-sysfs.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-)