Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp2051160pxu; Tue, 24 Nov 2020 15:56:15 -0800 (PST) X-Google-Smtp-Source: ABdhPJzYIxKLFeZHAQuxFEFvb8kSCGN21EhatzIAMaVlTUzYueTcIOH2hA8/RXAbSdgc81wjIqf1 X-Received: by 2002:a17:906:af8b:: with SMTP id mj11mr874809ejb.170.1606262175425; Tue, 24 Nov 2020 15:56:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606262175; cv=none; d=google.com; s=arc-20160816; b=XIzY27wXZDSaGydOPLEIMnNymCflYNjsiRmqA0nzJ3wi5DC1/Ug1U2Cg8UITdvzZqM 8IPQgk6HMKwArrBOXArZaowNgBCdQQGCQi7zREHK8aDYqT3KI8nK0c03uZjXpdLaLowU sdS2lJj/tUGHcimBvkMnHK+nWYWX9aWV3MZnThsSbO8lDA4eT/tI5O6mU44/P2G8lF1c mVtLgfNe3vp5JVIdhVVlH8QsI0Eyqbmwdx/bZLPzXUC5pe/HC+mxvgLC1rfO5BZUA5kP ERoX9K5MXS+Ex58WtPuMQq7QhQzodl31SJpagKNnfoXHja8Gk+U3yjlP6qavEx9pe//8 4TIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=5gPSlmmZgNZ54PkAK50801O0Y+PjBGRqRm1THBuC7NQ=; b=CpOIO6Z+8WZNv5zUg+BAq8gdoXJXxzvRigh4aHyAi5/V/UoRzeDX2CbZ6Z9RlLpotD O/KHwch/XV/fGW6Dbd3XI7bi2xQtVTZ5B/cLUaWott32UesOgMziLMh+mFX/jZWxvPUH PqlaGCb3LQO8Ab9tj9xGgdbuuS3XhR6w6p4VOmH9coppRWo5/R8GWcrgdkUWE9bVpdN2 Nr+J/aUlNsAA2wtZDeT4aXHubeInkIXaZKPXb1Z6vByxsB86uMhpKk6kq8Wr5xsRSOu/ HOxG/T/pTt5H7LhfvHgf8klI1lYJntI0i3+ce+UWmUO53XEO9BuygRPVUtEtjs+2C5yp /xZg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r8si161484edi.606.2020.11.24.15.55.52; Tue, 24 Nov 2020 15:56:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729744AbgKXT6e (ORCPT + 99 others); Tue, 24 Nov 2020 14:58:34 -0500 Received: from foss.arm.com ([217.140.110.172]:52128 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729708AbgKXT6e (ORCPT ); Tue, 24 Nov 2020 14:58:34 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id AAEB431B; Tue, 24 Nov 2020 11:58:33 -0800 (PST) Received: from dsg-apd-n1sdp-01.cambridge.arm.com (dsg-apd-n1sdp-01.cambridge.arm.com [10.2.76.27]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 265333F718; Tue, 24 Nov 2020 11:58:32 -0800 (PST) From: Al Grant To: linux-perf-users@vger.kernel.org, Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim Cc: Al Grant , Al Grant , linux-kernel@vger.kernel.org Subject: [PATCH] perf inject: correct event attribute sizes Date: Tue, 24 Nov 2020 19:58:17 +0000 Message-Id: <20201124195818.30603-1-al.grant@arm.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When perf inject reads a perf.data file from an older version of perf, it writes event attributes into the output with the original size field, but lays them out as if they had the size currently used. Readers see a corrupt file. Update the size field to match the layout. Signed-off-by: Al Grant --- tools/perf/util/header.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index be850e9f8852..0d95981df8dd 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -3331,6 +3331,14 @@ int perf_session__write_header(struct perf_session *session, attr_offset = lseek(ff.fd, 0, SEEK_CUR); evlist__for_each_entry(evlist, evsel) { + if (evsel->core.attr.size < sizeof(evsel->core.attr)) { + /* + * We are likely in "perf inject" and have read + * from an older file. Update attr size so that + * reader gets the right offset to the ids. + */ + evsel->core.attr.size = sizeof(evsel->core.attr); + } f_attr = (struct perf_file_attr){ .attr = evsel->core.attr, .ids = { -- 2.17.1