• K
    PCI/sysfs: Fix 'resource_alignment' newline issues · 381bd3fa
    Krzysztof Wilczyński 提交于
    The value of the "resource_alignment" can be specified using a kernel
    command-line argument ("pci=resource_alignment=") or through the
    corresponding sysfs attribute under the /sys/bus/pci path.
    
    Previously, when the value was set via the kernel command-line argument,
    and then subsequently accessed through sysfs attribute, the value read back
    was not correct:
    
      # grep -oE 'pci=resource_alignment.+' /proc/cmdline
      pci=resource_alignment=20@00:1f.2
      # cat /sys/bus/pci/resource_alignment
      20@00:1f.
    
    This was also true when the value was set through the sysfs attribute
    without including a trailing newline:
    
      # echo -n 20@00:1f.2 > /sys/bus/pci/resource_alignment
      # cat /sys/bus/pci/resource_alignment
      20@00:1f.
    
    When it was set through the sysfs attribute *including* a newline,
    reading it back worked as intended:
    
      # echo 20@00:1f.2 > /sys/bus/pci/resource_alignment
      # cat /sys/bus/pci/resource_alignment
      20@00:1f.2
    
    To fix this inconsistency, append a trailing newline in the show() function
    and strip the trailing line in the store() function if one is present.
    
    Also, allow for the value previously set using either a command-line
    argument or through the sysfs object to be cleared at run-time.
    
    [bhelgaas: fold in kfree fix from
    https://lore.kernel.org/linux-pci/20210604133230.983956-4-kw@linux.com]
    Fixes: e499081d ("PCI: Force trailing new line to resource_alignment_param in sysfs")
    Link: https://lore.kernel.org/r/20210603000112.703037-4-kw@linux.comSigned-off-by: NKrzysztof Wilczyński <kw@linux.com>
    Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: NLogan Gunthorpe <logang@deltatee.com>
    381bd3fa
pci.c 175.0 KB