4cd97383cc
The unit test test_nvme_cuse_stop() manually creates 2 cuse devices and executes nvme_cuse_stop(). Problem is that the Fuse session is never initialized for those 2 cuse devices, causing cuse_nvme_ns_stop() to access 'ns_device->session', which is a NULL pointer. This bug is detected by ASAN as follows: ==77298==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000180 (pc 0x7fdac6d7d40e bp 0x000000000000 sp 0x7fff74768320 T0) ==77298==The signal is caused by a READ memory access. ==77298==Hint: address points to the zero page. 0 0x7fdac6d7d40e in fuse_session_destroy (/usr/lib64/libfuse3.so.3+0x1640e) 1 0x40dc7a in cuse_nvme_ns_stop /home/vagrant/spdk_repo/spdk/lib/nvme/nvme_cuse.c:851 2 0x40df59 in cuse_nvme_ctrlr_stop /home/vagrant/spdk_repo/spdk/lib/nvme/nvme_cuse.c:923 3 0x40f103 in nvme_cuse_stop /home/vagrant/spdk_repo/spdk/lib/nvme/nvme_cuse.c:1094 4 0x415803 in test_nvme_cuse_stop /home/vagrant/spdk_repo/spdk/test/unit/lib/nvme/nvme_cuse.c/nvme_cuse_ut.c:393 5 0x7fdac724c1a6 (/usr/lib64/libcunit.so.1+0x41a6) 6 0x7fdac724c528 (/usr/lib64/libcunit.so.1+0x4528) 7 0x7fdac724d456 in CU_run_all_tests (/usr/lib64/libcunit.so.1+0x5456) 8 0x415a4e in main /home/vagrant/spdk_repo/spdk/test/unit/lib/nvme/nvme_cuse.c/nvme_cuse_ut.c:415 9 0x7fdac62351e1 in __libc_start_main (/usr/lib64/libc.so.6+0x281e1) 10 0x403ddd in _start (/home/vagrant/spdk_repo/spdk/test/unit/lib/nvme/nvme_cuse.c/nvme_cuse_ut+0x403ddd) The fix is to call fuse_session_destroy() only if the fuse session is != NULL. Signed-off-by: Sylvain Didelot <sdidelot@ddn.com> Change-Id: I41881243227d83e8d1e6b90e72c1b6d62ccd98d3 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10225 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Ben Walker <benjamin.walker@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 |