Commit 77fd4f2c authored by Sreekanth Reddy's avatar Sreekanth Reddy Committed by Martin K. Petersen

scsi: mpt3sas: Reject NVMe Encap cmnds to unsupported HBA

If any faulty application issues an NVMe Encapsulated commands to HBA which
doesn't support NVMe protocol then driver should return the command as
invalid with the following message.

"HBA doesn't support NVMe. Rejecting NVMe Encapsulated request."

Otherwise below page fault kernel panic will be observed while building the
PRPs as there is no PRP pools allocated for the HBA which doesn't support
NVMe drives.

RIP: 0010:_base_build_nvme_prp+0x3b/0xf0 [mpt3sas]
Call Trace:
 _ctl_do_mpt_command+0x931/0x1120 [mpt3sas]
 _ctl_ioctl_main.isra.11+0xa28/0x11e0 [mpt3sas]
 ? prepare_to_wait+0xb0/0xb0
 ? tty_ldisc_deref+0x16/0x20
 _ctl_ioctl+0x1a/0x20 [mpt3sas]
 do_vfs_ioctl+0xaa/0x620
 ? vfs_read+0x117/0x140
 ksys_ioctl+0x67/0x90
 __x64_sys_ioctl+0x1a/0x20
 do_syscall_64+0x60/0x190
 entry_SYSCALL_64_after_hwframe+0x44/0xa9

[mkp: tweaked error string]

Link: https://lore.kernel.org/r/1568379890-18347-12-git-send-email-sreekanth.reddy@broadcom.comSigned-off-by: default avatarSreekanth Reddy <sreekanth.reddy@broadcom.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent b06ff102
...@@ -785,6 +785,18 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg, ...@@ -785,6 +785,18 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
case MPI2_FUNCTION_NVME_ENCAPSULATED: case MPI2_FUNCTION_NVME_ENCAPSULATED:
{ {
nvme_encap_request = (Mpi26NVMeEncapsulatedRequest_t *)request; nvme_encap_request = (Mpi26NVMeEncapsulatedRequest_t *)request;
if (!ioc->pcie_sg_lookup) {
dtmprintk(ioc, ioc_info(ioc,
"HBA doesn't support NVMe. Rejecting NVMe Encapsulated request.\n"
));
if (ioc->logging_level & MPT_DEBUG_TM)
_debug_dump_mf(nvme_encap_request,
ioc->request_sz/4);
mpt3sas_base_free_smid(ioc, smid);
ret = -EINVAL;
goto out;
}
/* /*
* Get the Physical Address of the sense buffer. * Get the Physical Address of the sense buffer.
* Use Error Response buffer address field to hold the sense * Use Error Response buffer address field to hold the sense
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment