diff options
author | Alexey Khoroshilov <khoroshilov@ispras.ru> | 2014-07-10 22:43:01 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-07-11 20:34:48 (GMT) |
commit | 19eeb2f9e750f47c805f66e3b0e889b12557d80f (patch) | |
tree | 5b571dc3639692a8476fedbda56388f7bf699b1b /fs/attr.c | |
parent | f6864c6f3513ab44d4472a7a28b902468675d7a7 (diff) | |
download | linux-19eeb2f9e750f47c805f66e3b0e889b12557d80f.tar.xz |
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>
Diffstat (limited to 'fs/attr.c')
0 files changed, 0 insertions, 0 deletions