Page MenuHomeFreeBSD

D36601.id110638.diff
No OneTemporary

D36601.id110638.diff

diff --git a/sys/riscv/riscv/identcpu.c b/sys/riscv/riscv/identcpu.c
--- a/sys/riscv/riscv/identcpu.c
+++ b/sys/riscv/riscv/identcpu.c
@@ -142,7 +142,7 @@
fill_elf_hwcap(void *dummy __unused)
{
u_long caps[256] = {0};
- char isa[ISA_NAME_MAXLEN];
+ char *isa;
u_long hwcap;
phandle_t node;
ssize_t len;
@@ -175,8 +175,7 @@
if (!ofw_bus_node_is_compatible(node, "riscv"))
continue;
- len = OF_getprop(node, "riscv,isa", isa, sizeof(isa));
- KASSERT(len <= ISA_NAME_MAXLEN, ("ISA string truncated"));
+ len = OF_getprop_alloc(node, "riscv,isa", (void **)&isa);
if (len == -1) {
if (bootverbose)
printf("fill_elf_hwcap: "
@@ -190,8 +189,9 @@
}
hwcap = 0;
- for (i = ISA_PREFIX_LEN; i < len; i++)
+ for (i = ISA_PREFIX_LEN; i < len && isa[i] != '_'; i++)
hwcap |= caps[(unsigned char)isa[i]];
+ OF_prop_free(isa);
if (elf_hwcap != 0)
elf_hwcap &= hwcap;

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 1, 6:48 AM (13 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30669265
Default Alt Text
D36601.id110638.diff (909 B)

Event Timeline