summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordumbbell <dumbbell@FreeBSD.org>2016-03-18 22:52:11 +0000
committerdumbbell <dumbbell@FreeBSD.org>2016-03-18 22:52:11 +0000
commit58a3fd2c52bfcb1633e0c5ee9890b03991d10e19 (patch)
tree600cac6562a723263187143013be10cacd9837dc
parent2af531d10de4457a7f3bdb49f65efa2ad90a9fc6 (diff)
downloadFreeBSD-src-58a3fd2c52bfcb1633e0c5ee9890b03991d10e19.zip
FreeBSD-src-58a3fd2c52bfcb1633e0c5ee9890b03991d10e19.tar.gz
drm: Fix dev->ioctl_count references leak
This fixes the following error: kernel: error: [drm:pid1167:drm_release] *ERROR* Device busy: 2 Because of that, drm_lastclose() was not called, leading to a few memory leaks once the driver was unloaded. MFC of: r296674
-rw-r--r--sys/dev/drm2/drm_drv.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/drm2/drm_drv.c b/sys/dev/drm2/drm_drv.c
index f4431a7..3b46253 100644
--- a/sys/dev/drm2/drm_drv.c
+++ b/sys/dev/drm2/drm_drv.c
@@ -386,17 +386,21 @@ int drm_ioctl(struct cdev *kdev, u_long cmd, caddr_t data, int flags,
switch (cmd) {
case FIONBIO:
case FIOASYNC:
+ atomic_dec(&dev->ioctl_count);
return 0;
case FIOSETOWN:
+ atomic_dec(&dev->ioctl_count);
return fsetown(*(int *)data, &file_priv->minor->buf_sigio);
case FIOGETOWN:
+ atomic_dec(&dev->ioctl_count);
*(int *) data = fgetown(&file_priv->minor->buf_sigio);
return 0;
}
if (IOCGROUP(cmd) != DRM_IOCTL_BASE) {
+ atomic_dec(&dev->ioctl_count);
DRM_DEBUG("Bad ioctl group 0x%x\n", (int)IOCGROUP(cmd));
return EINVAL;
}
OpenPOWER on IntegriCloud