Skip to content

Commit 94afb62

Browse files
committed
nfs: use credential guards in nfs_local_call_read()
Use credential guards for scoped credential override with automatic restoration on scope exit. Link: https://patch.msgid.link/20251103-work-creds-guards-simple-v1-10-a3e156839e7f@kernel.org Reviewed-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Christian Brauner <brauner@kernel.org>
1 parent 5e88d1a commit 94afb62

1 file changed

Lines changed: 14 additions & 17 deletions

File tree

fs/nfs/localio.c

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -595,29 +595,26 @@ static void nfs_local_call_read(struct work_struct *work)
595595
struct nfs_local_kiocb *iocb =
596596
container_of(work, struct nfs_local_kiocb, work);
597597
struct file *filp = iocb->kiocb.ki_filp;
598-
const struct cred *save_cred;
599598
ssize_t status;
600599

601-
save_cred = override_creds(filp->f_cred);
602-
603-
for (int i = 0; i < iocb->n_iters ; i++) {
604-
if (iocb->iter_is_dio_aligned[i]) {
605-
iocb->kiocb.ki_flags |= IOCB_DIRECT;
606-
iocb->kiocb.ki_complete = nfs_local_read_aio_complete;
607-
iocb->aio_complete_work = nfs_local_read_aio_complete_work;
608-
}
600+
scoped_with_creds(filp->f_cred) {
601+
for (int i = 0; i < iocb->n_iters ; i++) {
602+
if (iocb->iter_is_dio_aligned[i]) {
603+
iocb->kiocb.ki_flags |= IOCB_DIRECT;
604+
iocb->kiocb.ki_complete = nfs_local_read_aio_complete;
605+
iocb->aio_complete_work = nfs_local_read_aio_complete_work;
606+
}
609607

610-
iocb->kiocb.ki_pos = iocb->offset[i];
611-
status = filp->f_op->read_iter(&iocb->kiocb, &iocb->iters[i]);
612-
if (status != -EIOCBQUEUED) {
613-
nfs_local_pgio_done(iocb->hdr, status);
614-
if (iocb->hdr->task.tk_status)
615-
break;
608+
iocb->kiocb.ki_pos = iocb->offset[i];
609+
status = filp->f_op->read_iter(&iocb->kiocb, &iocb->iters[i]);
610+
if (status != -EIOCBQUEUED) {
611+
nfs_local_pgio_done(iocb->hdr, status);
612+
if (iocb->hdr->task.tk_status)
613+
break;
614+
}
616615
}
617616
}
618617

619-
revert_creds(save_cred);
620-
621618
if (status != -EIOCBQUEUED) {
622619
nfs_local_read_done(iocb, status);
623620
nfs_local_pgio_release(iocb);

0 commit comments

Comments
 (0)