]> git.baikalelectronics.ru Git - kernel.git/commit
arm64: mmap: Ensure file offset is treated as unsigned
authorBoyang Zhou <zhouby_cn@126.com>
Mon, 29 Apr 2019 14:27:19 +0000 (15:27 +0100)
committerWill Deacon <will.deacon@arm.com>
Mon, 29 Apr 2019 14:27:41 +0000 (15:27 +0100)
commita5cc4b137152deaea301760589476f05cd3792a4
tree8942a40227b2d912769fef91957f36a269a8f3e1
parentf815062b6c66cdb9b9143661978287afbdbfda0a
arm64: mmap: Ensure file offset is treated as unsigned

The file offset argument to the arm64 sys_mmap() implementation is
scaled from bytes to pages by shifting right by PAGE_SHIFT.
Unfortunately, the offset is passed in as a signed 'off_t' type and
therefore large offsets (i.e. with the top bit set) are incorrectly
sign-extended by the shift. This has been observed to cause false mmap()
failures when mapping GPU doorbells on an arm64 server part.

Change the type of the file offset argument to sys_mmap() from 'off_t'
to 'unsigned long' so that the shifting scales the value as expected.

Cc: <stable@vger.kernel.org>
Signed-off-by: Boyang Zhou <zhouby_cn@126.com>
[will: rewrote commit message]
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/sys.c