> Date: Wed, 24 Nov 2010 23:07:45 +1000
> From: David Gwynne <l...@animata.net>
> X-Scanned-By: MIMEDefang 2.62 on 220.110.80.83
> List-Owner: <mailto:tech-ow...@openbsd.org>
> X-Loop: tech@openbsd.org
> Sender: owner-t...@openbsd.org
> X-XS4ALL-DNSBL-Checked: mxdrop234.xs4all.nl checked 192.43.244.163 against 
> DNS blacklists
> X-CNFS-Analysis: v=1.1 cv=nPak59oIMtOfdVQch4uYmxGPiLR+hhfJMKqCKb05RZs= c=1
>  sm=0 a=JX5xobAnsNsA:10 a=kj9zAlcOel0A:10 a=A3duGc4wJ8K8BtNzzvyz4A==:17
>  a=UJL0KVoXsl7s0H4imRkA:9 a=jBQNsEcNSG5iu2jYQfsA:7
>  a=KW889z4Bgh1uv_EMWkrDp0U9jl4A:4 a=CjuIK1q_8ugA:10 a=NDu43_ybFpjtrQvi:21
>  a=7GxpAH8eZbexILTH:21 a=A3duGc4wJ8K8BtNzzvyz4A==:117
> X-Virus-Scanned: by XS4ALL Virus Scanner
> X-XS4ALL-Spam-Score: 0.0 () none
> X-XS4ALL-Spam: NO
> Envelope-To: mark.kette...@xs4all.nl
> 
> without this diff this box panics on boot while attaching the 36th
> cpu. its a buffer overrun...
> 
> analysis done by kettenis.
> 
> ok?

I think the check should involve MAXCPUS.  Your diff makes clear
though that simply bumping MAXCPUS to 64 isn't going to fly.  At the
very least cpus_attached needs to be changed into a 64-bit integer.

> Index: cpu.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/amd64/amd64/cpu.c,v
> retrieving revision 1.38
> diff -u -p -r1.38 cpu.c
> --- cpu.c     13 Nov 2010 04:16:42 -0000      1.38
> +++ cpu.c     24 Nov 2010 13:04:30 -0000
> @@ -168,6 +168,9 @@ cpu_match(struct device *parent, void *m
>       struct cfdata *cf = match;
>       struct cpu_attach_args *caa = aux;
>  
> +     if (~cpus_attached == 0)
> +             return 0;
> +
>       if (strcmp(caa->caa_name, cf->cf_driver->cd_name) == 0)
>               return 1;
>       return 0;

Reply via email to