Merge branch 'pci/sysfs'
authorBjorn Helgaas <bhelgaas@google.com>
Tue, 6 Jul 2021 15:56:25 +0000 (10:56 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 6 Jul 2021 15:56:25 +0000 (10:56 -0500)
- Fix dsm_label_utf16s_to_utf8s() buffer overrun (Krzysztof Wilczyński)

- Use sysfs_emit() and sysfs_emit_at() in "show" functions (Krzysztof
  Wilczyński)

- Fix 'resource_alignment' newline issues (Krzysztof Wilczyński)

- Add newline to 'devspec' sysfs file (Krzysztof Wilczyński)

* pci/sysfs:
  PCI/sysfs: Add 'devspec' newline
  PCI/sysfs: Fix 'resource_alignment' newline issues
  PCI/sysfs: Use sysfs_emit() and sysfs_emit_at() in "show" functions
  PCI/sysfs: Rely on lengths from scnprintf(), dsm_label_utf16s_to_utf8s()
  PCI/sysfs: Fix dsm_label_utf16s_to_utf8s() buffer overrun

# Conflicts:
# drivers/pci/p2pdma.c

1  2 
drivers/pci/p2pdma.c
drivers/pci/pci.c
drivers/pci/pcie/aer.c

@@@ -48,16 -48,12 +48,16 @@@ static ssize_t size_show(struct device 
                         char *buf)
  {
        struct pci_dev *pdev = to_pci_dev(dev);
 +      struct pci_p2pdma *p2pdma;
        size_t size = 0;
  
 -      if (pdev->p2pdma->pool)
 -              size = gen_pool_size(pdev->p2pdma->pool);
 +      rcu_read_lock();
 +      p2pdma = rcu_dereference(pdev->p2pdma);
 +      if (p2pdma && p2pdma->pool)
 +              size = gen_pool_size(p2pdma->pool);
 +      rcu_read_unlock();
  
-       return scnprintf(buf, PAGE_SIZE, "%zd\n", size);
+       return sysfs_emit(buf, "%zd\n", size);
  }
  static DEVICE_ATTR_RO(size);
  
@@@ -65,16 -61,12 +65,16 @@@ static ssize_t available_show(struct de
                              char *buf)
  {
        struct pci_dev *pdev = to_pci_dev(dev);
 +      struct pci_p2pdma *p2pdma;
        size_t avail = 0;
  
 -      if (pdev->p2pdma->pool)
 -              avail = gen_pool_avail(pdev->p2pdma->pool);
 +      rcu_read_lock();
 +      p2pdma = rcu_dereference(pdev->p2pdma);
 +      if (p2pdma && p2pdma->pool)
 +              avail = gen_pool_avail(p2pdma->pool);
 +      rcu_read_unlock();
  
-       return scnprintf(buf, PAGE_SIZE, "%zd\n", avail);
+       return sysfs_emit(buf, "%zd\n", avail);
  }
  static DEVICE_ATTR_RO(available);
  
@@@ -82,16 -74,8 +82,16 @@@ static ssize_t published_show(struct de
                              char *buf)
  {
        struct pci_dev *pdev = to_pci_dev(dev);
 +      struct pci_p2pdma *p2pdma;
 +      bool published = false;
  
 -      return sysfs_emit(buf, "%d\n", pdev->p2pdma->p2pmem_published);
 +      rcu_read_lock();
 +      p2pdma = rcu_dereference(pdev->p2pdma);
 +      if (p2pdma)
 +              published = p2pdma->p2pmem_published;
 +      rcu_read_unlock();
 +
-       return scnprintf(buf, PAGE_SIZE, "%d\n", published);
++      return sysfs_emit(buf, "%d\n", published);
  }
  static DEVICE_ATTR_RO(published);
  
Simple merge
Simple merge