linprocfs: Avoid using a sysctl to get the CPU model string

This will fail if the reading process is in capability mode.  Just copy
the string directly.

PR:		276043
Reviewed by:	emaste, imp, kib
Reported and tested by:	Ricardo Branco <rbranco@suse.com>
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D43281

(cherry picked from commit d74a742704eb81f0c6f4aa83e4cb0de26a81c400)
This commit is contained in:
Mark Johnston 2024-01-04 08:25:05 -05:00
parent 675c24cd01
commit b2dfbd772e

View file

@ -201,10 +201,7 @@ linprocfs_domeminfo(PFS_FILL_ARGS)
static int
linprocfs_docpuinfo(PFS_FILL_ARGS)
{
int hw_model[2];
char model[128];
uint64_t freq;
size_t size;
u_int cache_size[4];
u_int regs[4] = { 0 };
int fqmhz, fqkhz;
@ -304,12 +301,6 @@ linprocfs_docpuinfo(PFS_FILL_ARGS)
"acc_power",
};
hw_model[0] = CTL_HW;
hw_model[1] = HW_MODEL;
model[0] = '\0';
size = sizeof(model);
if (kernel_sysctl(td, hw_model, 2, &model, &size, 0, 0, 0, 0) != 0)
strcpy(model, "unknown");
#ifdef __i386__
switch (cpu_vendor_id) {
case CPU_VENDOR_AMD:
@ -353,7 +344,7 @@ linprocfs_docpuinfo(PFS_FILL_ARGS)
"cpuid level\t: %d\n"
"wp\t\t: %s\n",
i, cpu_vendor, CPUID_TO_FAMILY(cpu_id),
CPUID_TO_MODEL(cpu_id), model, cpu_id & CPUID_STEPPING,
CPUID_TO_MODEL(cpu_id), cpu_model, cpu_id & CPUID_STEPPING,
fqmhz, fqkhz,
(cache_size[2] >> 16), 0, mp_ncpus, i, mp_ncpus,
i, i, /*cpu_id & CPUID_LOCAL_APIC_ID ??*/