OSDN Git Service

media: saa7146: Avoid using BUG_ON as an assertion
authorAditya Pakki <pakki001@umn.edu>
Sun, 15 Dec 2019 19:21:33 +0000 (20:21 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Wed, 8 Jan 2020 13:28:59 +0000 (14:28 +0100)
In video_begin and video_end, saa7146_format_by_fourcc can return
NULL and is checked via BUG_ON. However, by returning the error
to the callers upstream, we can avoid the crash and handle it via
recovery code.

Signed-off-by: Aditya Pakki <pakki001@umn.edu>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/common/saa7146/saa7146_video.c

index d161220..ccd15b4 100644 (file)
@@ -345,7 +345,8 @@ static int video_begin(struct saa7146_fh *fh)
 
        fmt = saa7146_format_by_fourcc(dev, vv->video_fmt.pixelformat);
        /* we need to have a valid format set here */
-       BUG_ON(NULL == fmt);
+       if (!fmt)
+               return -EINVAL;
 
        if (0 != (fmt->flags & FORMAT_IS_PLANAR)) {
                resource = RESOURCE_DMA1_HPS|RESOURCE_DMA2_CLP|RESOURCE_DMA3_BRS;
@@ -398,7 +399,8 @@ static int video_end(struct saa7146_fh *fh, struct file *file)
 
        fmt = saa7146_format_by_fourcc(dev, vv->video_fmt.pixelformat);
        /* we need to have a valid format set here */
-       BUG_ON(NULL == fmt);
+       if (!fmt)
+               return -EINVAL;
 
        if (0 != (fmt->flags & FORMAT_IS_PLANAR)) {
                resource = RESOURCE_DMA1_HPS|RESOURCE_DMA2_CLP|RESOURCE_DMA3_BRS;