From: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: David Woodhouse <dwmw2@infradead.org>, linux-mtd@lists.infradead.org
Subject: Re: [PATCH 3/4] mtd: Introduce mtd_block_isreserved()
Date: Thu, 15 May 2014 17:15:18 -0300 [thread overview]
Message-ID: <20140515201518.GA18864@arch.cereza> (raw)
In-Reply-To: <20140514235705.GK28907@ld-irv-0074>
On 14 May 04:57 PM, Brian Norris wrote:
> On Wed, May 14, 2014 at 08:37:21PM -0300, Ezequiel Garcia wrote:
> > On 12 May 06:31 PM, Brian Norris wrote:
> > > On Fri, Mar 21, 2014 at 08:57:43AM -0300, Ezequiel Garcia wrote:
> > [..]
> > > >
> > > > +int mtd_block_isreserved(struct mtd_info *mtd, loff_t ofs)
> > > > +{
> > > > + if (!mtd->_block_isreserved)
> > > > + return 0;
> > > > + if (ofs < 0 || ofs > mtd->size)
> > > > + return -EINVAL;
> > >
> > > At first, I was going to recommend that the out-of-bounds check go
> > > before the !mtd->_block_isreserved check, since it's best to warn users
> > > for invalid input. But then, mtd_block_isbad() has the same ordering, so
> > > it'd be nice to consistent...
> > >
> > > Do we flip a coin to decide whether to change both or leave as-is? :)
> > >
> >
> > Actually, I just followed the same convention as all the other functions,
> > not just mtd_block_isbad().
>
> All? Like what? mtd_read_oob()? mtd_get_fact_prot_info()? These return
> -EOPNOTSUPP, which is an informative error code. But that's different
> than returning 0 for mtd_block_isbad() or mtd_block_isreserved(), even
> if the block doesn't exist.
>
Ah... I misunderstood your comment. The point is that you don't want to
return 0, when the parameters may be are wrong.
So, I'll fix this patch by changing both, mtd_block_isbad and
mtd_block_isreserved, just as you asked in the first place.
>
> (Also, is it just me, or is mtd_writev() missing bounds checking?)
>
Hm... so it seems. I guess the check should be something like:
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index d201fee..21ce0f4 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -1066,11 +1066,22 @@ static int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
int mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
unsigned long count, loff_t to, size_t *retlen)
{
+ int i;
+
*retlen = 0;
if (!(mtd->flags & MTD_WRITEABLE))
return -EROFS;
if (!mtd->_writev)
return default_mtd_writev(mtd, vecs, count, to, retlen);
+
+ if (to < 0 || to > mtd->size)
+ return -EINVAL;
+ for (i = 0; i < count; i++) {
+ if (!vecs[i].iov_len)
+ continue;
+ if (vecs[i].iov_len > mtd->size - to)
+ return -EINVAL;
+ }
return mtd->_writev(mtd, vecs, count, to, retlen);
}
EXPORT_SYMBOL_GPL(mtd_writev);
Right?
--
Ezequiel García, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
next prev parent reply other threads:[~2014-05-15 20:16 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-21 11:57 [PATCH 0/4] mtd: Fix wrong bad block account in ECC stats Ezequiel Garcia
2014-03-21 11:57 ` [PATCH 1/4] mtd: Add sysfs attr to expose " Ezequiel Garcia
2014-03-27 11:56 ` Gupta, Pekon
2014-04-01 11:13 ` Ezequiel Garcia
2014-04-15 11:13 ` Gupta, Pekon
2014-05-13 0:50 ` Brian Norris
2014-05-13 0:50 ` Brian Norris
2014-05-13 2:26 ` Ezequiel Garcia
2014-05-13 2:26 ` Ezequiel Garcia
2014-05-13 11:15 ` Greg Kroah-Hartman
2014-05-13 11:15 ` Greg Kroah-Hartman
2014-05-13 13:41 ` Ezequiel Garcia
2014-05-13 13:41 ` Ezequiel Garcia
2014-05-19 3:43 ` Ezequiel Garcia
2014-05-19 3:43 ` Ezequiel Garcia
2014-05-20 8:11 ` Brian Norris
2014-05-20 16:06 ` Ezequiel Garcia
2014-03-21 11:57 ` [PATCH 2/4] mtd: nand: Account the blocks used by the BBT in the ecc_stats Ezequiel Garcia
2014-05-13 2:27 ` Ezequiel Garcia
2014-05-13 2:36 ` Brian Norris
2014-05-13 13:44 ` Ezequiel Garcia
2014-03-21 11:57 ` [PATCH 3/4] mtd: Introduce mtd_block_isreserved() Ezequiel Garcia
2014-05-13 1:31 ` Brian Norris
2014-05-14 23:37 ` Ezequiel Garcia
2014-05-14 23:57 ` Brian Norris
2014-05-15 20:15 ` Ezequiel Garcia [this message]
2014-05-16 5:47 ` Brian Norris
2014-03-21 11:57 ` [PATCH 4/4] mtd: Account for BBT blocks when a partition is being allocated Ezequiel Garcia
2014-05-13 2:28 ` Brian Norris
2014-04-12 14:40 ` [PATCH 0/4] mtd: Fix wrong bad block account in ECC stats Ezequiel Garcia
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=20140515201518.GA18864@arch.cereza \
--to=ezequiel.garcia@free-electrons.com \
--cc=computersforpeace@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linux-mtd@lists.infradead.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.