Lines Matching refs:attr
323 struct uverbs_attr_spec attr; member
521 .attr = { .type = UVERBS_ATTR_TYPE_IDRS_ARRAY, \
537 .attr = { .type = UVERBS_ATTR_TYPE_IDR, \
547 .attr = { .type = UVERBS_ATTR_TYPE_FD, \
555 .attr = { .type = UVERBS_ATTR_TYPE_PTR_IN, \
562 .attr = { .type = UVERBS_ATTR_TYPE_PTR_OUT, \
570 .attr = { .type = UVERBS_ATTR_TYPE_ENUM_IN, \
698 const struct uverbs_attr *attr = uverbs_attr_get(attrs_bundle, idx); in uverbs_attr_get_enum_id() local
700 if (IS_ERR(attr)) in uverbs_attr_get_enum_id()
701 return PTR_ERR(attr); in uverbs_attr_get_enum_id()
703 return attr->ptr_attr.enum_id; in uverbs_attr_get_enum_id()
709 const struct uverbs_attr *attr; in uverbs_attr_get_obj() local
711 attr = uverbs_attr_get(attrs_bundle, idx); in uverbs_attr_get_obj()
712 if (IS_ERR(attr)) in uverbs_attr_get_obj()
713 return ERR_CAST(attr); in uverbs_attr_get_obj()
715 return attr->obj_attr.uobject->object; in uverbs_attr_get_obj()
721 const struct uverbs_attr *attr = uverbs_attr_get(attrs_bundle, idx); in uverbs_attr_get_uobject() local
723 if (IS_ERR(attr)) in uverbs_attr_get_uobject()
724 return ERR_CAST(attr); in uverbs_attr_get_uobject()
726 return attr->obj_attr.uobject; in uverbs_attr_get_uobject()
732 const struct uverbs_attr *attr = uverbs_attr_get(attrs_bundle, idx); in uverbs_attr_get_len() local
734 if (IS_ERR(attr)) in uverbs_attr_get_len()
735 return PTR_ERR(attr); in uverbs_attr_get_len()
737 return attr->ptr_attr.len; in uverbs_attr_get_len()
774 const struct uverbs_attr *attr = in uverbs_attr_get_uobjs_arr() local
777 if (IS_ERR(attr)) { in uverbs_attr_get_uobjs_arr()
782 *arr = attr->objs_arr_attr.uobjects; in uverbs_attr_get_uobjs_arr()
784 return attr->objs_arr_attr.len; in uverbs_attr_get_uobjs_arr()
787 static inline bool uverbs_attr_ptr_is_inline(const struct uverbs_attr *attr) in uverbs_attr_ptr_is_inline() argument
789 return attr->ptr_attr.len <= sizeof(attr->ptr_attr.data); in uverbs_attr_ptr_is_inline()
795 struct uverbs_attr *attr = __DECONST(struct uverbs_attr *, uverbs_attr_get(attrs_bundle, idx)); in uverbs_attr_get_alloced_ptr() local
797 if (IS_ERR(attr)) in uverbs_attr_get_alloced_ptr()
798 return (void *)attr; in uverbs_attr_get_alloced_ptr()
800 return uverbs_attr_ptr_is_inline(attr) ? in uverbs_attr_get_alloced_ptr()
801 (void *)&attr->ptr_attr.data : attr->ptr_attr.ptr; in uverbs_attr_get_alloced_ptr()
809 const struct uverbs_attr *attr = uverbs_attr_get(attrs_bundle, idx); in _uverbs_copy_from() local
811 if (IS_ERR(attr)) in _uverbs_copy_from()
812 return PTR_ERR(attr); in _uverbs_copy_from()
819 if (unlikely(size < attr->ptr_attr.len)) in _uverbs_copy_from()
822 if (uverbs_attr_ptr_is_inline(attr)) in _uverbs_copy_from()
823 memcpy(to, &attr->ptr_attr.data, attr->ptr_attr.len); in _uverbs_copy_from()
824 else if (copy_from_user(to, u64_to_user_ptr(attr->ptr_attr.data), in _uverbs_copy_from()
825 attr->ptr_attr.len)) in _uverbs_copy_from()
836 const struct uverbs_attr *attr = uverbs_attr_get(attrs_bundle, idx); in _uverbs_copy_from_or_zero() local
839 if (IS_ERR(attr)) in _uverbs_copy_from_or_zero()
840 return PTR_ERR(attr); in _uverbs_copy_from_or_zero()
842 min_size = min_t(size_t, size, attr->ptr_attr.len); in _uverbs_copy_from_or_zero()
844 if (uverbs_attr_ptr_is_inline(attr)) in _uverbs_copy_from_or_zero()
845 memcpy(to, &attr->ptr_attr.data, min_size); in _uverbs_copy_from_or_zero()
846 else if (copy_from_user(to, u64_to_user_ptr(attr->ptr_attr.data), in _uverbs_copy_from_or_zero()