The kfifo DMA sample driver is broken. It does not properly initialize
the scatterlist, and therefore causes a kernel BUG with
CONFIG_DEBUG_SG=y.
Signed-off-by: Ira W. Snyder <[email protected]>
---
samples/kfifo/dma-example.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/samples/kfifo/dma-example.c b/samples/kfifo/dma-example.c
index b9482c2..baa5060 100644
--- a/samples/kfifo/dma-example.c
+++ b/samples/kfifo/dma-example.c
@@ -45,6 +45,9 @@ static int __init example_init(void)
printk(KERN_INFO "queue len: %u\n", kfifo_len(&fifo));
+ /* initialize scatterlist */
+ sg_init_table(sg, ARRAY_SIZE(sg));
+
ret = kfifo_dma_in_prepare(&fifo, sg, ARRAY_SIZE(sg), FIFO_SIZE);
printk(KERN_INFO "DMA sgl entries: %d\n", ret);
--
1.7.1
On Fri, Aug 13, 2010 at 11:32:11AM -0700, Ira W. Snyder wrote:
> The kfifo DMA sample driver is broken. It does not properly initialize
> the scatterlist, and therefore causes a kernel BUG with
> CONFIG_DEBUG_SG=y.
>
> Signed-off-by: Ira W. Snyder <[email protected]>
> ---
Whoops, forgot to CC Stefani Seibold.
> samples/kfifo/dma-example.c | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/samples/kfifo/dma-example.c b/samples/kfifo/dma-example.c
> index b9482c2..baa5060 100644
> --- a/samples/kfifo/dma-example.c
> +++ b/samples/kfifo/dma-example.c
> @@ -45,6 +45,9 @@ static int __init example_init(void)
>
> printk(KERN_INFO "queue len: %u\n", kfifo_len(&fifo));
>
> + /* initialize scatterlist */
> + sg_init_table(sg, ARRAY_SIZE(sg));
> +
> ret = kfifo_dma_in_prepare(&fifo, sg, ARRAY_SIZE(sg), FIFO_SIZE);
> printk(KERN_INFO "DMA sgl entries: %d\n", ret);
>
> --
> 1.7.1
>