linux-uconsole/drivers/md/persistent-data
Benjamin Marzinski 701ec6e5ce dm space map metadata: fix 'struct sm_metadata' leak on failed create
commit 314c25c56c upstream.

In dm_sm_metadata_create() we temporarily change the dm_space_map
operations from 'ops' (whose .destroy function deallocates the
sm_metadata) to 'bootstrap_ops' (whose .destroy function doesn't).

If dm_sm_metadata_create() fails in sm_ll_new_metadata() or
sm_ll_extend(), it exits back to dm_tm_create_internal(), which calls
dm_sm_destroy() with the intention of freeing the sm_metadata, but it
doesn't (because the dm_space_map operations is still set to
'bootstrap_ops').

Fix this by setting the dm_space_map operations back to 'ops' if
dm_sm_metadata_create() fails when it is set to 'bootstrap_ops'.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Acked-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-01-06 11:16:15 +01:00
..
dm-array.c dm persistent data: eliminate unnecessary return values 2015-10-31 19:06:02 -04:00
dm-array.h dm persistent data: add transactional array 2013-03-01 22:45:51 +00:00
dm-bitset.c dm bitset: only flush the current word if it has been dirtied 2014-03-27 16:56:23 -04:00
dm-bitset.h dm bitset: only flush the current word if it has been dirtied 2014-03-27 16:56:23 -04:00
dm-block-manager.c dm persistent data: eliminate unnecessary return values 2015-10-31 19:06:02 -04:00
dm-block-manager.h dm persistent data: eliminate unnecessary return values 2015-10-31 19:06:02 -04:00
dm-btree-internal.h dm persistent data: eliminate unnecessary return values 2015-10-31 19:06:02 -04:00
dm-btree-remove.c - Revert a dm-multipath change that caused a regression for unprivledged 2015-11-04 21:19:53 -08:00
dm-btree-spine.c dm persistent data: eliminate unnecessary return values 2015-10-31 19:06:02 -04:00
dm-btree.c dm btree: fix bufio buffer leaks in dm_btree_del() error path 2015-12-10 10:30:18 -05:00
dm-btree.h dm thin metadata: fix bug in dm_thin_remove_range() 2015-12-02 13:26:49 -05:00
dm-persistent-data-internal.h
dm-space-map-common.c dm persistent data: eliminate unnecessary return values 2015-10-31 19:06:02 -04:00
dm-space-map-common.h dm persistent data: only commit space map if index changed 2012-07-27 15:08:06 +01:00
dm-space-map-disk.c dm space map disk: fix sm_disk_count_is_more_than_one() 2015-02-13 19:32:58 -05:00
dm-space-map-disk.h
dm-space-map-metadata.c dm space map metadata: fix 'struct sm_metadata' leak on failed create 2017-01-06 11:16:15 +01:00
dm-space-map-metadata.h dm thin: allow metadata space larger than supported to go unused 2014-02-27 11:49:08 -05:00
dm-space-map.h dm persistent data: add threshold callback to space map 2013-05-10 14:37:20 +01:00
dm-transaction-manager.c dm persistent data: eliminate unnecessary return values 2015-10-31 19:06:02 -04:00
dm-transaction-manager.h dm persistent data: eliminate unnecessary return values 2015-10-31 19:06:02 -04:00
Kconfig kconfig: use bool instead of boolean for type definition attributes 2015-01-07 13:08:04 +01:00
Makefile dm persistent data: add bitset 2013-03-01 22:45:51 +00:00