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
)
33 rc
= security_inode_init_security(inode
, dir
, &name
, &value
, &len
);
35 if (rc
== -EOPNOTSUPP
)
39 rc
= do_jffs2_setxattr(inode
, JFFS2_XPREFIX_SECURITY
, name
, value
, len
, 0);
46 /* ---- XATTR Handler for "security.*" ----------------- */
47 static int jffs2_security_getxattr(struct dentry
*dentry
, const char *name
,
48 void *buffer
, size_t size
, int type
)
50 if (!strcmp(name
, ""))
53 return do_jffs2_getxattr(dentry
->d_inode
, JFFS2_XPREFIX_SECURITY
,
57 static int jffs2_security_setxattr(struct dentry
*dentry
, const char *name
,
58 const void *buffer
, size_t size
, int flags
, int type
)
60 if (!strcmp(name
, ""))
63 return do_jffs2_setxattr(dentry
->d_inode
, JFFS2_XPREFIX_SECURITY
,
64 name
, buffer
, size
, flags
);
67 static size_t jffs2_security_listxattr(struct dentry
*dentry
, char *list
,
68 size_t list_size
, const char *name
, size_t name_len
, int type
)
70 size_t retlen
= XATTR_SECURITY_PREFIX_LEN
+ name_len
+ 1;
72 if (list
&& retlen
<= list_size
) {
73 strcpy(list
, XATTR_SECURITY_PREFIX
);
74 strcpy(list
+ XATTR_SECURITY_PREFIX_LEN
, name
);
80 struct xattr_handler jffs2_security_xattr_handler
= {
81 .prefix
= XATTR_SECURITY_PREFIX
,
82 .list
= jffs2_security_listxattr
,
83 .set
= jffs2_security_setxattr
,
84 .get
= jffs2_security_getxattr