Lines Matching +full:buffer +full:- +full:size

1 // SPDX-License-Identifier: GPL-2.0-or-later
19 afs_vnode_commit_status(op, &op->file[0]); in afs_acl_success()
24 kfree(op->acl); in afs_acl_put()
39 void *buffer, size_t size) in afs_xattr_get_acl() argument
46 op = afs_alloc_operation(NULL, vnode->volume); in afs_xattr_get_acl()
48 return -ENOMEM; in afs_xattr_get_acl()
51 op->ops = &afs_fetch_acl_operation; in afs_xattr_get_acl()
55 acl = op->acl; in afs_xattr_get_acl()
56 op->acl = NULL; in afs_xattr_get_acl()
60 ret = acl->size; in afs_xattr_get_acl()
61 if (size > 0) { in afs_xattr_get_acl()
62 if (acl->size <= size) in afs_xattr_get_acl()
63 memcpy(buffer, acl->data, acl->size); in afs_xattr_get_acl()
65 ret = -ERANGE; in afs_xattr_get_acl()
74 const void *buffer, size_t size) in afs_make_acl() argument
78 acl = kmalloc(struct_size(acl, data, size), GFP_KERNEL); in afs_make_acl()
84 acl->size = size; in afs_make_acl()
85 memcpy(acl->data, buffer, size); in afs_make_acl()
86 op->acl = acl; in afs_make_acl()
103 const void *buffer, size_t size, int flags) in afs_xattr_set_acl() argument
109 return -EINVAL; in afs_xattr_set_acl()
111 op = afs_alloc_operation(NULL, vnode->volume); in afs_xattr_set_acl()
113 return -ENOMEM; in afs_xattr_set_acl()
116 if (!afs_make_acl(op, buffer, size)) in afs_xattr_set_acl()
119 op->ops = &afs_store_acl_operation; in afs_xattr_set_acl()
132 /* Don't free op->yacl in .put here */
141 void *buffer, size_t size) in afs_xattr_get_yfs() argument
147 int which = 0, dsize, ret = -ENOMEM; in afs_xattr_get_yfs()
158 return -EOPNOTSUPP; in afs_xattr_get_yfs()
165 yacl->flags |= YFS_ACL_WANT_ACL; in afs_xattr_get_yfs()
167 yacl->flags |= YFS_ACL_WANT_VOL_ACL; in afs_xattr_get_yfs()
169 op = afs_alloc_operation(NULL, vnode->volume); in afs_xattr_get_yfs()
174 op->yacl = yacl; in afs_xattr_get_yfs()
175 op->ops = &yfs_fetch_opaque_acl_operation; in afs_xattr_get_yfs()
184 data = yacl->acl->data; in afs_xattr_get_yfs()
185 dsize = yacl->acl->size; in afs_xattr_get_yfs()
189 dsize = scnprintf(buf, sizeof(buf), "%u", yacl->inherit_flag); in afs_xattr_get_yfs()
193 dsize = scnprintf(buf, sizeof(buf), "%u", yacl->num_cleaned); in afs_xattr_get_yfs()
196 data = yacl->vol_acl->data; in afs_xattr_get_yfs()
197 dsize = yacl->vol_acl->size; in afs_xattr_get_yfs()
200 ret = -EOPNOTSUPP; in afs_xattr_get_yfs()
205 if (size > 0) { in afs_xattr_get_yfs()
206 if (dsize <= size) in afs_xattr_get_yfs()
207 memcpy(buffer, data, dsize); in afs_xattr_get_yfs()
209 ret = -ERANGE; in afs_xattr_get_yfs()
211 } else if (ret == -ENOTSUPP) { in afs_xattr_get_yfs()
212 ret = -ENODATA; in afs_xattr_get_yfs()
234 const void *buffer, size_t size, int flags) in afs_xattr_set_yfs() argument
242 return -EINVAL; in afs_xattr_set_yfs()
244 op = afs_alloc_operation(NULL, vnode->volume); in afs_xattr_set_yfs()
246 return -ENOMEM; in afs_xattr_set_yfs()
249 if (!afs_make_acl(op, buffer, size)) in afs_xattr_set_yfs()
252 op->ops = &yfs_store_opaque_acl2_operation; in afs_xattr_set_yfs()
254 if (ret == -ENOTSUPP) in afs_xattr_set_yfs()
255 ret = -ENODATA; in afs_xattr_set_yfs()
271 void *buffer, size_t size) in afs_xattr_get_cell() argument
274 struct afs_cell *cell = vnode->volume->cell; in afs_xattr_get_cell()
277 namelen = cell->name_len; in afs_xattr_get_cell()
278 if (size == 0) in afs_xattr_get_cell()
280 if (namelen > size) in afs_xattr_get_cell()
281 return -ERANGE; in afs_xattr_get_cell()
282 memcpy(buffer, cell->name, namelen); in afs_xattr_get_cell()
298 void *buffer, size_t size) in afs_xattr_get_fid() argument
304 /* The volume ID is 64-bit, the vnode ID is 96-bit and the in afs_xattr_get_fid()
305 * uniquifier is 32-bit. in afs_xattr_get_fid()
307 len = scnprintf(text, sizeof(text), "%llx:", vnode->fid.vid); in afs_xattr_get_fid()
308 if (vnode->fid.vnode_hi) in afs_xattr_get_fid()
309 len += scnprintf(text + len, sizeof(text) - len, "%x%016llx", in afs_xattr_get_fid()
310 vnode->fid.vnode_hi, vnode->fid.vnode); in afs_xattr_get_fid()
312 len += scnprintf(text + len, sizeof(text) - len, "%llx", in afs_xattr_get_fid()
313 vnode->fid.vnode); in afs_xattr_get_fid()
314 len += scnprintf(text + len, sizeof(text) - len, ":%x", in afs_xattr_get_fid()
315 vnode->fid.unique); in afs_xattr_get_fid()
317 if (size == 0) in afs_xattr_get_fid()
319 if (len > size) in afs_xattr_get_fid()
320 return -ERANGE; in afs_xattr_get_fid()
321 memcpy(buffer, text, len); in afs_xattr_get_fid()
336 void *buffer, size_t size) in afs_xattr_get_volume() argument
339 const char *volname = vnode->volume->name; in afs_xattr_get_volume()
343 if (size == 0) in afs_xattr_get_volume()
345 if (namelen > size) in afs_xattr_get_volume()
346 return -ERANGE; in afs_xattr_get_volume()
347 memcpy(buffer, volname, namelen); in afs_xattr_get_volume()