[media] solo6x10: fix 'dma from stack' warning
authorHans Verkuil <hans.verkuil@cisco.com>
Fri, 7 Feb 2014 17:51:24 +0000 (14:51 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 17 Jul 2014 14:57:31 +0000 (11:57 -0300)
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/staging/media/solo6x10/solo6x10-disp.c

index 44d98b8ed749ea074d9363be67df1d9a60b9e905..b529a9670fd6d041346e17dadf11a134b8135d3c 100644 (file)
@@ -213,19 +213,21 @@ int solo_set_motion_threshold(struct solo_dev *solo_dev, u8 ch, u16 val)
 int solo_set_motion_block(struct solo_dev *solo_dev, u8 ch,
                const u16 *thresholds)
 {
+       const unsigned size = sizeof(u16) * 64;
        u32 off = SOLO_MOT_FLAG_AREA + ch * SOLO_MOT_THRESH_SIZE * 2;
-       u16 buf[64];
+       u16 *buf;
        int x, y;
        int ret = 0;
 
-       memset(buf, 0, sizeof(buf));
+       buf = kzalloc(size, GFP_KERNEL);
        for (y = 0; y < SOLO_MOTION_SZ; y++) {
                for (x = 0; x < SOLO_MOTION_SZ; x++)
                        buf[x] = cpu_to_le16(thresholds[y * SOLO_MOTION_SZ + x]);
                ret |= solo_p2m_dma(solo_dev, 1, buf,
-                       SOLO_MOTION_EXT_ADDR(solo_dev) + off + y * sizeof(buf),
-                       sizeof(buf), 0, 0);
+                       SOLO_MOTION_EXT_ADDR(solo_dev) + off + y * size,
+                       size, 0, 0);
        }
+       kfree(buf);
        return ret;
 }