aboutsummaryrefslogtreecommitdiffstats
path: root/security
diff options
context:
space:
mode:
authorEric Paris <eparis@redhat.com>2011-04-25 12:54:27 -0400
committerEric Paris <eparis@redhat.com>2011-04-25 18:13:15 -0400
commitf48b7399840b453e7282b523f535561fe9638a2d (patch)
tree29eed009469d35473367708ea60b9c5b01fc0c5f /security
parent0dc1ba24f7fff659725eecbba2c9ad679a0954cd (diff)
LSM: split LSM_AUDIT_DATA_FS into _PATH and _INODE
The lsm common audit code has wacky contortions making sure which pieces of information are set based on if it was given a path, dentry, or inode. Split this into path and inode to get rid of some of the code complexity. Signed-off-by: Eric Paris <eparis@redhat.com> Acked-by: Casey Schaufler <casey@schaufler-ca.com>
Diffstat (limited to 'security')
-rw-r--r--security/lsm_audit.c50
-rw-r--r--security/selinux/avc.c2
-rw-r--r--security/selinux/hooks.c50
-rw-r--r--security/smack/smack.h8
-rw-r--r--security/smack/smack_lsm.c32
5 files changed, 74 insertions, 68 deletions
diff --git a/security/lsm_audit.c b/security/lsm_audit.c
index 908aa712816a..2e846052cbf4 100644
--- a/security/lsm_audit.c
+++ b/security/lsm_audit.c
@@ -210,7 +210,6 @@ static inline void print_ipv4_addr(struct audit_buffer *ab, __be32 addr,
210static void dump_common_audit_data(struct audit_buffer *ab, 210static void dump_common_audit_data(struct audit_buffer *ab,
211 struct common_audit_data *a) 211 struct common_audit_data *a)
212{ 212{
213 struct inode *inode = NULL;
214 struct task_struct *tsk = current; 213 struct task_struct *tsk = current;
215 214
216 if (a->tsk) 215 if (a->tsk)
@@ -229,33 +228,40 @@ static void dump_common_audit_data(struct audit_buffer *ab,
229 case LSM_AUDIT_DATA_CAP: 228 case LSM_AUDIT_DATA_CAP:
230 audit_log_format(ab, " capability=%d ", a->u.cap); 229 audit_log_format(ab, " capability=%d ", a->u.cap);
231 break; 230 break;
232 case LSM_AUDIT_DATA_FS: 231 case LSM_AUDIT_DATA_PATH: {
233 if (a->u.fs.path.dentry) { 232 struct dentry *dentry = a->u.path.dentry;
234 struct dentry *dentry = a->u.fs.path.dentry; 233 struct inode *inode;
235 if (a->u.fs.path.mnt) { 234
236 audit_log_d_path(ab, "path=", &a->u.fs.path); 235 if (a->u.path.mnt) {
237 } else { 236 audit_log_d_path(ab, "path=", &a->u.path);
238 audit_log_format(ab, " name="); 237 } else {
239 audit_log_untrustedstring(ab, 238 audit_log_format(ab, " name=");
240 dentry->d_name.name); 239 audit_log_untrustedstring(ab,
241 } 240 dentry->d_name.name);
242 inode = dentry->d_inode;
243 } else if (a->u.fs.inode) {
244 struct dentry *dentry;
245 inode = a->u.fs.inode;
246 dentry = d_find_alias(inode);
247 if (dentry) {
248 audit_log_format(ab, " name=");
249 audit_log_untrustedstring(ab,
250 dentry->d_name.name);
251 dput(dentry);
252 }
253 } 241 }
242 inode = dentry->d_inode;
254 if (inode) 243 if (inode)
255 audit_log_format(ab, " dev=%s ino=%lu", 244 audit_log_format(ab, " dev=%s ino=%lu",
256 inode->i_sb->s_id, 245 inode->i_sb->s_id,
257 inode->i_ino); 246 inode->i_ino);
258 break; 247 break;
248 }
249 case LSM_AUDIT_DATA_INODE: {
250 struct dentry *dentry;
251 struct inode *inode;
252
253 inode = a->u.inode;
254 dentry = d_find_alias(inode);
255 if (dentry) {
256 audit_log_format(ab, " name=");
257 audit_log_untrustedstring(ab,
258 dentry->d_name.name);
259 dput(dentry);
260 }
261 audit_log_format(ab, " dev=%s ino=%lu", inode->i_sb->s_id,
262 inode->i_ino);
263 break;
264 }
259 case LSM_AUDIT_DATA_TASK: 265 case LSM_AUDIT_DATA_TASK:
260 tsk = a->u.tsk; 266 tsk = a->u.tsk;
261 if (tsk && tsk->pid) { 267 if (tsk && tsk->pid) {
diff --git a/security/selinux/avc.c b/security/selinux/avc.c
index 1d027e29ce8d..ce742f1778e1 100644
--- a/security/selinux/avc.c
+++ b/security/selinux/avc.c
@@ -531,7 +531,7 @@ int avc_audit(u32 ssid, u32 tsid,
531 * during retry. However this is logically just as if the operation 531 * during retry. However this is logically just as if the operation
532 * happened a little later. 532 * happened a little later.
533 */ 533 */
534 if ((a->type == LSM_AUDIT_DATA_FS) && 534 if ((a->type == LSM_AUDIT_DATA_INODE) &&
535 (flags & IPERM_FLAG_RCU)) 535 (flags & IPERM_FLAG_RCU))
536 return -ECHILD; 536 return -ECHILD;
537 537
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index ed5f29aa0a38..ad664d3056eb 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -1488,8 +1488,8 @@ static int inode_has_perm(const struct cred *cred,
1488 1488
1489 if (!adp) { 1489 if (!adp) {
1490 adp = &ad; 1490 adp = &ad;
1491 COMMON_AUDIT_DATA_INIT(&ad, FS); 1491 COMMON_AUDIT_DATA_INIT(&ad, INODE);
1492 ad.u.fs.inode = inode; 1492 ad.u.inode = inode;
1493 } 1493 }
1494 1494
1495 return avc_has_perm_flags(sid, isec->sid, isec->sclass, perms, adp, flags); 1495 return avc_has_perm_flags(sid, isec->sid, isec->sclass, perms, adp, flags);
@@ -1506,9 +1506,9 @@ static inline int dentry_has_perm(const struct cred *cred,
1506 struct inode *inode = dentry->d_inode; 1506 struct inode *inode = dentry->d_inode;
1507 struct common_audit_data ad; 1507 struct common_audit_data ad;
1508 1508
1509 COMMON_AUDIT_DATA_INIT(&ad, FS); 1509 COMMON_AUDIT_DATA_INIT(&ad, PATH);
1510 ad.u.fs.path.mnt = mnt; 1510 ad.u.path.mnt = mnt;
1511 ad.u.fs.path.dentry = dentry; 1511 ad.u.path.dentry = dentry;
1512 return inode_has_perm(cred, inode, av, &ad, 0); 1512 return inode_has_perm(cred, inode, av, &ad, 0);
1513} 1513}
1514 1514
@@ -1530,8 +1530,8 @@ static int file_has_perm(const struct cred *cred,
1530 u32 sid = cred_sid(cred); 1530 u32 sid = cred_sid(cred);
1531 int rc; 1531 int rc;
1532 1532
1533 COMMON_AUDIT_DATA_INIT(&ad, FS); 1533 COMMON_AUDIT_DATA_INIT(&ad, PATH);
1534 ad.u.fs.path = file->f_path; 1534 ad.u.path = file->f_path;
1535 1535
1536 if (sid != fsec->sid) { 1536 if (sid != fsec->sid) {
1537 rc = avc_has_perm(sid, fsec->sid, 1537 rc = avc_has_perm(sid, fsec->sid,
@@ -1569,8 +1569,8 @@ static int may_create(struct inode *dir,
1569 sid = tsec->sid; 1569 sid = tsec->sid;
1570 newsid = tsec->create_sid; 1570 newsid = tsec->create_sid;
1571 1571
1572 COMMON_AUDIT_DATA_INIT(&ad, FS); 1572 COMMON_AUDIT_DATA_INIT(&ad, PATH);
1573 ad.u.fs.path.dentry = dentry; 1573 ad.u.path.dentry = dentry;
1574 1574
1575 rc = avc_has_perm(sid, dsec->sid, SECCLASS_DIR, 1575 rc = avc_has_perm(sid, dsec->sid, SECCLASS_DIR,
1576 DIR__ADD_NAME | DIR__SEARCH, 1576 DIR__ADD_NAME | DIR__SEARCH,
@@ -1621,8 +1621,8 @@ static int may_link(struct inode *dir,
1621 dsec = dir->i_security; 1621 dsec = dir->i_security;
1622 isec = dentry->d_inode->i_security; 1622 isec = dentry->d_inode->i_security;
1623 1623
1624 COMMON_AUDIT_DATA_INIT(&ad, FS); 1624 COMMON_AUDIT_DATA_INIT(&ad, PATH);
1625 ad.u.fs.path.dentry = dentry; 1625 ad.u.path.dentry = dentry;
1626 1626
1627 av = DIR__SEARCH; 1627 av = DIR__SEARCH;
1628 av |= (kind ? DIR__REMOVE_NAME : DIR__ADD_NAME); 1628 av |= (kind ? DIR__REMOVE_NAME : DIR__ADD_NAME);
@@ -1667,9 +1667,9 @@ static inline int may_rename(struct inode *old_dir,
1667 old_is_dir = S_ISDIR(old_dentry->d_inode->i_mode); 1667 old_is_dir = S_ISDIR(old_dentry->d_inode->i_mode);
1668 new_dsec = new_dir->i_security; 1668 new_dsec = new_dir->i_security;
1669 1669
1670 COMMON_AUDIT_DATA_INIT(&ad, FS); 1670 COMMON_AUDIT_DATA_INIT(&ad, PATH);
1671 1671
1672 ad.u.fs.path.dentry = old_dentry; 1672 ad.u.path.dentry = old_dentry;
1673 rc = avc_has_perm(sid, old_dsec->sid, SECCLASS_DIR, 1673 rc = avc_has_perm(sid, old_dsec->sid, SECCLASS_DIR,
1674 DIR__REMOVE_NAME | DIR__SEARCH, &ad); 1674 DIR__REMOVE_NAME | DIR__SEARCH, &ad);
1675 if (rc) 1675 if (rc)
@@ -1685,7 +1685,7 @@ static inline int may_rename(struct inode *old_dir,
1685 return rc; 1685 return rc;
1686 } 1686 }
1687 1687
1688 ad.u.fs.path.dentry = new_dentry; 1688 ad.u.path.dentry = new_dentry;
1689 av = DIR__ADD_NAME | DIR__SEARCH; 1689 av = DIR__ADD_NAME | DIR__SEARCH;
1690 if (new_dentry->d_inode) 1690 if (new_dentry->d_inode)
1691 av |= DIR__REMOVE_NAME; 1691 av |= DIR__REMOVE_NAME;
@@ -1991,8 +1991,8 @@ static int selinux_bprm_set_creds(struct linux_binprm *bprm)
1991 return rc; 1991 return rc;
1992 } 1992 }
1993 1993
1994 COMMON_AUDIT_DATA_INIT(&ad, FS); 1994 COMMON_AUDIT_DATA_INIT(&ad, PATH);
1995 ad.u.fs.path = bprm->file->f_path; 1995 ad.u.path = bprm->file->f_path;
1996 1996
1997 if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID) 1997 if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID)
1998 new_tsec->sid = old_tsec->sid; 1998 new_tsec->sid = old_tsec->sid;
@@ -2120,7 +2120,7 @@ static inline void flush_unauthorized_files(const struct cred *cred,
2120 2120
2121 /* Revalidate access to inherited open files. */ 2121 /* Revalidate access to inherited open files. */
2122 2122
2123 COMMON_AUDIT_DATA_INIT(&ad, FS); 2123 COMMON_AUDIT_DATA_INIT(&ad, INODE);
2124 2124
2125 spin_lock(&files->file_lock); 2125 spin_lock(&files->file_lock);
2126 for (;;) { 2126 for (;;) {
@@ -2468,8 +2468,8 @@ static int selinux_sb_kern_mount(struct super_block *sb, int flags, void *data)
2468 if (flags & MS_KERNMOUNT) 2468 if (flags & MS_KERNMOUNT)
2469 return 0; 2469 return 0;
2470 2470
2471 COMMON_AUDIT_DATA_INIT(&ad, FS); 2471 COMMON_AUDIT_DATA_INIT(&ad, PATH);
2472 ad.u.fs.path.dentry = sb->s_root; 2472 ad.u.path.dentry = sb->s_root;
2473 return superblock_has_perm(cred, sb, FILESYSTEM__MOUNT, &ad); 2473 return superblock_has_perm(cred, sb, FILESYSTEM__MOUNT, &ad);
2474} 2474}
2475 2475
@@ -2478,8 +2478,8 @@ static int selinux_sb_statfs(struct dentry *dentry)
2478 const struct cred *cred = current_cred(); 2478 const struct cred *cred = current_cred();
2479 struct common_audit_data ad; 2479 struct common_audit_data ad;
2480 2480
2481 COMMON_AUDIT_DATA_INIT(&ad, FS); 2481 COMMON_AUDIT_DATA_INIT(&ad, PATH);
2482 ad.u.fs.path.dentry = dentry->d_sb->s_root; 2482 ad.u.path.dentry = dentry->d_sb->s_root;
2483 return superblock_has_perm(cred, dentry->d_sb, FILESYSTEM__GETATTR, &ad); 2483 return superblock_has_perm(cred, dentry->d_sb, FILESYSTEM__GETATTR, &ad);
2484} 2484}
2485 2485
@@ -2653,8 +2653,8 @@ static int selinux_inode_permission(struct inode *inode, int mask, unsigned flag
2653 if (!mask) 2653 if (!mask)
2654 return 0; 2654 return 0;
2655 2655
2656 COMMON_AUDIT_DATA_INIT(&ad, FS); 2656 COMMON_AUDIT_DATA_INIT(&ad, INODE);
2657 ad.u.fs.inode = inode; 2657 ad.u.inode = inode;
2658 2658
2659 if (from_access) 2659 if (from_access)
2660 ad.selinux_audit_data.auditdeny |= FILE__AUDIT_ACCESS; 2660 ad.selinux_audit_data.auditdeny |= FILE__AUDIT_ACCESS;
@@ -2732,8 +2732,8 @@ static int selinux_inode_setxattr(struct dentry *dentry, const char *name,
2732 if (!is_owner_or_cap(inode)) 2732 if (!is_owner_or_cap(inode))
2733 return -EPERM; 2733 return -EPERM;
2734 2734
2735 COMMON_AUDIT_DATA_INIT(&ad, FS); 2735 COMMON_AUDIT_DATA_INIT(&ad, PATH);
2736 ad.u.fs.path.dentry = dentry; 2736 ad.u.path.dentry = dentry;
2737 2737
2738 rc = avc_has_perm(sid, isec->sid, isec->sclass, 2738 rc = avc_has_perm(sid, isec->sid, isec->sclass,
2739 FILE__RELABELFROM, &ad); 2739 FILE__RELABELFROM, &ad);
diff --git a/security/smack/smack.h b/security/smack/smack.h
index b449cfdad21c..a16925c0e91a 100644
--- a/security/smack/smack.h
+++ b/security/smack/smack.h
@@ -316,22 +316,22 @@ static inline void smk_ad_setfield_u_tsk(struct smk_audit_info *a,
316static inline void smk_ad_setfield_u_fs_path_dentry(struct smk_audit_info *a, 316static inline void smk_ad_setfield_u_fs_path_dentry(struct smk_audit_info *a,
317 struct dentry *d) 317 struct dentry *d)
318{ 318{
319 a->a.u.fs.path.dentry = d; 319 a->a.u.path.dentry = d;
320} 320}
321static inline void smk_ad_setfield_u_fs_path_mnt(struct smk_audit_info *a, 321static inline void smk_ad_setfield_u_fs_path_mnt(struct smk_audit_info *a,
322 struct vfsmount *m) 322 struct vfsmount *m)
323{ 323{
324 a->a.u.fs.path.mnt = m; 324 a->a.u.path.mnt = m;
325} 325}
326static inline void smk_ad_setfield_u_fs_inode(struct smk_audit_info *a, 326static inline void smk_ad_setfield_u_fs_inode(struct smk_audit_info *a,
327 struct inode *i) 327 struct inode *i)
328{ 328{
329 a->a.u.fs.inode = i; 329 a->a.u.inode = i;
330} 330}
331static inline void smk_ad_setfield_u_fs_path(struct smk_audit_info *a, 331static inline void smk_ad_setfield_u_fs_path(struct smk_audit_info *a,
332 struct path p) 332 struct path p)
333{ 333{
334 a->a.u.fs.path = p; 334 a->a.u.path = p;
335} 335}
336static inline void smk_ad_setfield_u_net_sk(struct smk_audit_info *a, 336static inline void smk_ad_setfield_u_net_sk(struct smk_audit_info *a,
337 struct sock *sk) 337 struct sock *sk)
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 42fcb47747a3..eeb393fbf925 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -383,7 +383,7 @@ static int smack_sb_statfs(struct dentry *dentry)
383 int rc; 383 int rc;
384 struct smk_audit_info ad; 384 struct smk_audit_info ad;
385 385
386 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 386 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
387 smk_ad_setfield_u_fs_path_dentry(&ad, dentry); 387 smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
388 388
389 rc = smk_curacc(sbp->smk_floor, MAY_READ, &ad); 389 rc = smk_curacc(sbp->smk_floor, MAY_READ, &ad);
@@ -407,7 +407,7 @@ static int smack_sb_mount(char *dev_name, struct path *path,
407 struct superblock_smack *sbp = path->mnt->mnt_sb->s_security; 407 struct superblock_smack *sbp = path->mnt->mnt_sb->s_security;
408 struct smk_audit_info ad; 408 struct smk_audit_info ad;
409 409
410 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 410 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
411 smk_ad_setfield_u_fs_path(&ad, *path); 411 smk_ad_setfield_u_fs_path(&ad, *path);
412 412
413 return smk_curacc(sbp->smk_floor, MAY_WRITE, &ad); 413 return smk_curacc(sbp->smk_floor, MAY_WRITE, &ad);
@@ -426,7 +426,7 @@ static int smack_sb_umount(struct vfsmount *mnt, int flags)
426 struct superblock_smack *sbp; 426 struct superblock_smack *sbp;
427 struct smk_audit_info ad; 427 struct smk_audit_info ad;
428 428
429 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 429 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
430 smk_ad_setfield_u_fs_path_dentry(&ad, mnt->mnt_root); 430 smk_ad_setfield_u_fs_path_dentry(&ad, mnt->mnt_root);
431 smk_ad_setfield_u_fs_path_mnt(&ad, mnt); 431 smk_ad_setfield_u_fs_path_mnt(&ad, mnt);
432 432
@@ -563,7 +563,7 @@ static int smack_inode_link(struct dentry *old_dentry, struct inode *dir,
563 struct smk_audit_info ad; 563 struct smk_audit_info ad;
564 int rc; 564 int rc;
565 565
566 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 566 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
567 smk_ad_setfield_u_fs_path_dentry(&ad, old_dentry); 567 smk_ad_setfield_u_fs_path_dentry(&ad, old_dentry);
568 568
569 isp = smk_of_inode(old_dentry->d_inode); 569 isp = smk_of_inode(old_dentry->d_inode);
@@ -592,7 +592,7 @@ static int smack_inode_unlink(struct inode *dir, struct dentry *dentry)
592 struct smk_audit_info ad; 592 struct smk_audit_info ad;
593 int rc; 593 int rc;
594 594
595 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 595 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
596 smk_ad_setfield_u_fs_path_dentry(&ad, dentry); 596 smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
597 597
598 /* 598 /*
@@ -623,7 +623,7 @@ static int smack_inode_rmdir(struct inode *dir, struct dentry *dentry)
623 struct smk_audit_info ad; 623 struct smk_audit_info ad;
624 int rc; 624 int rc;
625 625
626 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 626 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
627 smk_ad_setfield_u_fs_path_dentry(&ad, dentry); 627 smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
628 628
629 /* 629 /*
@@ -663,7 +663,7 @@ static int smack_inode_rename(struct inode *old_inode,
663 char *isp; 663 char *isp;
664 struct smk_audit_info ad; 664 struct smk_audit_info ad;
665 665
666 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 666 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
667 smk_ad_setfield_u_fs_path_dentry(&ad, old_dentry); 667 smk_ad_setfield_u_fs_path_dentry(&ad, old_dentry);
668 668
669 isp = smk_of_inode(old_dentry->d_inode); 669 isp = smk_of_inode(old_dentry->d_inode);
@@ -700,7 +700,7 @@ static int smack_inode_permission(struct inode *inode, int mask, unsigned flags)
700 /* May be droppable after audit */ 700 /* May be droppable after audit */
701 if (flags & IPERM_FLAG_RCU) 701 if (flags & IPERM_FLAG_RCU)
702 return -ECHILD; 702 return -ECHILD;
703 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 703 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_INODE);
704 smk_ad_setfield_u_fs_inode(&ad, inode); 704 smk_ad_setfield_u_fs_inode(&ad, inode);
705 return smk_curacc(smk_of_inode(inode), mask, &ad); 705 return smk_curacc(smk_of_inode(inode), mask, &ad);
706} 706}
@@ -720,7 +720,7 @@ static int smack_inode_setattr(struct dentry *dentry, struct iattr *iattr)
720 */ 720 */
721 if (iattr->ia_valid & ATTR_FORCE) 721 if (iattr->ia_valid & ATTR_FORCE)
722 return 0; 722 return 0;
723 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 723 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
724 smk_ad_setfield_u_fs_path_dentry(&ad, dentry); 724 smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
725 725
726 return smk_curacc(smk_of_inode(dentry->d_inode), MAY_WRITE, &ad); 726 return smk_curacc(smk_of_inode(dentry->d_inode), MAY_WRITE, &ad);
@@ -737,7 +737,7 @@ static int smack_inode_getattr(struct vfsmount *mnt, struct dentry *dentry)
737{ 737{
738 struct smk_audit_info ad; 738 struct smk_audit_info ad;
739 739
740 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 740 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
741 smk_ad_setfield_u_fs_path_dentry(&ad, dentry); 741 smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
742 smk_ad_setfield_u_fs_path_mnt(&ad, mnt); 742 smk_ad_setfield_u_fs_path_mnt(&ad, mnt);
743 return smk_curacc(smk_of_inode(dentry->d_inode), MAY_READ, &ad); 743 return smk_curacc(smk_of_inode(dentry->d_inode), MAY_READ, &ad);
@@ -784,7 +784,7 @@ static int smack_inode_setxattr(struct dentry *dentry, const char *name,
784 } else 784 } else
785 rc = cap_inode_setxattr(dentry, name, value, size, flags); 785 rc = cap_inode_setxattr(dentry, name, value, size, flags);
786 786
787 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 787 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
788 smk_ad_setfield_u_fs_path_dentry(&ad, dentry); 788 smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
789 789
790 if (rc == 0) 790 if (rc == 0)
@@ -845,7 +845,7 @@ static int smack_inode_getxattr(struct dentry *dentry, const char *name)
845{ 845{
846 struct smk_audit_info ad; 846 struct smk_audit_info ad;
847 847
848 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 848 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
849 smk_ad_setfield_u_fs_path_dentry(&ad, dentry); 849 smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
850 850
851 return smk_curacc(smk_of_inode(dentry->d_inode), MAY_READ, &ad); 851 return smk_curacc(smk_of_inode(dentry->d_inode), MAY_READ, &ad);
@@ -877,7 +877,7 @@ static int smack_inode_removexattr(struct dentry *dentry, const char *name)
877 } else 877 } else
878 rc = cap_inode_removexattr(dentry, name); 878 rc = cap_inode_removexattr(dentry, name);
879 879
880 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 880 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
881 smk_ad_setfield_u_fs_path_dentry(&ad, dentry); 881 smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
882 if (rc == 0) 882 if (rc == 0)
883 rc = smk_curacc(smk_of_inode(dentry->d_inode), MAY_WRITE, &ad); 883 rc = smk_curacc(smk_of_inode(dentry->d_inode), MAY_WRITE, &ad);
@@ -1047,7 +1047,7 @@ static int smack_file_ioctl(struct file *file, unsigned int cmd,
1047 int rc = 0; 1047 int rc = 0;
1048 struct smk_audit_info ad; 1048 struct smk_audit_info ad;
1049 1049
1050 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 1050 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
1051 smk_ad_setfield_u_fs_path(&ad, file->f_path); 1051 smk_ad_setfield_u_fs_path(&ad, file->f_path);
1052 1052
1053 if (_IOC_DIR(cmd) & _IOC_WRITE) 1053 if (_IOC_DIR(cmd) & _IOC_WRITE)
@@ -1070,7 +1070,7 @@ static int smack_file_lock(struct file *file, unsigned int cmd)
1070{ 1070{
1071 struct smk_audit_info ad; 1071 struct smk_audit_info ad;
1072 1072
1073 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 1073 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
1074 smk_ad_setfield_u_fs_path_dentry(&ad, file->f_path.dentry); 1074 smk_ad_setfield_u_fs_path_dentry(&ad, file->f_path.dentry);
1075 return smk_curacc(file->f_security, MAY_WRITE, &ad); 1075 return smk_curacc(file->f_security, MAY_WRITE, &ad);
1076} 1076}
@@ -1089,7 +1089,7 @@ static int smack_file_fcntl(struct file *file, unsigned int cmd,
1089 struct smk_audit_info ad; 1089 struct smk_audit_info ad;
1090 int rc; 1090 int rc;
1091 1091
1092 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_FS); 1092 smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
1093 smk_ad_setfield_u_fs_path(&ad, file->f_path); 1093 smk_ad_setfield_u_fs_path(&ad, file->f_path);
1094 1094
1095 switch (cmd) { 1095 switch (cmd) {