| From 56ec16cb1e1ce46354de8511eef962a417c32c92 Mon Sep 17 00:00:00 2001 |
| From: Alexey Khoroshilov <khoroshilov@ispras.ru> |
| Date: Wed, 1 Oct 2014 22:58:35 +0200 |
| Subject: dm log userspace: fix memory leak in dm_ulog_tfr_init failure path |
| |
| From: Alexey Khoroshilov <khoroshilov@ispras.ru> |
| |
| commit 56ec16cb1e1ce46354de8511eef962a417c32c92 upstream. |
| |
| If cn_add_callback() fails in dm_ulog_tfr_init(), it does not |
| deallocate prealloced memory but calls cn_del_callback(). |
| |
| Found by Linux Driver Verification project (linuxtesting.org). |
| |
| Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> |
| Reviewed-by: Jonathan Brassow <jbrassow@redhat.com> |
| Signed-off-by: Mike Snitzer <snitzer@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/md/dm-log-userspace-transfer.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/md/dm-log-userspace-transfer.c |
| +++ b/drivers/md/dm-log-userspace-transfer.c |
| @@ -272,7 +272,7 @@ int dm_ulog_tfr_init(void) |
| |
| r = cn_add_callback(&ulog_cn_id, "dmlogusr", cn_ulog_callback); |
| if (r) { |
| - cn_del_callback(&ulog_cn_id); |
| + kfree(prealloced_cn_msg); |
| return r; |
| } |
| |