mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
UBIFS: correct data corruption range
With power-cut emulation, it is possible that sometimes no data at all is corrupted and that confusing messages are printed due to errors in the computation of data corruption range. [1] The start of the range should be [0..len-1], not [0..len]. [2] The end of the range should always be at least 1 greater than the start. Signed-off-by: Mats Karrman <mats.karrman@tritech.se> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
This commit is contained in:
parent
7203db97b7
commit
58a4e23703
@ -2563,9 +2563,9 @@ static int corrupt_data(const struct ubifs_info *c, const void *buf,
|
||||
unsigned int from, to, ffs = chance(1, 2);
|
||||
unsigned char *p = (void *)buf;
|
||||
|
||||
from = prandom_u32() % (len + 1);
|
||||
/* Corruption may only span one max. write unit */
|
||||
to = min(len, ALIGN(from, c->max_write_size));
|
||||
from = prandom_u32() % len;
|
||||
/* Corruption span max to end of write unit */
|
||||
to = min(len, ALIGN(from + 1, c->max_write_size));
|
||||
|
||||
ubifs_warn("filled bytes %u-%u with %s", from, to - 1,
|
||||
ffs ? "0xFFs" : "random data");
|
||||
|
Loading…
Reference in New Issue
Block a user