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: Juha Leppanen <juha_motorsportcom@luukku.com> Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
2f72291d3d
Коммит
1b66c1ef2f
|
@ -921,9 +921,9 @@ out_free_rbpq_base:
|
|||
he_dev->rbrq_phys);
|
||||
i = CONFIG_RBPL_SIZE;
|
||||
out_free_rbpl_virt:
|
||||
while (--i)
|
||||
pci_pool_free(he_dev->rbps_pool, he_dev->rbpl_virt[i].virt,
|
||||
he_dev->rbps_base[i].phys);
|
||||
while (i--)
|
||||
pci_pool_free(he_dev->rbpl_pool, he_dev->rbpl_virt[i].virt,
|
||||
he_dev->rbpl_base[i].phys);
|
||||
kfree(he_dev->rbpl_virt);
|
||||
|
||||
out_free_rbpl_base:
|
||||
|
@ -933,11 +933,11 @@ out_free_rbpl_base:
|
|||
out_destroy_rbpl_pool:
|
||||
pci_pool_destroy(he_dev->rbpl_pool);
|
||||
|
||||
i = CONFIG_RBPL_SIZE;
|
||||
i = CONFIG_RBPS_SIZE;
|
||||
out_free_rbps_virt:
|
||||
while (--i)
|
||||
pci_pool_free(he_dev->rbpl_pool, he_dev->rbps_virt[i].virt,
|
||||
he_dev->rbpl_base[i].phys);
|
||||
while (i--)
|
||||
pci_pool_free(he_dev->rbps_pool, he_dev->rbps_virt[i].virt,
|
||||
he_dev->rbps_base[i].phys);
|
||||
kfree(he_dev->rbps_virt);
|
||||
|
||||
out_free_rbps_base:
|
||||
|
|
Загрузка…
Ссылка в новой задаче