summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.ibm.com>2018-08-13 12:26:46 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-09-05 10:16:23 +0300
commitbe4f8c44a1c7045a313121ad4549b000c861efab (patch)
tree449afe7f6c21c3997df3013ec08a4fdcd6b34aaa
parentdc826c93cd8015370182b9362dea84250399a9eb (diff)
downloadlinux-be4f8c44a1c7045a313121ad4549b000c861efab.tar.xz
s390/pci: fix out of bounds access during irq setup
commit 866f3576a72b2233a76dffb80290f8086dc49e17 upstream. During interrupt setup we allocate interrupt vectors, walk the list of msi descriptors, and fill in the message data. Requesting more interrupts than supported on s390 can lead to an out of bounds access. When we restrict the number of interrupts we should also stop walking the msi list after all supported interrupts are handled. Cc: stable@vger.kernel.org Signed-off-by: Sebastian Ott <sebott@linux.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--arch/s390/pci/pci.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c
index 944818617718..7926500e5169 100644
--- a/arch/s390/pci/pci.c
+++ b/arch/s390/pci/pci.c
@@ -397,6 +397,8 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
hwirq = 0;
list_for_each_entry(msi, &pdev->msi_list, list) {
rc = -EIO;
+ if (hwirq >= msi_vecs)
+ break;
irq = irq_alloc_desc(0); /* Alloc irq on node 0 */
if (irq < 0)
goto out_msi;