Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d2988bd4 authored by Al Viro's avatar Al Viro
Browse files

aio_read_events_ring(): make a bit more readable



The logics for 'avail' is
	* not past the tail of cyclic buffer
	* no more than asked
	* not past the end of buffer
	* not past the end of a page

Unobfuscate the last part.

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 9061d14a
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -1197,14 +1197,13 @@ static long aio_read_events_ring(struct kioctx *ctx,
		if (head == tail)
			break;

		avail = min(avail, nr - ret);
		avail = min_t(long, avail, AIO_EVENTS_PER_PAGE -
			    ((head + AIO_EVENTS_OFFSET) % AIO_EVENTS_PER_PAGE));

		pos = head + AIO_EVENTS_OFFSET;
		page = ctx->ring_pages[pos / AIO_EVENTS_PER_PAGE];
		pos %= AIO_EVENTS_PER_PAGE;

		avail = min(avail, nr - ret);
		avail = min_t(long, avail, AIO_EVENTS_PER_PAGE - pos);

		ev = kmap(page);
		copy_ret = copy_to_user(event + ret, ev + pos,
					sizeof(*ev) * avail);