mirror of https://gitee.com/openkylin/linux.git
soc: qcom: smem: byte swap values properly
Two places report an error when a partition header is found to not contain the right canary value. The error messages do not properly byte swap the host ids. Fix this, and adjust the format specificier to match the 16-bit unsigned data type. Move the error handling for a bad canary value to the end of qcom_smem_alloc_private(). This avoids some long lines, and reduces the distraction of handling this unexpected problem. Signed-off-by: Alex Elder <elder@linaro.org> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Andy Gross <andy.gross@linaro.org>
This commit is contained in:
parent
e221a1da97
commit
04a512fea3
|
@ -365,13 +365,8 @@ static int qcom_smem_alloc_private(struct qcom_smem *smem,
|
|||
cached = phdr_to_last_cached_entry(phdr);
|
||||
|
||||
while (hdr < end) {
|
||||
if (hdr->canary != SMEM_PRIVATE_CANARY) {
|
||||
dev_err(smem->dev,
|
||||
"Found invalid canary in hosts %d:%d partition\n",
|
||||
phdr->host0, phdr->host1);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (hdr->canary != SMEM_PRIVATE_CANARY)
|
||||
goto bad_canary;
|
||||
if (le16_to_cpu(hdr->item) == item)
|
||||
return -EEXIST;
|
||||
|
||||
|
@ -400,6 +395,11 @@ static int qcom_smem_alloc_private(struct qcom_smem *smem,
|
|||
le32_add_cpu(&phdr->offset_free_uncached, alloc_size);
|
||||
|
||||
return 0;
|
||||
bad_canary:
|
||||
dev_err(smem->dev, "Found invalid canary in hosts %hu:%hu partition\n",
|
||||
le16_to_cpu(phdr->host0), le16_to_cpu(phdr->host1));
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int qcom_smem_alloc_global(struct qcom_smem *smem,
|
||||
|
@ -563,8 +563,8 @@ static void *qcom_smem_get_private(struct qcom_smem *smem,
|
|||
return ERR_PTR(-ENOENT);
|
||||
|
||||
invalid_canary:
|
||||
dev_err(smem->dev, "Found invalid canary in hosts %d:%d partition\n",
|
||||
phdr->host0, phdr->host1);
|
||||
dev_err(smem->dev, "Found invalid canary in hosts %hu:%hu partition\n",
|
||||
le16_to_cpu(phdr->host0), le16_to_cpu(phdr->host1));
|
||||
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue