summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2009-06-02 18:06:31 +0000
committerderaadt <deraadt@openbsd.org>2009-06-02 18:06:31 +0000
commit79d84f1b4ffbf58fe0436090d17ba94127b08466 (patch)
treeceb93fce6cc1a9562b0fa548cb4cc5870f8c5110
parentFix the long-standing crash when >NXNAME characters were inserted (diff)
downloadwireguard-openbsd-79d84f1b4ffbf58fe0436090d17ba94127b08466.tar.xz
wireguard-openbsd-79d84f1b4ffbf58fe0436090d17ba94127b08466.zip
The two "firmware" arrays only contained 16 bit values, but were being
being stored in an array of 32 bits. waste of memory. The bandpass filter table only contained 16 bit values, but was being treaded as if it was in an array of 32 bit values, thus what was being loaded into the chip was totally wrong and this probably explains why I remember it sounded horrid. Not tested on real hardware; incorrect array accesses discovered by Parfait ok oga
-rw-r--r--sys/dev/microcode/esa/esadsp.h6
-rw-r--r--sys/dev/pci/esa.c8
2 files changed, 7 insertions, 7 deletions
diff --git a/sys/dev/microcode/esa/esadsp.h b/sys/dev/microcode/esa/esadsp.h
index 52221edf3b4..632890d7dd2 100644
--- a/sys/dev/microcode/esa/esadsp.h
+++ b/sys/dev/microcode/esa/esadsp.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: esadsp.h,v 1.2 2003/06/26 00:53:43 mickey Exp $ */
+/* $OpenBSD: esadsp.h,v 1.3 2009/06/02 18:06:34 deraadt Exp $ */
/* $NetBSD: esadsp.h,v 1.4 2002/01/07 07:33:09 jmcneill Exp $ */
/*
@@ -94,7 +94,7 @@ static const struct rec_vals {
{ ESA_SRC3_DIRECTION_OFFSET + 22, 0xff}
};
-static const u_int32_t esa_assp_kernel_image[] = {
+static const u_int16_t esa_assp_kernel_image[] = {
0x7980, 0x0030, 0x7980, 0x03b4, 0x7980, 0x03b4, 0x7980, 0x00fb,
0x7980, 0x00dd, 0x7980, 0x03b4, 0x7980, 0x0332, 0x7980, 0x0287,
0x7980, 0x03b4, 0x7980, 0x03b4, 0x7980, 0x03b4, 0x7980, 0x03b4,
@@ -216,7 +216,7 @@ static const u_int32_t esa_assp_kernel_image[] = {
0x0267, 0x0368, 0x0469, 0x056a, 0xbe3a,
};
-static const u_int32_t esa_assp_minisrc_image[] = {
+static const u_int16_t esa_assp_minisrc_image[] = {
0xbf80, 0x101e, 0x906e,
0x006e, 0x8b88, 0x6980, 0xef88, 0x906f, 0x0d6f, 0x6900, 0xeb08,
0x0412, 0xbc20, 0x696e, 0xb801, 0x906e, 0x7980, 0x0403, 0xb90e,
diff --git a/sys/dev/pci/esa.c b/sys/dev/pci/esa.c
index 798aa358a1c..0158338ffd2 100644
--- a/sys/dev/pci/esa.c
+++ b/sys/dev/pci/esa.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: esa.c,v 1.16 2008/10/25 22:30:43 jakemsr Exp $ */
+/* $OpenBSD: esa.c,v 1.17 2009/06/02 18:06:31 deraadt Exp $ */
/* $NetBSD: esa.c,v 1.12 2002/03/24 14:17:35 jmcneill Exp $ */
/*
@@ -1333,18 +1333,18 @@ esa_init(struct esa_softc *sc)
/* Write kernel code into memory */
size = sizeof(esa_assp_kernel_image);
- for (i = 0; i < size / 2; i++)
+ for (i = 0; i < size; i++)
esa_write_assp(sc, ESA_MEMTYPE_INTERNAL_CODE,
ESA_REV_B_CODE_MEMORY_BEGIN + i, esa_assp_kernel_image[i]);
size = sizeof(esa_assp_minisrc_image);
- for (i = 0; i < size / 2; i++)
+ for (i = 0; i < size; i++)
esa_write_assp(sc, ESA_MEMTYPE_INTERNAL_CODE, 0x400 + i,
esa_assp_minisrc_image[i]);
/* Write the coefficients for the low pass filter */
size = sizeof(esa_minisrc_lpf_image);
- for (i = 0; i < size / 2; i++)
+ for (i = 0; i < size; i++)
esa_write_assp(sc, ESA_MEMTYPE_INTERNAL_CODE,
0x400 + ESA_MINISRC_COEF_LOC + i, esa_minisrc_lpf_image[i]);
esa_write_assp(sc, ESA_MEMTYPE_INTERNAL_CODE,