summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Goodbody <[email protected]>2025-07-31 12:11:47 +0100
committerTom Rini <[email protected]>2025-10-28 10:32:59 -0600
commit6e382d8fc5ee6876ade500222cb0ade9cdc597ed (patch)
treebc235402fb86b509fd4a474585b67aa6019d8f02
parente8fd262fb3e2c2516610fac6389764e0dbfd98d7 (diff)
mmc: owl_mmc: Do not dereference data before NULL check
In owl_mmc_prepare_data there is a NULL check for the pointer data but it happens after data has already been dereferenced. Refactor the code so that the NULL check happens before any code dereferences data. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
-rw-r--r--drivers/mmc/owl_mmc.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/mmc/owl_mmc.c b/drivers/mmc/owl_mmc.c
index bd4906f58e7..c18807b1f49 100644
--- a/drivers/mmc/owl_mmc.c
+++ b/drivers/mmc/owl_mmc.c
@@ -135,19 +135,19 @@ static void owl_mmc_prepare_data(struct owl_mmc_priv *priv,
setbits_le32(priv->reg_base + OWL_REG_SD_EN, OWL_SD_EN_BSEL);
- writel(data->blocks, priv->reg_base + OWL_REG_SD_BLK_NUM);
- writel(data->blocksize, priv->reg_base + OWL_REG_SD_BLK_SIZE);
- total = data->blocksize * data->blocks;
-
- if (total < 512)
- writel(total, priv->reg_base + OWL_REG_SD_BUF_SIZE);
- else
- writel(512, priv->reg_base + OWL_REG_SD_BUF_SIZE);
-
/* DMA STOP */
writel(0x0, SD_DMA_CHANNEL(priv->dma_channel, 0) + DMA_START);
if (data) {
+ writel(data->blocks, priv->reg_base + OWL_REG_SD_BLK_NUM);
+ writel(data->blocksize, priv->reg_base + OWL_REG_SD_BLK_SIZE);
+ total = data->blocksize * data->blocks;
+
+ if (total < 512)
+ writel(total, priv->reg_base + OWL_REG_SD_BUF_SIZE);
+ else
+ writel(512, priv->reg_base + OWL_REG_SD_BUF_SIZE);
+
if (data->flags == MMC_DATA_READ) {
buf = (ulong) (data->dest);
owl_dma_config(priv, (ulong) priv->reg_base +