On Wed, Jun 25, 2014 at 02:36:57PM -0700, Zach Brown wrote: > On Wed, Jun 25, 2014 at 04:50:51PM -0400, Jeff Moyer wrote: > > > > From: Benjamin LaHaise <bcrl@xxxxxxxxx> > > > > A kernel memory disclosure was introduced in aio_read_events_ring() in v3.10 > > by commit a31ad380bed817aa25f8830ad23e1a0480fef797. The changes made to > > aio_read_events_ring() failed to correctly limit the index into > > ctx->ring_pages[], allowing an attacked to cause the subsequent kmap() of > > an arbitrary page with a copy_to_user() to copy the contents into userspace. > > This vulnerability has been assigned CVE-2014-0206. Thanks to Mateusz and > > Petr for disclosing this issue. > > > > [jmoyer@xxxxxxxxxx: backported to 3.10] > > Signed-off-by: Benjamin LaHaise <bcrl@xxxxxxxxx> > > Signed-off-by: Jeff Moyer <jmoyer@xxxxxxxxxx> > > Cc: Mateusz Guzik <mguzik@xxxxxxxxxx> > > Cc: Petr Matousek <pmatouse@xxxxxxxxxx> > > Cc: Kent Overstreet <kmo@xxxxxxxxxxxxx> > > Cc: stable@xxxxxxxxxxxxxxx > > --- > > aio.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/fs/aio.c b/fs/aio.c > > index e66b948..872fd26 100644 > > --- a/fs/aio.c > > +++ b/fs/aio.c > > @@ -717,6 +717,8 @@ static long aio_read_events_ring(struct kioctx *ctx, > > if (head == ctx->tail) > > goto out; > > > > + head %= ctx->nr_events; > > + > > while (ret < nr) { > > long avail; > > struct io_event *ev; > > > Hmm. Are you sure it's safe to clamp head but not ctx->tail? The body > of the loop still has: > > avail = (head <= ctx->tail ? ctx->tail : ctx->nr_events) - head; Oops, nope, my mistake! ctx->tail is still stored modulo nr_events. I somehow had it in my head that the giant series patches had changed that. Never mind. Carry on :). - z -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html