Lines Matching refs:blob

529 	struct drm_property_blob *blob =  in drm_property_free_blob()  local
532 mutex_lock(&blob->dev->mode_config.blob_lock); in drm_property_free_blob()
533 list_del(&blob->head_global); in drm_property_free_blob()
534 mutex_unlock(&blob->dev->mode_config.blob_lock); in drm_property_free_blob()
536 drm_mode_object_unregister(blob->dev, &blob->base); in drm_property_free_blob()
538 kvfree(blob); in drm_property_free_blob()
559 struct drm_property_blob *blob; in drm_property_create_blob() local
565 blob = kvzalloc(sizeof(struct drm_property_blob)+length, GFP_KERNEL); in drm_property_create_blob()
566 if (!blob) in drm_property_create_blob()
571 INIT_LIST_HEAD(&blob->head_file); in drm_property_create_blob()
572 blob->data = (void *)blob + sizeof(*blob); in drm_property_create_blob()
573 blob->length = length; in drm_property_create_blob()
574 blob->dev = dev; in drm_property_create_blob()
577 memcpy(blob->data, data, length); in drm_property_create_blob()
579 ret = __drm_mode_object_add(dev, &blob->base, DRM_MODE_OBJECT_BLOB, in drm_property_create_blob()
582 kvfree(blob); in drm_property_create_blob()
587 list_add_tail(&blob->head_global, in drm_property_create_blob()
591 return blob; in drm_property_create_blob()
601 void drm_property_blob_put(struct drm_property_blob *blob) in drm_property_blob_put() argument
603 if (!blob) in drm_property_blob_put()
606 drm_mode_object_put(&blob->base); in drm_property_blob_put()
613 struct drm_property_blob *blob, *bt; in drm_property_destroy_user_blobs() local
619 list_for_each_entry_safe(blob, bt, &file_priv->blobs, head_file) { in drm_property_destroy_user_blobs()
620 list_del_init(&blob->head_file); in drm_property_destroy_user_blobs()
621 drm_property_blob_put(blob); in drm_property_destroy_user_blobs()
632 struct drm_property_blob *drm_property_blob_get(struct drm_property_blob *blob) in drm_property_blob_get() argument
634 drm_mode_object_get(&blob->base); in drm_property_blob_get()
635 return blob; in drm_property_blob_get()
655 struct drm_property_blob *blob = NULL; in drm_property_lookup_blob() local
659 blob = obj_to_blob(obj); in drm_property_lookup_blob()
660 return blob; in drm_property_lookup_blob()
739 bool drm_property_replace_blob(struct drm_property_blob **blob, in drm_property_replace_blob() argument
742 struct drm_property_blob *old_blob = *blob; in drm_property_replace_blob()
750 *blob = new_blob; in drm_property_replace_blob()
772 struct drm_property_blob **blob, in drm_property_replace_blob_from_id() argument
806 *replaced |= drm_property_replace_blob(blob, new_blob); in drm_property_replace_blob_from_id()
817 struct drm_property_blob *blob; in drm_mode_getblob_ioctl() local
823 blob = drm_property_lookup_blob(dev, out_resp->blob_id); in drm_mode_getblob_ioctl()
824 if (!blob) in drm_mode_getblob_ioctl()
827 if (out_resp->length == blob->length) { in drm_mode_getblob_ioctl()
829 blob->data, in drm_mode_getblob_ioctl()
830 blob->length)) { in drm_mode_getblob_ioctl()
835 out_resp->length = blob->length; in drm_mode_getblob_ioctl()
837 drm_property_blob_put(blob); in drm_mode_getblob_ioctl()
846 struct drm_property_blob *blob; in drm_mode_createblob_ioctl() local
852 blob = drm_property_create_blob(dev, out_resp->length, NULL); in drm_mode_createblob_ioctl()
853 if (IS_ERR(blob)) in drm_mode_createblob_ioctl()
854 return PTR_ERR(blob); in drm_mode_createblob_ioctl()
856 if (copy_from_user(blob->data, in drm_mode_createblob_ioctl()
867 out_resp->blob_id = blob->base.id; in drm_mode_createblob_ioctl()
868 list_add_tail(&blob->head_file, &file_priv->blobs); in drm_mode_createblob_ioctl()
874 drm_property_blob_put(blob); in drm_mode_createblob_ioctl()
882 struct drm_property_blob *blob = NULL, *bt; in drm_mode_destroyblob_ioctl() local
889 blob = drm_property_lookup_blob(dev, out_resp->blob_id); in drm_mode_destroyblob_ioctl()
890 if (!blob) in drm_mode_destroyblob_ioctl()
896 if (bt == blob) { in drm_mode_destroyblob_ioctl()
909 list_del_init(&blob->head_file); in drm_mode_destroyblob_ioctl()
913 drm_property_blob_put(blob); in drm_mode_destroyblob_ioctl()
914 drm_property_blob_put(blob); in drm_mode_destroyblob_ioctl()
920 drm_property_blob_put(blob); in drm_mode_destroyblob_ioctl()
961 struct drm_property_blob *blob; in drm_property_change_valid_get() local
966 blob = drm_property_lookup_blob(property->dev, value); in drm_property_change_valid_get()
967 if (blob) { in drm_property_change_valid_get()
968 *ref = &blob->base; in drm_property_change_valid_get()