From: Greg Kroah-Hartman Date: Fri, 20 Jul 2018 11:45:02 +0000 (+0200) Subject: 4.14-stable patches X-Git-Tag: v3.18.116~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2bf848bb83f8e642fb5c58c17905ae5efcb08ac7;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: string-drop-__must_check-from-strscpy-and-restore-strscpy-usages-in-cgroup.patch --- diff --git a/queue-4.14/series b/queue-4.14/series index ed4d6b84f41..86cd181c213 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -89,3 +89,4 @@ arm64-kvm-add-hyp-per-cpu-accessors.patch arm64-kvm-add-arch_workaround_2-support-for-guests.patch arm64-kvm-handle-guest-s-arch_workaround_2-requests.patch arm64-kvm-add-arch_workaround_2-discovery-through-arch_features_func_id.patch +string-drop-__must_check-from-strscpy-and-restore-strscpy-usages-in-cgroup.patch diff --git a/queue-4.14/string-drop-__must_check-from-strscpy-and-restore-strscpy-usages-in-cgroup.patch b/queue-4.14/string-drop-__must_check-from-strscpy-and-restore-strscpy-usages-in-cgroup.patch new file mode 100644 index 00000000000..0a6d6a86abc --- /dev/null +++ b/queue-4.14/string-drop-__must_check-from-strscpy-and-restore-strscpy-usages-in-cgroup.patch @@ -0,0 +1,65 @@ +From 08a77676f9c5fc69a681ccd2cd8140e65dcb26c7 Mon Sep 17 00:00:00 2001 +From: Tejun Heo +Date: Tue, 9 Jan 2018 07:21:15 -0800 +Subject: string: drop __must_check from strscpy() and restore strscpy() usages in cgroup +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Tejun Heo + +commit 08a77676f9c5fc69a681ccd2cd8140e65dcb26c7 upstream. + +e7fd37ba1217 ("cgroup: avoid copying strings longer than the buffers") +converted possibly unsafe strncpy() usages in cgroup to strscpy(). +However, although the callsites are completely fine with truncated +copied, because strscpy() is marked __must_check, it led to the +following warnings. + + kernel/cgroup/cgroup.c: In function ‘cgroup_file_name’: + kernel/cgroup/cgroup.c:1400:10: warning: ignoring return value of ‘strscpy’, declared with attribute warn_unused_result [-Wunused-result] + strscpy(buf, cft->name, CGROUP_FILE_NAME_MAX); + ^ + +To avoid the warnings, 50034ed49645 ("cgroup: use strlcpy() instead of +strscpy() to avoid spurious warning") switched them to strlcpy(). + +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. + +Remove __must_check from strscpy() and restore strscpy() usages in +cgroup. + +Signed-off-by: Tejun Heo +Suggested-by: Linus Torvalds +Cc: Ma Shimiao +Cc: Arnd Bergmann +Cc: Chris Metcalf +[backport only the string.h portion to remove build warnings starting to show up - gregkh] +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/string.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/string.h ++++ b/include/linux/string.h +@@ -28,7 +28,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 *);