From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jiri Slaby Subject: [PATCH 1/1] fs: fix lock imbalance in do_remount_sb() Date: Wed, 13 May 2009 21:21:12 +0200 Message-ID: <1242242472-20598-1-git-send-email-jirislaby@gmail.com> Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby To: viro@zeniv.linux.org.uk Return-path: Received: from smtp.wellnetcz.com ([212.24.148.102]:53486 "EHLO smtp.wellnetcz.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755452AbZEMTVj (ORCPT ); Wed, 13 May 2009 15:21:39 -0400 Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Commit "Push BKL down into do_remount_sb()" pushed un/lock_kernel into do_remount_sb but forgets to unlock it on fail paths. Fix that. Signed-off-by: Jiri Slaby --- fs/super.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff --git a/fs/super.c b/fs/super.c index e4a0c5b..a64f362 100644 --- a/fs/super.c +++ b/fs/super.c @@ -548,18 +548,24 @@ int do_remount_sb(struct super_block *sb, int flags, void *data, int force) if ((flags & MS_RDONLY) && !(sb->s_flags & MS_RDONLY)) { if (force) mark_files_ro(sb); - else if (!fs_may_remount_ro(sb)) + else if (!fs_may_remount_ro(sb)) { + unlock_kernel(); return -EBUSY; + } retval = vfs_dq_off(sb, 1); - if (retval < 0 && retval != -ENOSYS) + if (retval < 0 && retval != -ENOSYS) { + unlock_kernel(); return -EBUSY; + } } remount_rw = !(flags & MS_RDONLY) && (sb->s_flags & MS_RDONLY); if (sb->s_op->remount_fs) { retval = sb->s_op->remount_fs(sb, &flags, data); - if (retval) + if (retval) { + unlock_kernel(); return retval; + } } sb->s_flags = (sb->s_flags & ~MS_RMT_MASK) | (flags & MS_RMT_MASK); unlock_kernel(); -- 1.6.3 caught by stanse