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

Commit 41093167 authored by Zhu Yi's avatar Zhu Yi Committed by John W. Linville
Browse files

ipw2200: use kmalloc for large local variables



Fixed below compiler warning:

drivers/net/wireless/ipw2x00/ipw2200.c: In function ‘ipw_load_firmware’:
drivers/net/wireless/ipw2x00/ipw2200.c:3260: warning: the frame size of
1168 bytes is larger than 1024 bytes

Signed-off-by: default avatarZhu Yi <yi.zhu@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 5f13bfac
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -3177,14 +3177,27 @@ static int ipw_load_firmware(struct ipw_priv *priv, u8 * data, size_t len)
	int total_nr = 0;
	int i;
	struct pci_pool *pool;
	u32 *virts[CB_NUMBER_OF_ELEMENTS_SMALL];
	dma_addr_t phys[CB_NUMBER_OF_ELEMENTS_SMALL];
	void **virts;
	dma_addr_t *phys;

	IPW_DEBUG_TRACE("<< : \n");

	virts = kmalloc(sizeof(void *) * CB_NUMBER_OF_ELEMENTS_SMALL,
			GFP_KERNEL);
	if (!virts)
		return -ENOMEM;

	phys = kmalloc(sizeof(dma_addr_t) * CB_NUMBER_OF_ELEMENTS_SMALL,
			GFP_KERNEL);
	if (!phys) {
		kfree(virts);
		return -ENOMEM;
	}
	pool = pci_pool_create("ipw2200", priv->pci_dev, CB_MAX_LENGTH, 0, 0);
	if (!pool) {
		IPW_ERROR("pci_pool_create failed\n");
		kfree(phys);
		kfree(virts);
		return -ENOMEM;
	}

@@ -3254,6 +3267,8 @@ static int ipw_load_firmware(struct ipw_priv *priv, u8 * data, size_t len)
		pci_pool_free(pool, virts[i], phys[i]);

	pci_pool_destroy(pool);
	kfree(phys);
	kfree(virts);

	return ret;
}