* [PATCH] random32: assign to network folks in MAINTAINERS
@ 2014-03-27 6:01 Sasha Levin
2014-03-27 6:01 ` [PATCH v2] random32: avoid attempt to late reseed if in the middle of seeding Sasha Levin
2014-03-28 20:03 ` [PATCH] random32: assign to network folks in MAINTAINERS David Miller
0 siblings, 2 replies; 5+ messages in thread
From: Sasha Levin @ 2014-03-27 6:01 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-kernel, hannes, tytso, dborkman, Sasha Levin
lib/random32.c was split out of the network code and is de-facto
still maintained by the almighty net/ gods.
Make it a bit more official so that people who aren't aware of
that know where to send their patches.
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
---
MAINTAINERS | 1 +
1 file changed, 1 insertion(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index e1724d5..47fd188 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6091,6 +6091,7 @@ F: include/uapi/linux/net.h
F: include/uapi/linux/netdevice.h
F: tools/net/
F: tools/testing/selftests/net/
+F: lib/random32.c
NETWORKING [IPv4/IPv6]
M: "David S. Miller" <davem@davemloft.net>
--
1.8.3.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2] random32: avoid attempt to late reseed if in the middle of seeding
2014-03-27 6:01 [PATCH] random32: assign to network folks in MAINTAINERS Sasha Levin
@ 2014-03-27 6:01 ` Sasha Levin
2014-03-27 6:17 ` Hannes Frederic Sowa
2014-03-27 8:52 ` Daniel Borkmann
2014-03-28 20:03 ` [PATCH] random32: assign to network folks in MAINTAINERS David Miller
1 sibling, 2 replies; 5+ messages in thread
From: Sasha Levin @ 2014-03-27 6:01 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-kernel, hannes, tytso, dborkman, Sasha Levin
Commit 4af712e8df ("random32: add prandom_reseed_late() and call when
nonblocking pool becomes initialized") has added a late reseed stage
that happens as soon as the nonblocking pool is marked as initialized.
This fails in the case that the nonblocking pool gets initialized
during __prandom_reseed()'s call to get_random_bytes(). In that case
we'd double back into __prandom_reseed() in an attempt to do a late
reseed - deadlocking on 'lock' early on in the boot process.
Instead, just avoid even waiting to do a reseed if a reseed is already
occuring.
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
---
lib/random32.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/lib/random32.c b/lib/random32.c
index b33b23e..d67b6a7 100644
--- a/lib/random32.c
+++ b/lib/random32.c
@@ -245,8 +245,20 @@ static void __prandom_reseed(bool late)
static bool latch = false;
static DEFINE_SPINLOCK(lock);
+ /*
+ * Asking for random bytes might result in bytes getting
+ * moved into the nonblocking pool and thus marking it
+ * as initialized. In this case we would double back into
+ * this function and attempt to do a late reseed.
+ * Ignore the pointless attempt to reseed again if we're
+ * already waiting for bytes when the nonblocking pool
+ * got initialized.
+ */
+
/* only allow initial seeding (late == false) once */
- spin_lock_irqsave(&lock, flags);
+ if (!spin_trylock_irqsave(&lock, flags))
+ return;
+
if (latch && !late)
goto out;
--
1.8.3.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2] random32: avoid attempt to late reseed if in the middle of seeding
2014-03-27 6:01 ` [PATCH v2] random32: avoid attempt to late reseed if in the middle of seeding Sasha Levin
@ 2014-03-27 6:17 ` Hannes Frederic Sowa
2014-03-27 8:52 ` Daniel Borkmann
1 sibling, 0 replies; 5+ messages in thread
From: Hannes Frederic Sowa @ 2014-03-27 6:17 UTC (permalink / raw)
To: Sasha Levin; +Cc: davem, netdev, linux-kernel, tytso, dborkman
On Thu, Mar 27, 2014 at 02:01:35AM -0400, Sasha Levin wrote:
> Commit 4af712e8df ("random32: add prandom_reseed_late() and call when
> nonblocking pool becomes initialized") has added a late reseed stage
> that happens as soon as the nonblocking pool is marked as initialized.
>
> This fails in the case that the nonblocking pool gets initialized
> during __prandom_reseed()'s call to get_random_bytes(). In that case
> we'd double back into __prandom_reseed() in an attempt to do a late
> reseed - deadlocking on 'lock' early on in the boot process.
>
> Instead, just avoid even waiting to do a reseed if a reseed is already
> occuring.
>
> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Thanks for fixing this!
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] random32: avoid attempt to late reseed if in the middle of seeding
2014-03-27 6:01 ` [PATCH v2] random32: avoid attempt to late reseed if in the middle of seeding Sasha Levin
2014-03-27 6:17 ` Hannes Frederic Sowa
@ 2014-03-27 8:52 ` Daniel Borkmann
1 sibling, 0 replies; 5+ messages in thread
From: Daniel Borkmann @ 2014-03-27 8:52 UTC (permalink / raw)
To: Sasha Levin; +Cc: davem, netdev, linux-kernel, hannes, tytso
On 03/27/2014 07:01 AM, Sasha Levin wrote:
> Commit 4af712e8df ("random32: add prandom_reseed_late() and call when
> nonblocking pool becomes initialized") has added a late reseed stage
> that happens as soon as the nonblocking pool is marked as initialized.
>
> This fails in the case that the nonblocking pool gets initialized
> during __prandom_reseed()'s call to get_random_bytes(). In that case
> we'd double back into __prandom_reseed() in an attempt to do a late
> reseed - deadlocking on 'lock' early on in the boot process.
>
> Instead, just avoid even waiting to do a reseed if a reseed is already
> occuring.
>
> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Looks better now, thanks!
Fixes: 4af712e8df99 ("random32: add prandom_reseed_late() and call when nonblocking pool becomes initialized")
Acked-by: Daniel Borkmann <dborkman@redhat.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] random32: assign to network folks in MAINTAINERS
2014-03-27 6:01 [PATCH] random32: assign to network folks in MAINTAINERS Sasha Levin
2014-03-27 6:01 ` [PATCH v2] random32: avoid attempt to late reseed if in the middle of seeding Sasha Levin
@ 2014-03-28 20:03 ` David Miller
1 sibling, 0 replies; 5+ messages in thread
From: David Miller @ 2014-03-28 20:03 UTC (permalink / raw)
To: sasha.levin; +Cc: netdev, linux-kernel, hannes, tytso, dborkman
From: Sasha Levin <sasha.levin@oracle.com>
Date: Thu, 27 Mar 2014 02:01:34 -0400
> lib/random32.c was split out of the network code and is de-facto
> still maintained by the almighty net/ gods.
>
> Make it a bit more official so that people who aren't aware of
> that know where to send their patches.
>
> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Applied.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-03-28 20:03 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-27 6:01 [PATCH] random32: assign to network folks in MAINTAINERS Sasha Levin
2014-03-27 6:01 ` [PATCH v2] random32: avoid attempt to late reseed if in the middle of seeding Sasha Levin
2014-03-27 6:17 ` Hannes Frederic Sowa
2014-03-27 8:52 ` Daniel Borkmann
2014-03-28 20:03 ` [PATCH] random32: assign to network folks in MAINTAINERS David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.