Hi,
the attached patch prevents a crash when trying to mount a corrupted
ext4 file system.
regards,
chris
>From 86344aebe7e3905b2293a7891a68def8cb38a571 Mon Sep 17 00:00:00 2001
From: Christian Groessler <chris@xxxxxxxxxxxxx>
Date: Wed, 7 Dec 2016 00:54:03 +0100
Subject: [PATCH] Fix kernel crash when trying to mount corrupted ext4
partition.
ext4_calculate_overhead(), if successful, sets the 'ret' vatiable to 0.
Subsequent failures will bail out, with the function returning the 'ret'
variable as status. Since 'ret' is 0 (indicating no error) the kernel
will happily continue and eventually crash.
This change preserves the value of 'ret' across the call to
ext4_calculate_overhead() in case this function doesn't return an
error.
Signed-off-by: Christian Groessler <chris@xxxxxxxxxxxxx>
---
fs/ext4/super.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 5862518..0f63644 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -3692,9 +3692,12 @@ no_journal:
if (es->s_overhead_clusters)
sbi->s_overhead = le32_to_cpu(es->s_overhead_clusters);
else {
+ int oret = ret;
ret = ext4_calculate_overhead(sb);
if (ret)
goto failed_mount_wq;
+ else
+ ret = oret;
}
/*
--
2.7.4