From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergei Shtylyov Date: Mon, 13 Sep 2010 12:52:49 +0400 Subject: [U-Boot] [PATCH 1/2] mmc: add boundary check for mmc operation In-Reply-To: <1284350762-32415-1-git-send-email-leiwen@marvell.com> References: <1284350762-32415-1-git-send-email-leiwen@marvell.com> Message-ID: <4C8DE661.8030802@mvista.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello. On 13-09-2010 8:06, Lei Wen wrote: > Signed-off-by: Lei Wen > --- > drivers/mmc/mmc.c | 10 ++++++++++ > 1 files changed, 10 insertions(+), 0 deletions(-) > diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c > index cf4ea16..5ff1c54 100644 > --- a/drivers/mmc/mmc.c > +++ b/drivers/mmc/mmc.c > @@ -92,6 +92,11 @@ mmc_bwrite(int dev_num, ulong start, lbaint_t blkcnt, const void*src) > > blklen = mmc->write_bl_len; > > + if (start > mmc->block_dev.lba || (start + blkcnt) > mmc->block_dev.lba) { The second comparison should suffice, no? Also, parens are not necessary. > + puts("operation exceed mmc boundary..\n > + This devices only have 0x%x blocks\n", > mmc->block_dev.lba); Where's the cloging quote? String literals are not broken up like this -- this adds extra spaces to them. Should be: puts("operation exceed mmc boundary..\n" "This devices only have 0x%x blocks\n", mmc->block_dev.lba); > + return 0; > + } > err = mmc_set_blocklen(mmc, mmc->write_bl_len); > > if (err) { > @@ -219,6 +224,11 @@ static ulong mmc_bread(int dev_num, ulong start, lbaint_t blkcnt, void *dst) > if (!mmc) > return 0; > > + if (start > mmc->block_dev.lba || (start + blkcnt) > mmc->block_dev.lba) { > + puts("operation exceed mmc boundary..\n > + This devices only have 0x%x blocks\n", mmc->block_dev.lba); Same comments here... WBR, Sergei