Pull /dev/random updates from Ted Ts'o: "This adds a memzero_explicit() call which is guaranteed not to be optimized away by GCC. This is important when we are wiping cryptographically sensitive material" * tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random: crypto: memzero_explicit - make sure to clear out sensitive data random: add and use memzero_explicit() for clearing data
Showing the changes to lib/string.c (1 of 10 files). Show all
Unified · Split
| @@ -598,6 +598,22 @@ void *memset(void *s, int c, size_t count) · 597 unmodified lines | ||
| 598 | 598 | EXPORT_SYMBOL(memset); |
| 599 | 599 | #endif |
| 600 | 600 | |
| 601 | +/** | |
| 602 | + * memzero_explicit - Fill a region of memory (e.g. sensitive | |
| 603 | + * keying data) with 0s. | |
| 604 | + * @s: Pointer to the start of the area. | |
| 605 | + * @count: The size of the area. | |
| 606 | + * | |
| 607 | + * memzero_explicit() doesn't need an arch-specific version as | |
| 608 | + * it just invokes the one of memset() implicitly. | |
| 609 | + */ | |
| 610 | +void memzero_explicit(void *s, size_t count) | |
| 611 | +{ | |
| 612 | + memset(s, 0, count); | |
| 613 | + OPTIMIZER_HIDE_VAR(s); | |
| 614 | +} | |
| 615 | +EXPORT_SYMBOL(memzero_explicit); | |
| 616 | + | |
| 601 | 617 | #ifndef __HAVE_ARCH_MEMCPY |
| 602 | 618 | /** |
| 603 | 619 | * memcpy - Copy one area of memory to another |