Re: [PATCH 02/10] random: use lockless techniques when mixingentropy pools

From: Matt Mackall
Date: Thu Jul 05 2012 - 16:45:48 EST


On Thu, 2012-07-05 at 15:47 -0400, Theodore Ts'o wrote:
> On Thu, Jul 05, 2012 at 02:10:12PM -0500, Matt Mackall wrote:
> >
> > I don't think this will work correctly. It's important that simultaneous
> > _readers_ of the state get different results. Otherwise, you can get
> > things like duplicate UUIDs generated on different cores, something
> > that's been observed in the field(!). I thought I added a comment to
> > that effect some years back, but I guess not.
>
> That's easy to fix; we just need to take a spinlock on the extract
> side. The main issue is that Thomas very much doesn't want us to take
> a spinlock in the interrupt handler codepath. But if we take a
> spinlock while extracting, that should take care of this concern.

Yup. This is why there's a separate _extract function to start with,
though this particular optimization hadn't been made yet. You do need to
continue to be sure to do the mix and extract in one operation though.

--
Mathematics is the supreme nostalgia of our time.


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/