diff mbox

drm/atomic: fix null dereference

Message ID 1436635479-1460-1-git-send-email-sudipm.mukherjee@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Sudip Mukherjee July 11, 2015, 5:24 p.m. UTC
We are checking the size of e->event but we were doing it when e is
known to be NULL.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
---
 drivers/gpu/drm/drm_atomic.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Rob Clark July 11, 2015, 6:17 p.m. UTC | #1
On Sat, Jul 11, 2015 at 1:24 PM, Sudip Mukherjee
<sudipm.mukherjee@gmail.com> wrote:
> We are checking the size of e->event but we were doing it when e is
> known to be NULL.

nak, this will leak event_space..  since it is a sizeof, it isn't
actually deref'ing e, but rather just using the static type info, so
it's ok (although perhaps funny looking)

BR,
-R


> Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> ---
>  drivers/gpu/drm/drm_atomic.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> index acebd16..51d3a85 100644
> --- a/drivers/gpu/drm/drm_atomic.c
> +++ b/drivers/gpu/drm/drm_atomic.c
> @@ -1311,7 +1311,6 @@ static struct drm_pending_vblank_event *create_vblank_event(
>         e = kzalloc(sizeof *e, GFP_KERNEL);
>         if (e == NULL) {
>                 spin_lock_irqsave(&dev->event_lock, flags);
> -               file_priv->event_space += sizeof e->event;
>                 spin_unlock_irqrestore(&dev->event_lock, flags);
>                 goto out;
>         }
> --
> 1.8.1.2
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
Sudip Mukherjee July 12, 2015, 6:14 a.m. UTC | #2
On Sat, Jul 11, 2015 at 02:17:49PM -0400, Rob Clark wrote:
> On Sat, Jul 11, 2015 at 1:24 PM, Sudip Mukherjee
> <sudipm.mukherjee@gmail.com> wrote:
> > We are checking the size of e->event but we were doing it when e is
> > known to be NULL.
> 
> nak, this will leak event_space..  since it is a sizeof, it isn't
> actually deref'ing e, but rather just using the static type info, so
> it's ok (although perhaps funny looking)
Agreed, and I just verified the same with an userspace code also.
But i think this will confuse people like me who have started to look
at the drm code to start working with some new drm driver.
what about:
file_priv->event_space += sizeof(struct drm_event_vblank);

It will server the same purpose yet it will not be confusing.

regards
sudip
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index acebd16..51d3a85 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -1311,7 +1311,6 @@  static struct drm_pending_vblank_event *create_vblank_event(
 	e = kzalloc(sizeof *e, GFP_KERNEL);
 	if (e == NULL) {
 		spin_lock_irqsave(&dev->event_lock, flags);
-		file_priv->event_space += sizeof e->event;
 		spin_unlock_irqrestore(&dev->event_lock, flags);
 		goto out;
 	}