drivers/mtd/lpddr/lpddr_cmds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
The value of an arithmetic expression
1 << lpddr->qinfo->DevSizeShift is subject to overflow
due to a failure to cast operands to a larger data
type before perfoming arithmetic
Signed-off-by: Denis Arefev <arefev@swemel.ru>
---
drivers/mtd/lpddr/lpddr_cmds.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mtd/lpddr/lpddr_cmds.c b/drivers/mtd/lpddr/lpddr_cmds.c
index ee063baed136..360b2af8340b 100644
--- a/drivers/mtd/lpddr/lpddr_cmds.c
+++ b/drivers/mtd/lpddr/lpddr_cmds.c
@@ -61,7 +61,7 @@ struct mtd_info *lpddr_cmdset(struct map_info *map)
mtd->_point = lpddr_point;
mtd->_unpoint = lpddr_unpoint;
}
- mtd->size = 1 << lpddr->qinfo->DevSizeShift;
+ mtd->size = 1UL << lpddr->qinfo->DevSizeShift;
mtd->erasesize = 1 << lpddr->qinfo->UniformBlockSizeShift;
mtd->writesize = 1 << lpddr->qinfo->BufSizeShift;
--
2.25.1
Hi Denis, arefev@swemel.ru wrote on Thu, 17 Nov 2022 15:36:25 +0300: > The value of an arithmetic expression > 1 << lpddr->qinfo->DevSizeShift is subject to overflow > due to a failure to cast operands to a larger data > type before perfoming arithmetic > > Signed-off-by: Denis Arefev <arefev@swemel.ru> > --- > drivers/mtd/lpddr/lpddr_cmds.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/mtd/lpddr/lpddr_cmds.c b/drivers/mtd/lpddr/lpddr_cmds.c > index ee063baed136..360b2af8340b 100644 > --- a/drivers/mtd/lpddr/lpddr_cmds.c > +++ b/drivers/mtd/lpddr/lpddr_cmds.c > @@ -61,7 +61,7 @@ struct mtd_info *lpddr_cmdset(struct map_info *map) > mtd->_point = lpddr_point; > mtd->_unpoint = lpddr_unpoint; > } > - mtd->size = 1 << lpddr->qinfo->DevSizeShift; > + mtd->size = 1UL << lpddr->qinfo->DevSizeShift; Are you sure it should not be 1ULL instead? otherwise I don't see how the overflow can happen? > mtd->erasesize = 1 << lpddr->qinfo->UniformBlockSizeShift; > mtd->writesize = 1 << lpddr->qinfo->BufSizeShift; > Thanks, Miquèl
© 2016 - 2026 Red Hat, Inc.