Blame view
fs/jffs2/security.c
2.3 KB
652ecc20d [JFFS2][XATTR] Un... |
1 2 |
/* * JFFS2 -- Journalling Flash File System, Version 2. |
aa98d7cf5 [JFFS2][XATTR] XA... |
3 |
* |
c00c310ea [JFFS2] Tidy up l... |
4 |
* Copyright © 2006 NEC Corporation |
aa98d7cf5 [JFFS2][XATTR] XA... |
5 |
* |
652ecc20d [JFFS2][XATTR] Un... |
6 7 8 9 10 |
* Created by KaiGai Kohei <kaigai@ak.jp.nec.com> * * For licensing information, see the file 'LICENCE' in this directory. * */ |
c00c310ea [JFFS2] Tidy up l... |
11 |
|
aa98d7cf5 [JFFS2][XATTR] XA... |
12 13 14 15 16 17 18 19 20 21 22 23 |
#include <linux/kernel.h> #include <linux/slab.h> #include <linux/fs.h> #include <linux/time.h> #include <linux/pagemap.h> #include <linux/highmem.h> #include <linux/crc32.h> #include <linux/jffs2.h> #include <linux/xattr.h> #include <linux/mtd/mtd.h> #include <linux/security.h> #include "nodelist.h" |
9d8f13ba3 security: new sec... |
24 25 26 |
/* ---- Initial Security Label(s) Attachment callback --- */ int jffs2_initxattrs(struct inode *inode, const struct xattr *xattr_array, void *fs_info) |
aa98d7cf5 [JFFS2][XATTR] XA... |
27 |
{ |
9d8f13ba3 security: new sec... |
28 29 |
const struct xattr *xattr; int err = 0; |
aa98d7cf5 [JFFS2][XATTR] XA... |
30 |
|
9d8f13ba3 security: new sec... |
31 32 33 34 35 36 |
for (xattr = xattr_array; xattr->name != NULL; xattr++) { err = do_jffs2_setxattr(inode, JFFS2_XPREFIX_SECURITY, xattr->name, xattr->value, xattr->value_len, 0); if (err < 0) break; |
aa98d7cf5 [JFFS2][XATTR] XA... |
37 |
} |
9d8f13ba3 security: new sec... |
38 39 |
return err; } |
aa98d7cf5 [JFFS2][XATTR] XA... |
40 |
|
9d8f13ba3 security: new sec... |
41 42 43 44 45 46 |
/* ---- Initial Security Label(s) Attachment ----------- */ int jffs2_init_security(struct inode *inode, struct inode *dir, const struct qstr *qstr) { return security_inode_init_security(inode, dir, qstr, &jffs2_initxattrs, NULL); |
aa98d7cf5 [JFFS2][XATTR] XA... |
47 48 49 |
} /* ---- XATTR Handler for "security.*" ----------------- */ |
431547b3c sanitize xattr ha... |
50 51 |
static int jffs2_security_getxattr(struct dentry *dentry, const char *name, void *buffer, size_t size, int type) |
aa98d7cf5 [JFFS2][XATTR] XA... |
52 53 54 |
{ if (!strcmp(name, "")) return -EINVAL; |
431547b3c sanitize xattr ha... |
55 56 |
return do_jffs2_getxattr(dentry->d_inode, JFFS2_XPREFIX_SECURITY, name, buffer, size); |
aa98d7cf5 [JFFS2][XATTR] XA... |
57 |
} |
431547b3c sanitize xattr ha... |
58 59 |
static int jffs2_security_setxattr(struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags, int type) |
aa98d7cf5 [JFFS2][XATTR] XA... |
60 61 62 |
{ if (!strcmp(name, "")) return -EINVAL; |
431547b3c sanitize xattr ha... |
63 64 |
return do_jffs2_setxattr(dentry->d_inode, JFFS2_XPREFIX_SECURITY, name, buffer, size, flags); |
aa98d7cf5 [JFFS2][XATTR] XA... |
65 |
} |
431547b3c sanitize xattr ha... |
66 67 |
static size_t jffs2_security_listxattr(struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len, int type) |
aa98d7cf5 [JFFS2][XATTR] XA... |
68 69 70 71 72 73 74 75 76 77 |
{ size_t retlen = XATTR_SECURITY_PREFIX_LEN + name_len + 1; if (list && retlen <= list_size) { strcpy(list, XATTR_SECURITY_PREFIX); strcpy(list + XATTR_SECURITY_PREFIX_LEN, name); } return retlen; } |
365f0cb9d jffs2: constify x... |
78 |
const struct xattr_handler jffs2_security_xattr_handler = { |
aa98d7cf5 [JFFS2][XATTR] XA... |
79 80 81 82 83 |
.prefix = XATTR_SECURITY_PREFIX, .list = jffs2_security_listxattr, .set = jffs2_security_setxattr, .get = jffs2_security_getxattr }; |