vfs: add missing unlock in sget()

In sget(), destroy_super(s) is called with s->s_umount held, which makes
lockdep unhappy.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Menage <menage@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by Li Zefan and committed by Linus Torvalds a3cfbb53 e5bc49ba

+4 -1
+4 -1
fs/super.c
··· 371 continue; 372 if (!grab_super(old)) 373 goto retry; 374 - if (s) 375 destroy_super(s); 376 return old; 377 } 378 } ··· 389 err = set(s, data); 390 if (err) { 391 spin_unlock(&sb_lock); 392 destroy_super(s); 393 return ERR_PTR(err); 394 }
··· 371 continue; 372 if (!grab_super(old)) 373 goto retry; 374 + if (s) { 375 + up_write(&s->s_umount); 376 destroy_super(s); 377 + } 378 return old; 379 } 380 } ··· 387 err = set(s, data); 388 if (err) { 389 spin_unlock(&sb_lock); 390 + up_write(&s->s_umount); 391 destroy_super(s); 392 return ERR_PTR(err); 393 }