Subject: Re: unusual panics on NetBSD/alpha 3.0_* and 4.0_BETA
To: None <,>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: tech-kern
Date: 10/08/2006 12:21:44
>>         for (i = 0; i < num_sack_blks; i++, lp += 2) {
>>                 memcpy(&left, lp, sizeof(*lp));
>>                 memcpy(&right, lp + 1, sizeof(*lp));

I'm not sure whether this is the "anti-aliasing" David wrote of, but
this code is already broken (FSVO "broken") on any architecture where
an unaligned u_int32_t pointer cannot be represented (word-addressed

The right way to handle it (in this respect) would be something like

	char *lp;
	for (i=0;i<num_sack_blks;i++,lp+=8) {

You could use sizeof(u_int32_t) and 2*sizeof(u_int32_t) instead of 4
and 8 if you prefer, and it arguably would be better because it would
insulate the code against architectures where char != octet.  (Of
course, whether we care about such is another question.  I prefer to be
safer than necessary, as a matter of forming good habits if nothing

/~\ The ASCII				der Mouse
\ / Ribbon Campaign
 X  Against HTML
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B