Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dcf54e6c authored by Li Qiong's avatar Li Qiong Committed by Greg Kroah-Hartman
Browse files

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: default avatarLi Qiong <liqiong@nfschina.com>
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent c72d9714
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -1378,15 +1378,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,
@@ -1541,7 +1543,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;

	hba = kzalloc(sizeof(*hba), GFP_KERNEL);