In sys/dev/dkwedge/dkwedge_bsdlabel.c, I find (and I see more or less the same code in 5.2 and what cvsweb.n.o shows me)
static int validate_label(mbr_args_t *a, daddr_t label_sector, size_t label_offset) { ... /* * We have validated the partition count. Checksum it. * Note that we purposefully checksum before swapping * the byte order. */ ...code that does indeed checksum before swapping... } Does anyone know what the intent of this is? The only reason I would expect to see a byteswapped label is when it's written by a machine of the other endianness, and in that case the checksum will be wrong unless the label is swapped before checksumming (and even then only if the compiler doesn't insert shims in the struct, not that it's likely to given the present layout). But that comment clearly indicates that _someone_ thought it reasonable to checksum before swapping, so I can't help wondering what use case that's appropriate for. /~\ The ASCII Mouse \ / Ribbon Campaign X Against HTML mo...@rodents-montreal.org / \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B