mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/evtchn: fix wrong usage of array_index_nospec()
The size passed to array_index_nospec() in evtchn_fifo_word_from_port() doesn't match the value it is meant to clamp. Fix it by clamping the port to a safe interval and use that value to calculate the event_array[] index. Fixes:443d3ab6da("evtchn: block speculative out-of-bound accesses") Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> master commit:3a6cb6aae4master date: 2026-08-03 09:50:07 +0200
This commit is contained in:
1 parent
6a78d0e734
commit
fc203d45b6
1 file changed
+2
-3
@@ -71,11 +71,10 @@ static inline event_word_t *evtchn_fifo_word_from_port(const struct domain *d,
|
||||
*/
|
||||
smp_rmb();
|
||||
|
||||
p = array_index_nospec(port / EVTCHN_FIFO_EVENT_WORDS_PER_PAGE,
|
||||
d->evtchn_fifo->num_evtchns);
|
||||
p = array_index_nospec(port, d->evtchn_fifo->num_evtchns);
|
||||
w = port % EVTCHN_FIFO_EVENT_WORDS_PER_PAGE;
|
||||
|
||||
return d->evtchn_fifo->event_array[p] + w;
|
||||
return d->evtchn_fifo->event_array[p / EVTCHN_FIFO_EVENT_WORDS_PER_PAGE] + w;
|
||||
}
|
||||
|
||||
static void cf_check evtchn_fifo_init(struct domain *d, struct evtchn *evtchn)
|
||||
|
||||