From patchwork Wed Jan 16 18:11:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Fomichev X-Patchwork-Id: 1026078 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="jWS0l+fo"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43fwJG25vWz9s2P for ; Thu, 17 Jan 2019 05:11:26 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728379AbfAPSLY (ORCPT ); Wed, 16 Jan 2019 13:11:24 -0500 Received: from mail-ot1-f73.google.com ([209.85.210.73]:36823 "EHLO mail-ot1-f73.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725882AbfAPSLY (ORCPT ); Wed, 16 Jan 2019 13:11:24 -0500 Received: by mail-ot1-f73.google.com with SMTP id q23so3901802otn.3 for ; Wed, 16 Jan 2019 10:11:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=YY3RsFTUNBHLs8yeCGag/7lB6aEJ+PXthC3fs/4toRQ=; b=jWS0l+foduCGT2C1ojytldPyklZXqpZRXlf2iKZ5q6qUtLfH/bgHnsNSvx50qtOa04 1hiDFGHTGLGspcUQy5vxRunUfNVoqtfYci6SBg6CyHAF+Wh8WjntQWqENYkzdxO3Xb1x 21Hq8CPnk7u1MRQjdRDHaDKLhDIlLC+XxKLZ4+MKaedT5c5lh+moCnAy2F2PBRcxqrLW wUyxgmyC4k0FvECm1Fv4bQGlFMOVB0I3C3ENMzBTj01iTGRQL7oVEZHQLTTi+cx3M5qF RJ9i0VWnCvAXPb7jUpIZjSqnqQ2nzPsmX6vlvTPhp6jKcmnIvVd4lD27NQ+QKGTx1+GC w/sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=YY3RsFTUNBHLs8yeCGag/7lB6aEJ+PXthC3fs/4toRQ=; b=uKeA1nAVog3NRWmmEUpgYWH5/4NLrzdoZ3kU8M6eanr8mZ1Zb1zPDLxR9kSEDgODq6 zYdbYF/GFWGHzGgXZ/Dg/j8JTTBC60nie4qsNNmxcAmahq0VvV4xJVpxqlpgm8KTc6sU iJji0J8RMbzbIp0c9XTne2KfgIWQIRAVeEJCnNDuvD6o3g9QJGendiB5N5gKf7/3m7a8 xRm9KTkel5lEpHhtY/v56osgsytDMUBjD+Wh/acxuz42zsGFmaWDEP1wsaqg8H1WWeV/ BBkKmDESzEE0zWXaK9xTkN6CyENKPQ1N8/rmT7WpI4AF9vuPspwTIXNRDapWdY7zV1BP Q8Vg== X-Gm-Message-State: AJcUukfm7e+KXI/g9csTk6l0xp7sRh4LfDqrL5WeMncmJ5bwD51WxCCS 4JtM+jJRNXJSFG9nz2rIx6lK4U5S3k6Exa3h4bfYMpAFZu+tavlBhZ6i9AGDb2vJoTbyOhhQeJZ vLFiNEDZmgQJVimfK0W60AT10/c88HrHNWPe+KojnkDdZoULNhGXt0g== X-Google-Smtp-Source: ALg8bN7sqJpQSmvUzpd7bUysqtLGoERkLpmLE0eyI9Sqxye4EmRVGJXFZXoF8ejqEgsJxzPRxUlFD0o= X-Received: by 2002:aca:aa53:: with SMTP id t80mr5901934oie.22.1547662283000; Wed, 16 Jan 2019 10:11:23 -0800 (PST) Date: Wed, 16 Jan 2019 10:11:19 -0800 In-Reply-To: <0FC05078-4DF7-453E-8F36-7C0F5AF81F69@fb.com> Message-Id: <20190116181119.96117-1-sdf@google.com> Mime-Version: 1.0 References: <0FC05078-4DF7-453E-8F36-7C0F5AF81F69@fb.com> 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 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") Signed-off-by: Stanislav Fomichev Acked-by: Song Liu --- 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) +