2 * JFFS2 -- Journalling Flash File System, Version 2.
4 * Copyright © 2006 NEC Corporation
6 * Created by KaiGai Kohei <kaigai@ak.jp.nec.com>
8 * For licensing information, see the file 'LICENCE' in this directory.
12 #include <linux/kernel.h>
13 #include <linux/slab.h>
15 #include <linux/time.h>
16 #include <linux/pagemap.h>
17 #include <linux/highmem.h>
18 #include <linux/crc32.h>
19 #include <linux/jffs2.h>
20 #include <linux/xattr.h>
21 #include <linux/mtd/mtd.h>
22 #include <linux/security.h>
25 /* ---- Initial Security Label Attachment -------------- */
26 int jffs2_init_security(struct inode
*inode
, struct inode
*dir
,
27 const struct qstr
*qstr
)
34 rc
= security_inode_init_security(inode
, dir
, qstr
, &name
, &value
, &len
);
36 if (rc
== -EOPNOTSUPP
)
40 rc
= do_jffs2_setxattr(inode
, JFFS2_XPREFIX_SECURITY
, name
, value
, len
, 0);
47 /* ---- XATTR Handler for "security.*" ----------------- */
48 static int jffs2_security_getxattr(struct dentry
*dentry
, const char *name
,
49 void *buffer
, size_t size
, int type
)
51 if (!strcmp(name
, ""))
54 return do_jffs2_getxattr(dentry
->d_inode
, JFFS2_XPREFIX_SECURITY
,
58 static int jffs2_security_setxattr(struct dentry
*dentry
, const char *name
,
59 const void *buffer
, size_t size
, int flags
, int type
)
61 if (!strcmp(name
, ""))
64 return do_jffs2_setxattr(dentry
->d_inode
, JFFS2_XPREFIX_SECURITY
,
65 name
, buffer
, size
, flags
);
68 static size_t jffs2_security_listxattr(struct dentry
*dentry
, char *list
,
69 size_t list_size
, const char *name
, size_t name_len
, int type
)
71 size_t retlen
= XATTR_SECURITY_PREFIX_LEN
+ name_len
+ 1;
73 if (list
&& retlen
<= list_size
) {
74 strcpy(list
, XATTR_SECURITY_PREFIX
);
75 strcpy(list
+ XATTR_SECURITY_PREFIX_LEN
, name
);
81 const struct xattr_handler jffs2_security_xattr_handler
= {
82 .prefix
= XATTR_SECURITY_PREFIX
,
83 .list
= jffs2_security_listxattr
,
84 .set
= jffs2_security_setxattr
,
85 .get
= jffs2_security_getxattr