DM: xHCI: Check trb pointer before use it

The trb pointer may be NULL when get the address from user space, add
the pointer check before use the trb.

Tracked-On: #6172
Signed-off-by: Liu Long <long.liu@intel.com>
Reviewed-by: Shuo A Liu <shuo.a.liu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
This commit is contained in:
Yonghua Huang 2021-07-14 10:19:25 +08:00 committed by wenlingz
parent 7caf896cb8
commit 4da04e3f04

View File

@ -2626,6 +2626,10 @@ pci_xhci_complete_commands(struct pci_xhci_vdev *xdev)
trb = xdev->opregs.cr_p; trb = xdev->opregs.cr_p;
ccs = xdev->opregs.crcr & XHCI_CRCR_LO_RCS; ccs = xdev->opregs.crcr & XHCI_CRCR_LO_RCS;
crcr = xdev->opregs.crcr & ~0xF; crcr = xdev->opregs.crcr & ~0xF;
if (!trb) {
UPRINTF(LDBG, "Get the invalid guest address!\r\n");
goto out;
}
while (1) { while (1) {
xdev->opregs.cr_p = trb; xdev->opregs.cr_p = trb;
@ -2757,6 +2761,7 @@ pci_xhci_complete_commands(struct pci_xhci_vdev *xdev)
} }
} }
out:
xdev->opregs.crcr = crcr | (xdev->opregs.crcr & XHCI_CRCR_LO_CA) | ccs; xdev->opregs.crcr = crcr | (xdev->opregs.crcr & XHCI_CRCR_LO_CA) | ccs;
xdev->opregs.crcr &= ~XHCI_CRCR_LO_CRR; xdev->opregs.crcr &= ~XHCI_CRCR_LO_CRR;
return error; return error;