aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/fs/btrfs/async-thread.c
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2012-08-27 08:04:24 -0700
committerJiri Kosina <jkosina@suse.cz>2012-08-27 08:05:17 -0700
commit66a61fc0b2c3475f26f65b5f29ed5945b8efbf9e (patch)
tree28ebaaee56786cd9199e0e5802d166474d30d1e3 /fs/btrfs/async-thread.c
parentHID: hid-debug: Show rdesc for unclaimed devices (diff)
parentMerge branch 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid (diff)
downloadwireguard-linux-66a61fc0b2c3475f26f65b5f29ed5945b8efbf9e.tar.xz
wireguard-linux-66a61fc0b2c3475f26f65b5f29ed5945b8efbf9e.zip
Merge branch 'master' into upstream
Sync with Linus' tree so that we don't have build falures due to Quanta 3001 ID reshuffling.
Diffstat (limited to 'fs/btrfs/async-thread.c')
-rw-r--r--fs/btrfs/async-thread.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c
index 42704149b723..58b7d14b08ee 100644
--- a/fs/btrfs/async-thread.c
+++ b/fs/btrfs/async-thread.c
@@ -206,10 +206,17 @@ static noinline void run_ordered_completions(struct btrfs_workers *workers,
work->ordered_func(work);
- /* now take the lock again and call the freeing code */
+ /* now take the lock again and drop our item from the list */
spin_lock(&workers->order_lock);
list_del(&work->order_list);
+ spin_unlock(&workers->order_lock);
+
+ /*
+ * we don't want to call the ordered free functions
+ * with the lock held though
+ */
work->ordered_free(work);
+ spin_lock(&workers->order_lock);
}
spin_unlock(&workers->order_lock);