Hi

On Mon, Jan 20, 2014 at 8:21 AM, Daniel Vetter <[email protected]> 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 <[email protected]>

Thanks
David

> Testcase: igt/gem_fd_exhaustion
> Reported-and-Suggested-by: Linus Torvalds <[email protected]>
> Cc: Linus Torvalds <[email protected]>
> References: 
> http://lists.freedesktop.org/archives/intel-gfx/2014-January/038433.html
> Cc: [email protected]
> Signed-off-by: Daniel Vetter <[email protected]>
> ---
>  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
> [email protected]
> 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to