Commit 07f43264 authored by Chunyang Hui's avatar Chunyang Hui Committed by Changpeng Liu
Browse files

opal: Fix memory leakage



Change-Id: I37f1468a41d568f7313143f0270f854f73bc4000
Signed-off-by: default avatarChunyang Hui <chunyang.hui@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/461560


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avataryidong0635 <dongx.yi@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent defe09d3
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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");
+5 −0
Original line number Diff line number Diff line
@@ -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);
}