From patchwork Tue Jan 7 20:54:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 234378 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=-6.8 required=3.0 tests=DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable 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 4C542C33C9E for ; Tue, 7 Jan 2020 21:06:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2066B2467A for ; Tue, 7 Jan 2020 21:06:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578431199; bh=33Bi1yVAAsVNi7Ev68V72KZgAWblLjCh7fQukOoLmBo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=v2U75TIbu0GAPh0fSvn8+C40UK67frQQLmNyG+6XJ0w9ck7C8KxdBp1Q3XjfbSMWj +XoYtNOnVnpH3zV5DQ3n1ykGV/4yCl6NB4Lm8k+kqmOoUDENu7wO53lxuFZXihHrhD PGFPVihCBMKkQQktR7fSASG7W0fO9nDOumAbC58o= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729393AbgAGVGd (ORCPT ); Tue, 7 Jan 2020 16:06:33 -0500 Received: from mail.kernel.org ([198.145.29.99]:55918 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728973AbgAGVGd (ORCPT ); Tue, 7 Jan 2020 16:06:33 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BE8AE214D8; Tue, 7 Jan 2020 21:06:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578431192; bh=33Bi1yVAAsVNi7Ev68V72KZgAWblLjCh7fQukOoLmBo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mcFKYwP5KR7UdVUSU5b0VLL2yY+ZDwLv7JyCGgSL+dqVsKdDfaEi7uKS8o0CeR7Cg 91+INRUuscksuO8ju7seBxNaegi7k+h5l0LReidSzWPo48C9BRFaGJ4A3sWQawLXgb Uezn2VOjvjhoIgI3APN3GZS/Pu2qCshRM/QG22vw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Tom Zanussi , Sven Schnelle , "Steven Rostedt (VMware)" Subject: [PATCH 4.19 071/115] tracing: Have the histogram compare functions convert to u64 first Date: Tue, 7 Jan 2020 21:54:41 +0100 Message-Id: <20200107205303.954455199@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200107205240.283674026@linuxfoundation.org> References: <20200107205240.283674026@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Steven Rostedt (VMware) commit 106f41f5a302cb1f36c7543fae6a05de12e96fa4 upstream. The compare functions of the histogram code would be specific for the size of the value being compared (byte, short, int, long long). It would reference the value from the array via the type of the compare, but the value was stored in a 64 bit number. This is fine for little endian machines, but for big endian machines, it would end up comparing zeros or all ones (depending on the sign) for anything but 64 bit numbers. To fix this, first derference the value as a u64 then convert it to the type being compared. Link: http://lkml.kernel.org/r/20191211103557.7bed6928@gandalf.local.home Cc: stable@vger.kernel.org Fixes: 08d43a5fa063e ("tracing: Add lock-free tracing_map") Acked-by: Tom Zanussi Reported-by: Sven Schnelle Signed-off-by: Steven Rostedt (VMware) Signed-off-by: Greg Kroah-Hartman --- kernel/trace/tracing_map.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/kernel/trace/tracing_map.c +++ b/kernel/trace/tracing_map.c @@ -148,8 +148,8 @@ static int tracing_map_cmp_atomic64(void #define DEFINE_TRACING_MAP_CMP_FN(type) \ static int tracing_map_cmp_##type(void *val_a, void *val_b) \ { \ - type a = *(type *)val_a; \ - type b = *(type *)val_b; \ + type a = (type)(*(u64 *)val_a); \ + type b = (type)(*(u64 *)val_b); \ \ return (a > b) ? 1 : ((a < b) ? -1 : 0); \ }