Skip to content

Commit

Permalink
drm: fix a memleak on mutex failure path
Browse files Browse the repository at this point in the history
Need to free just allocated ctx allocation if we cannot
get our config mutex.

This one has been flagged by kbuild bot all the way back in August,
but somehow nobody picked it up:
https://lists.01.org/pipermail/kbuild/2014-August/001691.html

In addition there is another failure path that leaks the same
ctx reference that is fixed.

Found with smatch.

Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
CC: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Oleg Drokin authored and Daniel Vetter committed May 5, 2015
1 parent 3671c58 commit ed18170
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions drivers/gpu/drm/drm_modeset_lock.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,10 @@ int __drm_modeset_lock_all(struct drm_device *dev,
return -ENOMEM;

if (trylock) {
if (!mutex_trylock(&config->mutex))
return -EBUSY;
if (!mutex_trylock(&config->mutex)) {
ret = -EBUSY;
goto out;
}
} else {
mutex_lock(&config->mutex);
}
Expand Down Expand Up @@ -114,6 +116,8 @@ int __drm_modeset_lock_all(struct drm_device *dev,
goto retry;
}

out:
kfree(ctx);
return ret;
}
EXPORT_SYMBOL(__drm_modeset_lock_all);
Expand Down

0 comments on commit ed18170

Please sign in to comment.