summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLi Qiong <liqiong@nfschina.com>2022-08-19 12:15:10 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-09-15 12:17:05 +0200
commit05af41d29a4527125f3356d82cf29657177c7fff (patch)
tree493bf5e95cbd942054912722af25d9733f796091
parentc0a45f41fde4a0f2c900f719817493ee5c4a5aa3 (diff)
downloadlinux-stable-05af41d29a4527125f3356d82cf29657177c7fff.tar.gz
linux-stable-05af41d29a4527125f3356d82cf29657177c7fff.tar.bz2
linux-stable-05af41d29a4527125f3356d82cf29657177c7fff.zip
parisc: ccio-dma: Handle kmalloc failure in ccio_init_resources()
[ Upstream commit d46c742f827fa2326ab1f4faa1cccadb56912341 ] As the possible failure of the kmalloc(), it should be better to fix this error path, check and return '-ENOMEM' error code. Signed-off-by: Li Qiong <liqiong@nfschina.com> Signed-off-by: Helge Deller <deller@gmx.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/parisc/ccio-dma.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/parisc/ccio-dma.c b/drivers/parisc/ccio-dma.c
index 6efab7a06c5f..73ee74d6e7a3 100644
--- a/drivers/parisc/ccio-dma.c
+++ b/drivers/parisc/ccio-dma.c
@@ -1390,15 +1390,17 @@ ccio_init_resource(struct resource *res, char *name, void __iomem *ioaddr)
}
}
-static void __init ccio_init_resources(struct ioc *ioc)
+static int __init ccio_init_resources(struct ioc *ioc)
{
struct resource *res = ioc->mmio_region;
char *name = kmalloc(14, GFP_KERNEL);
-
+ if (unlikely(!name))
+ return -ENOMEM;
snprintf(name, 14, "GSC Bus [%d/]", ioc->hw_path);
ccio_init_resource(res, name, &ioc->ioc_regs->io_io_low);
ccio_init_resource(res + 1, name, &ioc->ioc_regs->io_io_low_hv);
+ return 0;
}
static int new_ioc_area(struct resource *res, unsigned long size,
@@ -1552,7 +1554,10 @@ static int __init ccio_probe(struct parisc_device *dev)
return -ENOMEM;
}
ccio_ioc_init(ioc);
- ccio_init_resources(ioc);
+ if (ccio_init_resources(ioc)) {
+ kfree(ioc);
+ return -ENOMEM;
+ }
hppa_dma_ops = &ccio_ops;
dev->dev.platform_data = kzalloc(sizeof(struct pci_hba_data), GFP_KERNEL);