diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2019-09-10 16:51:17 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2019-09-10 16:51:17 +0200 |
commit | 8146856b0a2693d5f7334f720c9b39a987f7571d (patch) | |
tree | e51fd6831162103d32e8a2ad83bf4077768a51b2 /fs/open.c | |
parent | 16cfacc8085782dab8e365979356ce1ca87fd6cc (diff) | |
parent | ff42df49e75f053a8a6b4c2533100cdcc23afe69 (diff) |
Merge tag 'kvm-ppc-next-5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc into HEAD
PPC KVM update for 5.4
- Some prep for extending the uses of the rmap array
- Various minor fixes
- Commits from the powerpc topic/ppc-kvm branch, which fix a problem
with interrupts arriving after free_irq, causing host hangs and crashes.
Diffstat (limited to 'fs/open.c')
-rw-r--r-- | fs/open.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/fs/open.c b/fs/open.c index b5b80469b93d..a59abe3c669a 100644 --- a/fs/open.c +++ b/fs/open.c @@ -374,6 +374,25 @@ long do_faccessat(int dfd, const char __user *filename, int mode) override_cred->cap_permitted; } + /* + * The new set of credentials can *only* be used in + * task-synchronous circumstances, and does not need + * RCU freeing, unless somebody then takes a separate + * reference to it. + * + * NOTE! This is _only_ true because this credential + * is used purely for override_creds() that installs + * it as the subjective cred. Other threads will be + * accessing ->real_cred, not the subjective cred. + * + * If somebody _does_ make a copy of this (using the + * 'get_current_cred()' function), that will clear the + * non_rcu field, because now that other user may be + * expecting RCU freeing. But normal thread-synchronous + * cred accesses will keep things non-RCY. + */ + override_cred->non_rcu = 1; + old_cred = override_creds(override_cred); retry: res = user_path_at(dfd, filename, lookup_flags, &path); |