From 78ba12ecf4a37783f829ce2a674c45b6ba3099fb Mon Sep 17 00:00:00 2001 From: Wang Shilong Date: Thu, 20 Aug 2020 15:06:29 +0800 Subject: [PATCH] module/blobfs: fix segmentation fault when fuse mount fail if mountpoint doesn't exist, fuse mount will fail and @bfuse will be null, blobfs_fuse_stop() try to access it without check which cause segmentation finally. Patch also improve test messages output to include terminator properly. Signed-off-by: Wang Shilong Change-Id: Idba23e3922778f1985d1f4841a1701cdc272ef17 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3863 Community-CI: Mellanox Build Bot Reviewed-by: Xiaodong Liu Reviewed-by: Changpeng Liu Reviewed-by: Shuhei Matsumoto Tested-by: SPDK CI Jenkins --- module/blobfs/bdev/blobfs_fuse.c | 6 ++++-- test/blobfs/fuse/fuse.c | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/module/blobfs/bdev/blobfs_fuse.c b/module/blobfs/bdev/blobfs_fuse.c index df6d61e04..16665498a 100644 --- a/module/blobfs/bdev/blobfs_fuse.c +++ b/module/blobfs/bdev/blobfs_fuse.c @@ -353,6 +353,8 @@ err: void blobfs_fuse_stop(struct spdk_blobfs_fuse *bfuse) { - fuse_session_exit(fuse_get_session(bfuse->fuse_handle)); - pthread_kill(bfuse->fuse_tid, SIGINT); + if (bfuse) { + fuse_session_exit(fuse_get_session(bfuse->fuse_handle)); + pthread_kill(bfuse->fuse_tid, SIGINT); + } } diff --git a/test/blobfs/fuse/fuse.c b/test/blobfs/fuse/fuse.c index e434fb505..2c1f7da68 100644 --- a/test/blobfs/fuse/fuse.c +++ b/test/blobfs/fuse/fuse.c @@ -56,7 +56,7 @@ static void fuse_run_cb(void *cb_arg, int fserrno) { if (fserrno) { - printf("Failed to mount filesystem on bdev %s to path %s: %s", + printf("Failed to mount filesystem on bdev %s to path %s: %s\n", g_bdev_name, g_mountpoint, spdk_strerror(fserrno)); spdk_app_stop(0); @@ -69,7 +69,7 @@ fuse_run_cb(void *cb_arg, int fserrno) static void spdk_fuse_run(void *arg1) { - printf("Mounting filesystem on bdev %s to path %s...", + printf("Mounting filesystem on bdev %s to path %s...\n", g_bdev_name, g_mountpoint); fflush(stdout);