scsi: add additional check for initiator port
Vhost-scsi target will not set task's initiator port parameter, so reservation commands sent from Guest will cause segment fault. Change-Id: Ifc175effded5371eca08d5bfe7e4aa977dd4b1c6 Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/457550 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
This commit is contained in:
parent
8cdb3d330e
commit
14f6d724ac
@ -99,14 +99,18 @@ spdk_scsi_pr_register_registrant(struct spdk_scsi_lun *lun,
|
|||||||
|
|
||||||
/* New I_T nexus */
|
/* New I_T nexus */
|
||||||
reg->initiator_port = initiator_port;
|
reg->initiator_port = initiator_port;
|
||||||
snprintf(reg->initiator_port_name, sizeof(reg->initiator_port_name), "%s",
|
if (initiator_port) {
|
||||||
initiator_port->name);
|
snprintf(reg->initiator_port_name, sizeof(reg->initiator_port_name), "%s",
|
||||||
reg->transport_id_len = initiator_port->transport_id_len;
|
initiator_port->name);
|
||||||
memcpy(reg->transport_id, initiator_port->transport_id, reg->transport_id_len);
|
reg->transport_id_len = initiator_port->transport_id_len;
|
||||||
|
memcpy(reg->transport_id, initiator_port->transport_id, reg->transport_id_len);
|
||||||
|
}
|
||||||
reg->target_port = target_port;
|
reg->target_port = target_port;
|
||||||
snprintf(reg->target_port_name, sizeof(reg->target_port_name), "%s",
|
if (target_port) {
|
||||||
target_port->name);
|
snprintf(reg->target_port_name, sizeof(reg->target_port_name), "%s",
|
||||||
reg->relative_target_port_id = target_port->index;
|
target_port->name);
|
||||||
|
reg->relative_target_port_id = target_port->index;
|
||||||
|
}
|
||||||
reg->rkey = sa_rkey;
|
reg->rkey = sa_rkey;
|
||||||
TAILQ_INSERT_TAIL(&lun->reg_head, reg, link);
|
TAILQ_INSERT_TAIL(&lun->reg_head, reg, link);
|
||||||
lun->pr_generation++;
|
lun->pr_generation++;
|
||||||
|
Loading…
Reference in New Issue
Block a user