powerpc/prom_init: Convert prom_strcpy() into prom_strscpy_pad()
In a subsequent patch we'd like to have something like a strscpy_pad() implementation usable in prom_init.c. Currently we have a strcpy() implementation with only one caller, so convert it into strscpy_pad() and update the caller. Reviewed-by: Daniel Axtens <dja@axtens.net> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210621064938.2021419-1-mpe@ellerman.id.au
This commit is contained in:
Родитель
3018fbc636
Коммит
f47d5a4fc2
|
@ -242,13 +242,31 @@ static int __init prom_strcmp(const char *cs, const char *ct)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char __init *prom_strcpy(char *dest, const char *src)
|
static ssize_t __init prom_strscpy_pad(char *dest, const char *src, size_t n)
|
||||||
{
|
{
|
||||||
char *tmp = dest;
|
ssize_t rc;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
while ((*dest++ = *src++) != '\0')
|
if (n == 0 || n > INT_MAX)
|
||||||
/* nothing */;
|
return -E2BIG;
|
||||||
return tmp;
|
|
||||||
|
// Copy up to n bytes
|
||||||
|
for (i = 0; i < n && src[i] != '\0'; i++)
|
||||||
|
dest[i] = src[i];
|
||||||
|
|
||||||
|
rc = i;
|
||||||
|
|
||||||
|
// If we copied all n then we have run out of space for the nul
|
||||||
|
if (rc == n) {
|
||||||
|
// Rewind by one character to ensure nul termination
|
||||||
|
i--;
|
||||||
|
rc = -E2BIG;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; i < n; i++)
|
||||||
|
dest[i] = '\0';
|
||||||
|
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init prom_strncmp(const char *cs, const char *ct, size_t count)
|
static int __init prom_strncmp(const char *cs, const char *ct, size_t count)
|
||||||
|
@ -2701,7 +2719,7 @@ static void __init flatten_device_tree(void)
|
||||||
|
|
||||||
/* Add "phandle" in there, we'll need it */
|
/* Add "phandle" in there, we'll need it */
|
||||||
namep = make_room(&mem_start, &mem_end, 16, 1);
|
namep = make_room(&mem_start, &mem_end, 16, 1);
|
||||||
prom_strcpy(namep, "phandle");
|
prom_strscpy_pad(namep, "phandle", sizeof("phandle"));
|
||||||
mem_start = (unsigned long)namep + prom_strlen(namep) + 1;
|
mem_start = (unsigned long)namep + prom_strlen(namep) + 1;
|
||||||
|
|
||||||
/* Build string array */
|
/* Build string array */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче