mtd: nand: initialize ops.mode
Our `ops' information was converted to a local variable recently, and
apparently, old code relied on the fact that the global version was
often left in a valid mode. We can't make this assumption on local
structs, and we shouldn't be relying on a previous state anyway.
Instead, we initialize mode to 0 for don't-care situations (i.e., the
operation does not use OOB anyway) and MTD_OPS_PLACE_OOB when we want to
place OOB data.
This fixes a bug with nand_default_block_markbad(), where we catch on
the BUG() call in nand_fill_oob():
Kernel bug detected[#1]:
...
Call Trace:
[<
80307350>] nand_fill_oob.clone.5+0xa4/0x15c
[<
803075d8>] nand_do_write_oob+0x1d0/0x260
[<
803077c4>] nand_default_block_markbad+0x15c/0x1a8
[<
802e8c2c>] part_block_markbad+0x80/0x98
[<
802ebc74>] mtd_ioctl+0x6d8/0xbd0
[<
802ec1a4>] mtd_unlocked_ioctl+0x38/0x5c
[<
800d9c60>] do_vfs_ioctl+0xa4/0x6e4
[<
800da2e4>] sys_ioctl+0x44/0xa0
[<
8001381c>] stack_done+0x20/0x40
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>