Hi, Kent, Kent Overstreet <kent.overstreet@xxxxxxxxx> writes: > Originally, we used kmap() instead of kmap_atomic() for reading events > out of the completion ringbuffer because we're using copy_to_user(), > which can fault. > > Now that kmap_local() is a thing, use that instead. This has already been proposed as part of a more comprehensive patch: https://lore.kernel.org/linux-fsdevel/20230109175629.9482-1-fmdefrancesco@xxxxxxxxx/ Would you be willing to review that one? Thanks! Jeff > > Signed-off-by: Kent Overstreet <kent.overstreet@xxxxxxxxx> > Cc: Benjamin LaHaise <bcrl@xxxxxxxxx > Cc: linux-aio@xxxxxxxxx > Cc: linux-fsdevel@xxxxxxxxxxxxxxx > --- > fs/aio.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/aio.c b/fs/aio.c > index 5b2ff20ad3..3f795ed2a2 100644 > --- a/fs/aio.c > +++ b/fs/aio.c > @@ -1246,10 +1246,10 @@ static long aio_read_events_ring(struct kioctx *ctx, > avail = min(avail, nr - ret); > avail = min_t(long, avail, AIO_EVENTS_PER_PAGE - pos); > > - ev = kmap(page); > + ev = kmap_local_page(page); > copy_ret = copy_to_user(event + ret, ev + pos, > sizeof(*ev) * avail); > - kunmap(page); > + kunmap_local(ev); > > if (unlikely(copy_ret)) { > ret = -EFAULT;