[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/2] net: forbid the reentrant RX
From: |
Alexander Bulekov |
Subject: |
Re: [PATCH 1/2] net: forbid the reentrant RX |
Date: |
Wed, 2 Sep 2020 11:56:19 -0400 |
On 200728 1200, Jason Wang wrote:
>
> On 2020/7/22 下午4:57, Jason Wang wrote:
> > The memory API allows DMA into NIC's MMIO area. This means the NIC's
> > RX routine must be reentrant. Instead of auditing all the NIC, we can
> > simply detect the reentrancy and return early. The queue->delivering
> > is set and cleared by qemu_net_queue_deliver() for other queue helpers
> > to know whether the delivering in on going (NIC's receive is being
> > called). We can check it and return early in qemu_net_queue_flush() to
> > forbid reentrant RX.
> >
> > Signed-off-by: Jason Wang <jasowang@redhat.com>
> > ---
> > net/queue.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/net/queue.c b/net/queue.c
> > index 0164727e39..19e32c80fd 100644
> > --- a/net/queue.c
> > +++ b/net/queue.c
> > @@ -250,6 +250,9 @@ void qemu_net_queue_purge(NetQueue *queue,
> > NetClientState *from)
> > bool qemu_net_queue_flush(NetQueue *queue)
> > {
> > + if (queue->delivering)
> > + return false;
> > +
> > while (!QTAILQ_EMPTY(&queue->packets)) {
> > NetPacket *packet;
> > int ret;
>
>
> Queued for rc2.
>
> Thanks
>
Hi Jason,
I don't think this ever made it in. Are there any remaining problems?
Thanks
-Alex
- Re: [PATCH 1/2] net: forbid the reentrant RX,
Alexander Bulekov <=