• Trent Piepho's avatar
    PCI: Make settable sysfs attributes more consistent · 92425a40
    Trent Piepho authored
    PCI devices have three settable boolean attributes, enable,
    broken_parity_status, and msi_bus.
    
    The store functions for these would silently interpret "0x01" as false,
    "1llogical" as true, and "true" would be (silently!) ignored and do
    nothing.
    
    This is inconsistent with typical sysfs handling of settable attributes,
    and just plain doesn't make much sense.
    
    So, use strict_strtoul(), which was created for this purpose.  The store
    functions will treat a value of 0 as false, non-zero as true, and return
    -EINVAL for a parse failure.
    
    Additionally, is_enabled_store() and msi_bus_store() return -EPERM if
    CAP_SYS_ADMIN is lacking, rather than silently doing nothing.  This is more
    typical behavior for sysfs attributes that need a capability.
    
    And msi_bus_store() will only print the "forced subordinate bus ..."
    warning if the MSI flag was actually forced to a different value.
    Signed-off-by: default avatarTrent Piepho <xyzzy@speakeasy.org>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    92425a40
pci-sysfs.c 24.8 KB