diff options
| author | Niklas Schnelle <schnelle@linux.ibm.com> | 2026-07-22 15:08:34 +0200 |
|---|---|---|
| committer | Vasily Gorbik <gor@linux.ibm.com> | 2026-07-31 13:31:19 +0200 |
| commit | b7ab86bdc65eadcfc43a0e3faf682a3f750cfb96 (patch) | |
| tree | bdeb45914f6e4015598e1066b28e4f76a7e953e8 | |
| parent | 49145bce539117db4b6e9e83c0e5ef528e361050 (diff) | |
| download | linux-next-b7ab86bdc65eadcfc43a0e3faf682a3f750cfb96.tar.gz linux-next-b7ab86bdc65eadcfc43a0e3faf682a3f750cfb96.zip | |
s390/pci: Fix s390_pci_mmio_write syscall error return without MIO
On a machine without PCI memory-I/O (MIO) support or when running with
pci=nomio the s390 specific PCI MMIO write syscall checks if the MMIO
cookie is above ZPCI_IOMAP_ADDR_BASE as a sanity check before even
trying to perform the MMIO. If this check fails the return value was
left unchanged and thus 0 from prior operations falsely indicating
success. This could potentially confuse user-space into falsely
believing the MMIO, on a mapping not valid for MMIO was successful.
Fix this by setting the return value to -EFAULT prior to the check
following the same pattern as elsewhere in the same function.
Cc: stable@vger.kernel.org
Reviewed-by: Julian Ruess <julianr@linux.ibm.com>
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Fixes: a67a88b0b8de ("s390/pci: remove races against pte updates")
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
| -rw-r--r-- | arch/s390/pci/pci_mmio.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/s390/pci/pci_mmio.c b/arch/s390/pci/pci_mmio.c index 51e7a28af899..f3f79ba78410 100644 --- a/arch/s390/pci/pci_mmio.c +++ b/arch/s390/pci/pci_mmio.c @@ -188,6 +188,7 @@ SYSCALL_DEFINE3(s390_pci_mmio_write, unsigned long, mmio_addr, goto out_unlock_mmap; } + ret = -EFAULT; io_addr = (void __iomem *)((args.pfn << PAGE_SHIFT) | (mmio_addr & ~PAGE_MASK)); |
