lkml.org 
[lkml]   [2022]   [Sep]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 07/16] btrfs: send: Proactively round up to kmalloc bucket size
    Date
    Instead of discovering the kmalloc bucket size _after_ allocation, round
    up proactively so the allocation is explicitly made for the full size,
    allowing the compiler to correctly reason about the resulting size of
    the buffer through the existing __alloc_size() hint.

    Cc: Chris Mason <clm@fb.com>
    Cc: Josef Bacik <josef@toxicpanda.com>
    Cc: linux-btrfs@vger.kernel.org
    Acked-by: David Sterba <dsterba@suse.com>
    Link: https://lore.kernel.org/lkml/20220922133014.GI32411@suse.cz
    Signed-off-by: Kees Cook <keescook@chromium.org>
    ---
    fs/btrfs/send.c | 11 ++++++-----
    1 file changed, 6 insertions(+), 5 deletions(-)

    diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
    index e7671afcee4f..d40d65598e8f 100644
    --- a/fs/btrfs/send.c
    +++ b/fs/btrfs/send.c
    @@ -435,6 +435,11 @@ static int fs_path_ensure_buf(struct fs_path *p, int len)
    path_len = p->end - p->start;
    old_buf_len = p->buf_len;

    + /*
    + * Allocate to the next largest kmalloc bucket size, to let
    + * the fast path happen most of the time.
    + */
    + len = kmalloc_size_roundup(len);
    /*
    * First time the inline_buf does not suffice
    */
    @@ -448,11 +453,7 @@ static int fs_path_ensure_buf(struct fs_path *p, int len)
    if (!tmp_buf)
    return -ENOMEM;
    p->buf = tmp_buf;
    - /*
    - * The real size of the buffer is bigger, this will let the fast path
    - * happen most of the time
    - */
    - p->buf_len = ksize(p->buf);
    + p->buf_len = len;

    if (p->reversed) {
    tmp_buf = p->buf + old_buf_len - path_len - 1;
    --
    2.34.1
    \
     
     \ /
      Last update: 2022-09-23 22:36    [W:2.834 / U:0.408 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site