[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL V2 25/27] net: mcf: limit buffer descriptor count
From: |
Jason Wang |
Subject: |
[Qemu-devel] [PULL V2 25/27] net: mcf: limit buffer descriptor count |
Date: |
Tue, 27 Sep 2016 18:13:05 +0800 |
From: Prasad J Pandit <address@hidden>
ColdFire Fast Ethernet Controller uses buffer descriptors to manage
data flow to/fro receive & transmit queues. While transmitting
packets, it could continue to read buffer descriptors if a buffer
descriptor has length of zero and has crafted values in bd.flags.
Set upper limit to number of buffer descriptors.
Reported-by: Li Qiang <address@hidden>
Signed-off-by: Prasad J Pandit <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Signed-off-by: Jason Wang <address@hidden>
---
hw/net/mcf_fec.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/hw/net/mcf_fec.c b/hw/net/mcf_fec.c
index 0ee8ad9..d31fea1 100644
--- a/hw/net/mcf_fec.c
+++ b/hw/net/mcf_fec.c
@@ -23,6 +23,7 @@ do { printf("mcf_fec: " fmt , ## __VA_ARGS__); } while (0)
#define DPRINTF(fmt, ...) do {} while(0)
#endif
+#define FEC_MAX_DESC 1024
#define FEC_MAX_FRAME_SIZE 2032
typedef struct {
@@ -149,7 +150,7 @@ static void mcf_fec_do_tx(mcf_fec_state *s)
uint32_t addr;
mcf_fec_bd bd;
int frame_size;
- int len;
+ int len, descnt = 0;
uint8_t frame[FEC_MAX_FRAME_SIZE];
uint8_t *ptr;
@@ -157,7 +158,7 @@ static void mcf_fec_do_tx(mcf_fec_state *s)
ptr = frame;
frame_size = 0;
addr = s->tx_descriptor;
- while (1) {
+ while (descnt++ < FEC_MAX_DESC) {
mcf_fec_read_bd(&bd, addr);
DPRINTF("tx_bd %x flags %04x len %d data %08x\n",
addr, bd.flags, bd.length, bd.data);
--
2.7.4
- [Qemu-devel] [PULL V2 15/27] e1000: fix buliding complaint, (continued)
- [Qemu-devel] [PULL V2 15/27] e1000: fix buliding complaint, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 16/27] tap: Allow specifying a bridge, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 17/27] net: limit allocation in nc_sendv_compat, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 18/27] e1000e: Flush all receive queues on receive enable, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 20/27] e1000e: Fix CTRL_EXT.EIAME behavior, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 19/27] e1000e: Flush receive queues on link up, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 21/27] e1000e: Fix PBACLR implementation, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 22/27] e1000e: Fix OTHER interrupts processing for MSI-X, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 23/27] e1000e: Fix spurious RX TCP ACK interrupts, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 24/27] e1000e: Fix EIAC register implementation, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 25/27] net: mcf: limit buffer descriptor count,
Jason Wang <=
- [Qemu-devel] [PULL V2 26/27] mcf_fec: fix error in qemu_send_packet argument, Jason Wang, 2016/09/27
- [Qemu-devel] [PULL V2 27/27] imx_fec: fix error in qemu_send_packet argument, Jason Wang, 2016/09/27
- Re: [Qemu-devel] [PULL V2 00/27] Net patches, Peter Maydell, 2016/09/27