2014-01-23 19:49:51

by Fabian Frédérick

[permalink] [raw]
Subject: [PATCH 1/4] mtd: block2mtd: char mtd major check

Deny use of a char mtd device to map as a block device.

Signed-off-by: Fabian Frederick <[email protected]>
---
drivers/mtd/devices/block2mtd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/mtd/devices/block2mtd.c b/drivers/mtd/devices/block2mtd.c
index d9fd87a..0efee5b 100644
--- a/drivers/mtd/devices/block2mtd.c
+++ b/drivers/mtd/devices/block2mtd.c
@@ -244,7 +244,8 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size)
}
dev->blkdev = bdev;

- if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) {
+ if ((MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) ||
+ (MAJOR(bdev->bd_dev) == MTD_CHAR_MAJOR)) {
pr_err("attempting to use an MTD device as a block device\n");
goto devinit_err;
}
--
1.8.1.4


2014-01-24 22:10:05

by Ezequiel Garcia

[permalink] [raw]
Subject: Re: [PATCH 1/4] mtd: block2mtd: char mtd major check

On Thu, Jan 23, 2014 at 08:49:47PM +0100, Fabian Frederick wrote:
> Deny use of a char mtd device to map as a block device.
>
> Signed-off-by: Fabian Frederick <[email protected]>
> ---
> drivers/mtd/devices/block2mtd.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mtd/devices/block2mtd.c b/drivers/mtd/devices/block2mtd.c
> index d9fd87a..0efee5b 100644
> --- a/drivers/mtd/devices/block2mtd.c
> +++ b/drivers/mtd/devices/block2mtd.c
> @@ -244,7 +244,8 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size)
> }
> dev->blkdev = bdev;
>
> - if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) {
> + if ((MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) ||
> + (MAJOR(bdev->bd_dev) == MTD_CHAR_MAJOR)) {
> pr_err("attempting to use an MTD device as a block device\n");
> goto devinit_err;
> }
> --
> 1.8.1.4

Now that the changes are separated on a per-patch basis they're much
much easier to review. Thanks!

Regarding this changes, it seems to me it's not needed. Are you sure
you can attach "block2mtd" to a char MTD device?

That would be odd, given this function calls blkdev_get_by_{path/dev};
which will check the device is of block type in the first place.

What's your motivation for this change?
--
Ezequiel García, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com

2014-01-25 10:52:48

by Fabian Frédérick

[permalink] [raw]
Subject: Re: [PATCH 1/4] mtd: block2mtd: char mtd major check

On Fri, 24 Jan 2014 19:10:11 -0300
Ezequiel Garcia <[email protected]> wrote:

> On Thu, Jan 23, 2014 at 08:49:47PM +0100, Fabian Frederick wrote:
> > Deny use of a char mtd device to map as a block device.
> >
> > Signed-off-by: Fabian Frederick <[email protected]>
> > ---
> > drivers/mtd/devices/block2mtd.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/mtd/devices/block2mtd.c b/drivers/mtd/devices/block2mtd.c
> > index d9fd87a..0efee5b 100644
> > --- a/drivers/mtd/devices/block2mtd.c
> > +++ b/drivers/mtd/devices/block2mtd.c
> > @@ -244,7 +244,8 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size)
> > }
> > dev->blkdev = bdev;
> >
> > - if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) {
> > + if ((MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) ||
> > + (MAJOR(bdev->bd_dev) == MTD_CHAR_MAJOR)) {
> > pr_err("attempting to use an MTD device as a block device\n");
> > goto devinit_err;
> > }
> > --
> > 1.8.1.4
>
> Now that the changes are separated on a per-patch basis they're much
> much easier to review. Thanks!
>
> Regarding this changes, it seems to me it's not needed. Are you sure
> you can attach "block2mtd" to a char MTD device?
>
> That would be odd, given this function calls blkdev_get_by_{path/dev};
> which will check the device is of block type in the first place.
>
You're absoletly right.Thanks for your time checking these small patches.
As only patch 2 seems useful , I've sent version 2 with new error names.

Regards,
Fabian

> What's your motivation for this change?
> --
> Ezequiel Garc?a, Free Electrons
> Embedded Linux, Kernel and Android Engineering
> http://free-electrons.com