cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

xattr.h (3367B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3  File: linux/ext2_xattr.h
      4
      5  On-disk format of extended attributes for the ext2 filesystem.
      6
      7  (C) 2001 Andreas Gruenbacher, <a.gruenbacher@computer.org>
      8*/
      9
     10#include <linux/init.h>
     11#include <linux/xattr.h>
     12
     13/* Magic value in attribute blocks */
     14#define EXT2_XATTR_MAGIC		0xEA020000
     15
     16/* Maximum number of references to one attribute block */
     17#define EXT2_XATTR_REFCOUNT_MAX		1024
     18
     19/* Name indexes */
     20#define EXT2_XATTR_INDEX_USER			1
     21#define EXT2_XATTR_INDEX_POSIX_ACL_ACCESS	2
     22#define EXT2_XATTR_INDEX_POSIX_ACL_DEFAULT	3
     23#define EXT2_XATTR_INDEX_TRUSTED		4
     24#define	EXT2_XATTR_INDEX_LUSTRE			5
     25#define EXT2_XATTR_INDEX_SECURITY	        6
     26
     27struct ext2_xattr_header {
     28	__le32	h_magic;	/* magic number for identification */
     29	__le32	h_refcount;	/* reference count */
     30	__le32	h_blocks;	/* number of disk blocks used */
     31	__le32	h_hash;		/* hash value of all attributes */
     32	__u32	h_reserved[4];	/* zero right now */
     33};
     34
     35struct ext2_xattr_entry {
     36	__u8	e_name_len;	/* length of name */
     37	__u8	e_name_index;	/* attribute name index */
     38	__le16	e_value_offs;	/* offset in disk block of value */
     39	__le32	e_value_block;	/* disk block attribute is stored on (n/i) */
     40	__le32	e_value_size;	/* size of attribute value */
     41	__le32	e_hash;		/* hash value of name and value */
     42	char	e_name[];	/* attribute name */
     43};
     44
     45#define EXT2_XATTR_PAD_BITS		2
     46#define EXT2_XATTR_PAD		(1<<EXT2_XATTR_PAD_BITS)
     47#define EXT2_XATTR_ROUND		(EXT2_XATTR_PAD-1)
     48#define EXT2_XATTR_LEN(name_len) \
     49	(((name_len) + EXT2_XATTR_ROUND + \
     50	sizeof(struct ext2_xattr_entry)) & ~EXT2_XATTR_ROUND)
     51#define EXT2_XATTR_NEXT(entry) \
     52	( (struct ext2_xattr_entry *)( \
     53	  (char *)(entry) + EXT2_XATTR_LEN((entry)->e_name_len)) )
     54#define EXT2_XATTR_SIZE(size) \
     55	(((size) + EXT2_XATTR_ROUND) & ~EXT2_XATTR_ROUND)
     56
     57struct mb_cache;
     58
     59# ifdef CONFIG_EXT2_FS_XATTR
     60
     61extern const struct xattr_handler ext2_xattr_user_handler;
     62extern const struct xattr_handler ext2_xattr_trusted_handler;
     63extern const struct xattr_handler ext2_xattr_security_handler;
     64
     65extern ssize_t ext2_listxattr(struct dentry *, char *, size_t);
     66
     67extern int ext2_xattr_get(struct inode *, int, const char *, void *, size_t);
     68extern int ext2_xattr_set(struct inode *, int, const char *, const void *, size_t, int);
     69
     70extern void ext2_xattr_delete_inode(struct inode *);
     71
     72extern struct mb_cache *ext2_xattr_create_cache(void);
     73extern void ext2_xattr_destroy_cache(struct mb_cache *cache);
     74
     75extern const struct xattr_handler *ext2_xattr_handlers[];
     76
     77# else  /* CONFIG_EXT2_FS_XATTR */
     78
     79static inline int
     80ext2_xattr_get(struct inode *inode, int name_index,
     81	       const char *name, void *buffer, size_t size)
     82{
     83	return -EOPNOTSUPP;
     84}
     85
     86static inline int
     87ext2_xattr_set(struct inode *inode, int name_index, const char *name,
     88	       const void *value, size_t size, int flags)
     89{
     90	return -EOPNOTSUPP;
     91}
     92
     93static inline void
     94ext2_xattr_delete_inode(struct inode *inode)
     95{
     96}
     97
     98static inline void ext2_xattr_destroy_cache(struct mb_cache *cache)
     99{
    100}
    101
    102#define ext2_xattr_handlers NULL
    103#define ext2_listxattr NULL
    104
    105# endif  /* CONFIG_EXT2_FS_XATTR */
    106
    107#ifdef CONFIG_EXT2_FS_SECURITY
    108extern int ext2_init_security(struct inode *inode, struct inode *dir,
    109			      const struct qstr *qstr);
    110#else
    111static inline int ext2_init_security(struct inode *inode, struct inode *dir,
    112				     const struct qstr *qstr)
    113{
    114	return 0;
    115}
    116#endif