args->v0.id         = di;
                args->v0.signal_nr  = nvkm_perfdom_count_perfsig(dom);
-               strncpy(args->v0.name, dom->name, sizeof(args->v0.name) - 1);
+               strscpy(args->v0.name, dom->name, sizeof(args->v0.name));
 
                /* Currently only global counters (PCOUNTER) are implemented
                 * but this will be different for local counters (MP). */
                        snprintf(args->v0.name, sizeof(args->v0.name),
                                 "/%s/%02x", dom->name, si);
                } else {
-                       strncpy(args->v0.name, sig->name,
-                               sizeof(args->v0.name) - 1);
+                       strscpy(args->v0.name, sig->name, sizeof(args->v0.name));
                }
 
                args->v0.signal = si;
 
                args->v0.source = sig->source[si];
                args->v0.mask   = src->mask;
-               strncpy(args->v0.name, src->name, sizeof(args->v0.name) - 1);
+               strscpy(args->v0.name, src->name, sizeof(args->v0.name));
        }
 
        if (++si < source_nr) {