[PATCH v6 0/6] PCI/sysfs: Use sysfs_emit() and sysfs_emit_at() in "show" functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

This series aims to bring support for the sysfs_emit() and
sysfs_emit_at() functions to the existing PCI-related sysfs objects.
These new functions were introduced to make it less ambiguous which
function is preferred when writing to the output buffer in a device
attribute's "show" callback [1].

Thus, the existing PCI sysfs objects "show" functions will be converted
from the using the sprintf(), snprintf() and scnprintf() functions to
sysfs_emit() and sysfs_emit_at() accordingly, as the latter is aware of
the PAGE_SIZE buffer limit that the sysfs object has and correctly
returns the number of bytes written into the buffer.

This series will also address inconsistency related to the presence (or
lack of thereof) of a trailing newline in the show() functions adding it
where it's currently missing.  This will allow for utilities such as the
"cat" command to display the result of the read from a particular sysfs
object correctly in a shell.

While working on this series a problem with newline handling related to
how the value of the "resource_alignment" sysfs object was parsed and
then persisted has been found and corrected.  Also, while at it,
a change enabling support for the value of "resource_alignment"
previously set using either a command-line argument or through the sysfs
object to be cleared at run-time was also included, and thus aligning
this particular sysfs object with the behaviour of other such objects
that allow for the value to be dynamically updated and cleared as
required.

Additionally, a fix to a potential buffer overrun that has been found in
the dsm_label_utf16s_to_utf8s() function that is responsible for the
character conversion from UTF16 to UTF8 of the buffer that holds the
device label obtained through the ACPI _DSM mechanism is included as
part of this series.

Finally, a minor fix is also included in this series that has been added
to ensure that the value of the "driver_override" variable is only
exposed through the corresponding sysfs object when a value is set or
otherwise if the value has not been set, the object would return
a string representation of the NULL value.  This will also align this
particular sysfs object's behaviour with others, where when there is no
value then nothing is returned.

[1] Documentation/filesystems/sysfs.rst

This series is related to:
  commit ad025f8 ("PCI/sysfs: Use sysfs_emit() and sysfs_emit_at() in "show" functions")

Signed-off-by: Krzysztof Wilczyński <kw@xxxxxxxxx>

---
Changes in v2:
  None.

Changes in v3:
  Added Logan Gunthorpe's "Reviewed-by".

Changes in v4:
  Separated and squashed all the trivial sysfs_emit()/sysfs_emit_at()
  changes into a single patch as per Bjorn Helgaas' request.
  Carried Logan Gunthorpe's "Reviewed-by" over.

Changes in v5:
  Added check to the resource_alignment_show() function to ensure that
  there is an extra space left in the buffer for the newline character,
  assuming that it might be provided.

Changes in v6:
  Added a cover letter as per Bjorn Helgaas' request.
  New patch addressing a potential buffer overrun in the
  dsm_label_utf16s_to_utf8s() function has been added.

Krzysztof Wilczyński (6):
  PCI/sysfs: Use sysfs_emit() and sysfs_emit_at() in "show" functions
  PCI/sysfs: Use return value from dsm_label_utf16s_to_utf8s() directly
  PCI/sysfs: Fix trailing newline handling of resource_alignment_param
  PCI/sysfs: Add missing trailing newline to devspec_show()
  PCI/sysfs: Only show value when driver_override is not NULL
  PCI/sysfs: Fix a buffer overrun problem with
    dsm_label_utf16s_to_utf8s()

 drivers/pci/hotplug/pci_hotplug_core.c |  8 +++---
 drivers/pci/hotplug/rpadlpar_sysfs.c   |  4 +--
 drivers/pci/hotplug/shpchp_sysfs.c     | 38 ++++++++++++++------------
 drivers/pci/iov.c                      | 12 ++++----
 drivers/pci/msi.c                      |  8 +++---
 drivers/pci/p2pdma.c                   |  7 ++---
 drivers/pci/pci-label.c                | 22 ++++++++-------
 drivers/pci/pci-sysfs.c                |  7 +++--
 drivers/pci/pci.c                      | 34 +++++++++++++----------
 drivers/pci/pcie/aer.c                 | 20 ++++++++------
 drivers/pci/pcie/aspm.c                |  4 +--
 drivers/pci/slot.c                     | 18 ++++++------
 drivers/pci/switch/switchtec.c         | 18 ++++++------
 13 files changed, 107 insertions(+), 93 deletions(-)

-- 
2.31.1




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux