[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 3/5] ftgmac100: check RX and TX buffer alignment
From: |
Cédric Le Goater |
Subject: |
[PATCH v3 3/5] ftgmac100: check RX and TX buffer alignment |
Date: |
Tue, 14 Jan 2020 11:34:31 +0100 |
These buffers should be aligned on 16 bytes.
Ignore invalid RX and TX buffer addresses and log an error. All
incoming and outgoing traffic will be dropped because no valid RX or
TX descriptors will be available.
Signed-off-by: Cédric Le Goater <address@hidden>
---
hw/net/ftgmac100.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/hw/net/ftgmac100.c b/hw/net/ftgmac100.c
index 86ac25894a89..051f7b7af2d6 100644
--- a/hw/net/ftgmac100.c
+++ b/hw/net/ftgmac100.c
@@ -198,6 +198,8 @@ typedef struct {
uint32_t des3;
} FTGMAC100Desc;
+#define FTGMAC100_DESC_ALIGNMENT 16
+
/*
* Specific RTL8211E MII Registers
*/
@@ -722,6 +724,12 @@ static void ftgmac100_write(void *opaque, hwaddr addr,
s->itc = value;
break;
case FTGMAC100_RXR_BADR: /* Ring buffer address */
+ if (!QEMU_IS_ALIGNED(value, FTGMAC100_DESC_ALIGNMENT)) {
+ qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad RX buffer alignment 0x%"
+ HWADDR_PRIx "\n", __func__, value);
+ return;
+ }
+
s->rx_ring = value;
s->rx_descriptor = s->rx_ring;
break;
@@ -731,6 +739,11 @@ static void ftgmac100_write(void *opaque, hwaddr addr,
break;
case FTGMAC100_NPTXR_BADR: /* Transmit buffer address */
+ if (!QEMU_IS_ALIGNED(value, FTGMAC100_DESC_ALIGNMENT)) {
+ qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad TX buffer alignment 0x%"
+ HWADDR_PRIx "\n", __func__, value);
+ return;
+ }
s->tx_ring = value;
s->tx_descriptor = s->tx_ring;
break;
--
2.21.1
- [PATCH v3 0/5] aspeed: extensions and fixes, Cédric Le Goater, 2020/01/14
- [PATCH v3 1/5] hw/sd: Configure number of slots exposed by the ASPEED SDHCI model, Cédric Le Goater, 2020/01/14
- [PATCH v3 2/5] hw/arm: ast2600: Wire up the eMMC controller, Cédric Le Goater, 2020/01/14
- [PATCH v3 3/5] ftgmac100: check RX and TX buffer alignment,
Cédric Le Goater <=
- [PATCH v3 4/5] hw/arm/aspeed: add a 'execute-in-place' property to boot directly from CE0, Cédric Le Goater, 2020/01/14
- [PATCH v3 5/5] misc/pca9552: Add qom set and get, Cédric Le Goater, 2020/01/14
- Re: [PATCH v3 0/5] aspeed: extensions and fixes, Peter Maydell, 2020/01/30