ashmem: avoid deadlock between read and mmap calls
authorTodd Poynor <toddpoynor@google.com>
Wed, 5 Jun 2013 00:29:38 +0000 (17:29 -0700)
committerArve Hjønnevåg <arve@android.com>
Mon, 1 Jul 2013 21:16:27 +0000 (14:16 -0700)
commit0a9dea28170c90a7265250b66cc0df1253b0c501
treefbd0b5845d22f99fbf4cc9b1fef75fb4ec55f558
parent81dce1aa81e0a20452845569ecb3fc796702f6b1
ashmem: avoid deadlock between read and mmap calls

Avoid holding ashmem_mutex across code that can page fault.  Page faults
grab the mmap_sem for the process, which are also held by mmap calls
prior to calling ashmem_mmap, which locks ashmem_mutex.  The reversed
order of locking between the two can deadlock.

The calls that can page fault are read() and the ASHMEM_SET_NAME and
ASHMEM_GET_NAME ioctls.  Move the code that accesses userspace pages
outside the ashmem_mutex.

Bug: 9261835
Change-Id: If1322e981d29c889a56cdc9dfcbc6df2729a45e9
Signed-off-by: Todd Poynor <toddpoynor@google.com>
Conflicts:
drivers/staging/android/ashmem.c
drivers/staging/android/ashmem.c