Commit bce4e7e9 authored by John Johansen's avatar John Johansen

apparmor: reduce rcu_read_lock scope for aa_file_perm mediation

Now that the buffers allocation has changed and no longer needs
the full mediation under an rcu_read_lock, reduce the rcu_read_lock
scope to only where it is necessary.

Fixes: df323337 ("apparmor: Use a memory pool instead per-CPU caches")
Signed-off-by: default avatarJohn Johansen <john.johansen@canonical.com>
parent 8f21a624
...@@ -621,7 +621,8 @@ int aa_file_perm(const char *op, struct aa_label *label, struct file *file, ...@@ -621,7 +621,8 @@ int aa_file_perm(const char *op, struct aa_label *label, struct file *file,
fctx = file_ctx(file); fctx = file_ctx(file);
rcu_read_lock(); rcu_read_lock();
flabel = rcu_dereference(fctx->label); flabel = aa_get_newest_label(rcu_dereference(fctx->label));
rcu_read_unlock();
AA_BUG(!flabel); AA_BUG(!flabel);
/* revalidate access, if task is unconfined, or the cached cred /* revalidate access, if task is unconfined, or the cached cred
...@@ -646,8 +647,7 @@ int aa_file_perm(const char *op, struct aa_label *label, struct file *file, ...@@ -646,8 +647,7 @@ int aa_file_perm(const char *op, struct aa_label *label, struct file *file,
error = __file_sock_perm(op, label, flabel, file, request, error = __file_sock_perm(op, label, flabel, file, request,
denied); denied);
done: done:
rcu_read_unlock(); aa_put_label(flabel);
return error; return error;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment