Hi
On Tue, Feb 9, 2016 at 9:45 PM, Haixia Shi hshi@chromium.org wrote:
Regarding the following comment:
diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c index 1ea8790..b4332d4 100644 --- a/drivers/gpu/drm/drm_fops.c +++ b/drivers/gpu/drm/drm_fops.c @@ -497,8 +497,6 @@ int drm_release(struct inode *inode, struct file *filp)
if (!--dev->open_count) { retcode = drm_lastclose(dev);
if (drm_device_is_unplugged(dev))
drm_put_dev(dev);
Again, you cannot drop this without replacement! In this case, you really should wrap fops.release() from UDL and call into drm_release() before copying this unplug-logic.
Does this really work? drm_release() will release minor at the end, regardless of dev->open_count.
"open_count" is about "drm_device". "drm_minor" is completely unrelated to this.
If minor is released, can I still safely get dev and call drm_put_dev(dev) afterwards?
Of course!
David