summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorRoger Pau Monne <roger.pau@citrix.com>2017-07-18 15:01:00 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-08-24 17:12:20 -0700
commit6c7f3756d072050d612e5c5c04108f90f1985435 (patch)
tree9497305a732fa7f53cab7c6763f87896d6834dd5 /block
parent1f2347a095ced10b2054fece0319801097cd852f (diff)
downloadlinux-stable-6c7f3756d072050d612e5c5c04108f90f1985435.tar.gz
linux-stable-6c7f3756d072050d612e5c5c04108f90f1985435.tar.bz2
linux-stable-6c7f3756d072050d612e5c5c04108f90f1985435.zip
xen: fix bio vec merging
commit 462cdace790ac2ed6aad1b19c9c0af0143b6aab0 upstream. The current test for bio vec merging is not fully accurate and can be tricked into merging bios when certain grant combinations are used. The result of these malicious bio merges is a bio that extends past the memory page used by any of the originating bios. Take into account the following scenario, where a guest creates two grant references that point to the same mfn, ie: grant 1 -> mfn A, grant 2 -> mfn A. These references are then used in a PV block request, and mapped by the backend domain, thus obtaining two different pfns that point to the same mfn, pfn B -> mfn A, pfn C -> mfn A. If those grants happen to be used in two consecutive sectors of a disk IO operation becoming two different bios in the backend domain, the checks in xen_biovec_phys_mergeable will succeed, because bfn1 == bfn2 (they both point to the same mfn). However due to the bio merging, the backend domain will end up with a bio that expands past mfn A into mfn A + 1. Fix this by making sure the check in xen_biovec_phys_mergeable takes into account the offset and the length of the bio, this basically replicates whats done in __BIOVEC_PHYS_MERGEABLE using mfns (bus addresses). While there also remove the usage of __BIOVEC_PHYS_MERGEABLE, since that's already checked by the callers of xen_biovec_phys_mergeable. Reported-by: "Jan H. Schönherr" <jschoenh@amazon.de> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Juergen Gross <jgross@suse.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions