Commit 5f42a717 authored by Chunyang Hui's avatar Chunyang Hui Committed by Jim Harris
Browse files

opal: Fix get locking range info memory leak



Previously, get locking range info will allocate
memory everytime. Thus calling this function multiple
times will cause memory leak.

Now, we allocate only if it is NULL. If it is not,
then we just memset to zero.

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


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent ac494980
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -1612,14 +1612,19 @@ opal_get_locking_range_info(struct spdk_opal_dev *dev,
		return err;
	}

	if (dev->locking_range_info[locking_range_id] == NULL) {
		info = calloc(1, sizeof(struct spdk_opal_locking_range_info));
		if (info == NULL) {
			SPDK_ERRLOG("Memory allocation failed for spdk_opal_locking_range_info\n");
			return -ENOMEM;
		}

		info->locking_range_id = locking_range_id;
		dev->locking_range_info[locking_range_id] = info;
	} else {
		info = dev->locking_range_info[locking_range_id];
		memset(info, 0, sizeof(*info));
		info->locking_range_id = locking_range_id;
	}

	opal_clear_cmd(dev);
	opal_set_comid(dev, dev->comid);