Message ID | 20220425205442.1347837-1-linus.walleij@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] mmc: core: Add CIDs for cards to the entropy pool | expand |
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 --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.