⬢ DragonFlyBSD Kernel Audit
DF-3722 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/netif/mxge/if_mxge.c
+++ b/sys/dev/netif/mxge/if_mxge.c
@@ -772,6 +772,8 @@
 	int i;
 
 	buf = (uint32_t *)((unsigned long)(buf_bytes + 7) & ~7UL);
+	/* don't leak kernel stack bytes to the device */
+	bzero(buf_bytes, sizeof(buf_bytes));
 
 	/* Clear confirmation addr */
 	confirm = (volatile uint32_t *)sc->cmd;
@@ -936,6 +938,8 @@
 	int status, i;
 
 	buf = (uint32_t *)((unsigned long)(buf_bytes + 7) & ~7UL);
+	/* don't leak kernel stack bytes to the device */
+	bzero(buf_bytes, sizeof(buf_bytes));
 
 	size = sc->sram_size;
 	status = mxge_load_firmware_helper(sc, &size);
@@ -3616,6 +3620,8 @@
 		old_down_cnt = sc->down_cnt;
 		wmb();
 
+		/* don't leak kernel stack to the device */
+		bzero(&cmd, sizeof(cmd));
 		err = mxge_send_cmd(sc, MXGEFW_CMD_ETHERNET_DOWN, &cmd);
 		if (err)
 			if_printf(ifp, "Couldn't bring down link\n");