mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 06:33:07 +00:00
drm/v3d: add missing mutex_destroy
v3d_perfmon_open_file() instantiates a mutex for a particular file instance, but it never destroys it by calling mutex_destroy() in v3d_perfmon_close_file(). Similarly, v3d_perfmon_create_ioctl() instantiates a mutex for a particular perfmon, but it never destroys it by calling mutex_destroy() in v3d_perfmon_destroy_ioctl(). So, add the missing mutex_destroy on both cases. Signed-off-by: Maíra Canal <mcanal@igalia.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Melissa Wen <melissa.srw@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/20221108175425.39819-3-mcanal@igalia.com
This commit is contained in:
parent
91d502f6eb
commit
d23a6e3f76
1 changed files with 5 additions and 1 deletions
|
@ -17,8 +17,10 @@ void v3d_perfmon_get(struct v3d_perfmon *perfmon)
|
||||||
|
|
||||||
void v3d_perfmon_put(struct v3d_perfmon *perfmon)
|
void v3d_perfmon_put(struct v3d_perfmon *perfmon)
|
||||||
{
|
{
|
||||||
if (perfmon && refcount_dec_and_test(&perfmon->refcnt))
|
if (perfmon && refcount_dec_and_test(&perfmon->refcnt)) {
|
||||||
|
mutex_destroy(&perfmon->lock);
|
||||||
kfree(perfmon);
|
kfree(perfmon);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void v3d_perfmon_start(struct v3d_dev *v3d, struct v3d_perfmon *perfmon)
|
void v3d_perfmon_start(struct v3d_dev *v3d, struct v3d_perfmon *perfmon)
|
||||||
|
@ -113,6 +115,7 @@ void v3d_perfmon_close_file(struct v3d_file_priv *v3d_priv)
|
||||||
idr_for_each(&v3d_priv->perfmon.idr, v3d_perfmon_idr_del, NULL);
|
idr_for_each(&v3d_priv->perfmon.idr, v3d_perfmon_idr_del, NULL);
|
||||||
idr_destroy(&v3d_priv->perfmon.idr);
|
idr_destroy(&v3d_priv->perfmon.idr);
|
||||||
mutex_unlock(&v3d_priv->perfmon.lock);
|
mutex_unlock(&v3d_priv->perfmon.lock);
|
||||||
|
mutex_destroy(&v3d_priv->perfmon.lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
int v3d_perfmon_create_ioctl(struct drm_device *dev, void *data,
|
int v3d_perfmon_create_ioctl(struct drm_device *dev, void *data,
|
||||||
|
@ -154,6 +157,7 @@ int v3d_perfmon_create_ioctl(struct drm_device *dev, void *data,
|
||||||
mutex_unlock(&v3d_priv->perfmon.lock);
|
mutex_unlock(&v3d_priv->perfmon.lock);
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
mutex_destroy(&perfmon->lock);
|
||||||
kfree(perfmon);
|
kfree(perfmon);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue