opal: Fix memory leakage
Change-Id: I37f1468a41d568f7313143f0270f854f73bc4000 Signed-off-by: Chunyang Hui <chunyang.hui@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/461560 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: yidong0635 <dongx.yi@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
defe09d3ef
commit
07f432641a
@ -1026,6 +1026,7 @@ opal_init(struct dev *iter)
|
||||
ret = spdk_opal_cmd_activate_locking_sp(iter->opal_dev, passwd_p);
|
||||
if (ret) {
|
||||
printf("Locking SP activate failure: %d\n", ret);
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
printf("...\nOpal Init Success\n");
|
||||
@ -1076,16 +1077,22 @@ opal_setup_lockingrange(struct dev *iter)
|
||||
printf("Specify locking range id:\n");
|
||||
if (!scanf("%d", &locking_range_id)) {
|
||||
printf("Invalid locking range id\n");
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
|
||||
printf("range length:\n");
|
||||
if (!scanf("%" SCNu64, &range_length)) {
|
||||
printf("Invalid range length\n");
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
|
||||
printf("range start:\n");
|
||||
if (!scanf("%" SCNu64, &range_start)) {
|
||||
printf("Invalid range start address\n");
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
while (getchar() != '\n');
|
||||
|
||||
@ -1093,6 +1100,7 @@ opal_setup_lockingrange(struct dev *iter)
|
||||
OPAL_ADMIN1, locking_range_id, range_start, range_length, passwd_p);
|
||||
if (ret) {
|
||||
printf("Setup locking range failure: %d\n", ret);
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1100,6 +1108,7 @@ opal_setup_lockingrange(struct dev *iter)
|
||||
passwd_p, OPAL_ADMIN1, locking_range_id);
|
||||
if (ret) {
|
||||
printf("Get locking range info failure: %d\n", ret);
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
info = spdk_opal_get_locking_range_info(iter->opal_dev, locking_range_id);
|
||||
@ -1149,6 +1158,7 @@ opal_list_locking_ranges(struct dev *iter)
|
||||
ret = spdk_opal_cmd_get_max_ranges(iter->opal_dev, passwd_p);
|
||||
if (ret) {
|
||||
printf("get max ranges failure: %d\n", ret);
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1158,6 +1168,7 @@ opal_list_locking_ranges(struct dev *iter)
|
||||
passwd_p, OPAL_ADMIN1, i);
|
||||
if (ret) {
|
||||
printf("Get locking range info failure: %d\n", ret);
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
info = spdk_opal_get_locking_range_info(iter->opal_dev, i);
|
||||
@ -1350,6 +1361,7 @@ opal_add_user_to_locking_range(struct dev *iter)
|
||||
passwd_p);
|
||||
if (ret) {
|
||||
printf("Add user to locking range error: %d\n", ret);
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1418,6 +1430,7 @@ opal_user_lock_unlock_range(struct dev *iter)
|
||||
break;
|
||||
default:
|
||||
printf("Invalid options\n");
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
while (getchar() != '\n');
|
||||
@ -1426,6 +1439,7 @@ opal_user_lock_unlock_range(struct dev *iter)
|
||||
locking_range_id, passwd_p);
|
||||
if (ret) {
|
||||
printf("lock/unlock range failure: %d\n", ret);
|
||||
spdk_opal_close(iter->opal_dev);
|
||||
return;
|
||||
}
|
||||
printf("...\n...\nLock/unlock range Success\n");
|
||||
|
@ -952,6 +952,11 @@ void
|
||||
spdk_opal_close(struct spdk_opal_dev *dev)
|
||||
{
|
||||
pthread_mutex_destroy(&dev->mutex_lock);
|
||||
if (dev->max_ranges > 0) {
|
||||
for (int i = 0; i < dev->max_ranges; i++) {
|
||||
free(dev->locking_range_info[i]);
|
||||
}
|
||||
}
|
||||
free(dev->opal_info);
|
||||
free(dev);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user