svn commit: r213123 - stable/7/sys/dev/ed
Pyun YongHyeon
yongari at FreeBSD.org
Fri Sep 24 19:15:00 UTC 2010
Author: yongari
Date: Fri Sep 24 19:14:59 2010
New Revision: 213123
URL: http://svn.freebsd.org/changeset/base/213123
Log:
MFC r211721:
Fix a possible unaligned access to savebyte array.
PR: kern/122195
Modified:
stable/7/sys/dev/ed/if_ed.c
Directory Properties:
stable/7/sys/ (props changed)
stable/7/sys/cddl/contrib/opensolaris/ (props changed)
stable/7/sys/contrib/dev/acpica/ (props changed)
stable/7/sys/contrib/pf/ (props changed)
Modified: stable/7/sys/dev/ed/if_ed.c
==============================================================================
--- stable/7/sys/dev/ed/if_ed.c Fri Sep 24 19:13:43 2010 (r213122)
+++ stable/7/sys/dev/ed/if_ed.c Fri Sep 24 19:14:59 2010 (r213123)
@@ -1457,9 +1457,12 @@ ed_pio_write_mbufs(struct ed_softc *sc,
}
} else {
/* NE2000s are a pain */
- unsigned char *data;
+ uint8_t *data;
int len, wantbyte;
- unsigned char savebyte[2];
+ union {
+ uint16_t w;
+ uint8_t b[2];
+ } saveword;
wantbyte = 0;
@@ -1469,9 +1472,9 @@ ed_pio_write_mbufs(struct ed_softc *sc,
data = mtod(m, caddr_t);
/* finish the last word */
if (wantbyte) {
- savebyte[1] = *data;
+ saveword.b[1] = *data;
ed_asic_outw(sc, ED_NOVELL_DATA,
- *(u_short *)savebyte);
+ saveword.w);
data++;
len--;
wantbyte = 0;
@@ -1485,7 +1488,7 @@ ed_pio_write_mbufs(struct ed_softc *sc,
}
/* save last byte, if necessary */
if (len == 1) {
- savebyte[0] = *data;
+ saveword.b[0] = *data;
wantbyte = 1;
}
}
@@ -1493,7 +1496,7 @@ ed_pio_write_mbufs(struct ed_softc *sc,
}
/* spit last byte */
if (wantbyte)
- ed_asic_outw(sc, ED_NOVELL_DATA, *(u_short *)savebyte);
+ ed_asic_outw(sc, ED_NOVELL_DATA, saveword.w);
}
/*
More information about the svn-src-stable-7
mailing list