2019-06-26 18:28:17

by Colin King

[permalink] [raw]
Subject: re: media: staging/imx: Improve pipeline searching (bug report)

Hi,

Static analysis with Coverity on Linux next has found a potential issue
with the following commit:

commit 3ef46bc97ca2c918b7657a08220c7340a9bb07a2
Author: Steve Longerbeam <[email protected]>
Date: Fri May 10 17:50:11 2019 -0400

media: staging/imx: Improve pipeline searching


The issue is in drivers/staging/media/imx/imx-media-utils.c in function
find_pipeline_entity:

struct media_pad *pad = NULL;

pad is assigned a NULL

struct video_device *vfd;
struct v4l2_subdev *sd;

if (grp_id && is_media_entity_v4l2_subdev(start)) {
sd = media_entity_to_v4l2_subdev(start);
if (sd->grp_id & grp_id)
return &sd->entity;
} else if (buftype && is_media_entity_v4l2_video_device(start)) {
vfd = media_entity_to_video_device(pad->entity);

..and above the null pad is being dereferenced causing a kernel oops.

if (buftype == vfd->queue->type)
return &vfd->entity;
}


Colin


2019-06-26 18:36:36

by Steve Longerbeam

[permalink] [raw]
Subject: Re: media: staging/imx: Improve pipeline searching (bug report)

Thanks for catching,

On 6/26/19 11:27 AM, Colin Ian King wrote:
> Hi,
>
> Static analysis with Coverity on Linux next has found a potential issue
> with the following commit:
>
> commit 3ef46bc97ca2c918b7657a08220c7340a9bb07a2
> Author: Steve Longerbeam <[email protected]>
> Date: Fri May 10 17:50:11 2019 -0400
>
> media: staging/imx: Improve pipeline searching
>
>
> The issue is in drivers/staging/media/imx/imx-media-utils.c in function
> find_pipeline_entity:
>
> struct media_pad *pad = NULL;
>
> pad is assigned a NULL
>
> struct video_device *vfd;
> struct v4l2_subdev *sd;
>
> if (grp_id && is_media_entity_v4l2_subdev(start)) {
> sd = media_entity_to_v4l2_subdev(start);
> if (sd->grp_id & grp_id)
> return &sd->entity;
> } else if (buftype && is_media_entity_v4l2_video_device(start)) {
> vfd = media_entity_to_video_device(pad->entity);
>
> ..and above the null pad is being dereferenced causing a kernel oops.

yes, this is a typo and should be:

vfd = media_entity_to_video_device(start);


Sending a patch...

Steve