drm/i915: refactor deprecated strncpy
authorJustin Stitt <justinstitt@google.com>
Tue, 19 Sep 2023 04:45:31 +0000 (04:45 +0000)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Wed, 20 Sep 2023 20:54:56 +0000 (16:54 -0400)
`strncpy` is deprecated for use on NUL-terminated destination strings [1].

We should prefer more robust and less ambiguous string interfaces.

A suitable replacement is `strscpy` [2] due to the fact that it
guarantees NUL-termination on the destination buffer without
unnecessarily NUL-padding. `ctx` is zero allocated and as such strncpy's
NUL-padding behavior was strictly a performance hit which is now
resolved.

Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings
Link: https://manpages.debian.org/testing/linux-manual-4.8/strscpy.9.en.html
Link: https://github.com/KSPP/linux/issues/90
Cc: linux-hardening@vger.kernel.org
Signed-off-by: Justin Stitt <justinstitt@google.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/i915/gem/selftests/mock_context.c

index 8ac6726ec16b7db1e5d8b91344bb48c2d52f8b30..e199d7dbb87690965d9f0f445813122e9968aa19 100644 (file)
@@ -36,7 +36,7 @@ mock_context(struct drm_i915_private *i915,
        if (name) {
                struct i915_ppgtt *ppgtt;
 
-               strncpy(ctx->name, name, sizeof(ctx->name) - 1);
+               strscpy(ctx->name, name, sizeof(ctx->name));
 
                ppgtt = mock_ppgtt(i915, name);
                if (!ppgtt)