diff options
author | Whi copybara merger <whitechapel-automerger@google.com> | 2023-06-05 18:11:15 +0000 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-06-06 12:54:03 -0700 |
commit | 515e920e2db38db565d5d45f9f8ad58155a7884a (patch) | |
tree | 207f48fbb0d98b078c771fe6c633cbffa1ecb0e8 | |
parent | b848e7776afdd0a789db9ca2e5dbe4af446e722e (diff) | |
download | abrolhos-android-gs-raviole-5.10-u-beta4.tar.gz |
[Copybara Auto Merge] Merge branch whitechapel into partner-androidandroid-u-beta-4_r0.7android-u-beta-4_r0.5android-u-beta-4_r0.1android-gs-tangorpro-5.10-u-beta4android-gs-raviole-5.10-u-beta4android-gs-bluejay-5.10-u-beta4
edgetpu: hold mmap_lock around pin_user_pages
mmap_lock must be held around call to pin_user_pages to protect against
concurrent address space modifications.
Bug: 283787360
GitOrigin-RevId: 731853dde737965a8b4fa5eb2a37d581c1557832
Change-Id: I914b3388a378d16a46a358a5f391e230dc95e328
-rw-r--r-- | drivers/edgetpu/edgetpu-device-group.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/edgetpu/edgetpu-device-group.c b/drivers/edgetpu/edgetpu-device-group.c index 9b85679..c410ebc 100644 --- a/drivers/edgetpu/edgetpu-device-group.c +++ b/drivers/edgetpu/edgetpu-device-group.c @@ -1258,8 +1258,18 @@ static struct page **edgetpu_pin_user_pages(struct edgetpu_device_group *group, kvfree(pages); return ERR_PTR(-ENOMEM); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + down_read(¤t->mm->mmap_sem); +#else + mmap_read_lock(current->mm); +#endif ret = pin_user_pages(host_addr & PAGE_MASK, num_pages, foll_flags, pages, vmas); +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + up_read(¤t->mm->mmap_sem); +#else + mmap_read_unlock(current->mm); +#endif kvfree(vmas); if (ret < 0) { etdev_dbg(etdev, "pin_user_pages failed %u:%pK-%u: %d", |