libiscsi: propogate errors from kfifo_init to iscsi_pool_init callers Don't convert kfifo_init's error code to -ENOMEM when passing the error to the iscsi_pool_init caller. Signed-off-by: Mike Christie diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c index 6896283..cf86d59 100644 --- a/drivers/scsi/libiscsi.c +++ b/drivers/scsi/libiscsi.c @@ -1984,6 +1984,7 @@ int iscsi_pool_init(struct iscsi_pool *q, int max, void ***items, int item_size) { int i, num_arrays = 1; + int rc = -ENOMEM; memset(q, 0, sizeof(*q)); @@ -1995,20 +1996,21 @@ iscsi_pool_init(struct iscsi_pool *q, int max, void ***items, int item_size) num_arrays++; q->pool = kzalloc(num_arrays * max * sizeof(void*), GFP_KERNEL); if (q->pool == NULL) - return -ENOMEM; + return rc; q->queue = kfifo_init((void*)q->pool, max * sizeof(void*), GFP_KERNEL, NULL); if (IS_ERR(q->queue)) { q->queue = NULL; - goto enomem; + rc = PTR_ERR(q->queue); + goto fail; } for (i = 0; i < max; i++) { q->pool[i] = kzalloc(item_size, GFP_KERNEL); if (q->pool[i] == NULL) { q->max = i; - goto enomem; + goto fail; } __kfifo_put(q->queue, (void*)&q->pool[i], sizeof(void*)); } @@ -2020,9 +2022,9 @@ iscsi_pool_init(struct iscsi_pool *q, int max, void ***items, int item_size) return 0; -enomem: +fail: iscsi_pool_free(q); - return -ENOMEM; + return rc; } EXPORT_SYMBOL_GPL(iscsi_pool_init);