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

Commit 1b66c1ef authored by Juha Leppanen's avatar Juha Leppanen Committed by David S. Miller
Browse files

atm: dereference of he_dev->rbps_virt in he_init_group()



The prefix decrement causes a very long loop if pci_pool_alloc() failed
in the first iteration. Also I swapped rbps and rbpl arguments.

Reported-by: default avatarJuha Leppanen <juha_motorsportcom@luukku.com>
Signed-off-by: default avatarRoel Kluin <roel.kluin@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2f72291d
Loading
Loading
Loading
Loading
+7 −7
Original line number Original line Diff line number Diff line
@@ -921,9 +921,9 @@ he_init_group(struct he_dev *he_dev, int group)
			he_dev->rbrq_phys);
			he_dev->rbrq_phys);
	i = CONFIG_RBPL_SIZE;
	i = CONFIG_RBPL_SIZE;
out_free_rbpl_virt:
out_free_rbpl_virt:
	while (--i)
	while (i--)
		pci_pool_free(he_dev->rbps_pool, he_dev->rbpl_virt[i].virt,
		pci_pool_free(he_dev->rbpl_pool, he_dev->rbpl_virt[i].virt,
				he_dev->rbps_base[i].phys);
				he_dev->rbpl_base[i].phys);
	kfree(he_dev->rbpl_virt);
	kfree(he_dev->rbpl_virt);


out_free_rbpl_base:
out_free_rbpl_base:
@@ -933,11 +933,11 @@ he_init_group(struct he_dev *he_dev, int group)
out_destroy_rbpl_pool:
out_destroy_rbpl_pool:
	pci_pool_destroy(he_dev->rbpl_pool);
	pci_pool_destroy(he_dev->rbpl_pool);


	i = CONFIG_RBPL_SIZE;
	i = CONFIG_RBPS_SIZE;
out_free_rbps_virt:
out_free_rbps_virt:
	while (--i)
	while (i--)
		pci_pool_free(he_dev->rbpl_pool, he_dev->rbps_virt[i].virt,
		pci_pool_free(he_dev->rbps_pool, he_dev->rbps_virt[i].virt,
				he_dev->rbpl_base[i].phys);
				he_dev->rbps_base[i].phys);
	kfree(he_dev->rbps_virt);
	kfree(he_dev->rbps_virt);


out_free_rbps_base:
out_free_rbps_base: