mtd: mtdblock: call mtd_sync() only if opened for write
Because it is useless to call it if the device is opened in R/O mode, and also harmful: on CFI NOR flash it may block for long time waiting for erase operations to complete is another partition with a R/W file-system on this chip. Artem Bityutskiy: write commit message, amend the patch to match the latest tree (we use mtd_sync(), not mtd->sync() nowadays). Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:

committed by
David Woodhouse

parent
2ff5e1532d
commit
70d5098a4b
@@ -321,8 +321,12 @@ static int mtdblock_release(struct mtd_blktrans_dev *mbd)
|
||||
mutex_unlock(&mtdblk->cache_mutex);
|
||||
|
||||
if (!--mtdblk->count) {
|
||||
/* It was the last usage. Free the cache */
|
||||
mtd_sync(mbd->mtd);
|
||||
/*
|
||||
* It was the last usage. Free the cache, but only sync if
|
||||
* opened for writing.
|
||||
*/
|
||||
if (mbd->file_mode & FMODE_WRITE)
|
||||
mtd_sync(mbd->mtd);
|
||||
vfree(mtdblk->cache_data);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user