From dd969e4d1032da2403d89f1f7e3eae1b909deacf Mon Sep 17 00:00:00 2001 From: Shaun Tancheff Date: Tue, 26 Mar 2024 00:11:51 -0700 Subject: [PATCH] LU-15074 build: Use strlcpy if strscpy is not available Linux commit v4.2-rc1-2-g30035e45753b string: provide strscpy() The strscpy() API is intended to be used instead of strlcpy(), and instead of most uses of strncpy(). Unfortunatley strscpy is not always available. Test for strscpy and fallback to strlcpy when strscpy is not available. Lustre-change: https://review.whamcloud.com/45175 Lustre-commit: 7861d0754d42ed2a02a330eb730cb43f21dd30f2 Test-Parameters: trivial Fixes: b77a6d86936 ("LU-14665 lnet: simplify lnet_ni_add_interface") HPE-bug-id: LUS-9546 Signed-off-by: Shaun Tancheff Change-Id: I43038e4a6260dafb57195ec3417ce009f5a3fad4 Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/54569 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Yang Sheng Reviewed-by: Andreas Dilger --- lnet/autoconf/lustre-lnet.m4 | 20 ++++++++++++++++++++ lnet/lnet/config.c | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4 index c1e3c90..0bddb78 100644 --- a/lnet/autoconf/lustre-lnet.m4 +++ b/lnet/autoconf/lustre-lnet.m4 @@ -723,6 +723,25 @@ AC_SUBST(GNICPPFLAGS) AC_SUBST(GNILND) ]) # LN_CONFIG_GNILND +# LN_CONFIG_STRSCPY_EXISTS +# +# If strscpy exists, prefer it over strlcpy +# +AC_DEFUN([LN_CONFIG_STRSCPY_EXISTS], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([kernel strscpy is available], +strscpy_exists, [ + #include +],[ + strscpy((char *)NULL, (const char *)NULL, 0); +],[ + AC_DEFINE(HAVE_STRSCPY, 1, + [kernel strscpy is available]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LN_CONFIG_STRSCPY_EXISTS + # LN_CONFIG_SOCK_CREATE_KERN # # 4.x sock_create_kern() added a first parameter as 'struct net *' @@ -950,6 +969,7 @@ LN_CONFIG_BACKOFF LN_CONFIG_O2IB LN_CONFIG_O2IB_KERNEL LN_CONFIG_GNILND +LN_CONFIG_STRSCPY_EXISTS # 3.10 LN_EXPORT_KMAP_TO_PAGE # 3.15 diff --git a/lnet/lnet/config.c b/lnet/lnet/config.c index a19fa98..c3c2d43 100644 --- a/lnet/lnet/config.c +++ b/lnet/lnet/config.c @@ -53,6 +53,10 @@ static int lnet_tbnob = 0; /* track text buf allocation */ #define SPACESTR " \t\v\r\n" #define DELIMITERS ":()[]" +#ifndef HAVE_STRSCPY +#define strscpy(s1, s2, sz) strlcpy((s1), (s2), (sz)) +#endif + static void lnet_syntax(const char *name, const char *str, int offset, int width) { -- 1.8.3.1