diff options
| -rw-r--r-- | fs/btrfs/zstd.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/btrfs/zstd.c b/fs/btrfs/zstd.c index 3e418a3aeb11..6b9e29d050f3 100644 --- a/fs/btrfs/zstd.c +++ b/fs/btrfs/zstd.c | |||
| @@ -195,8 +195,7 @@ static void zstd_cleanup_workspace_manager(void) | |||
| 195 | struct workspace *workspace; | 195 | struct workspace *workspace; |
| 196 | int i; | 196 | int i; |
| 197 | 197 | ||
| 198 | del_timer(&wsm.timer); | 198 | spin_lock(&wsm.lock); |
| 199 | |||
| 200 | for (i = 0; i < ZSTD_BTRFS_MAX_LEVEL; i++) { | 199 | for (i = 0; i < ZSTD_BTRFS_MAX_LEVEL; i++) { |
| 201 | while (!list_empty(&wsm.idle_ws[i])) { | 200 | while (!list_empty(&wsm.idle_ws[i])) { |
| 202 | workspace = container_of(wsm.idle_ws[i].next, | 201 | workspace = container_of(wsm.idle_ws[i].next, |
| @@ -206,6 +205,9 @@ static void zstd_cleanup_workspace_manager(void) | |||
| 206 | wsm.ops->free_workspace(&workspace->list); | 205 | wsm.ops->free_workspace(&workspace->list); |
| 207 | } | 206 | } |
| 208 | } | 207 | } |
| 208 | spin_unlock(&wsm.lock); | ||
| 209 | |||
| 210 | del_timer_sync(&wsm.timer); | ||
| 209 | } | 211 | } |
| 210 | 212 | ||
| 211 | /* | 213 | /* |
