]> git.baikalelectronics.ru Git - kernel.git/commit
sparc64: Properly range check DAX completion index
authorRob Gardner <rob.gardner@oracle.com>
Sun, 1 Apr 2018 04:53:01 +0000 (22:53 -0600)
committerDavid S. Miller <davem@davemloft.net>
Mon, 2 Apr 2018 00:07:00 +0000 (20:07 -0400)
commit9b42afc9b8a096f4e5a5f0c97af8ccfb3d00a1dc
treeb1581392bb2519b4034eb54eecf398fd6eb55ac6
parent21a3743c4934ccf3ad27faae30a78cc221f184f4
sparc64: Properly range check DAX completion index

Each Oracle DAX CCB has a corresponding completion area, and the required
number of areas must fit within a previously allocated array of completion
areas beginning at the requested index.  Since the completion area index
is specified by a file offset, a user can pass arbitrary values, including
negative numbers. So the index must be thoroughly range checked to prevent
access to addresses outside the bounds of the allocated completion
area array.  The index cannot be negative, and it cannot exceed the
total array size, less the number of CCBs requested. The old code did
not check for negative values and was off by one on the upper bound.

Signed-off-by: Rob Gardner <rob.gardner@oracle.com>
Signed-off-by: Jonathan Helman <jonathan.helman@oracle.com>
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/sbus/char/oradax.c