diff options
| author | Robin Murphy <[email protected]> | 2019-07-29 16:46:00 +0000 |
|---|---|---|
| committer | Joerg Roedel <[email protected]> | 2019-08-09 15:31:39 +0000 |
| commit | ab2cbeb0ed301a9f0460078e91b09f39958212ef (patch) | |
| tree | f63defbae2945d3846f20b852ccde41b9208f1b3 /tools/perf/scripts/python/failed-syscalls-by-pid.py | |
| parent | iommu/vt-d: Correctly check format of page table in debugfs (diff) | |
| download | kernel-ab2cbeb0ed301a9f0460078e91b09f39958212ef.tar.gz kernel-ab2cbeb0ed301a9f0460078e91b09f39958212ef.zip | |
iommu/dma: Handle SG length overflow better
Since scatterlist dimensions are all unsigned ints, in the relatively
rare cases where a device's max_segment_size is set to UINT_MAX, then
the "cur_len + s_length <= max_len" check in __finalise_sg() will always
return true. As a result, the corner case of such a device mapping an
excessively large scatterlist which is mergeable to or beyond a total
length of 4GB can lead to overflow and a bogus truncated dma_length in
the resulting segment.
As we already assume that any single segment must be no longer than
max_len to begin with, this can easily be addressed by reshuffling the
comparison.
Fixes: 809eac54cdd6 ("iommu/dma: Implement scatterlist segment merging")
Reported-by: Nicolin Chen <[email protected]>
Tested-by: Nicolin Chen <[email protected]>
Signed-off-by: Robin Murphy <[email protected]>
Signed-off-by: Joerg Roedel <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/failed-syscalls-by-pid.py')
0 files changed, 0 insertions, 0 deletions
