jffs2: fix unbalanced locking
authorBrian Norris <computersforpeace@gmail.com>
Wed, 26 Feb 2014 02:27:40 +0000 (18:27 -0800)
committerBrian Norris <computersforpeace@gmail.com>
Thu, 7 May 2015 23:20:53 +0000 (16:20 -0700)
commit7aaea7605c0e19fa7b38d7ac5dcd818942fd17a7
tree48324e2612fa372c69a97e4b76f14b007423e2c8
parent3094fe121e7514687dd1bdc35127a23be257400e
jffs2: fix unbalanced locking

Li Zefan reported an unbalanced locking issue, found by his
internal debugging feature on runtime. The particular case he was
looking at doesn't lead to a deadlock, as the structure that this lock
is embedded in is freed on error. But we should straighten out the error
handling.

Because several callers of jffs2_do_read_inode_internal() /
jffs2_do_read_inode() already handle the locking/unlocking and inode
clearing at their own level, let's just push any unlocks/clearing down
to the caller. This consistency is much easier to verify.

Reported-by: Li Zefan <lizefan@huawei.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
fs/jffs2/fs.c
fs/jffs2/readinode.c