cvs commit: src/sys/geom geom_gpt.c

Marcel Moolenaar marcel at FreeBSD.org
Sun Jun 4 20:28:02 UTC 2006


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


More information about the cvs-src mailing list