[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH 4/6] Under conditions of high load and low resources, it was possible for NDIS (in combination with overlying drivers) to send NET_BUFFER_LIST structures containing NULL MDL's for transmission. This resulted in an immediate bugcheck.
> -----Original Message----- > From: win-pv-devel <win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx> On Behalf Of > Martin Harvey > Sent: 23 July 2021 12:00 > To: paul@xxxxxxx; win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Cc: Owen Smith <owen.smith@xxxxxxxxxx> > Subject: RE: [EXTERNAL] [PATCH 4/6] Under conditions of high load and low > resources, it was possible > for NDIS (in combination with overlying drivers) to send NET_BUFFER_LIST > structures containing NULL > MDL's for transmission. This resulted in an immediate bugcheck. > > CAUTION: This email originated from outside of the organization. Do not click > links or open > attachments unless you can confirm the sender and know the content is safe. > > > > Hi Paul, > > Okay, so in that case, you want to move the fix up the stack from xenvif to > xennet, in which case, my > notes tell me that the call stack is as follows: > > TransmitterQueuePacket - MDL parameter is NULL. > VifTransmitterQueuePacket (MDL argument). > > Called via VIF_INTERFACE: > xennet!__TransmitterSendNetBufferList > XENVIF_VIF(TransmitterQueuePacket( .... , NET_BUFFER_CURRENT_MDL(NetBuffer) > > So, you think that the fix would best be placed in xennet! > __TransmitterSendNetBufferList, with an > extra check that NET_BUFFER_CURRENT_MDL(NetBuffer) is not NULL. Yes, exactly. NDIS weirdness like this should be dealt with at that level. Paul > > MH. > > -----Original Message----- > From: win-pv-devel <win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx> On Behalf Of > Paul Durrant > Sent: 21 July 2021 18:20 > To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Subject: Re: [PATCH 4/6] Under conditions of high load and low resources, it > was possible for NDIS (in > combination with overlying drivers) to send NET_BUFFER_LIST structures > containing NULL MDL's for > transmission. This resulted in an immediate bugcheck. > > [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments > unless you have verified the > sender and know the content is safe. > > Coping with NDIS is XENNET's responsibility. Any remedial action should be > taken there, not here. > > Paul > > On 20/07/2021 14:29, Martin Harvey wrote: > > This patch contains the immediate proximate fix for this particular > > issue, instead failing the send with STATUS_INVALID_PARAMETER. > > > > Signed-off-by: Martin Harvey <martin.harvey@xxxxxxxxxx> > > --- > > src/xenvif/transmitter.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c index > > 724615d..ea1282c 100644 > > --- a/src/xenvif/transmitter.c > > +++ b/src/xenvif/transmitter.c > > @@ -5148,13 +5148,17 @@ TransmitterQueuePacket( > > PXENVIF_TRANSMITTER_RING Ring; > > NTSTATUS status; > > > > + status = STATUS_INVALID_PARAMETER; > > + if (Mdl == NULL) > > + goto fail1; > > + > > Frontend = Transmitter->Frontend; > > > > Packet = __TransmitterGetPacket(Transmitter); > > > > status = STATUS_NO_MEMORY; > > if (Packet == NULL) > > - goto fail1; > > + goto fail2; > > > > Packet->Mdl = Mdl; > > Packet->Offset = Offset; > > @@ -5206,6 +5210,9 @@ TransmitterQueuePacket( > > > > return STATUS_SUCCESS; > > > > +fail2: > > + Error("fail2\n"); > > + > > fail1: > > Error("fail1 (%08x)\n", status); > > > > >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |