Date: Sun, 4 Jun 2006 20:26:13 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/geom geom_gpt.c Message-ID: <200606042026.k54KQDRp051694@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
marcel 2006-06-04 20:26:13 UTC FreeBSD src repository Modified files: sys/geom geom_gpt.c Log: Fix unaligned memory accesses on Alpha and possible other platforms. By using a pointer to struct dos_partition, we implicitly tell the compiler that the pointer is 4-bytes aligned, even though we know that's not the case. The fact that we only dereference the pointer to access a byte-wide field (field dp_ptyp) is not a guarantee that the compiler will in fact use a byte-wide load. On some platforms it's more efficient to use long word or quad word loads and use bit-shifting and bit-masking to get the intended byte. On those platforms an misaligned load will be the result. The fix is to use byte-wide pointer arithmetic based on sizeof() and offsetof() to avoid invalid casts which avoids that the compiler makes invalid assumptions. Backtrace provided by: wilko@ MFC after: 1 week Revision Changes Path 1.38 +4 -3 src/sys/geom/geom_gpt.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200606042026.k54KQDRp051694>