On Fri, Apr 05, 2019 at 03:02:34PM +0200, Janusz Krzysztofik wrote: > From: Janusz Krzysztofik <janusz.krzysztofik@xxxxxxxxx> > > The driver does not currently support unbinding from a device which is > in use. Since open file descriptors may still be pointing into kernel > memory where the device structures used to be, entirely correct kernel > panics protect the driver from being unbound as we should not be > unbinding it before those dangling pointers have been made safe. > > According to the documentation found inside drivers/gpu/drm/drm_drv.c, > drm_dev_unplug() should be used instead of drm_dev_unregister() in > order to make a device inaccessible to users as soon as it is unpluged. > Follow that advice to make those possibly dangling pointers safe, > protected by DRM layer from a user who is otherwise left pointing into > possibly reused kernel memory after the driver has been unbound from > the device. Once done, also cancel inflight operations immediately by > calling i915_gem_set_wedged(). > > Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@xxxxxxxxx> > Reviewed-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/i915/i915_drv.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index 9df65d386d11..66163378c481 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -1596,7 +1596,7 @@ static void i915_driver_unregister(struct drm_i915_private *dev_priv) > i915_pmu_unregister(dev_priv); > > i915_teardown_sysfs(dev_priv); > - drm_dev_unregister(&dev_priv->drm); > + drm_dev_unplug(&dev_priv->drm); > > i915_gem_shrinker_unregister(dev_priv); > } > -- > 2.20.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx