tpm: Fix NULL return in tpm_ibmvtpm_get_desired_dma
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / char / tpm / tpm_ibmvtpm.c
index 56b07c35a13e173bf1cc5d10321d30d5a11f259e..010d814dd9f56b29e7c3bf0f3e2e89f40fe10ccd 100644 (file)
@@ -307,6 +307,14 @@ static int tpm_ibmvtpm_remove(struct vio_dev *vdev)
 static unsigned long tpm_ibmvtpm_get_desired_dma(struct vio_dev *vdev)
 {
        struct ibmvtpm_dev *ibmvtpm = ibmvtpm_get_data(&vdev->dev);
+
+       /* ibmvtpm initializes at probe time, so the data we are
+       * asking for may not be set yet. Estimate that 4K required
+       * for TCE-mapped buffer in addition to CRQ.
+       */
+       if (!ibmvtpm)
+               return CRQ_RES_BUF_SIZE + PAGE_SIZE;
+
        return CRQ_RES_BUF_SIZE + ibmvtpm->rtce_size;
 }