[PATCH] mmc: prevent dangling block device from accessing stale queues

From: Stefan Bader
Date: Thu Jun 04 2009 - 14:01:04 EST


This is a multi-part message in MIME format.Kernel: 2.6.30-rc7 based
Worked in 2.6.28 (probably only because things went at a different speed)

Testcase: Use ext3/ext4 on a SD card partitioned with one primary DOS partition and leave it mounted while suspend/resume.

Result: After resume the partition table of the SD card has been erased.

The detailed description can be found at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/383668

In essence the mmc block device frees the generic request queue before the last user of the gendisk has stopped using it leaving an invalid queue pointer which get unfortunately re-used before more requests come in for the old device.

The bugfix will cause more I/O error messages and might not be the ultimate way things should work, but it prevents data from getting lost.

Stefan