aboutsummaryrefslogtreecommitdiffstats
path: root/fs/kernfs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/kernfs/inode.c')
-rw-r--r--fs/kernfs/inode.c48
1 files changed, 39 insertions, 9 deletions
diff --git a/fs/kernfs/inode.c b/fs/kernfs/inode.c
index a365088caa3c..673ef598d97d 100644
--- a/fs/kernfs/inode.c
+++ b/fs/kernfs/inode.c
@@ -288,12 +288,11 @@ int kernfs_iop_permission(struct inode *inode, int mask)
288 return generic_permission(inode, mask); 288 return generic_permission(inode, mask);
289} 289}
290 290
291static int kernfs_xattr_get(const struct xattr_handler *handler, 291static int kernfs_node_xattr_get(const struct xattr_handler *handler,
292 struct dentry *unused, struct inode *inode, 292 struct kernfs_node *kn, const char *suffix,
293 const char *suffix, void *value, size_t size) 293 void *value, size_t size)
294{ 294{
295 const char *name = xattr_full_name(handler, suffix); 295 const char *name = xattr_full_name(handler, suffix);
296 struct kernfs_node *kn = inode->i_private;
297 struct kernfs_iattrs *attrs; 296 struct kernfs_iattrs *attrs;
298 297
299 attrs = kernfs_iattrs_noalloc(kn); 298 attrs = kernfs_iattrs_noalloc(kn);
@@ -303,13 +302,11 @@ static int kernfs_xattr_get(const struct xattr_handler *handler,
303 return simple_xattr_get(&attrs->xattrs, name, value, size); 302 return simple_xattr_get(&attrs->xattrs, name, value, size);
304} 303}
305 304
306static int kernfs_xattr_set(const struct xattr_handler *handler, 305static int kernfs_node_xattr_set(const struct xattr_handler *handler,
307 struct dentry *unused, struct inode *inode, 306 struct kernfs_node *kn, const char *suffix,
308 const char *suffix, const void *value, 307 const void *value, size_t size, int flags)
309 size_t size, int flags)
310{ 308{
311 const char *name = xattr_full_name(handler, suffix); 309 const char *name = xattr_full_name(handler, suffix);
312 struct kernfs_node *kn = inode->i_private;
313 struct kernfs_iattrs *attrs; 310 struct kernfs_iattrs *attrs;
314 311
315 attrs = kernfs_iattrs(kn); 312 attrs = kernfs_iattrs(kn);
@@ -319,6 +316,25 @@ static int kernfs_xattr_set(const struct xattr_handler *handler,
319 return simple_xattr_set(&attrs->xattrs, name, value, size, flags); 316 return simple_xattr_set(&attrs->xattrs, name, value, size, flags);
320} 317}
321 318
319static int kernfs_xattr_get(const struct xattr_handler *handler,
320 struct dentry *unused, struct inode *inode,
321 const char *suffix, void *value, size_t size)
322{
323 struct kernfs_node *kn = inode->i_private;
324
325 return kernfs_node_xattr_get(handler, kn, suffix, value, size);
326}
327
328static int kernfs_xattr_set(const struct xattr_handler *handler,
329 struct dentry *unused, struct inode *inode,
330 const char *suffix, const void *value,
331 size_t size, int flags)
332{
333 struct kernfs_node *kn = inode->i_private;
334
335 return kernfs_node_xattr_set(handler, kn, suffix, value, size, flags);
336}
337
322static const struct xattr_handler kernfs_trusted_xattr_handler = { 338static const struct xattr_handler kernfs_trusted_xattr_handler = {
323 .prefix = XATTR_TRUSTED_PREFIX, 339 .prefix = XATTR_TRUSTED_PREFIX,
324 .get = kernfs_xattr_get, 340 .get = kernfs_xattr_get,
@@ -336,3 +352,17 @@ const struct xattr_handler *kernfs_xattr_handlers[] = {
336 &kernfs_security_xattr_handler, 352 &kernfs_security_xattr_handler,
337 NULL 353 NULL
338}; 354};
355
356int kernfs_security_xattr_get(struct kernfs_node *kn, const char *suffix,
357 void *value, size_t size)
358{
359 return kernfs_node_xattr_get(&kernfs_security_xattr_handler,
360 kn, suffix, value, size);
361}
362
363int kernfs_security_xattr_set(struct kernfs_node *kn, const char *suffix,
364 void *value, size_t size, int flags)
365{
366 return kernfs_node_xattr_set(&kernfs_security_xattr_handler,
367 kn, suffix, value, size, flags);
368}