From: Artem Bityutskiy <dedekind1@gmail.com>
To: Jason Liu <r64343@freescale.com>
Cc: linux-mtd@lists.infradead.org, David.Woodhouse@intel.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/1] mtd: nand: add check for out of page read
Date: Tue, 14 Dec 2010 17:12:37 +0200 [thread overview]
Message-ID: <1292339557.2538.32.camel@localhost> (raw)
In-Reply-To: <1290156045-11719-1-git-send-email-r64343@freescale.com>
On Fri, 2010-11-19 at 16:40 +0800, Jason Liu wrote:
> When run mtd_oobtest case, there will be one error for step(4),
> which turned out it need add one check for out of page read in
> nand_do_read_oob just like mtd_do_write_oob did it already.
> This commit also fix one typo error for comments in mtd_do_write_oob
>
> Signed-off-by: Jason Liu <r64343@freescale.com>
> ---
> drivers/mtd/nand/nand_base.c | 9 ++++++++-
> 1 files changed, 8 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> index 1f75a1b..75d199e 100644
> --- a/drivers/mtd/nand/nand_base.c
> +++ b/drivers/mtd/nand/nand_base.c
> @@ -1782,6 +1782,13 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
> else
> len = mtd->oobsize;
>
> + /* Do not allow read past end of page */
> + if ((ops->ooboffs + readlen) > len) {
> + DEBUG(MTD_DEBUG_LEVEL0, "%s: Attempt to read "
> + "past end of page\n", __func__);
> + return -EINVAL;
> + }
As you reported to me in a private e-mail (although I prefer to always
have a public ML in CC when dealing with open source stuff) this patch
is wrong. Indeed, it limits the maximum amount of bytes which can be
read at one go to the OOB size, which is incorrect, because
mtd->read_oob() allows reading multiple pages at a time, see comment
near "struct mtd_oob_ops" at include/linux/mtd/mtd.h. So this patch
breaks ABI and hence, has to be reverted.
> if (unlikely(ops->ooboffs >= len)) {
> DEBUG(MTD_DEBUG_LEVEL0, "%s: Attempt to start read "
> "outside oob\n", __func__);
Side note: nand_base.c has a bunch of senseless unlikely() hints, would
be nice to clean that up some day.
> - /* Do not allow reads past end of device */
> + /* Do not allow write past end of device */
Care to make this a separate clean-up patch meanwhile?
Thank!
--
Best Regards,
Artem Bityutskiy (Артём Битюцкий)
next prev parent reply other threads:[~2010-12-14 15:13 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-19 8:40 [PATCH 1/1] mtd: nand: add check for out of page read Jason Liu
2010-11-26 16:21 ` Artem Bityutskiy
2010-12-14 15:12 ` Artem Bityutskiy [this message]
2010-12-14 15:26 ` Artem Bityutskiy
2010-12-15 1:55 ` Jason Liu
2010-12-19 16:54 ` Artem Bityutskiy
2010-12-23 6:06 ` Jason Liu
2011-01-16 15:58 ` Artem Bityutskiy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1292339557.2538.32.camel@localhost \
--to=dedekind1@gmail.com \
--cc=David.Woodhouse@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=r64343@freescale.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).