root/fs/ext4/xattr_security.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ext4_xattr_security_get
  2. ext4_xattr_security_set
  3. ext4_initxattrs
  4. ext4_init_security

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * linux/fs/ext4/xattr_security.c
   4  * Handler for storing security labels as extended attributes.
   5  */
   6 
   7 #include <linux/string.h>
   8 #include <linux/fs.h>
   9 #include <linux/security.h>
  10 #include <linux/slab.h>
  11 #include "ext4_jbd2.h"
  12 #include "ext4.h"
  13 #include "xattr.h"
  14 
  15 static int
  16 ext4_xattr_security_get(const struct xattr_handler *handler,
  17                         struct dentry *unused, struct inode *inode,
  18                         const char *name, void *buffer, size_t size)
  19 {
  20         return ext4_xattr_get(inode, EXT4_XATTR_INDEX_SECURITY,
  21                               name, buffer, size);
  22 }
  23 
  24 static int
  25 ext4_xattr_security_set(const struct xattr_handler *handler,
  26                         struct dentry *unused, struct inode *inode,
  27                         const char *name, const void *value,
  28                         size_t size, int flags)
  29 {
  30         return ext4_xattr_set(inode, EXT4_XATTR_INDEX_SECURITY,
  31                               name, value, size, flags);
  32 }
  33 
  34 static int
  35 ext4_initxattrs(struct inode *inode, const struct xattr *xattr_array,
  36                 void *fs_info)
  37 {
  38         const struct xattr *xattr;
  39         handle_t *handle = fs_info;
  40         int err = 0;
  41 
  42         for (xattr = xattr_array; xattr->name != NULL; xattr++) {
  43                 err = ext4_xattr_set_handle(handle, inode,
  44                                             EXT4_XATTR_INDEX_SECURITY,
  45                                             xattr->name, xattr->value,
  46                                             xattr->value_len, XATTR_CREATE);
  47                 if (err < 0)
  48                         break;
  49         }
  50         return err;
  51 }
  52 
  53 int
  54 ext4_init_security(handle_t *handle, struct inode *inode, struct inode *dir,
  55                    const struct qstr *qstr)
  56 {
  57         return security_inode_init_security(inode, dir, qstr,
  58                                             &ext4_initxattrs, handle);
  59 }
  60 
  61 const struct xattr_handler ext4_xattr_security_handler = {
  62         .prefix = XATTR_SECURITY_PREFIX,
  63         .get    = ext4_xattr_security_get,
  64         .set    = ext4_xattr_security_set,
  65 };

/* [<][>][^][v][top][bottom][index][help] */