blob: fix a wrong memset parameter

A wrong parameter is passed to memset when loading blob->active.clusters,
this leads to an unpredictable wrong lba value using thin provision LVOLs
while submitting IO requests, thus causes EIO error using QEMU vms.

Signed-off-by: Sochin Jiang <jiangxiaoqing.sochin@bytedance.com>
Change-Id: Iecea80cfa58f7a025603430d666fd9cd4d3fea8b
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2431
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Xiaodong Liu <xiaodong.liu@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Sochin Jiang 2020-05-14 21:28:06 +08:00 committed by Tomasz Zawadzki
parent 8d69fd9139
commit e230d49ae2

View File

@ -1381,7 +1381,7 @@ _spdk_blob_load_cpl_extents_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserr
_spdk_blob_load_final(ctx, -ENOMEM);
return;
}
memset(tmp + blob->active.cluster_array_size, 0,
memset(tmp + sizeof(*blob->active.clusters) * blob->active.cluster_array_size, 0,
sizeof(*blob->active.clusters) * (blob->active.num_clusters - blob->active.cluster_array_size));
blob->active.clusters = tmp;
blob->active.cluster_array_size = blob->active.num_clusters;