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

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
...@@ -921,9 +921,9 @@ he_init_group(struct he_dev *he_dev, int group) ...@@ -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) ...@@ -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:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment