mmc: Add missing sg_init_table() call
authorHaavard Skinnemoen <hskinnemoen@atmel.com>
Fri, 23 Nov 2007 09:19:00 +0000 (10:19 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Tue, 27 Nov 2007 08:19:40 +0000 (09:19 +0100)
mmc_init_queue only initializes the scatterlists with sg_init_table()
when using a bounce buffer. This leads to a BUG() when CONFIG_DEBUG_SG
is set.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
drivers/mmc/card/queue.c

index 1b9c9b6da5b7349b39148129c7a6ce4a709e7717..30cd13b13ac3970f403906f3770c373658a20783 100644 (file)
@@ -180,12 +180,13 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card, spinlock_t *lock
                blk_queue_max_hw_segments(mq->queue, host->max_hw_segs);
                blk_queue_max_segment_size(mq->queue, host->max_seg_size);
 
-               mq->sg = kzalloc(sizeof(struct scatterlist) *
+               mq->sg = kmalloc(sizeof(struct scatterlist) *
                        host->max_phys_segs, GFP_KERNEL);
                if (!mq->sg) {
                        ret = -ENOMEM;
                        goto cleanup_queue;
                }
+               sg_init_table(mq->sg, host->max_phys_segs);
        }
 
        init_MUTEX(&mq->thread_sem);