| From: Ben Hutchings <ben@decadent.org.uk> |
| Date: Wed, 07 Nov 2018 20:57:03 +0000 |
| Subject: string: drop __must_check from strscpy() |
| |
| This was done as part of commit 08a77676f9c5 upstream, from which |
| the following description is taken: |
| |
| > strlcpy() is worse than strlcpy() because it unconditionally runs |
| > strlen() on the source string, and the only reason we switched to |
| > strlcpy() here was because it was lacking __must_check, which doesn't |
| > reflect any material differences between the two function. It's just |
| > that someone added __must_check to strscpy() and not to strlcpy(). |
| > |
| > These basic string copy operations are used in variety of ways, and |
| > one of not-so-uncommon use cases is safely handling truncated copies, |
| > where the caller naturally doesn't care about the return value. The |
| > __must_check doesn't match the actual use cases and forces users to |
| > opt for inferior variants which lack __must_check by happenstance or |
| > spread ugly (void) casts. |
| |
| Cc: Tejun Heo <tj@kernel.org> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| --- a/include/linux/string.h |
| +++ b/include/linux/string.h |
| @@ -26,7 +26,7 @@ extern char * strncpy(char *,const char |
| size_t strlcpy(char *, const char *, size_t); |
| #endif |
| #ifndef __HAVE_ARCH_STRSCPY |
| -ssize_t __must_check strscpy(char *, const char *, size_t); |
| +ssize_t strscpy(char *, const char *, size_t); |
| #endif |
| #ifndef __HAVE_ARCH_STRCAT |
| extern char * strcat(char *, const char *); |