On Monday 18 November 2013 19:29:17 mancha wrote:
> Hauke Mehrtens <hauke <at> hauke-m.de> writes:
> > On 10/17/2013 05:40 PM, chrono wrote:
> > > Ahoi everyone,
> > > 
> > > it was requested on IRC that I send my solution to the entropy problem
> > > with the current
> > > kernel (e.g. having 0 available entropy):
> > > 
> > > root <at> OpenWrt:/# cat /proc/sys/kernel/random/entropy_avail
> > > 0
> > 
> > A similar patch was applied to trunk in r38834.
> > 
> > Hauke
> 
> I provided this backport patch to #openwrt on freenode last week. I am
> glad it was included in trunk.
> 
> Two important clarifications:
> 
> 1. The original poster applies his patch to kernel 3.3.8 (it seems) yet
>    the interface that makes use of get_cycles() in seeding the random
>    pool wasn't introduced until 3.6. The patch on pre-3.6 kernels
>    effectively does nothing entropy-wise. Without more comprehensive
>    backports, there is no similar simple solution for Attitude.

This seems not entirely accurate, as AA has a backport patch for the generic 
3.3.8 kernel to add 'add_device_randomness', see 
target/linux/generic/patches-3.3/050-rng_git_backport.patch

--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -125,21 +125,26 @@
  * The current exported interfaces for gathering environmental noise
  * from the devices are:
  *
+ *     void add_device_randomness(const void *buf, unsigned int size);
  *     void add_input_randomness(unsigned int type, unsigned int code,
  *                                unsigned int value);
- *     void add_interrupt_randomness(int irq);
+ *     void add_interrupt_randomness(int irq, int irq_flags);
...
+/*
+ * Add device- or boot-specific data to the input and nonblocking
+ * pools to help initialize them to unique values.
+ *
+ * None of this adds any entropy, it is meant to avoid the
+ * problem of the nonblocking pool having similar initial state
+ * across largely identical devices.
+ */
+void add_device_randomness(const void *buf, unsigned int size)
+{
+       unsigned long time = get_cycles() ^ jiffies;
+
+       mix_pool_bytes(&input_pool, buf, size, NULL);
...

Would there be anything else needed?

> 2. You aren't going to see /proc/sys/kernel/random/entropy_avail
>    affected by this patch because the machine/boot specific seeding
>    does not credit the entropy count.
> 
> --mancha
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Tijs
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to