staging: android: ashmem: Avoid range_alloc() allocation with ashmem_mutex held.
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Fri, 22 Feb 2019 11:03:55 +0000 (20:03 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 26 Feb 2019 10:50:17 +0000 (11:50 +0100)
commitecd182cbf4e107928077866399100228d2359c60
tree53f9b17670a335aab7b63b8f039609158f5ab416
parent1d4ccf2b3c8eecc2b7472ec1d2fbe88ba593e1d9
staging: android: ashmem: Avoid range_alloc() allocation with ashmem_mutex held.

ashmem_pin() is calling range_shrink() without checking whether
range_alloc() succeeded. Also, doing memory allocation with ashmem_mutex
held should be avoided because ashmem_shrink_scan() tries to hold it.

Therefore, move memory allocation for range_alloc() to ashmem_pin_unpin()
and make range_alloc() not to fail.

This patch is mostly meant for backporting purpose for fuzz testing on
stable/distributor kernels, for there is a plan to remove this code in
near future.

Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: stable@vger.kernel.org
Reviewed-by: Joel Fernandes <joel@joelfernandes.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/android/ashmem.c