Hi Am 11.05.20 um 11:35 schrieb Daniel Vetter: > Just a bit of light paranoia. Also sprinkle this check over > drm_gem_shmem_get_sg_table, which should only be called when > exporting, same for the pin/unpin functions, on which it relies to > work correctly. > > Cc: Gerd Hoffmann > Cc: Rob Herring > Cc: Noralf Trønnes > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_gem_shmem_helper.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c > index 117a7841e284..f7011338813e 100644 > --- a/drivers/gpu/drm/drm_gem_shmem_helper.c > +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c > @@ -170,6 +170,8 @@ int drm_gem_shmem_get_pages(struct drm_gem_shmem_object *shmem) > { > int ret; > > + WARN_ON(shmem->base.import_attach); > + > ret = mutex_lock_interruptible(&shmem->pages_lock); > if (ret) > return ret; > @@ -225,6 +227,8 @@ int drm_gem_shmem_pin(struct drm_gem_object *obj) > { > struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); > > + WARN_ON(shmem->base.import_attach); > + I don't understand this change. If a driver pins pages it now has to check that the pages are not imported? > return drm_gem_shmem_get_pages(shmem); > } > EXPORT_SYMBOL(drm_gem_shmem_pin); > @@ -240,6 +244,8 @@ void drm_gem_shmem_unpin(struct drm_gem_object *obj) > { > struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); > > + WARN_ON(shmem->base.import_attach); > + > drm_gem_shmem_put_pages(shmem); > } > EXPORT_SYMBOL(drm_gem_shmem_unpin); > @@ -510,6 +516,8 @@ static void drm_gem_shmem_vm_open(struct vm_area_struct *vma) > struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); > int ret; > > + WARN_ON(shmem->base.import_attach); > + > ret = drm_gem_shmem_get_pages(shmem); > WARN_ON_ONCE(ret != 0); > > @@ -611,6 +619,8 @@ struct sg_table *drm_gem_shmem_get_sg_table(struct drm_gem_object *obj) > { > struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); > > + WARN_ON(shmem->base.import_attach); > + > return drm_prime_pages_to_sg(shmem->pages, obj->size >> PAGE_SHIFT); > } > EXPORT_SYMBOL_GPL(drm_gem_shmem_get_sg_table); > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer