diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2008-08-02 01:06:21 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-10-23 05:12:53 -0400 |
commit | 98bc993f99e51467057ef699e47fec020f24d233 (patch) | |
tree | 9d1d1dd5b1116b1cff0b32884ca6165ae29d236c | |
parent | 421748ecde8e69a6364e5ae66eb3bf87e1f995c0 (diff) |
[PATCH] get rid of nameidata in audit_tree
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | kernel/audit_tree.c | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/kernel/audit_tree.c b/kernel/audit_tree.c index f7921a2ecf16..8ba0e0d934f2 100644 --- a/kernel/audit_tree.c +++ b/kernel/audit_tree.c | |||
@@ -532,7 +532,7 @@ void audit_trim_trees(void) | |||
532 | list_add(&cursor, &tree_list); | 532 | list_add(&cursor, &tree_list); |
533 | while (cursor.next != &tree_list) { | 533 | while (cursor.next != &tree_list) { |
534 | struct audit_tree *tree; | 534 | struct audit_tree *tree; |
535 | struct nameidata nd; | 535 | struct path path; |
536 | struct vfsmount *root_mnt; | 536 | struct vfsmount *root_mnt; |
537 | struct node *node; | 537 | struct node *node; |
538 | struct list_head list; | 538 | struct list_head list; |
@@ -544,12 +544,12 @@ void audit_trim_trees(void) | |||
544 | list_add(&cursor, &tree->list); | 544 | list_add(&cursor, &tree->list); |
545 | mutex_unlock(&audit_filter_mutex); | 545 | mutex_unlock(&audit_filter_mutex); |
546 | 546 | ||
547 | err = path_lookup(tree->pathname, 0, &nd); | 547 | err = kern_path(tree->pathname, 0, &path); |
548 | if (err) | 548 | if (err) |
549 | goto skip_it; | 549 | goto skip_it; |
550 | 550 | ||
551 | root_mnt = collect_mounts(nd.path.mnt, nd.path.dentry); | 551 | root_mnt = collect_mounts(path.mnt, path.dentry); |
552 | path_put(&nd.path); | 552 | path_put(&path); |
553 | if (!root_mnt) | 553 | if (!root_mnt) |
554 | goto skip_it; | 554 | goto skip_it; |
555 | 555 | ||
@@ -580,19 +580,19 @@ skip_it: | |||
580 | } | 580 | } |
581 | 581 | ||
582 | static int is_under(struct vfsmount *mnt, struct dentry *dentry, | 582 | static int is_under(struct vfsmount *mnt, struct dentry *dentry, |
583 | struct nameidata *nd) | 583 | struct path *path) |
584 | { | 584 | { |
585 | if (mnt != nd->path.mnt) { | 585 | if (mnt != path->mnt) { |
586 | for (;;) { | 586 | for (;;) { |
587 | if (mnt->mnt_parent == mnt) | 587 | if (mnt->mnt_parent == mnt) |
588 | return 0; | 588 | return 0; |
589 | if (mnt->mnt_parent == nd->path.mnt) | 589 | if (mnt->mnt_parent == path->mnt) |
590 | break; | 590 | break; |
591 | mnt = mnt->mnt_parent; | 591 | mnt = mnt->mnt_parent; |
592 | } | 592 | } |
593 | dentry = mnt->mnt_mountpoint; | 593 | dentry = mnt->mnt_mountpoint; |
594 | } | 594 | } |
595 | return is_subdir(dentry, nd->path.dentry); | 595 | return is_subdir(dentry, path->dentry); |
596 | } | 596 | } |
597 | 597 | ||
598 | int audit_make_tree(struct audit_krule *rule, char *pathname, u32 op) | 598 | int audit_make_tree(struct audit_krule *rule, char *pathname, u32 op) |
@@ -618,7 +618,7 @@ void audit_put_tree(struct audit_tree *tree) | |||
618 | int audit_add_tree_rule(struct audit_krule *rule) | 618 | int audit_add_tree_rule(struct audit_krule *rule) |
619 | { | 619 | { |
620 | struct audit_tree *seed = rule->tree, *tree; | 620 | struct audit_tree *seed = rule->tree, *tree; |
621 | struct nameidata nd; | 621 | struct path path; |
622 | struct vfsmount *mnt, *p; | 622 | struct vfsmount *mnt, *p; |
623 | struct list_head list; | 623 | struct list_head list; |
624 | int err; | 624 | int err; |
@@ -637,11 +637,11 @@ int audit_add_tree_rule(struct audit_krule *rule) | |||
637 | /* do not set rule->tree yet */ | 637 | /* do not set rule->tree yet */ |
638 | mutex_unlock(&audit_filter_mutex); | 638 | mutex_unlock(&audit_filter_mutex); |
639 | 639 | ||
640 | err = path_lookup(tree->pathname, 0, &nd); | 640 | err = kern_path(tree->pathname, 0, &path); |
641 | if (err) | 641 | if (err) |
642 | goto Err; | 642 | goto Err; |
643 | mnt = collect_mounts(nd.path.mnt, nd.path.dentry); | 643 | mnt = collect_mounts(path.mnt, path.dentry); |
644 | path_put(&nd.path); | 644 | path_put(&path); |
645 | if (!mnt) { | 645 | if (!mnt) { |
646 | err = -ENOMEM; | 646 | err = -ENOMEM; |
647 | goto Err; | 647 | goto Err; |
@@ -690,29 +690,29 @@ int audit_tag_tree(char *old, char *new) | |||
690 | { | 690 | { |
691 | struct list_head cursor, barrier; | 691 | struct list_head cursor, barrier; |
692 | int failed = 0; | 692 | int failed = 0; |
693 | struct nameidata nd; | 693 | struct path path; |
694 | struct vfsmount *tagged; | 694 | struct vfsmount *tagged; |
695 | struct list_head list; | 695 | struct list_head list; |
696 | struct vfsmount *mnt; | 696 | struct vfsmount *mnt; |
697 | struct dentry *dentry; | 697 | struct dentry *dentry; |
698 | int err; | 698 | int err; |
699 | 699 | ||
700 | err = path_lookup(new, 0, &nd); | 700 | err = kern_path(new, 0, &path); |
701 | if (err) | 701 | if (err) |
702 | return err; | 702 | return err; |
703 | tagged = collect_mounts(nd.path.mnt, nd.path.dentry); | 703 | tagged = collect_mounts(path.mnt, path.dentry); |
704 | path_put(&nd.path); | 704 | path_put(&path); |
705 | if (!tagged) | 705 | if (!tagged) |
706 | return -ENOMEM; | 706 | return -ENOMEM; |
707 | 707 | ||
708 | err = path_lookup(old, 0, &nd); | 708 | err = kern_path(old, 0, &path); |
709 | if (err) { | 709 | if (err) { |
710 | drop_collected_mounts(tagged); | 710 | drop_collected_mounts(tagged); |
711 | return err; | 711 | return err; |
712 | } | 712 | } |
713 | mnt = mntget(nd.path.mnt); | 713 | mnt = mntget(path.mnt); |
714 | dentry = dget(nd.path.dentry); | 714 | dentry = dget(path.dentry); |
715 | path_put(&nd.path); | 715 | path_put(&path); |
716 | 716 | ||
717 | if (dentry == tagged->mnt_root && dentry == mnt->mnt_root) | 717 | if (dentry == tagged->mnt_root && dentry == mnt->mnt_root) |
718 | follow_up(&mnt, &dentry); | 718 | follow_up(&mnt, &dentry); |
@@ -733,7 +733,7 @@ int audit_tag_tree(char *old, char *new) | |||
733 | list_add(&cursor, &tree->list); | 733 | list_add(&cursor, &tree->list); |
734 | mutex_unlock(&audit_filter_mutex); | 734 | mutex_unlock(&audit_filter_mutex); |
735 | 735 | ||
736 | err = path_lookup(tree->pathname, 0, &nd); | 736 | err = kern_path(tree->pathname, 0, &path); |
737 | if (err) { | 737 | if (err) { |
738 | put_tree(tree); | 738 | put_tree(tree); |
739 | mutex_lock(&audit_filter_mutex); | 739 | mutex_lock(&audit_filter_mutex); |
@@ -741,15 +741,15 @@ int audit_tag_tree(char *old, char *new) | |||
741 | } | 741 | } |
742 | 742 | ||
743 | spin_lock(&vfsmount_lock); | 743 | spin_lock(&vfsmount_lock); |
744 | if (!is_under(mnt, dentry, &nd)) { | 744 | if (!is_under(mnt, dentry, &path)) { |
745 | spin_unlock(&vfsmount_lock); | 745 | spin_unlock(&vfsmount_lock); |
746 | path_put(&nd.path); | 746 | path_put(&path); |
747 | put_tree(tree); | 747 | put_tree(tree); |
748 | mutex_lock(&audit_filter_mutex); | 748 | mutex_lock(&audit_filter_mutex); |
749 | continue; | 749 | continue; |
750 | } | 750 | } |
751 | spin_unlock(&vfsmount_lock); | 751 | spin_unlock(&vfsmount_lock); |
752 | path_put(&nd.path); | 752 | path_put(&path); |
753 | 753 | ||
754 | list_for_each_entry(p, &list, mnt_list) { | 754 | list_for_each_entry(p, &list, mnt_list) { |
755 | failed = tag_chunk(p->mnt_root->d_inode, tree); | 755 | failed = tag_chunk(p->mnt_root->d_inode, tree); |