diff options
author | James Morris <jmorris@namei.org> | 2011-08-08 20:31:03 -0400 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2011-08-08 20:31:03 -0400 |
commit | 5a2f3a02aea164f4f59c0c3497772090a411b462 (patch) | |
tree | d3ebe03d4f97575290087843960baa01de3acd0a /fs/btrfs/xattr.c | |
parent | 1d568ab068c021672d6cd7f50f92a3695a921ffb (diff) | |
parent | 817b54aa45db03437c6d09a7693fc6926eb8e822 (diff) |
Merge branch 'next-evm' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/ima-2.6 into next
Conflicts:
fs/attr.c
Resolve conflict manually.
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'fs/btrfs/xattr.c')
-rw-r--r-- | fs/btrfs/xattr.c | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c index d733b9cfea34..6196e1a76c14 100644 --- a/fs/btrfs/xattr.c +++ b/fs/btrfs/xattr.c | |||
@@ -374,36 +374,36 @@ int btrfs_removexattr(struct dentry *dentry, const char *name) | |||
374 | XATTR_REPLACE); | 374 | XATTR_REPLACE); |
375 | } | 375 | } |
376 | 376 | ||
377 | int btrfs_xattr_security_init(struct btrfs_trans_handle *trans, | 377 | int btrfs_initxattrs(struct inode *inode, const struct xattr *xattr_array, |
378 | struct inode *inode, struct inode *dir, | 378 | void *fs_info) |
379 | const struct qstr *qstr) | ||
380 | { | 379 | { |
381 | int err; | 380 | const struct xattr *xattr; |
382 | size_t len; | 381 | struct btrfs_trans_handle *trans = fs_info; |
383 | void *value; | ||
384 | char *suffix; | ||
385 | char *name; | 382 | char *name; |
383 | int err = 0; | ||
386 | 384 | ||
387 | err = security_inode_init_security(inode, dir, qstr, &suffix, &value, | 385 | for (xattr = xattr_array; xattr->name != NULL; xattr++) { |
388 | &len); | 386 | name = kmalloc(XATTR_SECURITY_PREFIX_LEN + |
389 | if (err) { | 387 | strlen(xattr->name) + 1, GFP_NOFS); |
390 | if (err == -EOPNOTSUPP) | 388 | if (!name) { |
391 | return 0; | 389 | err = -ENOMEM; |
392 | return err; | 390 | break; |
393 | } | 391 | } |
394 | |||
395 | name = kmalloc(XATTR_SECURITY_PREFIX_LEN + strlen(suffix) + 1, | ||
396 | GFP_NOFS); | ||
397 | if (!name) { | ||
398 | err = -ENOMEM; | ||
399 | } else { | ||
400 | strcpy(name, XATTR_SECURITY_PREFIX); | 392 | strcpy(name, XATTR_SECURITY_PREFIX); |
401 | strcpy(name + XATTR_SECURITY_PREFIX_LEN, suffix); | 393 | strcpy(name + XATTR_SECURITY_PREFIX_LEN, xattr->name); |
402 | err = __btrfs_setxattr(trans, inode, name, value, len, 0); | 394 | err = __btrfs_setxattr(trans, inode, name, |
395 | xattr->value, xattr->value_len, 0); | ||
403 | kfree(name); | 396 | kfree(name); |
397 | if (err < 0) | ||
398 | break; | ||
404 | } | 399 | } |
405 | |||
406 | kfree(suffix); | ||
407 | kfree(value); | ||
408 | return err; | 400 | return err; |
409 | } | 401 | } |
402 | |||
403 | int btrfs_xattr_security_init(struct btrfs_trans_handle *trans, | ||
404 | struct inode *inode, struct inode *dir, | ||
405 | const struct qstr *qstr) | ||
406 | { | ||
407 | return security_inode_init_security(inode, dir, qstr, | ||
408 | &btrfs_initxattrs, trans); | ||
409 | } | ||