The previous patch used int instead of size_t for the xattr value length. A new patch just for include/linux/security.h is appended. thanks, -serge Signed-off-by: Serge Hallyn <serue@private> -- include/linux/security.h | 30 +++++++++++++++++++----------- Index: linux-2.6.13-rc6-mm1/include/linux/security.h =================================================================== --- linux-2.6.13-rc6-mm1.orig/include/linux/security.h 2005-08-21 21:19:32.000000000 -0500 +++ linux-2.6.13-rc6-mm1/include/linux/security.h 2005-08-22 14:46:21.000000000 -0500 @@ -161,6 +161,14 @@ struct swap_info_struct; #ifdef CONFIG_SECURITY +struct xattr_data { + struct list_head list; + char *name; + void *value; + size_t len; +}; + + /** * struct security_operations - main security structure * @@ -343,9 +351,13 @@ struct swap_info_struct; * then it should return -EOPNOTSUPP to skip this processing. * @inode contains the inode structure of the newly created inode. * @dir contains the inode structure of the parent directory. - * @name will be set to the allocated name suffix (e.g. selinux). - * @value will be set to the allocated attribute value. - * @len will be set to the length of the value. + * @head, if not null, points to a listhead to which to append a + * newly allocated struct xattr_data with the following data: + * @data->name will be set to the allocated name suffix + * (e.g. selinux). + * @data->value will be set to the allocated attribute value. + * @data->len will be set to the length of the value. + * @data->list is used to add the data to the list_head * Returns 0 if @name and @value have been successfully set, * -EOPNOTSUPP if no security attribute is needed, or * -ENOMEM on memory allocation failure. @@ -1146,7 +1158,7 @@ struct security_operations { int (*inode_alloc_security) (struct inode *inode); void (*inode_free_security) (struct inode *inode); int (*inode_init_security) (struct inode *inode, struct inode *dir, - char **name, void **value, size_t *len); + struct list_head *head); int (*inode_create) (struct inode *dir, struct dentry *dentry, int mode); int (*inode_link) (struct dentry *old_dentry, @@ -1497,13 +1509,11 @@ static inline void security_inode_free ( static inline int security_inode_init_security (struct inode *inode, struct inode *dir, - char **name, - void **value, - size_t *len) + struct list_head *head) { if (unlikely (IS_PRIVATE (inode))) return -EOPNOTSUPP; - return security_ops->inode_init_security (inode, dir, name, value, len); + return security_ops->inode_init_security (inode, dir, head); } static inline int security_inode_create (struct inode *dir, @@ -2186,9 +2196,7 @@ static inline void security_inode_free ( static inline int security_inode_init_security (struct inode *inode, struct inode *dir, - char **name, - void **value, - size_t *len) + struct list_head *head) { return -EOPNOTSUPP; }
This archive was generated by hypermail 2.1.3 : Mon Aug 22 2005 - 14:37:00 PDT