Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'vfs-6.8-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs

Pull vfs fixes from Christian Brauner:
"Two small fixes:

- Fix an endless loop during afs directory iteration caused by not
skipping silly-rename files correctly.

- Fix reporting of completion events for aio causing leaks in
userspace. This is based on the fix last week as it's now possible
to recognize aio events submitted through the old aio interface"

* tag 'vfs-6.8-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs:
fs/aio: Make io_cancel() generate completions again
afs: Fix endless loop in directory parsing

+14 -17
+3 -1
fs/afs/dir.c
··· 479 479 dire->u.name[0] == '.' && 480 480 ctx->actor != afs_lookup_filldir && 481 481 ctx->actor != afs_lookup_one_filldir && 482 - memcmp(dire->u.name, ".__afs", 6) == 0) 482 + memcmp(dire->u.name, ".__afs", 6) == 0) { 483 + ctx->pos = blkoff + next * sizeof(union afs_xdr_dirent); 483 484 continue; 485 + } 484 486 485 487 /* found the next entry */ 486 488 if (!dir_emit(ctx, dire->u.name, nlen,
+11 -16
fs/aio.c
··· 2165 2165 #endif 2166 2166 2167 2167 /* sys_io_cancel: 2168 - * Attempts to cancel an iocb previously passed to io_submit. If 2169 - * the operation is successfully cancelled, the resulting event is 2170 - * copied into the memory pointed to by result without being placed 2171 - * into the completion queue and 0 is returned. May fail with 2172 - * -EFAULT if any of the data structures pointed to are invalid. 2173 - * May fail with -EINVAL if aio_context specified by ctx_id is 2174 - * invalid. May fail with -EAGAIN if the iocb specified was not 2175 - * cancelled. Will fail with -ENOSYS if not implemented. 2168 + * Attempts to cancel an iocb previously passed to io_submit(). If the 2169 + * operation is successfully cancelled 0 is returned. May fail with 2170 + * -EFAULT if any of the data structures pointed to are invalid. May 2171 + * fail with -EINVAL if aio_context specified by ctx_id is invalid. Will 2172 + * fail with -ENOSYS if not implemented. 2176 2173 */ 2177 2174 SYSCALL_DEFINE3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, 2178 2175 struct io_event __user *, result) ··· 2200 2203 } 2201 2204 spin_unlock_irq(&ctx->ctx_lock); 2202 2205 2203 - if (!ret) { 2204 - /* 2205 - * The result argument is no longer used - the io_event is 2206 - * always delivered via the ring buffer. -EINPROGRESS indicates 2207 - * cancellation is progress: 2208 - */ 2209 - ret = -EINPROGRESS; 2210 - } 2206 + /* 2207 + * The result argument is no longer used - the io_event is always 2208 + * delivered via the ring buffer. 2209 + */ 2210 + if (ret == 0 && kiocb->rw.ki_flags & IOCB_AIO_RW) 2211 + aio_complete_rw(&kiocb->rw, -EINTR); 2211 2212 2212 2213 percpu_ref_put(&ctx->users); 2213 2214