diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2019-10-27 11:00:19 -0700 |
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2019-10-27 11:00:19 -0700 |
| commit | 728d90bdc9e480dc93913e59a0aa3c896c7aa697 (patch) | |
| tree | 258b1b6ee711f0ef67fd225700d84eccec285194 /include/linux/string.h | |
| parent | cb3efd5a38855eabd26c2b631dd027169678d60f (diff) | |
| parent | d6d5df1db6e9d7f8f76d2911707f7d5877251b02 (diff) | |
| download | lwn-728d90bdc9e480dc93913e59a0aa3c896c7aa697.tar.gz lwn-728d90bdc9e480dc93913e59a0aa3c896c7aa697.zip | |
Merge tag 'v5.4-rc5' into next
Sync up with mainline.
Diffstat (limited to 'include/linux/string.h')
| -rw-r--r-- | include/linux/string.h | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/include/linux/string.h b/include/linux/string.h index 4deb11f7976b..b6ccdc2c7f02 100644 --- a/include/linux/string.h +++ b/include/linux/string.h @@ -227,7 +227,26 @@ static inline bool strstarts(const char *str, const char *prefix) } size_t memweight(const void *ptr, size_t bytes); -void memzero_explicit(void *s, size_t count); + +/** + * memzero_explicit - Fill a region of memory (e.g. sensitive + * keying data) with 0s. + * @s: Pointer to the start of the area. + * @count: The size of the area. + * + * Note: usually using memset() is just fine (!), but in cases + * where clearing out _local_ data at the end of a scope is + * necessary, memzero_explicit() should be used instead in + * order to prevent the compiler from optimising away zeroing. + * + * memzero_explicit() doesn't need an arch-specific version as + * it just invokes the one of memset() implicitly. + */ +static inline void memzero_explicit(void *s, size_t count) +{ + memset(s, 0, count); + barrier_data(s); +} /** * kbasename - return the last part of a pathname. @@ -474,8 +493,9 @@ static inline void memcpy_and_pad(void *dest, size_t dest_len, * But this can lead to bugs due to typos, or if prefix is a pointer * and not a constant. Instead use str_has_prefix(). * - * Returns: 0 if @str does not start with @prefix - strlen(@prefix) if @str does start with @prefix + * Returns: + * * strlen(@prefix) if @str starts with @prefix + * * 0 if @str does not start with @prefix */ static __always_inline size_t str_has_prefix(const char *str, const char *prefix) { |
