drm/exynos: gsc: normalize invalid buf idx from userspace
authorHyungwon Hwang <human.hwang@samsung.com>
Mon, 24 Aug 2015 10:33:27 +0000 (19:33 +0900)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Thu, 19 May 2016 11:27:44 +0000 (13:27 +0200)
At least in the one frame processing mode which is the only mode supported
by the current gsc driver, the buf idx is not meaningful for the driver.
Because only one address in the buffer is valid at a time, so it is OK to
convert the invalid buf idx from userspace to a valid idx, process the
frame, and return the result with original buf idx.

Signed-off-by: Hyungwon Hwang <human.hwang@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Change-Id: I8257cd39e33382f214ce4573e4a79f15ea498aab

drivers/gpu/drm/exynos/exynos_drm_gsc.c

index 6adafba..a01e0e7 100644 (file)
@@ -836,10 +836,7 @@ static int gsc_src_set_addr(struct device *dev,
        DRM_DEBUG_KMS("prop_id[%d]buf_id[%d]buf_type[%d]\n",
                property->prop_id, buf_id, buf_type);
 
-       if (buf_id > GSC_MAX_SRC) {
-               dev_info(ippdrv->dev, "invalid buf_id %d.\n", buf_id);
-               return -EINVAL;
-       }
+       buf_id %= GSC_MAX_SRC;
 
        /* address register set */
        switch (buf_type) {
@@ -1301,10 +1298,7 @@ static int gsc_dst_set_addr(struct device *dev,
        DRM_DEBUG_KMS("prop_id[%d]buf_id[%d]buf_type[%d]\n",
                property->prop_id, buf_id, buf_type);
 
-       if (buf_id > GSC_MAX_DST) {
-               dev_info(ippdrv->dev, "invalid buf_id %d.\n", buf_id);
-               return -EINVAL;
-       }
+       buf_id %= GSC_MAX_DST;
 
        /* address register set */
        switch (buf_type) {