diff options
Diffstat (limited to 'drivers/md/persistent-data/dm-transaction-manager.c')
| -rw-r--r-- | drivers/md/persistent-data/dm-transaction-manager.c | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/md/persistent-data/dm-transaction-manager.c b/drivers/md/persistent-data/dm-transaction-manager.c index 400fe144c0c..e5604b32d91 100644 --- a/drivers/md/persistent-data/dm-transaction-manager.c +++ b/drivers/md/persistent-data/dm-transaction-manager.c @@ -138,6 +138,9 @@ EXPORT_SYMBOL_GPL(dm_tm_create_non_blocking_clone);  void dm_tm_destroy(struct dm_transaction_manager *tm)  { +	if (!tm->is_clone) +		wipe_shadow_table(tm); +  	kfree(tm);  }  EXPORT_SYMBOL_GPL(dm_tm_destroy); @@ -344,8 +347,10 @@ static int dm_tm_create_internal(struct dm_block_manager *bm,  		}  		*sm = dm_sm_checker_create(inner); -		if (!*sm) +		if (IS_ERR(*sm)) { +			r = PTR_ERR(*sm);  			goto bad2; +		}  	} else {  		r = dm_bm_write_lock(dm_tm_get_bm(*tm), sb_location, @@ -364,8 +369,10 @@ static int dm_tm_create_internal(struct dm_block_manager *bm,  		}  		*sm = dm_sm_checker_create(inner); -		if (!*sm) +		if (IS_ERR(*sm)) { +			r = PTR_ERR(*sm);  			goto bad2; +		}  	}  	return 0;  |