diff options
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-cgroup.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index 82283859727e..30a7a9c58b38 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c | |||
@@ -174,6 +174,7 @@ static struct blkcg_gq *__blkg_lookup_create(struct blkcg *blkcg, | |||
174 | __releases(q->queue_lock) __acquires(q->queue_lock) | 174 | __releases(q->queue_lock) __acquires(q->queue_lock) |
175 | { | 175 | { |
176 | struct blkcg_gq *blkg; | 176 | struct blkcg_gq *blkg; |
177 | int ret; | ||
177 | 178 | ||
178 | WARN_ON_ONCE(!rcu_read_lock_held()); | 179 | WARN_ON_ONCE(!rcu_read_lock_held()); |
179 | lockdep_assert_held(q->queue_lock); | 180 | lockdep_assert_held(q->queue_lock); |
@@ -186,24 +187,22 @@ static struct blkcg_gq *__blkg_lookup_create(struct blkcg *blkcg, | |||
186 | if (!css_tryget(&blkcg->css)) | 187 | if (!css_tryget(&blkcg->css)) |
187 | return ERR_PTR(-EINVAL); | 188 | return ERR_PTR(-EINVAL); |
188 | 189 | ||
189 | /* | 190 | /* allocate */ |
190 | * Allocate and initialize. | 191 | ret = -ENOMEM; |
191 | */ | ||
192 | blkg = blkg_alloc(blkcg, q); | 192 | blkg = blkg_alloc(blkcg, q); |
193 | 193 | if (unlikely(!blkg)) | |
194 | /* did alloc fail? */ | 194 | goto err_put; |
195 | if (unlikely(!blkg)) { | ||
196 | blkg = ERR_PTR(-ENOMEM); | ||
197 | goto out; | ||
198 | } | ||
199 | 195 | ||
200 | /* insert */ | 196 | /* insert */ |
201 | spin_lock(&blkcg->lock); | 197 | spin_lock(&blkcg->lock); |
202 | hlist_add_head_rcu(&blkg->blkcg_node, &blkcg->blkg_list); | 198 | hlist_add_head_rcu(&blkg->blkcg_node, &blkcg->blkg_list); |
203 | list_add(&blkg->q_node, &q->blkg_list); | 199 | list_add(&blkg->q_node, &q->blkg_list); |
204 | spin_unlock(&blkcg->lock); | 200 | spin_unlock(&blkcg->lock); |
205 | out: | ||
206 | return blkg; | 201 | return blkg; |
202 | |||
203 | err_put: | ||
204 | css_put(&blkcg->css); | ||
205 | return ERR_PTR(ret); | ||
207 | } | 206 | } |
208 | 207 | ||
209 | struct blkcg_gq *blkg_lookup_create(struct blkcg *blkcg, | 208 | struct blkcg_gq *blkg_lookup_create(struct blkcg *blkcg, |