ext4: fix error handling in ext4_fill_super()
authorLukas Czerner <lczerner@redhat.com>
Thu, 8 Nov 2012 20:16:54 +0000 (15:16 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 8 Nov 2012 20:16:54 +0000 (15:16 -0500)
commit07aa2ea13814ea60d12f7330b6d5ccfdb0c3ba4d
tree375224d5cff047d0d862cc66a48c4300d77b9c40
parent24ec19b0ae83a385ad9c55520716da671274b96c
ext4: fix error handling in ext4_fill_super()

There are some places in ext4_fill_super() where we would not return
proper error code if something fails. The confusion is caused probably
due to the fact that we have two "kind-of" return variables 'ret'and
'err'.

'ret' is used to return error code from ext4_fill_super() where err is
used to store return values from other functions within ext4_fill_super().
However some places were missing the obligatory 'ret = err'. We could
put the assignment where it is missing, but we can have better "future
proof" solution. Or we could convert the code to use just one, but it
would require more rewrites.

This commit fixes the problem by returning value from 'err' variable if
it is set and 'ret' otherwise in error handling branch of the
ext4_fill_super(). The reasoning is that 'ret' value is often set to
default "-EINVAL" or explicit value, where 'err' is used to store
return value from other functions and should be otherwise zero.

https://bugzilla.kernel.org/show_bug.cgi?id=48431

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/super.c