Changeset 6318

2007-02-18T14:52:14+01:00 (10 years ago)

Finally fix the pesky x86-2.6 block2mtd related crash (#1058)
When erasing blocks, block2mtd checks the block on the physical disk
to see if everything's filled with 0xff. When grabbing a page from the page
cache, it initializes the limit as <start address> + PAGE_SIZE.
Turns out that the pointer to the status page is (unsigned long *), and
thus it adds (PAGE_SIZE * 4).
This would never have been caught, if it wasn't for the unlikely event
that block2mtd catches the *last* page available in the system ram and
thus tries to scan 4 memory pages from there.
The absolutely trivial fix is to do a double cast (cast to (u8 *), add
PAGE_SIZE, then cast to (unsigned long *))

... and there was much rejoicing

1 added

Note: See TracChangeset for help on using the changeset viewer.