diff options
Diffstat (limited to 'security/security.c')
-rw-r--r-- | security/security.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/security/security.c b/security/security.c index 94b35aef6871..4dc31f4f2700 100644 --- a/security/security.c +++ b/security/security.c | |||
@@ -348,10 +348,10 @@ int security_inode_init_security(struct inode *inode, struct inode *dir, | |||
348 | if (unlikely(IS_PRIVATE(inode))) | 348 | if (unlikely(IS_PRIVATE(inode))) |
349 | return 0; | 349 | return 0; |
350 | 350 | ||
351 | memset(new_xattrs, 0, sizeof new_xattrs); | ||
352 | if (!initxattrs) | 351 | if (!initxattrs) |
353 | return security_ops->inode_init_security(inode, dir, qstr, | 352 | return security_ops->inode_init_security(inode, dir, qstr, |
354 | NULL, NULL, NULL); | 353 | NULL, NULL, NULL); |
354 | memset(new_xattrs, 0, sizeof(new_xattrs)); | ||
355 | lsm_xattr = new_xattrs; | 355 | lsm_xattr = new_xattrs; |
356 | ret = security_ops->inode_init_security(inode, dir, qstr, | 356 | ret = security_ops->inode_init_security(inode, dir, qstr, |
357 | &lsm_xattr->name, | 357 | &lsm_xattr->name, |
@@ -366,16 +366,14 @@ int security_inode_init_security(struct inode *inode, struct inode *dir, | |||
366 | goto out; | 366 | goto out; |
367 | ret = initxattrs(inode, new_xattrs, fs_data); | 367 | ret = initxattrs(inode, new_xattrs, fs_data); |
368 | out: | 368 | out: |
369 | for (xattr = new_xattrs; xattr->name != NULL; xattr++) { | 369 | for (xattr = new_xattrs; xattr->value != NULL; xattr++) |
370 | kfree(xattr->name); | ||
371 | kfree(xattr->value); | 370 | kfree(xattr->value); |
372 | } | ||
373 | return (ret == -EOPNOTSUPP) ? 0 : ret; | 371 | return (ret == -EOPNOTSUPP) ? 0 : ret; |
374 | } | 372 | } |
375 | EXPORT_SYMBOL(security_inode_init_security); | 373 | EXPORT_SYMBOL(security_inode_init_security); |
376 | 374 | ||
377 | int security_old_inode_init_security(struct inode *inode, struct inode *dir, | 375 | int security_old_inode_init_security(struct inode *inode, struct inode *dir, |
378 | const struct qstr *qstr, char **name, | 376 | const struct qstr *qstr, const char **name, |
379 | void **value, size_t *len) | 377 | void **value, size_t *len) |
380 | { | 378 | { |
381 | if (unlikely(IS_PRIVATE(inode))) | 379 | if (unlikely(IS_PRIVATE(inode))) |