]> Pileus Git - ~andy/linux/commitdiff
mtd: block2mtd: fix recursive call of mtd_writev
authorGabor Juhos <juhosg@openwrt.org>
Wed, 23 May 2012 22:17:23 +0000 (00:17 +0200)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 1 Jun 2012 19:23:19 +0000 (20:23 +0100)
The 'mtd_writev' interface calls the function assigned
to the '_write' field of a given mtd device if that is
not NULL. The block2mtd driver sets the '_writev' field
to the 'mtd_writev' function itself and thus causes a
endless loop.

This is caused by 1dbebd32562b3c2caeca35960e5cb00bfcc12900
(mtd: harmonize mtd_writev usage).

Remove the assignment from the block2mtd driver to fix the
issue.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Cc: stable@kernel.org [3.3+]
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/mtd/devices/block2mtd.c

index 300aeb837ee3ae3e8f9c969092989456a9199e09..681e2ee0f2d6287a1c0e2170358a5e4cc9b11276 100644 (file)
@@ -265,7 +265,6 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size)
        dev->mtd.flags = MTD_CAP_RAM;
        dev->mtd._erase = block2mtd_erase;
        dev->mtd._write = block2mtd_write;
-       dev->mtd._writev = mtd_writev;
        dev->mtd._sync = block2mtd_sync;
        dev->mtd._read = block2mtd_read;
        dev->mtd.priv = dev;