Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
98bc993f
Commit
98bc993f
authored
Aug 02, 2008
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] get rid of nameidata in audit_tree
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
421748ec
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
24 deletions
+24
-24
kernel/audit_tree.c
kernel/audit_tree.c
+24
-24
No files found.
kernel/audit_tree.c
View file @
98bc993f
...
...
@@ -532,7 +532,7 @@ void audit_trim_trees(void)
list_add
(
&
cursor
,
&
tree_list
);
while
(
cursor
.
next
!=
&
tree_list
)
{
struct
audit_tree
*
tree
;
struct
nameidata
nd
;
struct
path
path
;
struct
vfsmount
*
root_mnt
;
struct
node
*
node
;
struct
list_head
list
;
...
...
@@ -544,12 +544,12 @@ void audit_trim_trees(void)
list_add
(
&
cursor
,
&
tree
->
list
);
mutex_unlock
(
&
audit_filter_mutex
);
err
=
path_lookup
(
tree
->
pathname
,
0
,
&
nd
);
err
=
kern_path
(
tree
->
pathname
,
0
,
&
path
);
if
(
err
)
goto
skip_it
;
root_mnt
=
collect_mounts
(
nd
.
path
.
mnt
,
nd
.
path
.
dentry
);
path_put
(
&
nd
.
path
);
root_mnt
=
collect_mounts
(
path
.
mnt
,
path
.
dentry
);
path_put
(
&
path
);
if
(
!
root_mnt
)
goto
skip_it
;
...
...
@@ -580,19 +580,19 @@ skip_it:
}
static
int
is_under
(
struct
vfsmount
*
mnt
,
struct
dentry
*
dentry
,
struct
nameidata
*
nd
)
struct
path
*
path
)
{
if
(
mnt
!=
nd
->
path
.
mnt
)
{
if
(
mnt
!=
path
->
mnt
)
{
for
(;;)
{
if
(
mnt
->
mnt_parent
==
mnt
)
return
0
;
if
(
mnt
->
mnt_parent
==
nd
->
path
.
mnt
)
if
(
mnt
->
mnt_parent
==
path
->
mnt
)
break
;
mnt
=
mnt
->
mnt_parent
;
}
dentry
=
mnt
->
mnt_mountpoint
;
}
return
is_subdir
(
dentry
,
nd
->
path
.
dentry
);
return
is_subdir
(
dentry
,
path
->
dentry
);
}
int
audit_make_tree
(
struct
audit_krule
*
rule
,
char
*
pathname
,
u32
op
)
...
...
@@ -618,7 +618,7 @@ void audit_put_tree(struct audit_tree *tree)
int
audit_add_tree_rule
(
struct
audit_krule
*
rule
)
{
struct
audit_tree
*
seed
=
rule
->
tree
,
*
tree
;
struct
nameidata
nd
;
struct
path
path
;
struct
vfsmount
*
mnt
,
*
p
;
struct
list_head
list
;
int
err
;
...
...
@@ -637,11 +637,11 @@ int audit_add_tree_rule(struct audit_krule *rule)
/* do not set rule->tree yet */
mutex_unlock
(
&
audit_filter_mutex
);
err
=
path_lookup
(
tree
->
pathname
,
0
,
&
nd
);
err
=
kern_path
(
tree
->
pathname
,
0
,
&
path
);
if
(
err
)
goto
Err
;
mnt
=
collect_mounts
(
nd
.
path
.
mnt
,
nd
.
path
.
dentry
);
path_put
(
&
nd
.
path
);
mnt
=
collect_mounts
(
path
.
mnt
,
path
.
dentry
);
path_put
(
&
path
);
if
(
!
mnt
)
{
err
=
-
ENOMEM
;
goto
Err
;
...
...
@@ -690,29 +690,29 @@ int audit_tag_tree(char *old, char *new)
{
struct
list_head
cursor
,
barrier
;
int
failed
=
0
;
struct
nameidata
nd
;
struct
path
path
;
struct
vfsmount
*
tagged
;
struct
list_head
list
;
struct
vfsmount
*
mnt
;
struct
dentry
*
dentry
;
int
err
;
err
=
path_lookup
(
new
,
0
,
&
nd
);
err
=
kern_path
(
new
,
0
,
&
path
);
if
(
err
)
return
err
;
tagged
=
collect_mounts
(
nd
.
path
.
mnt
,
nd
.
path
.
dentry
);
path_put
(
&
nd
.
path
);
tagged
=
collect_mounts
(
path
.
mnt
,
path
.
dentry
);
path_put
(
&
path
);
if
(
!
tagged
)
return
-
ENOMEM
;
err
=
path_lookup
(
old
,
0
,
&
nd
);
err
=
kern_path
(
old
,
0
,
&
path
);
if
(
err
)
{
drop_collected_mounts
(
tagged
);
return
err
;
}
mnt
=
mntget
(
nd
.
path
.
mnt
);
dentry
=
dget
(
nd
.
path
.
dentry
);
path_put
(
&
nd
.
path
);
mnt
=
mntget
(
path
.
mnt
);
dentry
=
dget
(
path
.
dentry
);
path_put
(
&
path
);
if
(
dentry
==
tagged
->
mnt_root
&&
dentry
==
mnt
->
mnt_root
)
follow_up
(
&
mnt
,
&
dentry
);
...
...
@@ -733,7 +733,7 @@ int audit_tag_tree(char *old, char *new)
list_add
(
&
cursor
,
&
tree
->
list
);
mutex_unlock
(
&
audit_filter_mutex
);
err
=
path_lookup
(
tree
->
pathname
,
0
,
&
nd
);
err
=
kern_path
(
tree
->
pathname
,
0
,
&
path
);
if
(
err
)
{
put_tree
(
tree
);
mutex_lock
(
&
audit_filter_mutex
);
...
...
@@ -741,15 +741,15 @@ int audit_tag_tree(char *old, char *new)
}
spin_lock
(
&
vfsmount_lock
);
if
(
!
is_under
(
mnt
,
dentry
,
&
nd
))
{
if
(
!
is_under
(
mnt
,
dentry
,
&
path
))
{
spin_unlock
(
&
vfsmount_lock
);
path_put
(
&
nd
.
path
);
path_put
(
&
path
);
put_tree
(
tree
);
mutex_lock
(
&
audit_filter_mutex
);
continue
;
}
spin_unlock
(
&
vfsmount_lock
);
path_put
(
&
nd
.
path
);
path_put
(
&
path
);
list_for_each_entry
(
p
,
&
list
,
mnt_list
)
{
failed
=
tag_chunk
(
p
->
mnt_root
->
d_inode
,
tree
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment