]> git.baikalelectronics.ru Git - kernel.git/commit
farsync: fix invalid memory accesses in fst_add_one() and fst_init_card()
authorAlexey Khoroshilov <khoroshilov@ispras.ru>
Thu, 10 Jul 2014 22:43:01 +0000 (18:43 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 11 Jul 2014 20:34:48 +0000 (13:34 -0700)
commit76fa1c07e62d372972f6f7627004f4efc852366f
tree5b571dc3639692a8476fedbda56388f7bf699b1b
parent2a0bdd59807225735929568ea09fc3c50f5b9938
farsync: fix invalid memory accesses in fst_add_one() and fst_init_card()

There are several issues in fst_add_one() and fst_init_card():
- invalid pointer dereference at card->ports[card->nports - 1] if
  register_hdlc_device() fails for the first port in fst_init_card();
- fst_card_array overflow at fst_card_array[no_of_cards_added]
  because there is no checks for array overflow;
- use after free because pointer to deallocated card is left in fst_card_array
  if something fails after fst_card_array[no_of_cards_added] = card;
- several leaks on failure paths in fst_add_one().

The patch fixes all the issues and makes code more readable.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/wan/farsync.c