Hi On Mon, Jan 20, 2014 at 8:21 AM, Daniel Vetter <daniel.vetter@xxxxxxxx> wrote: > At least drm/i915 expects that the obj->dev pointer is set even in > failure paths. Specifically when the shmem initialization fails we > call i915_gem_object_free which needs to deref obj->base.dev to get at > the slab pointer in the device private structure. And the shmem > allocation can easily fail when userspace is hitting open file limits. > > Doing the structure init even when the shmem file allocation fails > prevents this Oops. Makes the error-paths simpler, and drm_gem_private_object_init() doesn't allocate anything, so looks good: Reviewed-by: David Herrmann <dh.herrmann@xxxxxxxxx> Thanks David > Testcase: igt/gem_fd_exhaustion > Reported-and-Suggested-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > References: http://lists.freedesktop.org/archives/intel-gfx/2014-January/038433.html > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/drm_gem.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c > index 3ff39bb0402d..31c919903cd0 100644 > --- a/drivers/gpu/drm/drm_gem.c > +++ b/drivers/gpu/drm/drm_gem.c > @@ -129,11 +129,12 @@ int drm_gem_object_init(struct drm_device *dev, > { > struct file *filp; > > + drm_gem_private_object_init(dev, obj, size); > + > filp = shmem_file_setup("drm mm object", size, VM_NORESERVE); > if (IS_ERR(filp)) > return PTR_ERR(filp); > > - drm_gem_private_object_init(dev, obj, size); > obj->filp = filp; > > return 0; > -- > 1.8.1.4 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html