summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorCyrill Gorcunov <gorcunov@gmail.com>2019-05-14 03:15:40 +0300
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-14 19:47:44 +0300
commita9e73998f9d705c94a8dca9687633adc0f24a19a (patch)
tree06116dcbc4fbe335065a7c5a81700f051ce972b1 /block
parent2bf753e64b4a702e27ce26ff520c59563c62f96b (diff)
downloadlinux-a9e73998f9d705c94a8dca9687633adc0f24a19a.tar.xz
kernel/sys.c: prctl: fix false positive in validate_prctl_map()
While validating new map we require the @start_data to be strictly less than @end_data, which is fine for regular applications (this is why this nit didn't trigger for that long). These members are set from executable loaders such as elf handers, still it is pretty valid to have a loadable data section with zero size in file, in such case the start_data is equal to end_data once kernel loader finishes. As a result when we're trying to restore such programs the procedure fails and the kernel returns -EINVAL. From the image dump of a program: | "mm_start_code": "0x400000", | "mm_end_code": "0x8f5fb4", | "mm_start_data": "0xf1bfb0", | "mm_end_data": "0xf1bfb0", Thus we need to change validate_prctl_map from strictly less to less or equal operator use. Link: http://lkml.kernel.org/r/20190408143554.GY1421@uranus.lan Fixes: f606b77f1a9e3 ("prctl: PR_SET_MM -- introduce PR_SET_MM_MAP operation") Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Cc: Andrey Vagin <avagin@gmail.com> Cc: Dmitry Safonov <0x7f454c46@gmail.com> Cc: Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions