drm: rip out dev->ioctl_count tracking
Now dev->ioctl_count tries to prevent the device from disappearing if it's still in use. And if we'd actually need this code it would be hopelessly racy and broken. But luckily the vfs already takes care of this. So we can just rip it out. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Родитель
b8673b648a
Коммит
43d1337cbe
|
@ -315,7 +315,6 @@ long drm_ioctl(struct file *filp,
|
|||
if (drm_device_is_unplugged(dev))
|
||||
return -ENODEV;
|
||||
|
||||
atomic_inc(&dev->ioctl_count);
|
||||
++file_priv->ioctl_count;
|
||||
|
||||
if ((nr >= DRM_CORE_IOCTL_COUNT) &&
|
||||
|
@ -410,7 +409,6 @@ long drm_ioctl(struct file *filp,
|
|||
|
||||
if (kdata != stack_kdata)
|
||||
kfree(kdata);
|
||||
atomic_dec(&dev->ioctl_count);
|
||||
if (retcode)
|
||||
DRM_DEBUG("ret = %d\n", retcode);
|
||||
return retcode;
|
||||
|
|
|
@ -392,7 +392,6 @@ static void drm_legacy_dev_reinit(struct drm_device *dev)
|
|||
if (drm_core_check_feature(dev, DRIVER_MODESET))
|
||||
return;
|
||||
|
||||
atomic_set(&dev->ioctl_count, 0);
|
||||
atomic_set(&dev->vma_count, 0);
|
||||
|
||||
dev->sigdata.lock = NULL;
|
||||
|
@ -578,12 +577,7 @@ int drm_release(struct inode *inode, struct file *filp)
|
|||
*/
|
||||
|
||||
if (!--dev->open_count) {
|
||||
if (atomic_read(&dev->ioctl_count)) {
|
||||
DRM_ERROR("Device busy: %d\n",
|
||||
atomic_read(&dev->ioctl_count));
|
||||
retcode = -EBUSY;
|
||||
} else
|
||||
retcode = drm_lastclose(dev);
|
||||
retcode = drm_lastclose(dev);
|
||||
if (drm_device_is_unplugged(dev))
|
||||
drm_put_dev(dev);
|
||||
}
|
||||
|
|
|
@ -1110,7 +1110,6 @@ struct drm_device {
|
|||
/** \name Usage Counters */
|
||||
/*@{ */
|
||||
int open_count; /**< Outstanding files open */
|
||||
atomic_t ioctl_count; /**< Outstanding IOCTLs pending */
|
||||
atomic_t vma_count; /**< Outstanding vma areas open */
|
||||
int buf_use; /**< Buffers in use -- cannot alloc */
|
||||
atomic_t buf_alloc; /**< Buffer allocation in progress */
|
||||
|
|
Загрузка…
Ссылка в новой задаче