summaryrefslogtreecommitdiff
path: root/block/elevator.c
diff options
context:
space:
mode:
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>2014-10-23 22:16:48 +0530
committerJens Axboe <axboe@fb.com>2014-10-23 12:35:42 -0600
commitd32f6b57523b6e9b2e39e990e056f9882a6f099a (patch)
tree2e7f132eb3583a235cf9a8e0dbe876db32c69a2a /block/elevator.c
parent84ce0f0e94ac97217398b3b69c21c7a62ebeed05 (diff)
downloadlwn-d32f6b57523b6e9b2e39e990e056f9882a6f099a.tar.gz
lwn-d32f6b57523b6e9b2e39e990e056f9882a6f099a.zip
block: fix wrong error return in elevator_init()
while compiling integer err was showing as a set but unused variable. elevator_init_fn can be either cfq_init_queue or deadline_init_queue or noop_init_queue. all three of these functions are returning -ENOMEM if they fail to allocate the queue. so we should actually be returning the error code rather than returning 0 always. Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/elevator.c')
-rw-r--r--block/elevator.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/block/elevator.c b/block/elevator.c
index 24c28b659bb3..afa3b037a17c 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -229,7 +229,9 @@ int elevator_init(struct request_queue *q, char *name)
}
err = e->ops.elevator_init_fn(q, e);
- return 0;
+ if (err)
+ elevator_put(e);
+ return err;
}
EXPORT_SYMBOL(elevator_init);