Re: [PATCH] drm/gem: Always initialize the gem object in object_init

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]