diff options
Diffstat (limited to 'drivers/md/dm-ioctl.c')
| -rw-r--r-- | drivers/md/dm-ioctl.c | 16 | 
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c index 777c948180f..54d0588fc1f 100644 --- a/drivers/md/dm-ioctl.c +++ b/drivers/md/dm-ioctl.c @@ -233,7 +233,7 @@ static void __hash_remove(struct hash_cell *hc)  	}  	if (hc->new_map) -		dm_table_put(hc->new_map); +		dm_table_destroy(hc->new_map);  	dm_put(hc->md);  	free_cell(hc);  } @@ -827,8 +827,8 @@ static int do_resume(struct dm_ioctl *param)  		r = dm_swap_table(md, new_map);  		if (r) { +			dm_table_destroy(new_map);  			dm_put(md); -			dm_table_put(new_map);  			return r;  		} @@ -836,8 +836,6 @@ static int do_resume(struct dm_ioctl *param)  			set_disk_ro(dm_disk(md), 0);  		else  			set_disk_ro(dm_disk(md), 1); - -		dm_table_put(new_map);  	}  	if (dm_suspended(md)) @@ -1080,7 +1078,7 @@ static int table_load(struct dm_ioctl *param, size_t param_size)  	}  	if (hc->new_map) -		dm_table_put(hc->new_map); +		dm_table_destroy(hc->new_map);  	hc->new_map = t;  	up_write(&_hash_lock); @@ -1109,7 +1107,7 @@ static int table_clear(struct dm_ioctl *param, size_t param_size)  	}  	if (hc->new_map) { -		dm_table_put(hc->new_map); +		dm_table_destroy(hc->new_map);  		hc->new_map = NULL;  	} @@ -1550,8 +1548,10 @@ int dm_copy_name_and_uuid(struct mapped_device *md, char *name, char *uuid)  		goto out;  	} -	strcpy(name, hc->name); -	strcpy(uuid, hc->uuid ? : ""); +	if (name) +		strcpy(name, hc->name); +	if (uuid) +		strcpy(uuid, hc->uuid ? : "");  out:  	up_read(&_hash_lock);  | 
