vhost/vhost_scsi: Fix coredump issue for non-scsi device.

Remove assert and add exit codes instead. That in non-debug mode, these
could lead coredump. We don't want the vhost target be crashed after
recieved  invalid commands.

fixes issue: #1575

Signed-off-by: yidong0635 <dongx.yi@intel.com>
Change-Id: Ifef6d8f9c32150213bc2c80787e92d428d4c49c3
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3951
Community-CI: Mellanox Build Bot
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: JinYu <jin.yu@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
yidong0635 2020-08-27 13:22:09 -04:00 committed by Tomasz Zawadzki
parent 83d830e745
commit b2c86b35db

View File

@ -993,7 +993,11 @@ spdk_vhost_scsi_dev_add_tgt(struct spdk_vhost_dev *vdev, int scsi_tgt_num,
const char *bdev_names_list[1];
svdev = to_scsi_dev(vdev);
assert(svdev != NULL);
if (!svdev) {
SPDK_ERRLOG("Before adding a SCSI target, there should be a SCSI device.");
return -EINVAL;
}
if (scsi_tgt_num < 0) {
for (scsi_tgt_num = 0; scsi_tgt_num < SPDK_VHOST_SCSI_CTRLR_MAX_DEVS; scsi_tgt_num++) {
if (svdev->scsi_dev_state[scsi_tgt_num].dev == NULL) {
@ -1118,7 +1122,11 @@ spdk_vhost_scsi_dev_remove_tgt(struct spdk_vhost_dev *vdev, unsigned scsi_tgt_nu
}
svdev = to_scsi_dev(vdev);
assert(svdev != NULL);
if (!svdev) {
SPDK_ERRLOG("An invalid SCSI device that removing from a SCSI target.");
return -EINVAL;
}
scsi_dev_state = &svdev->scsi_dev_state[scsi_tgt_num];
if (scsi_dev_state->status != VHOST_SCSI_DEV_PRESENT) {