LCOV - code coverage report
Current view: top level - include/linux - xattr.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 4 0.0 %
Date: 2023-03-27 20:00:47 Functions: 0 1 0.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : /*
       3             :   File: linux/xattr.h
       4             : 
       5             :   Extended attributes handling.
       6             : 
       7             :   Copyright (C) 2001 by Andreas Gruenbacher <a.gruenbacher@computer.org>
       8             :   Copyright (c) 2001-2002 Silicon Graphics, Inc.  All Rights Reserved.
       9             :   Copyright (c) 2004 Red Hat, Inc., James Morris <jmorris@redhat.com>
      10             : */
      11             : #ifndef _LINUX_XATTR_H
      12             : #define _LINUX_XATTR_H
      13             : 
      14             : 
      15             : #include <linux/slab.h>
      16             : #include <linux/types.h>
      17             : #include <linux/spinlock.h>
      18             : #include <linux/mm.h>
      19             : #include <linux/user_namespace.h>
      20             : #include <uapi/linux/xattr.h>
      21             : 
      22             : struct inode;
      23             : struct dentry;
      24             : 
      25           0 : static inline bool is_posix_acl_xattr(const char *name)
      26             : {
      27           0 :         return (strcmp(name, XATTR_NAME_POSIX_ACL_ACCESS) == 0) ||
      28           0 :                (strcmp(name, XATTR_NAME_POSIX_ACL_DEFAULT) == 0);
      29             : }
      30             : 
      31             : /*
      32             :  * struct xattr_handler: When @name is set, match attributes with exactly that
      33             :  * name.  When @prefix is set instead, match attributes with that prefix and
      34             :  * with a non-empty suffix.
      35             :  */
      36             : struct xattr_handler {
      37             :         const char *name;
      38             :         const char *prefix;
      39             :         int flags;      /* fs private flags */
      40             :         bool (*list)(struct dentry *dentry);
      41             :         int (*get)(const struct xattr_handler *, struct dentry *dentry,
      42             :                    struct inode *inode, const char *name, void *buffer,
      43             :                    size_t size);
      44             :         int (*set)(const struct xattr_handler *,
      45             :                    struct mnt_idmap *idmap, struct dentry *dentry,
      46             :                    struct inode *inode, const char *name, const void *buffer,
      47             :                    size_t size, int flags);
      48             : };
      49             : 
      50             : const char *xattr_full_name(const struct xattr_handler *, const char *);
      51             : 
      52             : struct xattr {
      53             :         const char *name;
      54             :         void *value;
      55             :         size_t value_len;
      56             : };
      57             : 
      58             : ssize_t __vfs_getxattr(struct dentry *, struct inode *, const char *, void *, size_t);
      59             : ssize_t vfs_getxattr(struct mnt_idmap *, struct dentry *, const char *,
      60             :                      void *, size_t);
      61             : ssize_t vfs_listxattr(struct dentry *d, char *list, size_t size);
      62             : int __vfs_setxattr(struct mnt_idmap *, struct dentry *, struct inode *,
      63             :                    const char *, const void *, size_t, int);
      64             : int __vfs_setxattr_noperm(struct mnt_idmap *, struct dentry *,
      65             :                           const char *, const void *, size_t, int);
      66             : int __vfs_setxattr_locked(struct mnt_idmap *, struct dentry *,
      67             :                           const char *, const void *, size_t, int,
      68             :                           struct inode **);
      69             : int vfs_setxattr(struct mnt_idmap *, struct dentry *, const char *,
      70             :                  const void *, size_t, int);
      71             : int __vfs_removexattr(struct mnt_idmap *, struct dentry *, const char *);
      72             : int __vfs_removexattr_locked(struct mnt_idmap *, struct dentry *,
      73             :                              const char *, struct inode **);
      74             : int vfs_removexattr(struct mnt_idmap *, struct dentry *, const char *);
      75             : 
      76             : ssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size);
      77             : int vfs_getxattr_alloc(struct mnt_idmap *idmap,
      78             :                        struct dentry *dentry, const char *name,
      79             :                        char **xattr_value, size_t size, gfp_t flags);
      80             : 
      81             : int xattr_supported_namespace(struct inode *inode, const char *prefix);
      82             : 
      83             : static inline const char *xattr_prefix(const struct xattr_handler *handler)
      84             : {
      85           0 :         return handler->prefix ?: handler->name;
      86             : }
      87             : 
      88             : struct simple_xattrs {
      89             :         struct rb_root rb_root;
      90             :         rwlock_t lock;
      91             : };
      92             : 
      93             : struct simple_xattr {
      94             :         struct rb_node rb_node;
      95             :         char *name;
      96             :         size_t size;
      97             :         char value[];
      98             : };
      99             : 
     100             : void simple_xattrs_init(struct simple_xattrs *xattrs);
     101             : void simple_xattrs_free(struct simple_xattrs *xattrs);
     102             : struct simple_xattr *simple_xattr_alloc(const void *value, size_t size);
     103             : int simple_xattr_get(struct simple_xattrs *xattrs, const char *name,
     104             :                      void *buffer, size_t size);
     105             : int simple_xattr_set(struct simple_xattrs *xattrs, const char *name,
     106             :                      const void *value, size_t size, int flags,
     107             :                      ssize_t *removed_size);
     108             : ssize_t simple_xattr_list(struct inode *inode, struct simple_xattrs *xattrs,
     109             :                           char *buffer, size_t size);
     110             : void simple_xattr_add(struct simple_xattrs *xattrs,
     111             :                       struct simple_xattr *new_xattr);
     112             : 
     113             : #endif  /* _LINUX_XATTR_H */

Generated by: LCOV version 1.14