1. 14 7月, 2017 6 次提交
  2. 13 7月, 2017 11 次提交
  3. 11 7月, 2017 1 次提交
    • A
      drm: inhibit drm drivers register to uninitialized drm core · 371c2279
      Alexandru Moise 提交于
      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().
      
      After drm core failed to init, VGEM was still calling drm_dev_register(),
      ultimately leading to drm_debugfs_init(), with drm_debugfs_root passed
      as the root for the new debugfs dir at debugfs_create_dir().
      
      This led to a kernel panic once we were either derefencing root->d_inode
      while it was NULL or calling root->d_inode->i_op->lookup() while it was
      NULL in debugfs at inode_lock() or lookup_*().
      Signed-off-by: NAlexandru Moise <00moses.alexander00@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170708214352.GA27205@gmail.com
      371c2279
  4. 06 7月, 2017 22 次提交