summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/cs-trace-ranges.py
diff options
context:
space:
mode:
authorAl Viro <viro@ZenIV.linux.org.uk>2016-09-20 20:07:42 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-09-30 10:18:37 +0200
commit3f5d8326a870729ae21aa0a6b132cf8d9e9fcc1e (patch)
tree3b74b0f817490209e3d268e0a84858bf7b380bb2 /tools/perf/scripts/python/cs-trace-ranges.py
parent6e67de3922f25ae43fc86be362d740d88167ae7f (diff)
fix fault_in_multipages_...() on architectures with no-op access_ok()
commit e23d4159b109167126e5bcd7f3775c95de7fee47 upstream. Switching iov_iter fault-in to multipages variants has exposed an old bug in underlying fault_in_multipages_...(); they break if the range passed to them wraps around. Normally access_ok() done by callers will prevent such (and it's a guaranteed EFAULT - ERR_PTR() values fall into such a range and they should not point to any valid objects). However, on architectures where userland and kernel live in different MMU contexts (e.g. s390) access_ok() is a no-op and on those a range with a wraparound can reach fault_in_multipages_...(). Since any wraparound means EFAULT there, the fix is trivial - turn those while (uaddr <= end) ... into if (unlikely(uaddr > end)) return -EFAULT; do ... while (uaddr <= end); Reported-by: Jan Stancek <jstancek@redhat.com> Tested-by: Jan Stancek <jstancek@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'tools/perf/scripts/python/cs-trace-ranges.py')
0 files changed, 0 insertions, 0 deletions