10f32b9f19
There is situation that num_extent_pages is zero and original pointer is also NULL, the realloc() could return a Not NULL pointer. Related UT has been added and updated. 1) In the default allocation (num_clusters == 0), the extent_pages is not allocated as expected. 2) In the thin provisioning allocation (num_clusters != 0), the extent_pages will be allocated if extent_table is used. More related information as below: The crux of the problem is that according to POSIX: realloc: "If ptr is NULL, then the call is equivalent to malloc(size)" malloc: "If size is 0, then malloc returns either NULL or a unique pointer value that can later be successfully passed to free" blobstore was relying on realloc(NULL, 0) always return a unique pointer value, and not NULL. This is not portable behavior. Change-Id: Ibc28d9696f15a3c0e2aa6bb2371dc23576c28954 Signed-off-by: GangCao <gang.cao@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10470 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> |
||
---|---|---|
.. | ||
accel | ||
bdev | ||
blob | ||
blobfs | ||
conf | ||
dma | ||
env_dpdk | ||
env_ocf | ||
event | ||
ftl | ||
idxd | ||
init | ||
ioat | ||
iscsi | ||
json | ||
jsonrpc | ||
log | ||
lvol | ||
nbd | ||
notify | ||
nvme | ||
nvmf | ||
rdma | ||
reduce | ||
rocksdb | ||
rpc | ||
scsi | ||
sock | ||
thread | ||
trace | ||
trace_parser | ||
ut_mock | ||
util | ||
vfio_user | ||
vhost | ||
virtio | ||
vmd | ||
Makefile |