length = min_t(int, next - partdef,
                               sizeof(new_subpart->name) - 1);
-               strncpy(new_subpart->name, partdef, length);
-               new_subpart->name[length] = '\0';
+               strscpy(new_subpart->name, partdef, length);
 
                partdef = ++next;
        } else
        }
 
        length = min_t(int, next - bdevdef, sizeof(newparts->name) - 1);
-       strncpy(newparts->name, bdevdef, length);
-       newparts->name[length] = '\0';
+       strscpy(newparts->name, bdevdef, length);
        newparts->nr_subparts = 0;
 
        next_subpart = &newparts->subpart;
                length = (!next) ? (sizeof(buf) - 1) :
                        min_t(int, next - bdevdef, sizeof(buf) - 1);
 
-               strncpy(buf, bdevdef, length);
-               buf[length] = '\0';
+               strscpy(buf, bdevdef, length);
 
                ret = parse_subpart(next_subpart, buf);
                if (ret)
 
        label_min = min_t(int, sizeof(info->volname) - 1,
                          sizeof(subpart->name));
-       strncpy(info->volname, subpart->name, label_min);
-       info->volname[label_min] = '\0';
+       strscpy(info->volname, subpart->name, label_min);
 
        snprintf(tmp, sizeof(tmp), "(%s)", info->volname);
        strlcat(state->pp_buf, tmp, PAGE_SIZE);