From: Bjorn Helgaas Date: Tue, 6 Jul 2021 15:56:25 +0000 (-0500) Subject: Merge branch 'pci/sysfs' X-Git-Tag: v5.15~768^2~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7132700067f234d37c234e5d711bb49ea06d2352;p=platform%2Fkernel%2Flinux-starfive.git Merge branch 'pci/sysfs' - 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 --- 7132700067f234d37c234e5d711bb49ea06d2352 diff --cc drivers/pci/p2pdma.c index 69c25e7,a1351b3..50cdde3 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.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);