> -----Original Message----- > From: kys@xxxxxxxxxxxxxxxxxxxxxx [mailto:kys@xxxxxxxxxxxxxxxxxxxxxx] > Sent: Wednesday, April 19, 2017 1:49 PM > To: davem@xxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; linux- > kernel@xxxxxxxxxxxxxxx; devel@xxxxxxxxxxxxxxxxxxxxxx; olaf@xxxxxxxxx; > apw@xxxxxxxxxxxxx; jasowang@xxxxxxxxxx; > leann.ogasawara@xxxxxxxxxxxxxx; marcelo.cerri@xxxxxxxxxxxxx; Stephen > Hemminger <sthemmin@xxxxxxxxxxxxx> > Cc: KY Srinivasan <kys@xxxxxxxxxxxxx> > Subject: [PATCH 1/1] netvsc: Deal with rescinded channels correctly > > [This sender failed our fraud detection checks and may not be who they > appear to be. Learn about spoofing at http://aka.ms/LearnAboutSpoofing] > > From: K. Y. Srinivasan <kys@xxxxxxxxxxxxx> > > We will not be able to send packets over a channel that has been > rescinded. Make necessary adjustments so we can properly cleanup > even when the channel is rescinded. This issue can be trigerred > in the NIC hot-remove path. > > Signed-off-by: K. Y. Srinivasan <kys@xxxxxxxxxxxxx> Dave, Please drop this path; I will resend. K. Y > --- > drivers/net/hyperv/netvsc.c | 16 ++++++++++++++++ > 1 files changed, 16 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c > index 7ab06b3..b5b10fc 100644 > --- a/drivers/net/hyperv/netvsc.c > +++ b/drivers/net/hyperv/netvsc.c > @@ -135,6 +135,13 @@ static void netvsc_destroy_buf(struct hv_device > *device) > sizeof(struct nvsp_message), > (unsigned long)revoke_packet, > VM_PKT_DATA_INBAND, 0); > + /* If the failure is because the channel is rescinded; > + * ignore the failure since we cannot send on a rescinded > + * channel. This would allow us to properly cleanup > + * even when the channel is rescinded. > + */ > + if (device->channel->rescind) > + ret = 0; > /* > * If we failed here, we might as well return and > * have a leak rather than continue and a bugchk > @@ -195,6 +202,15 @@ static void netvsc_destroy_buf(struct hv_device > *device) > sizeof(struct nvsp_message), > (unsigned long)revoke_packet, > VM_PKT_DATA_INBAND, 0); > + > + /* If the failure is because the channel is rescinded; > + * ignore the failure since we cannot send on a rescinded > + * channel. This would allow us to properly cleanup > + * even when the channel is rescinded. > + */ > + if (device->channel->rescind) > + ret = 0; > + > /* If we failed here, we might as well return and > * have a leak rather than continue and a bugchk > */ > -- > 1.7.1 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel