[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH net V2] xen-netback: disable rogue vif in kthread context
On 25/03/14 12:20, Wei Liu wrote: > When netback discovers frontend is sending malformed packet it will > disables the interface which serves that frontend. > > However disabling a network interface involving taking a mutex which > cannot be done in softirq context, so we need to defer this process to > kthread context. > > This patch does the following: > 1. introduce a flag to indicate the interface is disabled. > 2. check that flag in TX path, don't do any work if it's true. > 3. check that flag in RX path, turn off that interface if it's true. > > The reason to disable it in RX path is because RX uses kthread. After > this change the behavior of netback is still consistent -- it won't do > any TX work for a rogue frontend, and the interface will be eventually > turned off. [...] > --- a/drivers/net/xen-netback/interface.c > +++ b/drivers/net/xen-netback/interface.c > @@ -61,12 +61,23 @@ static int xenvif_poll(struct napi_struct *napi, int > budget) > { > struct xenvif *vif = container_of(napi, struct xenvif, napi); > int work_done; > + unsigned long flags; > + > + /* This vif is rogue, we pretend we've there is nothing to do > + * for this vif to deschedule it from NAPI. But this interface > + * will be turned off in thread context later. > + */ > + if (unlikely(vif->disabled)) { > + local_irq_save(flags); > + __napi_complete(napi); > + local_irq_restore(flags); Why isn't this napi_complete(napi) (which uses local_irq_save/restore() internally)? David _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |