| From: Vasily Averin <vvs@virtuozzo.com> |
| Date: Thu, 15 Nov 2018 13:15:05 +0300 |
| Subject: dlm: fixed memory leaks after failed ls_remove_names allocation |
| |
| commit b982896cdb6e6a6b89d86dfb39df489d9df51e14 upstream. |
| |
| If allocation fails on last elements of array need to free already |
| allocated elements. |
| |
| v2: just move existing out_rsbtbl label to right place |
| |
| Fixes 789924ba635f ("dlm: fix race between remove and lookup") |
| |
| Signed-off-by: Vasily Averin <vvs@virtuozzo.com> |
| Signed-off-by: David Teigland <teigland@redhat.com> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| fs/dlm/lockspace.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/fs/dlm/lockspace.c |
| +++ b/fs/dlm/lockspace.c |
| @@ -673,11 +673,11 @@ static int new_lockspace(const char *nam |
| kfree(ls->ls_recover_buf); |
| out_lkbidr: |
| idr_destroy(&ls->ls_lkbidr); |
| + out_rsbtbl: |
| for (i = 0; i < DLM_REMOVE_NAMES_MAX; i++) { |
| if (ls->ls_remove_names[i]) |
| kfree(ls->ls_remove_names[i]); |
| } |
| - out_rsbtbl: |
| vfree(ls->ls_rsbtbl); |
| out_lsfree: |
| if (do_unreg) |