diff mbox series

[v2] mmc: core: Add CIDs for cards to the entropy pool

Message ID 20220425205442.1347837-1-linus.walleij@linaro.org
State New
Headers show
Series [v2] mmc: core: Add CIDs for cards to the entropy pool | expand

Commit Message

Linus Walleij April 25, 2022, 8:54 p.m. UTC
To make the entropy pool a bit better we can toss in the
CID for eMMC and SD cards into it, usually the serial
number portion is at least unique.

This does not count as improvement of the entropy but
in practice it makes it a bit more random to mix in these
numbers.

Cc: Theodore Ts'o <tytso@mit.edu>
Acked-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
ChangeLog v1->v2:
- Move the device_add_randomness() into each mmc_decode_cid()
  function for MMC and SD card.
- Use the raw cid, no reason to unpack the data before using
  it for this purpose.
---
 drivers/mmc/core/mmc.c | 7 +++++++
 drivers/mmc/core/sd.c  | 7 +++++++
 2 files changed, 14 insertions(+)

Comments

Ulf Hansson April 26, 2022, 1:55 p.m. UTC | #1
On Mon, 25 Apr 2022 at 22:56, Linus Walleij <linus.walleij@linaro.org> wrote:
>
> To make the entropy pool a bit better we can toss in the
> CID for eMMC and SD cards into it, usually the serial
> number portion is at least unique.
>
> This does not count as improvement of the entropy but
> in practice it makes it a bit more random to mix in these
> numbers.
>
> Cc: Theodore Ts'o <tytso@mit.edu>
> Acked-by: Jason A. Donenfeld <Jason@zx2c4.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

Applied for next, thanks!

Kind regards
Uffe


> ---
> ChangeLog v1->v2:
> - Move the device_add_randomness() into each mmc_decode_cid()
>   function for MMC and SD card.
> - Use the raw cid, no reason to unpack the data before using
>   it for this purpose.
> ---
>  drivers/mmc/core/mmc.c | 7 +++++++
>  drivers/mmc/core/sd.c  | 7 +++++++
>  2 files changed, 14 insertions(+)
>
> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
> index 6b78ae45c4c9..9804a06ffadd 100644
> --- a/drivers/mmc/core/mmc.c
> +++ b/drivers/mmc/core/mmc.c
> @@ -12,6 +12,7 @@
>  #include <linux/slab.h>
>  #include <linux/stat.h>
>  #include <linux/pm_runtime.h>
> +#include <linux/random.h>
>  #include <linux/sysfs.h>
>
>  #include <linux/mmc/host.h>
> @@ -71,6 +72,12 @@ static int mmc_decode_cid(struct mmc_card *card)
>  {
>         u32 *resp = card->raw_cid;
>
> +       /*
> +        * Add the raw card ID (cid) data to the entropy pool. It doesn't
> +        * matter that not all of it is unique, it's just bonus entropy.
> +        */
> +       add_device_randomness(&card->raw_cid, sizeof(card->raw_cid));
> +
>         /*
>          * The selection of the format here is based upon published
>          * specs from sandisk and from what people have reported.
> diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
> index 68df6b2f49cc..c5f1df6ce4c0 100644
> --- a/drivers/mmc/core/sd.c
> +++ b/drivers/mmc/core/sd.c
> @@ -12,6 +12,7 @@
>  #include <linux/slab.h>
>  #include <linux/stat.h>
>  #include <linux/pm_runtime.h>
> +#include <linux/random.h>
>  #include <linux/scatterlist.h>
>  #include <linux/sysfs.h>
>
> @@ -83,6 +84,12 @@ void mmc_decode_cid(struct mmc_card *card)
>  {
>         u32 *resp = card->raw_cid;
>
> +       /*
> +        * Add the raw card ID (cid) data to the entropy pool. It doesn't
> +        * matter that not all of it is unique, it's just bonus entropy.
> +        */
> +       add_device_randomness(&card->raw_cid, sizeof(card->raw_cid));
> +
>         /*
>          * SD doesn't currently have a version field so we will
>          * have to assume we can parse this.
> --
> 2.35.1
>
diff mbox series

Patch

diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 6b78ae45c4c9..9804a06ffadd 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -12,6 +12,7 @@ 
 #include <linux/slab.h>
 #include <linux/stat.h>
 #include <linux/pm_runtime.h>
+#include <linux/random.h>
 #include <linux/sysfs.h>
 
 #include <linux/mmc/host.h>
@@ -71,6 +72,12 @@  static int mmc_decode_cid(struct mmc_card *card)
 {
 	u32 *resp = card->raw_cid;
 
+	/*
+	 * Add the raw card ID (cid) data to the entropy pool. It doesn't
+	 * matter that not all of it is unique, it's just bonus entropy.
+	 */
+	add_device_randomness(&card->raw_cid, sizeof(card->raw_cid));
+
 	/*
 	 * The selection of the format here is based upon published
 	 * specs from sandisk and from what people have reported.
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 68df6b2f49cc..c5f1df6ce4c0 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -12,6 +12,7 @@ 
 #include <linux/slab.h>
 #include <linux/stat.h>
 #include <linux/pm_runtime.h>
+#include <linux/random.h>
 #include <linux/scatterlist.h>
 #include <linux/sysfs.h>
 
@@ -83,6 +84,12 @@  void mmc_decode_cid(struct mmc_card *card)
 {
 	u32 *resp = card->raw_cid;
 
+	/*
+	 * Add the raw card ID (cid) data to the entropy pool. It doesn't
+	 * matter that not all of it is unique, it's just bonus entropy.
+	 */
+	add_device_randomness(&card->raw_cid, sizeof(card->raw_cid));
+
 	/*
 	 * SD doesn't currently have a version field so we will
 	 * have to assume we can parse this.