From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9AF32C43387 for ; Wed, 16 Jan 2019 22:03:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 52AEB20651 for ; Wed, 16 Jan 2019 22:03:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="f0NdzDxC" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732333AbfAPWDW (ORCPT ); Wed, 16 Jan 2019 17:03:22 -0500 Received: from mail-qk1-f202.google.com ([209.85.222.202]:47308 "EHLO mail-qk1-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731870AbfAPWDV (ORCPT ); Wed, 16 Jan 2019 17:03:21 -0500 Received: by mail-qk1-f202.google.com with SMTP id z68so6656220qkb.14 for ; Wed, 16 Jan 2019 14:03:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=LvGAyvZnZdfA3v10QbKfWeyoQh1QFMhz1fTA1G+4yFw=; b=f0NdzDxCLO+GQjsXHnw5qHqOudi3obEfsh2gbwfUmH1goTkIk5B8XcU3q0rb65lwWg NIOdadAyyWR0xMOp6ZQLbhRpE1u1yzQ3OPw+UfO8UVYnlByMuosjI6VbShp1K/B0S3xi hOAK3WMwOhjJQ+PT9roP9JF1ikiLLHBBGA1GmqEazsoE6e3Vo/Ik0TBE9mXTGjiuJu5E mtouhaptr9XIy+BhY/WtAruDxbcoQl7KNACiRvxEBE2/vNJNSbFWQXpim5ZaQG+n4xQY kKyJNb6DFnGL6Jsjlg/N10Os+kaXDPd6XbMcwkiI8EEyGDAjfkUZ6e1wW7x1ZLbNuMYh PO/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=LvGAyvZnZdfA3v10QbKfWeyoQh1QFMhz1fTA1G+4yFw=; b=TTMcbqTWiL+OX4XfaQAH3/EYpZ8tNJfajoVppLwXhAsz6dmqrpi5vNgkIAT/KifEvk 533ikQpvL6dsSL0Ci4+9eQzPxwZrd1u5dUM4cjwkvbpJMJ8mT0U8qzAnFSMyhUlFg27I R0d1eZL18eff3LhS8bVWw0F5W9cPdXBBpNpYLjocTRSl2wQTrUiTf8opcSngAVbt9oRF FtmqzEnZeQ3Y/AY3VyopU+XFGigJXQLL4wq4TjTYq95E67B4vHVtl+jVYT6PWh6ayhbX nN1vPFfjZ8fQA/477lh81jV1KLTBZ++DyhTfHNC/DsFhDGfcaj+0VqEfpzffmiKgqKfq NRuA== X-Gm-Message-State: AJcUukcWcSc9ygm600cB25xjQ01wHebZ/UV6SBUEQEA6jzhnNjbazU6M IB61X27fEizHpzgOEJayBttIYg30iO2Dlg533nqjvmxcNrQM2I7MLcLIGT1zi3czFJu5ZjZsTDa Cr6C1ohaUZqLFD4/7p3dAdt6vRTBxO0Cbu+3LKRm4VdkjUi+nhNHhig== X-Google-Smtp-Source: ALg8bN6pcCaFxYNW0bvKH/fJVJh2useCyWU7I5zE84yXIawCgL6RCgtvAAA9c8IF8swvHnjeOaKgtp4= X-Received: by 2002:a0c:9e60:: with SMTP id z32mr6413945qve.0.1547676200714; Wed, 16 Jan 2019 14:03:20 -0800 (PST) Date: Wed, 16 Jan 2019 14:03:15 -0800 Message-Id: <20190116220317.30907-1-sdf@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.20.1.97.g81188d93c3-goog Subject: [PATCH bpf v2 1/3] bpf: don't assume build-id length is always 20 bytes From: Stanislav Fomichev To: netdev@vger.kernel.org Cc: davem@davemloft.net, ast@kernel.org, daniel@iogearbox.net, songliubraving@fb.com, Stanislav Fomichev Content-Type: text/plain; charset="UTF-8" Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Build-id length is not fixed to 20, it can be (`man ld` /--build-id): * 128-bit (uuid) * 160-bit (sha1) * any length specified in ld --build-id=0xhexstring To fix the issue of missing BPF_STACK_BUILD_ID_VALID for shorter build-ids, assume that build-id is somewhere in the range of 1 .. 20. Set the remaining bytes to zero. v2: * don't introduce new "len = min(BPF_BUILD_ID_SIZE, nhdr->n_descsz)", we already know that nhdr->n_descsz <= BPF_BUILD_ID_SIZE if we enter this 'if' condition Fixes: 615755a77b24 ("bpf: extend stackmap to save binary_build_id+offset instead of address") Acked-by: Song Liu Signed-off-by: Stanislav Fomichev --- kernel/bpf/stackmap.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/bpf/stackmap.c b/kernel/bpf/stackmap.c index d9e2483669d0..f9df545e92f6 100644 --- a/kernel/bpf/stackmap.c +++ b/kernel/bpf/stackmap.c @@ -180,11 +180,14 @@ static inline int stack_map_parse_build_id(void *page_addr, if (nhdr->n_type == BPF_BUILD_ID && nhdr->n_namesz == sizeof("GNU") && - nhdr->n_descsz == BPF_BUILD_ID_SIZE) { + nhdr->n_descsz > 0 && + nhdr->n_descsz <= BPF_BUILD_ID_SIZE) { memcpy(build_id, note_start + note_offs + ALIGN(sizeof("GNU"), 4) + sizeof(Elf32_Nhdr), - BPF_BUILD_ID_SIZE); + nhdr->n_descsz); + memset(build_id + nhdr->n_descsz, 0, + BPF_BUILD_ID_SIZE - nhdr->n_descsz); return 0; } new_offs = note_offs + sizeof(Elf32_Nhdr) + -- 2.20.1.97.g81188d93c3-goog