* [PATCH v2 01/28] binder: use EPOLLERR from eventpoll.h [not found] <20231201172212.1813387-1-cmllamas@google.com> @ 2023-12-01 17:21 ` Carlos Llamas 2023-12-01 17:21 ` [PATCH v2 02/28] binder: fix use-after-free in shinker's callback Carlos Llamas ` (5 subsequent siblings) 6 siblings, 0 replies; 21+ messages in thread From: Carlos Llamas @ 2023-12-01 17:21 UTC (permalink / raw) To: Greg Kroah-Hartman, Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Carlos Llamas, Suren Baghdasaryan, Eric Biggers Cc: linux-kernel, kernel-team, stable, Alice Ryhl Use EPOLLERR instead of POLLERR to make sure it is cast to the correct __poll_t type. This fixes the following sparse issue: drivers/android/binder.c:5030:24: warning: incorrect type in return expression (different base types) drivers/android/binder.c:5030:24: expected restricted __poll_t drivers/android/binder.c:5030:24: got int Fixes: f88982679f54 ("binder: check for binder_thread allocation failure in binder_poll()") Cc: stable@vger.kernel.org Cc: Eric Biggers <ebiggers@google.com> Reviewed-by: Alice Ryhl <aliceryhl@google.com> Signed-off-by: Carlos Llamas <cmllamas@google.com> --- drivers/android/binder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 92128aae2d06..71a40a4c546f 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -5030,7 +5030,7 @@ static __poll_t binder_poll(struct file *filp, thread = binder_get_thread(proc); if (!thread) - return POLLERR; + return EPOLLERR; binder_inner_proc_lock(thread->proc); thread->looper |= BINDER_LOOPER_STATE_POLL; -- 2.43.0.rc2.451.g8631bc7472-goog ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 02/28] binder: fix use-after-free in shinker's callback [not found] <20231201172212.1813387-1-cmllamas@google.com> 2023-12-01 17:21 ` [PATCH v2 01/28] binder: use EPOLLERR from eventpoll.h Carlos Llamas @ 2023-12-01 17:21 ` Carlos Llamas 2023-12-01 17:21 ` [PATCH v2 06/28] binder: fix trivial typo of binder_free_buf_locked() Carlos Llamas ` (4 subsequent siblings) 6 siblings, 0 replies; 21+ messages in thread From: Carlos Llamas @ 2023-12-01 17:21 UTC (permalink / raw) To: Greg Kroah-Hartman, Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Carlos Llamas, Suren Baghdasaryan, Michal Hocko, Andrew Morton, Matthew Wilcox, Vlastimil Babka, Kirill A. Shutemov Cc: linux-kernel, kernel-team, stable, Liam Howlett, Minchan Kim, Alice Ryhl The mmap read lock is used during the shrinker's callback, which means that using alloc->vma pointer isn't safe as it can race with munmap(). As of commit dd2283f2605e ("mm: mmap: zap pages with read mmap_sem in munmap") the mmap lock is downgraded after the vma has been isolated. I was able to reproduce this issue by manually adding some delays and triggering page reclaiming through the shrinker's debug sysfs. The following KASAN report confirms the UAF: ================================================================== BUG: KASAN: slab-use-after-free in zap_page_range_single+0x470/0x4b8 Read of size 8 at addr ffff356ed50e50f0 by task bash/478 CPU: 1 PID: 478 Comm: bash Not tainted 6.6.0-rc5-00055-g1c8b86a3799f-dirty #70 Hardware name: linux,dummy-virt (DT) Call trace: zap_page_range_single+0x470/0x4b8 binder_alloc_free_page+0x608/0xadc __list_lru_walk_one+0x130/0x3b0 list_lru_walk_node+0xc4/0x22c binder_shrink_scan+0x108/0x1dc shrinker_debugfs_scan_write+0x2b4/0x500 full_proxy_write+0xd4/0x140 vfs_write+0x1ac/0x758 ksys_write+0xf0/0x1dc __arm64_sys_write+0x6c/0x9c Allocated by task 492: kmem_cache_alloc+0x130/0x368 vm_area_alloc+0x2c/0x190 mmap_region+0x258/0x18bc do_mmap+0x694/0xa60 vm_mmap_pgoff+0x170/0x29c ksys_mmap_pgoff+0x290/0x3a0 __arm64_sys_mmap+0xcc/0x144 Freed by task 491: kmem_cache_free+0x17c/0x3c8 vm_area_free_rcu_cb+0x74/0x98 rcu_core+0xa38/0x26d4 rcu_core_si+0x10/0x1c __do_softirq+0x2fc/0xd24 Last potentially related work creation: __call_rcu_common.constprop.0+0x6c/0xba0 call_rcu+0x10/0x1c vm_area_free+0x18/0x24 remove_vma+0xe4/0x118 do_vmi_align_munmap.isra.0+0x718/0xb5c do_vmi_munmap+0xdc/0x1fc __vm_munmap+0x10c/0x278 __arm64_sys_munmap+0x58/0x7c Fix this issue by performing instead a vma_lookup() which will fail to find the vma that was isolated before the mmap lock downgrade. Note that this option has better performance than upgrading to a mmap write lock which would increase contention. Plus, mmap_write_trylock() has been recently removed anyway. Fixes: dd2283f2605e ("mm: mmap: zap pages with read mmap_sem in munmap") Cc: stable@vger.kernel.org Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Minchan Kim <minchan@kernel.org> Reviewed-by: Alice Ryhl <aliceryhl@google.com> Signed-off-by: Carlos Llamas <cmllamas@google.com> --- drivers/android/binder_alloc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c index 138f6d43d13b..9d2eff70c3ba 100644 --- a/drivers/android/binder_alloc.c +++ b/drivers/android/binder_alloc.c @@ -1005,7 +1005,9 @@ enum lru_status binder_alloc_free_page(struct list_head *item, goto err_mmget; if (!mmap_read_trylock(mm)) goto err_mmap_read_lock_failed; - vma = binder_alloc_get_vma(alloc); + vma = vma_lookup(mm, page_addr); + if (vma && vma != binder_alloc_get_vma(alloc)) + goto err_invalid_vma; list_lru_isolate(lru, item); spin_unlock(lock); @@ -1031,6 +1033,8 @@ enum lru_status binder_alloc_free_page(struct list_head *item, mutex_unlock(&alloc->mutex); return LRU_REMOVED_RETRY; +err_invalid_vma: + mmap_read_unlock(mm); err_mmap_read_lock_failed: mmput_async(mm); err_mmget: -- 2.43.0.rc2.451.g8631bc7472-goog ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 06/28] binder: fix trivial typo of binder_free_buf_locked() [not found] <20231201172212.1813387-1-cmllamas@google.com> 2023-12-01 17:21 ` [PATCH v2 01/28] binder: use EPOLLERR from eventpoll.h Carlos Llamas 2023-12-01 17:21 ` [PATCH v2 02/28] binder: fix use-after-free in shinker's callback Carlos Llamas @ 2023-12-01 17:21 ` Carlos Llamas 2023-12-01 17:21 ` [PATCH v2 07/28] binder: fix comment on binder_alloc_new_buf() return value Carlos Llamas ` (3 subsequent siblings) 6 siblings, 0 replies; 21+ messages in thread From: Carlos Llamas @ 2023-12-01 17:21 UTC (permalink / raw) To: Greg Kroah-Hartman, Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Carlos Llamas, Suren Baghdasaryan Cc: linux-kernel, kernel-team, stable, Alice Ryhl, Todd Kjos Fix minor misspelling of the function in the comment section. No functional changes in this patch. Cc: stable@vger.kernel.org Fixes: 0f966cba95c7 ("binder: add flag to clear buffer on txn complete") Reviewed-by: Alice Ryhl <aliceryhl@google.com> Signed-off-by: Carlos Llamas <cmllamas@google.com> --- drivers/android/binder_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c index 9b5c4d446efa..a124d2743c69 100644 --- a/drivers/android/binder_alloc.c +++ b/drivers/android/binder_alloc.c @@ -704,7 +704,7 @@ void binder_alloc_free_buf(struct binder_alloc *alloc, /* * We could eliminate the call to binder_alloc_clear_buf() * from binder_alloc_deferred_release() by moving this to - * binder_alloc_free_buf_locked(). However, that could + * binder_free_buf_locked(). However, that could * increase contention for the alloc mutex if clear_on_free * is used frequently for large buffers. The mutex is not * needed for correctness here. -- 2.43.0.rc2.451.g8631bc7472-goog ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 07/28] binder: fix comment on binder_alloc_new_buf() return value [not found] <20231201172212.1813387-1-cmllamas@google.com> ` (2 preceding siblings ...) 2023-12-01 17:21 ` [PATCH v2 06/28] binder: fix trivial typo of binder_free_buf_locked() Carlos Llamas @ 2023-12-01 17:21 ` Carlos Llamas [not found] ` <20231201172212.1813387-4-cmllamas@google.com> ` (2 subsequent siblings) 6 siblings, 0 replies; 21+ messages in thread From: Carlos Llamas @ 2023-12-01 17:21 UTC (permalink / raw) To: Greg Kroah-Hartman, Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Carlos Llamas, Suren Baghdasaryan Cc: linux-kernel, kernel-team, stable, Alice Ryhl Update the comments of binder_alloc_new_buf() to reflect that the return value of the function is now ERR_PTR(-errno) on failure. No functional changes in this patch. Cc: stable@vger.kernel.org Fixes: 57ada2fb2250 ("binder: add log information for binder transaction failures") Reviewed-by: Alice Ryhl <aliceryhl@google.com> Signed-off-by: Carlos Llamas <cmllamas@google.com> --- drivers/android/binder_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c index a124d2743c69..a56cbfd9ba44 100644 --- a/drivers/android/binder_alloc.c +++ b/drivers/android/binder_alloc.c @@ -556,7 +556,7 @@ static struct binder_buffer *binder_alloc_new_buf_locked( * is the sum of the three given sizes (each rounded up to * pointer-sized boundary) * - * Return: The allocated buffer or %NULL if error + * Return: The allocated buffer or %ERR_PTR(-errno) if error */ struct binder_buffer *binder_alloc_new_buf(struct binder_alloc *alloc, size_t data_size, -- 2.43.0.rc2.451.g8631bc7472-goog ^ permalink raw reply related [flat|nested] 21+ messages in thread
[parent not found: <20231201172212.1813387-4-cmllamas@google.com>]
* Re: [PATCH v2 03/28] binder: fix race between mmput() and do_exit() [not found] ` <20231201172212.1813387-4-cmllamas@google.com> @ 2024-01-18 19:29 ` Carlos Llamas 2024-01-19 5:48 ` Greg Kroah-Hartman 0 siblings, 1 reply; 21+ messages in thread From: Carlos Llamas @ 2024-01-18 19:29 UTC (permalink / raw) To: Greg Kroah-Hartman, Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Brian Swetland Cc: linux-kernel, kernel-team, Alice Ryhl, Greg Kroah-Hartman, stable On Fri, Dec 01, 2023 at 05:21:32PM +0000, Carlos Llamas wrote: > Task A calls binder_update_page_range() to allocate and insert pages on > a remote address space from Task B. For this, Task A pins the remote mm > via mmget_not_zero() first. This can race with Task B do_exit() and the > final mmput() refcount decrement will come from Task A. > > Task A | Task B > ------------------+------------------ > mmget_not_zero() | > | do_exit() > | exit_mm() > | mmput() > mmput() | > exit_mmap() | > remove_vma() | > fput() | > > In this case, the work of ____fput() from Task B is queued up in Task A > as TWA_RESUME. So in theory, Task A returns to userspace and the cleanup > work gets executed. However, Task A instead sleep, waiting for a reply > from Task B that never comes (it's dead). > > This means the binder_deferred_release() is blocked until an unrelated > binder event forces Task A to go back to userspace. All the associated > death notifications will also be delayed until then. > > In order to fix this use mmput_async() that will schedule the work in > the corresponding mm->async_put_work WQ instead of Task A. > > Fixes: 457b9a6f09f0 ("Staging: android: add binder driver") > Reviewed-by: Alice Ryhl <aliceryhl@google.com> > Signed-off-by: Carlos Llamas <cmllamas@google.com> > --- Sorry, I forgot to Cc: stable@vger.kernel.org. -- Carlos Llamas ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 03/28] binder: fix race between mmput() and do_exit() 2024-01-18 19:29 ` [PATCH v2 03/28] binder: fix race between mmput() and do_exit() Carlos Llamas @ 2024-01-19 5:48 ` Greg Kroah-Hartman 2024-01-19 17:06 ` Carlos Llamas 0 siblings, 1 reply; 21+ messages in thread From: Greg Kroah-Hartman @ 2024-01-19 5:48 UTC (permalink / raw) To: Carlos Llamas Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Brian Swetland, linux-kernel, kernel-team, Alice Ryhl, Greg Kroah-Hartman, stable On Thu, Jan 18, 2024 at 07:29:07PM +0000, Carlos Llamas wrote: > On Fri, Dec 01, 2023 at 05:21:32PM +0000, Carlos Llamas wrote: > > Task A calls binder_update_page_range() to allocate and insert pages on > > a remote address space from Task B. For this, Task A pins the remote mm > > via mmget_not_zero() first. This can race with Task B do_exit() and the > > final mmput() refcount decrement will come from Task A. > > > > Task A | Task B > > ------------------+------------------ > > mmget_not_zero() | > > | do_exit() > > | exit_mm() > > | mmput() > > mmput() | > > exit_mmap() | > > remove_vma() | > > fput() | > > > > In this case, the work of ____fput() from Task B is queued up in Task A > > as TWA_RESUME. So in theory, Task A returns to userspace and the cleanup > > work gets executed. However, Task A instead sleep, waiting for a reply > > from Task B that never comes (it's dead). > > > > This means the binder_deferred_release() is blocked until an unrelated > > binder event forces Task A to go back to userspace. All the associated > > death notifications will also be delayed until then. > > > > In order to fix this use mmput_async() that will schedule the work in > > the corresponding mm->async_put_work WQ instead of Task A. > > > > Fixes: 457b9a6f09f0 ("Staging: android: add binder driver") > > Reviewed-by: Alice Ryhl <aliceryhl@google.com> > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > --- > > Sorry, I forgot to Cc: stable@vger.kernel.org. <formletter> This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read: https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html for how to do this properly. </formletter> ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 03/28] binder: fix race between mmput() and do_exit() 2024-01-19 5:48 ` Greg Kroah-Hartman @ 2024-01-19 17:06 ` Carlos Llamas 2024-01-19 17:37 ` Carlos Llamas 0 siblings, 1 reply; 21+ messages in thread From: Carlos Llamas @ 2024-01-19 17:06 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Brian Swetland, linux-kernel, kernel-team, Alice Ryhl, Greg Kroah-Hartman, stable On Fri, Jan 19, 2024 at 06:48:43AM +0100, Greg Kroah-Hartman wrote: > On Thu, Jan 18, 2024 at 07:29:07PM +0000, Carlos Llamas wrote: > > On Fri, Dec 01, 2023 at 05:21:32PM +0000, Carlos Llamas wrote: > > > Task A calls binder_update_page_range() to allocate and insert pages on > > > a remote address space from Task B. For this, Task A pins the remote mm > > > via mmget_not_zero() first. This can race with Task B do_exit() and the > > > final mmput() refcount decrement will come from Task A. > > > > > > Task A | Task B > > > ------------------+------------------ > > > mmget_not_zero() | > > > | do_exit() > > > | exit_mm() > > > | mmput() > > > mmput() | > > > exit_mmap() | > > > remove_vma() | > > > fput() | > > > > > > In this case, the work of ____fput() from Task B is queued up in Task A > > > as TWA_RESUME. So in theory, Task A returns to userspace and the cleanup > > > work gets executed. However, Task A instead sleep, waiting for a reply > > > from Task B that never comes (it's dead). > > > > > > This means the binder_deferred_release() is blocked until an unrelated > > > binder event forces Task A to go back to userspace. All the associated > > > death notifications will also be delayed until then. > > > > > > In order to fix this use mmput_async() that will schedule the work in > > > the corresponding mm->async_put_work WQ instead of Task A. > > > > > > Fixes: 457b9a6f09f0 ("Staging: android: add binder driver") > > > Reviewed-by: Alice Ryhl <aliceryhl@google.com> > > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > > --- > > > > Sorry, I forgot to Cc: stable@vger.kernel.org. > > <formletter> > > This is not the correct way to submit patches for inclusion in the > stable kernel tree. Please read: > https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > for how to do this properly. > > </formletter> Oops, here is the complete info: Commit ID: 9a9ab0d963621d9d12199df9817e66982582d5a5 Subject: "binder: fix race between mmput() and do_exit()" Reason: Fixes a race condition in binder. Versions: v4.19+ Note this will have a trivial conflict in v4.19 and v5.10 kernels as commit d8ed45c5dcd4 is not there. Please let me know if I should send those patches separately. Thanks, -- Carlos Llamas ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 03/28] binder: fix race between mmput() and do_exit() 2024-01-19 17:06 ` Carlos Llamas @ 2024-01-19 17:37 ` Carlos Llamas 2024-01-20 6:37 ` Greg Kroah-Hartman 0 siblings, 1 reply; 21+ messages in thread From: Carlos Llamas @ 2024-01-19 17:37 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, linux-kernel, kernel-team, Alice Ryhl, stable On Fri, Jan 19, 2024 at 05:06:13PM +0000, Carlos Llamas wrote: > > Oops, here is the complete info: > > Commit ID: 9a9ab0d963621d9d12199df9817e66982582d5a5 > Subject: "binder: fix race between mmput() and do_exit()" > Reason: Fixes a race condition in binder. > Versions: v4.19+ > > Note this will have a trivial conflict in v4.19 and v5.10 kernels as > commit d8ed45c5dcd4 is not there. Please let me know if I should send > those patches separately. > > Thanks, > -- > Carlos Llamas Sigh, I meant to type "conflict in v4.19 and v5.4". The patch applies cleanly in v5.10+. ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 03/28] binder: fix race between mmput() and do_exit() 2024-01-19 17:37 ` Carlos Llamas @ 2024-01-20 6:37 ` Greg Kroah-Hartman 2024-01-22 18:05 ` Carlos Llamas 0 siblings, 1 reply; 21+ messages in thread From: Greg Kroah-Hartman @ 2024-01-20 6:37 UTC (permalink / raw) To: Carlos Llamas Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, linux-kernel, kernel-team, Alice Ryhl, stable On Fri, Jan 19, 2024 at 05:37:22PM +0000, Carlos Llamas wrote: > On Fri, Jan 19, 2024 at 05:06:13PM +0000, Carlos Llamas wrote: > > > > Oops, here is the complete info: > > > > Commit ID: 9a9ab0d963621d9d12199df9817e66982582d5a5 > > Subject: "binder: fix race between mmput() and do_exit()" > > Reason: Fixes a race condition in binder. > > Versions: v4.19+ > > > > Note this will have a trivial conflict in v4.19 and v5.10 kernels as > > commit d8ed45c5dcd4 is not there. Please let me know if I should send > > those patches separately. > > > > Thanks, > > -- > > Carlos Llamas > > Sigh, I meant to type "conflict in v4.19 and v5.4". The patch applies > cleanly in v5.10+. Yes, I need backported patches please. thanks, greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 03/28] binder: fix race between mmput() and do_exit() 2024-01-20 6:37 ` Greg Kroah-Hartman @ 2024-01-22 18:05 ` Carlos Llamas 0 siblings, 0 replies; 21+ messages in thread From: Carlos Llamas @ 2024-01-22 18:05 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, linux-kernel, kernel-team, Alice Ryhl, stable On Sat, Jan 20, 2024 at 07:37:25AM +0100, Greg Kroah-Hartman wrote: > On Fri, Jan 19, 2024 at 05:37:22PM +0000, Carlos Llamas wrote: > > On Fri, Jan 19, 2024 at 05:06:13PM +0000, Carlos Llamas wrote: > > > > > > Oops, here is the complete info: > > > > > > Commit ID: 9a9ab0d963621d9d12199df9817e66982582d5a5 > > > Subject: "binder: fix race between mmput() and do_exit()" > > > Reason: Fixes a race condition in binder. > > > Versions: v4.19+ > > > > > > Note this will have a trivial conflict in v4.19 and v5.10 kernels as > > > commit d8ed45c5dcd4 is not there. Please let me know if I should send > > > those patches separately. > > > > > > Thanks, > > > -- > > > Carlos Llamas > > > > Sigh, I meant to type "conflict in v4.19 and v5.4". The patch applies > > cleanly in v5.10+. > > Yes, I need backported patches please. > > thanks, > > greg k-h Backports have been sent. linux-4.19.y: https://lore.kernel.org/all/20240122174250.2123854-1-cmllamas@google.com/ linux-5.4.y: https://lore.kernel.org/all/20240122175751.2214176-1-cmllamas@google.com/ The patch should apply cleanly in remaining stable branches. Thanks, -- Carlos Llamas ^ permalink raw reply [flat|nested] 21+ messages in thread
[parent not found: <20231201172212.1813387-5-cmllamas@google.com>]
* Re: [PATCH v2 04/28] binder: fix async space check for 0-sized buffers [not found] ` <20231201172212.1813387-5-cmllamas@google.com> @ 2024-01-18 19:32 ` Carlos Llamas 2024-01-19 5:48 ` Greg Kroah-Hartman 0 siblings, 1 reply; 21+ messages in thread From: Carlos Llamas @ 2024-01-18 19:32 UTC (permalink / raw) To: Greg Kroah-Hartman, Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang Cc: linux-kernel, kernel-team, Alice Ryhl, stable On Fri, Dec 01, 2023 at 05:21:33PM +0000, Carlos Llamas wrote: > Move the padding of 0-sized buffers to an earlier stage to account for > this round up during the alloc->free_async_space check. > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > Reviewed-by: Alice Ryhl <aliceryhl@google.com> > Signed-off-by: Carlos Llamas <cmllamas@google.com> > --- Sorry, I forgot to Cc: stable@vger.kernel.org. -- Carlos Llamas ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 04/28] binder: fix async space check for 0-sized buffers 2024-01-18 19:32 ` [PATCH v2 04/28] binder: fix async space check for 0-sized buffers Carlos Llamas @ 2024-01-19 5:48 ` Greg Kroah-Hartman 2024-01-19 17:11 ` Carlos Llamas 0 siblings, 1 reply; 21+ messages in thread From: Greg Kroah-Hartman @ 2024-01-19 5:48 UTC (permalink / raw) To: Carlos Llamas Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang, linux-kernel, kernel-team, Alice Ryhl, stable On Thu, Jan 18, 2024 at 07:32:08PM +0000, Carlos Llamas wrote: > On Fri, Dec 01, 2023 at 05:21:33PM +0000, Carlos Llamas wrote: > > Move the padding of 0-sized buffers to an earlier stage to account for > > this round up during the alloc->free_async_space check. > > > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > > Reviewed-by: Alice Ryhl <aliceryhl@google.com> > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > --- > > Sorry, I forgot to Cc: stable@vger.kernel.org. <formletter> This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read: https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html for how to do this properly. </formletter> ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 04/28] binder: fix async space check for 0-sized buffers 2024-01-19 5:48 ` Greg Kroah-Hartman @ 2024-01-19 17:11 ` Carlos Llamas 2024-01-22 15:05 ` Greg Kroah-Hartman 0 siblings, 1 reply; 21+ messages in thread From: Carlos Llamas @ 2024-01-19 17:11 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang, linux-kernel, kernel-team, Alice Ryhl, stable On Fri, Jan 19, 2024 at 06:48:53AM +0100, Greg Kroah-Hartman wrote: > On Thu, Jan 18, 2024 at 07:32:08PM +0000, Carlos Llamas wrote: > > On Fri, Dec 01, 2023 at 05:21:33PM +0000, Carlos Llamas wrote: > > > Move the padding of 0-sized buffers to an earlier stage to account for > > > this round up during the alloc->free_async_space check. > > > > > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > > > Reviewed-by: Alice Ryhl <aliceryhl@google.com> > > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > > --- > > > > Sorry, I forgot to Cc: stable@vger.kernel.org. > > > <formletter> > > This is not the correct way to submit patches for inclusion in the > stable kernel tree. Please read: > https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > for how to do this properly. > > </formletter> Oops, here is the complete info: Commit ID: 3091c21d3e9322428691ce0b7a0cfa9c0b239eeb Subject: "binder: fix async space check for 0-sized buffers" Reason: Fixes an incorrect calculation of available space. Versions: v4.19+ Thanks, -- Carlos Llamas ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 04/28] binder: fix async space check for 0-sized buffers 2024-01-19 17:11 ` Carlos Llamas @ 2024-01-22 15:05 ` Greg Kroah-Hartman 0 siblings, 0 replies; 21+ messages in thread From: Greg Kroah-Hartman @ 2024-01-22 15:05 UTC (permalink / raw) To: Carlos Llamas Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang, linux-kernel, kernel-team, Alice Ryhl, stable On Fri, Jan 19, 2024 at 05:11:26PM +0000, Carlos Llamas wrote: > On Fri, Jan 19, 2024 at 06:48:53AM +0100, Greg Kroah-Hartman wrote: > > On Thu, Jan 18, 2024 at 07:32:08PM +0000, Carlos Llamas wrote: > > > On Fri, Dec 01, 2023 at 05:21:33PM +0000, Carlos Llamas wrote: > > > > Move the padding of 0-sized buffers to an earlier stage to account for > > > > this round up during the alloc->free_async_space check. > > > > > > > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > > > > Reviewed-by: Alice Ryhl <aliceryhl@google.com> > > > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > > > --- > > > > > > Sorry, I forgot to Cc: stable@vger.kernel.org. > > > > > > <formletter> > > > > This is not the correct way to submit patches for inclusion in the > > stable kernel tree. Please read: > > https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > > for how to do this properly. > > > > </formletter> > > Oops, here is the complete info: > > Commit ID: 3091c21d3e9322428691ce0b7a0cfa9c0b239eeb > Subject: "binder: fix async space check for 0-sized buffers" > Reason: Fixes an incorrect calculation of available space. > Versions: v4.19+ Now queued up, thanks. greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
[parent not found: <20231201172212.1813387-6-cmllamas@google.com>]
* Re: [PATCH v2 05/28] binder: fix unused alloc->free_async_space [not found] ` <20231201172212.1813387-6-cmllamas@google.com> @ 2024-01-18 19:33 ` Carlos Llamas 2024-01-19 5:49 ` Greg Kroah-Hartman 0 siblings, 1 reply; 21+ messages in thread From: Carlos Llamas @ 2024-01-18 19:33 UTC (permalink / raw) To: Greg Kroah-Hartman, Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang Cc: linux-kernel, kernel-team, stable On Fri, Dec 01, 2023 at 05:21:34PM +0000, Carlos Llamas wrote: > Each transaction is associated with a 'struct binder_buffer' that stores > the metadata about its buffer area. Since commit 74310e06be4d ("android: > binder: Move buffer out of area shared with user space") this struct is > no longer embedded within the buffer itself but is instead allocated on > the heap to prevent userspace access to this driver-exclusive info. > > Unfortunately, the space of this struct is still being accounted for in > the total buffer size calculation, specifically for async transactions. > This results in an additional 104 bytes added to every async buffer > request, and this area is never used. > > This wasted space can be substantial. If we consider the maximum mmap > buffer space of SZ_4M, the driver will reserve half of it for async > transactions, or 0x200000. This area should, in theory, accommodate up > to 262,144 buffers of the minimum 8-byte size. However, after adding > the extra 'sizeof(struct binder_buffer)', the total number of buffers > drops to only 18,724, which is a sad 7.14% of the actual capacity. > > This patch fixes the buffer size calculation to enable the utilization > of the entire async buffer space. This is expected to reduce the number > of -ENOSPC errors that are seen on the field. > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > Signed-off-by: Carlos Llamas <cmllamas@google.com> > --- Sorry, I forgot to Cc: stable@vger.kernel.org. -- Carlos Llamas ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 05/28] binder: fix unused alloc->free_async_space 2024-01-18 19:33 ` [PATCH v2 05/28] binder: fix unused alloc->free_async_space Carlos Llamas @ 2024-01-19 5:49 ` Greg Kroah-Hartman 2024-01-19 17:27 ` Carlos Llamas 0 siblings, 1 reply; 21+ messages in thread From: Greg Kroah-Hartman @ 2024-01-19 5:49 UTC (permalink / raw) To: Carlos Llamas Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang, linux-kernel, kernel-team, stable On Thu, Jan 18, 2024 at 07:33:48PM +0000, Carlos Llamas wrote: > On Fri, Dec 01, 2023 at 05:21:34PM +0000, Carlos Llamas wrote: > > Each transaction is associated with a 'struct binder_buffer' that stores > > the metadata about its buffer area. Since commit 74310e06be4d ("android: > > binder: Move buffer out of area shared with user space") this struct is > > no longer embedded within the buffer itself but is instead allocated on > > the heap to prevent userspace access to this driver-exclusive info. > > > > Unfortunately, the space of this struct is still being accounted for in > > the total buffer size calculation, specifically for async transactions. > > This results in an additional 104 bytes added to every async buffer > > request, and this area is never used. > > > > This wasted space can be substantial. If we consider the maximum mmap > > buffer space of SZ_4M, the driver will reserve half of it for async > > transactions, or 0x200000. This area should, in theory, accommodate up > > to 262,144 buffers of the minimum 8-byte size. However, after adding > > the extra 'sizeof(struct binder_buffer)', the total number of buffers > > drops to only 18,724, which is a sad 7.14% of the actual capacity. > > > > This patch fixes the buffer size calculation to enable the utilization > > of the entire async buffer space. This is expected to reduce the number > > of -ENOSPC errors that are seen on the field. > > > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > --- > > Sorry, I forgot to Cc: stable@vger.kernel.org. <formletter> This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read: https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html for how to do this properly. </formletter> ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 05/28] binder: fix unused alloc->free_async_space 2024-01-19 5:49 ` Greg Kroah-Hartman @ 2024-01-19 17:27 ` Carlos Llamas 2024-01-22 15:04 ` Greg Kroah-Hartman 0 siblings, 1 reply; 21+ messages in thread From: Carlos Llamas @ 2024-01-19 17:27 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang, linux-kernel, kernel-team, stable On Fri, Jan 19, 2024 at 06:49:00AM +0100, Greg Kroah-Hartman wrote: > On Thu, Jan 18, 2024 at 07:33:48PM +0000, Carlos Llamas wrote: > > On Fri, Dec 01, 2023 at 05:21:34PM +0000, Carlos Llamas wrote: > > > Each transaction is associated with a 'struct binder_buffer' that stores > > > the metadata about its buffer area. Since commit 74310e06be4d ("android: > > > binder: Move buffer out of area shared with user space") this struct is > > > no longer embedded within the buffer itself but is instead allocated on > > > the heap to prevent userspace access to this driver-exclusive info. > > > > > > Unfortunately, the space of this struct is still being accounted for in > > > the total buffer size calculation, specifically for async transactions. > > > This results in an additional 104 bytes added to every async buffer > > > request, and this area is never used. > > > > > > This wasted space can be substantial. If we consider the maximum mmap > > > buffer space of SZ_4M, the driver will reserve half of it for async > > > transactions, or 0x200000. This area should, in theory, accommodate up > > > to 262,144 buffers of the minimum 8-byte size. However, after adding > > > the extra 'sizeof(struct binder_buffer)', the total number of buffers > > > drops to only 18,724, which is a sad 7.14% of the actual capacity. > > > > > > This patch fixes the buffer size calculation to enable the utilization > > > of the entire async buffer space. This is expected to reduce the number > > > of -ENOSPC errors that are seen on the field. > > > > > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > > --- > > > > Sorry, I forgot to Cc: stable@vger.kernel.org. > > > <formletter> > > This is not the correct way to submit patches for inclusion in the > stable kernel tree. Please read: > https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > for how to do this properly. > > </formletter> Oops, here is the complete info: Commit ID: c6d05e0762ab276102246d24affd1e116a46aa0c Subject: "binder: fix unused alloc->free_async_space" Reason: Fixes an incorrect calculation of available space. Versions: v4.19+ Note this patch will also have trivial conflicts in v4.19 and v5.4 kernels as commit 261e7818f06e is missing there. Please let me know and I can send the corresponding patches separately. Thanks, -- Carlos Llamas ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 05/28] binder: fix unused alloc->free_async_space 2024-01-19 17:27 ` Carlos Llamas @ 2024-01-22 15:04 ` Greg Kroah-Hartman 2024-01-22 15:05 ` Greg Kroah-Hartman 0 siblings, 1 reply; 21+ messages in thread From: Greg Kroah-Hartman @ 2024-01-22 15:04 UTC (permalink / raw) To: Carlos Llamas Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang, linux-kernel, kernel-team, stable On Fri, Jan 19, 2024 at 05:27:18PM +0000, Carlos Llamas wrote: > On Fri, Jan 19, 2024 at 06:49:00AM +0100, Greg Kroah-Hartman wrote: > > On Thu, Jan 18, 2024 at 07:33:48PM +0000, Carlos Llamas wrote: > > > On Fri, Dec 01, 2023 at 05:21:34PM +0000, Carlos Llamas wrote: > > > > Each transaction is associated with a 'struct binder_buffer' that stores > > > > the metadata about its buffer area. Since commit 74310e06be4d ("android: > > > > binder: Move buffer out of area shared with user space") this struct is > > > > no longer embedded within the buffer itself but is instead allocated on > > > > the heap to prevent userspace access to this driver-exclusive info. > > > > > > > > Unfortunately, the space of this struct is still being accounted for in > > > > the total buffer size calculation, specifically for async transactions. > > > > This results in an additional 104 bytes added to every async buffer > > > > request, and this area is never used. > > > > > > > > This wasted space can be substantial. If we consider the maximum mmap > > > > buffer space of SZ_4M, the driver will reserve half of it for async > > > > transactions, or 0x200000. This area should, in theory, accommodate up > > > > to 262,144 buffers of the minimum 8-byte size. However, after adding > > > > the extra 'sizeof(struct binder_buffer)', the total number of buffers > > > > drops to only 18,724, which is a sad 7.14% of the actual capacity. > > > > > > > > This patch fixes the buffer size calculation to enable the utilization > > > > of the entire async buffer space. This is expected to reduce the number > > > > of -ENOSPC errors that are seen on the field. > > > > > > > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > > > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > > > --- > > > > > > Sorry, I forgot to Cc: stable@vger.kernel.org. > > > > > > <formletter> > > > > This is not the correct way to submit patches for inclusion in the > > stable kernel tree. Please read: > > https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > > for how to do this properly. > > > > </formletter> > > Oops, here is the complete info: > > Commit ID: c6d05e0762ab276102246d24affd1e116a46aa0c > Subject: "binder: fix unused alloc->free_async_space" > Reason: Fixes an incorrect calculation of available space. > Versions: v4.19+ > > Note this patch will also have trivial conflicts in v4.19 and v5.4 > kernels as commit 261e7818f06e is missing there. Please let me know and > I can send the corresponding patches separately. It doesn't even apply to 6.7.y either, so we need backports for all affected trees, thanks. greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 05/28] binder: fix unused alloc->free_async_space 2024-01-22 15:04 ` Greg Kroah-Hartman @ 2024-01-22 15:05 ` Greg Kroah-Hartman 2024-01-22 18:08 ` Carlos Llamas 0 siblings, 1 reply; 21+ messages in thread From: Greg Kroah-Hartman @ 2024-01-22 15:05 UTC (permalink / raw) To: Carlos Llamas Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang, linux-kernel, kernel-team, stable On Mon, Jan 22, 2024 at 07:04:20AM -0800, Greg Kroah-Hartman wrote: > On Fri, Jan 19, 2024 at 05:27:18PM +0000, Carlos Llamas wrote: > > On Fri, Jan 19, 2024 at 06:49:00AM +0100, Greg Kroah-Hartman wrote: > > > On Thu, Jan 18, 2024 at 07:33:48PM +0000, Carlos Llamas wrote: > > > > On Fri, Dec 01, 2023 at 05:21:34PM +0000, Carlos Llamas wrote: > > > > > Each transaction is associated with a 'struct binder_buffer' that stores > > > > > the metadata about its buffer area. Since commit 74310e06be4d ("android: > > > > > binder: Move buffer out of area shared with user space") this struct is > > > > > no longer embedded within the buffer itself but is instead allocated on > > > > > the heap to prevent userspace access to this driver-exclusive info. > > > > > > > > > > Unfortunately, the space of this struct is still being accounted for in > > > > > the total buffer size calculation, specifically for async transactions. > > > > > This results in an additional 104 bytes added to every async buffer > > > > > request, and this area is never used. > > > > > > > > > > This wasted space can be substantial. If we consider the maximum mmap > > > > > buffer space of SZ_4M, the driver will reserve half of it for async > > > > > transactions, or 0x200000. This area should, in theory, accommodate up > > > > > to 262,144 buffers of the minimum 8-byte size. However, after adding > > > > > the extra 'sizeof(struct binder_buffer)', the total number of buffers > > > > > drops to only 18,724, which is a sad 7.14% of the actual capacity. > > > > > > > > > > This patch fixes the buffer size calculation to enable the utilization > > > > > of the entire async buffer space. This is expected to reduce the number > > > > > of -ENOSPC errors that are seen on the field. > > > > > > > > > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > > > > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > > > > --- > > > > > > > > Sorry, I forgot to Cc: stable@vger.kernel.org. > > > > > > > > > <formletter> > > > > > > This is not the correct way to submit patches for inclusion in the > > > stable kernel tree. Please read: > > > https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > > > for how to do this properly. > > > > > > </formletter> > > > > Oops, here is the complete info: > > > > Commit ID: c6d05e0762ab276102246d24affd1e116a46aa0c > > Subject: "binder: fix unused alloc->free_async_space" > > Reason: Fixes an incorrect calculation of available space. > > Versions: v4.19+ > > > > Note this patch will also have trivial conflicts in v4.19 and v5.4 > > kernels as commit 261e7818f06e is missing there. Please let me know and > > I can send the corresponding patches separately. > > It doesn't even apply to 6.7.y either, so we need backports for all > affected trees, thanks. Now I got it to apply, but we need backports for 5.4.y and 4.19.y, thanks. greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 05/28] binder: fix unused alloc->free_async_space 2024-01-22 15:05 ` Greg Kroah-Hartman @ 2024-01-22 18:08 ` Carlos Llamas 2024-01-22 18:35 ` Greg Kroah-Hartman 0 siblings, 1 reply; 21+ messages in thread From: Carlos Llamas @ 2024-01-22 18:08 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang, linux-kernel, kernel-team, stable On Mon, Jan 22, 2024 at 07:05:29AM -0800, Greg Kroah-Hartman wrote: > On Mon, Jan 22, 2024 at 07:04:20AM -0800, Greg Kroah-Hartman wrote: > > On Fri, Jan 19, 2024 at 05:27:18PM +0000, Carlos Llamas wrote: > > > On Fri, Jan 19, 2024 at 06:49:00AM +0100, Greg Kroah-Hartman wrote: > > > > On Thu, Jan 18, 2024 at 07:33:48PM +0000, Carlos Llamas wrote: > > > > > On Fri, Dec 01, 2023 at 05:21:34PM +0000, Carlos Llamas wrote: > > > > > > Each transaction is associated with a 'struct binder_buffer' that stores > > > > > > the metadata about its buffer area. Since commit 74310e06be4d ("android: > > > > > > binder: Move buffer out of area shared with user space") this struct is > > > > > > no longer embedded within the buffer itself but is instead allocated on > > > > > > the heap to prevent userspace access to this driver-exclusive info. > > > > > > > > > > > > Unfortunately, the space of this struct is still being accounted for in > > > > > > the total buffer size calculation, specifically for async transactions. > > > > > > This results in an additional 104 bytes added to every async buffer > > > > > > request, and this area is never used. > > > > > > > > > > > > This wasted space can be substantial. If we consider the maximum mmap > > > > > > buffer space of SZ_4M, the driver will reserve half of it for async > > > > > > transactions, or 0x200000. This area should, in theory, accommodate up > > > > > > to 262,144 buffers of the minimum 8-byte size. However, after adding > > > > > > the extra 'sizeof(struct binder_buffer)', the total number of buffers > > > > > > drops to only 18,724, which is a sad 7.14% of the actual capacity. > > > > > > > > > > > > This patch fixes the buffer size calculation to enable the utilization > > > > > > of the entire async buffer space. This is expected to reduce the number > > > > > > of -ENOSPC errors that are seen on the field. > > > > > > > > > > > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > > > > > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > > > > > --- > > > > > > > > > > Sorry, I forgot to Cc: stable@vger.kernel.org. > > > > > > > > > > > > <formletter> > > > > > > > > This is not the correct way to submit patches for inclusion in the > > > > stable kernel tree. Please read: > > > > https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > > > > for how to do this properly. > > > > > > > > </formletter> > > > > > > Oops, here is the complete info: > > > > > > Commit ID: c6d05e0762ab276102246d24affd1e116a46aa0c > > > Subject: "binder: fix unused alloc->free_async_space" > > > Reason: Fixes an incorrect calculation of available space. > > > Versions: v4.19+ > > > > > > Note this patch will also have trivial conflicts in v4.19 and v5.4 > > > kernels as commit 261e7818f06e is missing there. Please let me know and > > > I can send the corresponding patches separately. > > > > It doesn't even apply to 6.7.y either, so we need backports for all > > affected trees, thanks. > > Now I got it to apply, but we need backports for 5.4.y and 4.19.y, > thanks. > > greg k-h Backports sent. linux-4.19.y: https://lore.kernel.org/all/20240122174250.2123854-2-cmllamas@google.com/ linux-5.4.y: https://lore.kernel.org/all/20240122175751.2214176-2-cmllamas@google.com/ Thanks, Carlos Llamas ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 05/28] binder: fix unused alloc->free_async_space 2024-01-22 18:08 ` Carlos Llamas @ 2024-01-22 18:35 ` Greg Kroah-Hartman 0 siblings, 0 replies; 21+ messages in thread From: Greg Kroah-Hartman @ 2024-01-22 18:35 UTC (permalink / raw) To: Carlos Llamas Cc: Arve Hjønnevåg, Todd Kjos, Martijn Coenen, Joel Fernandes, Christian Brauner, Suren Baghdasaryan, Sherry Yang, linux-kernel, kernel-team, stable On Mon, Jan 22, 2024 at 06:08:36PM +0000, Carlos Llamas wrote: > On Mon, Jan 22, 2024 at 07:05:29AM -0800, Greg Kroah-Hartman wrote: > > On Mon, Jan 22, 2024 at 07:04:20AM -0800, Greg Kroah-Hartman wrote: > > > On Fri, Jan 19, 2024 at 05:27:18PM +0000, Carlos Llamas wrote: > > > > On Fri, Jan 19, 2024 at 06:49:00AM +0100, Greg Kroah-Hartman wrote: > > > > > On Thu, Jan 18, 2024 at 07:33:48PM +0000, Carlos Llamas wrote: > > > > > > On Fri, Dec 01, 2023 at 05:21:34PM +0000, Carlos Llamas wrote: > > > > > > > Each transaction is associated with a 'struct binder_buffer' that stores > > > > > > > the metadata about its buffer area. Since commit 74310e06be4d ("android: > > > > > > > binder: Move buffer out of area shared with user space") this struct is > > > > > > > no longer embedded within the buffer itself but is instead allocated on > > > > > > > the heap to prevent userspace access to this driver-exclusive info. > > > > > > > > > > > > > > Unfortunately, the space of this struct is still being accounted for in > > > > > > > the total buffer size calculation, specifically for async transactions. > > > > > > > This results in an additional 104 bytes added to every async buffer > > > > > > > request, and this area is never used. > > > > > > > > > > > > > > This wasted space can be substantial. If we consider the maximum mmap > > > > > > > buffer space of SZ_4M, the driver will reserve half of it for async > > > > > > > transactions, or 0x200000. This area should, in theory, accommodate up > > > > > > > to 262,144 buffers of the minimum 8-byte size. However, after adding > > > > > > > the extra 'sizeof(struct binder_buffer)', the total number of buffers > > > > > > > drops to only 18,724, which is a sad 7.14% of the actual capacity. > > > > > > > > > > > > > > This patch fixes the buffer size calculation to enable the utilization > > > > > > > of the entire async buffer space. This is expected to reduce the number > > > > > > > of -ENOSPC errors that are seen on the field. > > > > > > > > > > > > > > Fixes: 74310e06be4d ("android: binder: Move buffer out of area shared with user space") > > > > > > > Signed-off-by: Carlos Llamas <cmllamas@google.com> > > > > > > > --- > > > > > > > > > > > > Sorry, I forgot to Cc: stable@vger.kernel.org. > > > > > > > > > > > > > > > <formletter> > > > > > > > > > > This is not the correct way to submit patches for inclusion in the > > > > > stable kernel tree. Please read: > > > > > https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > > > > > for how to do this properly. > > > > > > > > > > </formletter> > > > > > > > > Oops, here is the complete info: > > > > > > > > Commit ID: c6d05e0762ab276102246d24affd1e116a46aa0c > > > > Subject: "binder: fix unused alloc->free_async_space" > > > > Reason: Fixes an incorrect calculation of available space. > > > > Versions: v4.19+ > > > > > > > > Note this patch will also have trivial conflicts in v4.19 and v5.4 > > > > kernels as commit 261e7818f06e is missing there. Please let me know and > > > > I can send the corresponding patches separately. > > > > > > It doesn't even apply to 6.7.y either, so we need backports for all > > > affected trees, thanks. > > > > Now I got it to apply, but we need backports for 5.4.y and 4.19.y, > > thanks. > > > > greg k-h > > Backports sent. > > linux-4.19.y: > https://lore.kernel.org/all/20240122174250.2123854-2-cmllamas@google.com/ > > linux-5.4.y: > https://lore.kernel.org/all/20240122175751.2214176-2-cmllamas@google.com/ All now queued up, thanks! greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2024-01-22 18:35 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20231201172212.1813387-1-cmllamas@google.com>
2023-12-01 17:21 ` [PATCH v2 01/28] binder: use EPOLLERR from eventpoll.h Carlos Llamas
2023-12-01 17:21 ` [PATCH v2 02/28] binder: fix use-after-free in shinker's callback Carlos Llamas
2023-12-01 17:21 ` [PATCH v2 06/28] binder: fix trivial typo of binder_free_buf_locked() Carlos Llamas
2023-12-01 17:21 ` [PATCH v2 07/28] binder: fix comment on binder_alloc_new_buf() return value Carlos Llamas
[not found] ` <20231201172212.1813387-4-cmllamas@google.com>
2024-01-18 19:29 ` [PATCH v2 03/28] binder: fix race between mmput() and do_exit() Carlos Llamas
2024-01-19 5:48 ` Greg Kroah-Hartman
2024-01-19 17:06 ` Carlos Llamas
2024-01-19 17:37 ` Carlos Llamas
2024-01-20 6:37 ` Greg Kroah-Hartman
2024-01-22 18:05 ` Carlos Llamas
[not found] ` <20231201172212.1813387-5-cmllamas@google.com>
2024-01-18 19:32 ` [PATCH v2 04/28] binder: fix async space check for 0-sized buffers Carlos Llamas
2024-01-19 5:48 ` Greg Kroah-Hartman
2024-01-19 17:11 ` Carlos Llamas
2024-01-22 15:05 ` Greg Kroah-Hartman
[not found] ` <20231201172212.1813387-6-cmllamas@google.com>
2024-01-18 19:33 ` [PATCH v2 05/28] binder: fix unused alloc->free_async_space Carlos Llamas
2024-01-19 5:49 ` Greg Kroah-Hartman
2024-01-19 17:27 ` Carlos Llamas
2024-01-22 15:04 ` Greg Kroah-Hartman
2024-01-22 15:05 ` Greg Kroah-Hartman
2024-01-22 18:08 ` Carlos Llamas
2024-01-22 18:35 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).