diff options
author | Tejun Heo <tj@kernel.org> | 2014-09-09 01:02:45 +0200 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-09-09 01:02:45 +0200 |
commit | 23cb8981ed929b4dd48141401cd0fd31e0fa4ed0 (patch) | |
tree | c9c8e52c6034cdd809dba59e5ff3d491694506aa /mm/percpu.c | |
parent | percpu-refcount: add @gfp to percpu_ref_init() (diff) | |
download | linux-23cb8981ed929b4dd48141401cd0fd31e0fa4ed0.tar.xz linux-23cb8981ed929b4dd48141401cd0fd31e0fa4ed0.zip |
percpu: fix locking regression in the failure path of pcpu_alloc()
While updating locking, b38d08f3181c ("percpu: restructure locking")
broke pcpu_create_chunk() creation path in pcpu_alloc(). It returns
without releasing pcpu_alloc_mutex. Fix it.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
Diffstat (limited to 'mm/percpu.c')
-rw-r--r-- | mm/percpu.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/percpu.c b/mm/percpu.c index 867efd38d879..af3dd2704efd 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -974,6 +974,7 @@ restart: if (list_empty(&pcpu_slot[pcpu_nr_slots - 1])) { chunk = pcpu_create_chunk(); if (!chunk) { + mutex_unlock(&pcpu_alloc_mutex); err = "failed to allocate new chunk"; goto fail; } |