]> xenbits.xensource.com Git - xen.git/commit
passthrough/x86: stop pirq iteration immediately in case of error
authorJulien Grall <jgrall@amazon.com>
Tue, 25 Jan 2022 13:47:33 +0000 (14:47 +0100)
committerJan Beulich <jbeulich@suse.com>
Tue, 25 Jan 2022 13:47:33 +0000 (14:47 +0100)
commit71e9d0c94dd710bf26adf115ee0a2dbee30bb8c1
tree237bb79e63974d3ba74da2791d96c938eb62d156
parentff626ec7f2777ef7de85f6d485c5e788738af0c3
passthrough/x86: stop pirq iteration immediately in case of error

pt_pirq_iterate() will iterate in batch over all the PIRQs. The outer
loop will bail out if 'rc' is non-zero but the inner loop will continue.

This means 'rc' will get clobbered and we may miss any errors (such as
-ERESTART in the case of the callback pci_clean_dpci_irq()).

This is CVE-2022-23035 / XSA-395.

Fixes: c24536b636f2 ("replace d->nr_pirqs sized arrays with radix tree")
Fixes: f6dd295381f4 ("dpci: replace tasklet with softirq")
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
master commit: 9480a1a519cf016623f657dc544cb372a82b5708
master date: 2022-01-25 13:27:02 +0100
xen/drivers/passthrough/io.c