From: Christian Poetzsch Date: Fri, 24 Jul 2015 15:42:58 +0000 (+0100) Subject: ANDROID: fs: Fix for in kernel emergency remount when loop mounts are used X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=078204d5b8a03a7051439042d7ecb6e33a805cda;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git ANDROID: fs: Fix for in kernel emergency remount when loop mounts are used adb reboot calls /proc/sysrq-trigger to force an emergency remount (ro) of all mounted disks. This is executed in the order of the time the mount was originally done. Because we have a test system which loop mount images from an extra partition, we see errors cause the loop mounted partitions gets remounted after this physical partition was set to read only already. Fix this by reversing the order of the emergency remount. This will remount the disk first which have been mounted last. So instead of remounting in this order: /dev/sda1 /dev/loop1 /dev/loop2 we now remount in this order: /dev/loop2 /dev/loop1 /dev/sda1 Change-Id: I68fe7e16cc9400ab5278877af70c9ea1d9b57936 Signed-off-by: Christian Poetzsch --- diff --git a/fs/super.c b/fs/super.c index 994db21f59bf..417d548f534b 100644 --- a/fs/super.c +++ b/fs/super.c @@ -887,7 +887,7 @@ static void do_emergency_remount(struct work_struct *work) struct super_block *sb, *p = NULL; spin_lock(&sb_lock); - list_for_each_entry(sb, &super_blocks, s_list) { + list_for_each_entry_reverse(sb, &super_blocks, s_list) { if (hlist_unhashed(&sb->s_instances)) continue; sb->s_count++;