[PATCH 10/10] ppc64: Define /cpus in iSeries device tree

Milton Miller miltonm at bga.com
Wed Aug 10 17:28:39 EST 2005


>
> +void dt_cpus(struct iseries_flat_dt *dt)+{
> +       unsigned char buf[32];
...
> +
> +       /* yuck */
> +       snprintf(buf, 32, "PowerPC,%s", cur_cpu_spec->cpu_name);
> +       p = strchr(buf, ' ');
> +       if (!p) p = buf + strlen(buf);
...

> +       for (i = 0; i < NR_CPUS; i++) {
...

> +               snprintf(p, 32 - (p - buf), "@%d", i);
> +               dt_start_node(dt, buf);


The magic number number 32 occurs at least 3 times in this context,
but later a different magic 32 occurs in this function.

The math for second one takes thought to verify.

How about just calculating the length of the desired part of the
cpu name and then doing a single snprintf with a %*s counted length
string?  Alternatively, a private copy of the desired portion
might be clearer code.

We might also want to warn if we get 32 chars and/or limit the
length so that we are sure to have room for the instance address.

Something like (totally untested):

	snprintf(buf, sizeof(buf), "PowerPC,%*s@%d", cpunamelen,
			cur_cpu_spec->cpu_name, i);

milton




More information about the Linuxppc64-dev mailing list