aboutsummaryrefslogtreecommitdiffstats
path: root/fs/backing-file.c
diff options
context:
space:
mode:
authorChristian Brauner <brauner@kernel.org>2025-11-03 12:26:54 +0100
committerChristian Brauner <brauner@kernel.org>2025-11-04 12:36:37 +0100
commitb688171f910e22d1a32dec24bae8dbecbf2fe395 (patch)
tree8a1703830686774a31864306ad647ab87b01f17c /fs/backing-file.c
parentc3076d146e312af1ee2eff0287e298cf20774b39 (diff)
downloadtip-b688171f910e22d1a32dec24bae8dbecbf2fe395.tar.gz
backing-file: use credential guards for splice write
Use credential guards for scoped credential override with automatic restoration on scope exit. Link: https://patch.msgid.link/20251103-work-creds-guards-simple-v1-6-a3e156839e7f@kernel.org Reviewed-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'fs/backing-file.c')
-rw-r--r--fs/backing-file.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/fs/backing-file.c b/fs/backing-file.c
index 4d4edf906ef34a..87ff918320c54a 100644
--- a/fs/backing-file.c
+++ b/fs/backing-file.c
@@ -303,7 +303,6 @@ ssize_t backing_file_splice_write(struct pipe_inode_info *pipe,
size_t len, unsigned int flags,
struct backing_file_ctx *ctx)
{
- const struct cred *old_cred;
ssize_t ret;
if (WARN_ON_ONCE(!(out->f_mode & FMODE_BACKING)))
@@ -316,11 +315,11 @@ ssize_t backing_file_splice_write(struct pipe_inode_info *pipe,
if (ret)
return ret;
- old_cred = override_creds(ctx->cred);
- file_start_write(out);
- ret = out->f_op->splice_write(pipe, out, &iocb->ki_pos, len, flags);
- file_end_write(out);
- revert_creds(old_cred);
+ scoped_with_creds(ctx->cred) {
+ file_start_write(out);
+ ret = out->f_op->splice_write(pipe, out, &iocb->ki_pos, len, flags);
+ file_end_write(out);
+ }
if (ctx->end_write)
ctx->end_write(iocb, ret);