From 2f3147c0b2a9c035f9acb021785e4b4a16f4754e Mon Sep 17 00:00:00 2001 From: JinYu Date: Wed, 27 Mar 2019 23:42:34 +0800 Subject: [PATCH] bdev: fix potential segmentation fault bug As the bdev_io maybe NULL, so put the assignment after assert(bdev_io != NULL). Change-Id: I58d6fcf97931b2f431ad5680b87b098e0c9a5e9b Signed-off-by: JinYu Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/449296 Tested-by: SPDK CI Jenkins Reviewed-by: Paul Luse Reviewed-by: Jim Harris Reviewed-by: Darek Stojaczyk --- lib/bdev/bdev.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 95eccba2b..659bdc5e4 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -1194,11 +1194,13 @@ spdk_bdev_get_io(struct spdk_bdev_channel *channel) void spdk_bdev_free_io(struct spdk_bdev_io *bdev_io) { - struct spdk_bdev_mgmt_channel *ch = bdev_io->internal.ch->shared_resource->mgmt_ch; + struct spdk_bdev_mgmt_channel *ch; assert(bdev_io != NULL); assert(bdev_io->internal.status != SPDK_BDEV_IO_STATUS_PENDING); + ch = bdev_io->internal.ch->shared_resource->mgmt_ch; + if (bdev_io->internal.buf != NULL) { spdk_bdev_io_put_buf(bdev_io); }