Re: [PATCH] drm: inhibit drm drivers register to uninitialized drm core
From: Greg Kroah-Hartman
Date: Tue Jul 11 2017 - 05:41:40 EST
On Mon, Jul 10, 2017 at 08:00:37PM +0200, Daniel Vetter wrote:
> On Mon, Jul 10, 2017 at 9:14 AM, Alexandru Moise
> <00moses.alexander00@xxxxxxxxx> wrote:
> > On Mon, Jul 10, 2017 at 08:52:46AM +0200, Daniel Vetter wrote:
> >> On Sat, Jul 08, 2017 at 11:43:52PM +0200, Alexandru Moise wrote:
> >> > If the DRM core fails to init for whatever reason, ensure that
> >> > no driver ever calls drm_dev_register().
> >> >
> >> > This is best done at drm_dev_init() as it covers drivers that call
> >> > drm_dev_alloc() as well as drivers that prefer to embed struct
> >> > drm_device into their own device struct and call drm_dev_init()
> >> > themselves.
> >> >
> >> > In my case I had so many dynamic device majors used that the major
> >> > number for DRM (226) was stolen, causing DRM core init to fail after
> >> > failing to register a chrdev, and ultimately calling debugfs_remove()
> >> > on drm_debugfs_root in drm_core_exit().
Note, there are patches in my "to-apply" queue to prevent that from
happening, that should show up in 4.14-rc1. So that shouldn't be an
issue in the future.
> I feared that would be the answer :-/ Still feels funny that everyone
> will need to hand-roll this, or does everyone simply assume that their
> subsystem's module_init never fails?
How would we not "hand-roll" this? Every subsystem works a bit
differently. But if you can think of a way to make this generic, that
would be great...