diff options
author | Juergen Gross <jgross@suse.com> | 2021-12-16 08:24:08 +0100 |
---|---|---|
committer | Juergen Gross <jgross@suse.com> | 2021-12-16 08:24:08 +0100 |
commit | fe415186b43df0db1f17fa3a46275fd92107fe71 (patch) | |
tree | 748fdfc2bdd32d5f9f176b6d699161d6725f1433 /include/xen | |
parent | b27d47950e481f292c0a5ad57357edb9d95d03ba (diff) |
xen/console: harden hvc_xen against event channel storms
The Xen console driver is still vulnerable for an attack via excessive
number of events sent by the backend. Fix that by using a lateeoi event
channel.
For the normal domU initial console this requires the introduction of
bind_evtchn_to_irq_lateeoi() as there is no xenbus device available
at the time the event channel is bound to the irq.
As the decision whether an interrupt was spurious or not requires to
test for bytes having been read from the backend, move sending the
event into the if statement, as sending an event without having found
any bytes to be read is making no sense at all.
This is part of XSA-391
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
V2:
- slightly adapt spurious irq detection (Jan Beulich)
V3:
- fix spurious irq detection (Jan Beulich)
Diffstat (limited to 'include/xen')
-rw-r--r-- | include/xen/events.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/xen/events.h b/include/xen/events.h index c204262d9fc2..344081e71584 100644 --- a/include/xen/events.h +++ b/include/xen/events.h @@ -17,6 +17,7 @@ struct xenbus_device; unsigned xen_evtchn_nr_channels(void); int bind_evtchn_to_irq(evtchn_port_t evtchn); +int bind_evtchn_to_irq_lateeoi(evtchn_port_t evtchn); int bind_evtchn_to_irqhandler(evtchn_port_t evtchn, irq_handler_t handler, unsigned long irqflags, const char *devname, |