Re: [PATCH] [3/18] BKL-removal: Convert ext3 to use unlocked_ioctl
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2008-01-28 05:33:47
On Sun, 27 Jan 2008 03:17:09 +0100 (CET) Andi Kleen [off-list ref] wrote:
I checked ext3_ioctl and it looked largely safe to not be used without BKL. So convert it over to unlocked_ioctl. The only case where I wasn't quite sure was for the dynamic fs grow ioctls versus umounting -- I kept the BKL for those.
Please cpoy linux-ext4 on ext2/3/4 material. I skippped a lot of these patches because I just got bored of fixing rejects. Now is a very optimistic time to be raising patches against mainline. I'm going to work on getting a unified devel tree operating: one which contains everyone's latest stuff and is updated daily. Basically it'll be -mm without a couple of the quilt trees. People can then prepare patches against that, as it seems that most can't be bothered patching against -mm, let alone building and testing it. More later.
quoted hunk
+ /* AK: not sure the BKL is needed, but this might prevent + * races against umount */ + lock_kernel(); err = ext3_group_extend(sb, EXT3_SB(sb)->s_es, n_blocks_count); journal_lock_updates(EXT3_SB(sb)->s_journal); journal_flush(EXT3_SB(sb)->s_journal); journal_unlock_updates(EXT3_SB(sb)->s_journal); + unlock_kernel(); return err; }@@ -245,11 +249,14 @@ flags_err: if (copy_from_user(&input, (struct ext3_new_group_input __user *)arg, sizeof(input))) return -EFAULT; - + /* AK: not sure the BKL is needed, but this might prevent + * races against umount */ + lock_kernel(); err = ext3_group_add(sb, &input); journal_lock_updates(EXT3_SB(sb)->s_journal); journal_flush(EXT3_SB(sb)->s_journal); journal_unlock_updates(EXT3_SB(sb)->s_journal); + unlock_kernel();
The ext3_ioctl() caller has an open fd against the fs - should be sufficient to keep unmount away? (gets even more rejects, drops all the fasync patches too) It's all reached the stage of stupid.