04 Sep, 2020

1 commit

  • The most common cause of the binder transaction buffer filling up is a
    client rapidly firing oneway transactions into a process, before it has
    a chance to handle them. Yet the root cause of this is often hard to
    debug, because either the system or the app will stop, and by that time
    binder debug information we dump in bugreports is no longer relevant.

    This change warns as soon as a process dips below 80% of its oneway
    space (less than 100kB available in the configuration), when any one
    process is responsible for either more than 50 transactions, or more
    than 50% of the oneway space.

    Signed-off-by: Martijn Coenen
    Acked-by: Todd Kjos
    Link: https://lore.kernel.org/r/20200821122544.1277051-1-maco@android.com
    Signed-off-by: Greg Kroah-Hartman

    Martijn Coenen
     

05 Jun, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this software is licensed under the terms of the gnu general public
    license version 2 as published by the free software foundation and
    may be copied distributed and modified under those terms this
    program is distributed in the hope that it will be useful but
    without any warranty without even the implied warranty of
    merchantability or fitness for a particular purpose see the gnu
    general public license for more details

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 285 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Alexios Zavras
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190529141900.642774971@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

14 Feb, 2019

1 commit

  • Fixes sparse issues reported by the kbuild test robot running
    on https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
    char-misc-testing: bde4a19fc04f5 ("binder: use userspace pointer as base
    of buffer space")

    Error output (drivers/android/binder_alloc_selftest.c):
    sparse: warning: incorrect type in assignment (different address spaces)
    sparse: expected void *page_addr
    sparse: got void [noderef] *user_data
    sparse: error: subtraction of different types can't work

    Fixed by adding necessary "__user" tags.

    Reported-by: kbuild test robot
    Signed-off-by: Todd Kjos
    Signed-off-by: Greg Kroah-Hartman

    Todd Kjos
     

12 Feb, 2019

1 commit

  • Now that alloc->buffer points to the userspace vm_area
    rename buffer->data to buffer->user_data and rename
    local pointers that hold user addresses. Also use the
    "__user" tag to annotate all user pointers so sparse
    can flag cases where user pointer vaues are copied to
    kernel pointers. Refactor code to use offsets instead
    of user pointers.

    Signed-off-by: Todd Kjos
    Signed-off-by: Greg Kroah-Hartman

    Todd Kjos
     

28 Aug, 2017

3 commits

  • Hold on to the pages allocated and mapped for transaction
    buffers until the system is under memory pressure. When
    that happens, use linux shrinker to free pages. Without
    using shrinker, patch "android: binder: Move buffer out
    of area shared with user space" will cause a significant
    slow down for small transactions that fit into the first
    page because free list buffer header used to be inlined
    with buffer data.

    In addition to prevent the performance regression for
    small transactions, this patch improves the performance
    for transactions that take up more than one page.

    Modify alloc selftest to work with the shrinker change.

    Test: Run memory intensive applications (Chrome and Camera)
    to trigger shrinker callbacks. Binder frees memory as expected.
    Test: Run binderThroughputTest with high memory pressure
    option enabled.

    Signed-off-by: Sherry Yang
    Signed-off-by: Greg Kroah-Hartman

    Sherry Yang
     
  • Binder driver allocates buffer meta data in a region that is mapped
    in user space. These meta data contain pointers in the kernel.

    This patch allocates buffer meta data on the kernel heap that is
    not mapped in user space, and uses a pointer to refer to the data mapped.

    Signed-off-by: Sherry Yang
    Signed-off-by: Greg Kroah-Hartman

    Sherry Yang
     
  • binder_alloc_selftest tests that alloc_new_buf handles page allocation and
    deallocation properly when allocate and free buffers. The test allocates 5
    buffers of various sizes to cover all possible page alignment cases, and
    frees the buffers using a list of exhaustive freeing order.

    Test: boot the device with ANDROID_BINDER_IPC_SELFTEST config option
    enabled. Allocator selftest passes.

    Signed-off-by: Sherry Yang
    Signed-off-by: Greg Kroah-Hartman

    Sherry Yang