Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp484894yba; Mon, 1 Apr 2019 10:13:47 -0700 (PDT) X-Google-Smtp-Source: APXvYqwNBn2HAcQZa8Q3u0yWVXnmE6OvtwwdnRYVuB9Om8Gwr7a/ZYz0hhGuGl8wdb2VsXM6mED1 X-Received: by 2002:a17:902:16a4:: with SMTP id h33mr28734700plh.23.1554138826950; Mon, 01 Apr 2019 10:13:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554138826; cv=none; d=google.com; s=arc-20160816; b=Tk4wp9A0DTn+6v+THPNS+C1Z6t3VH3/vMsHo6g2Irhv0EX7lF1b02bcsV0th/05cuO fstZu6JQxXkDsN/AvamgFVoFGkHlQW/Rb+TwgHsxlGKuCALhsTd3NIhiibBQvYWYhSqI jLcRsSSNJI31jPA/GPzXw6AJdkv8ZLZIjdVxuBoT6TLmGI9gZIBrt5etm30UksoG4BcU ZY7wsPFpdW6jZT1pWFf7h1KwrIzvcorRCeqFKNEKlmrwgdp63Z/Al7DG7bO/2nnpp0TK ode8TkTxWOBqS1W95KMHzQvTIBH4RfBOrHPupYMHjutS5J9sli8tY9Q2xoF3lXFbosrI jySg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=j2Kesr7pcgAb/kORDR4A/DzmZWjssY5XkrNApsiHr0g=; b=D5JiIGCro7JkA9+AfBIjJ/2qcBuhjtSxkLJ6um8w8zkilzONjweUhiiNSLH6YxyzqB is4UxIW3SpCTAb2XxOSWldBPmzdSu5X5h2vkNXFyRb7A0pWaj2gD7C6ePiMjV32Zb72l jGmDJ34zMUyCxoaCcCIr/JuMOMgXNow34WBdihV4YLw8x9UK8J7nCxuJ2ieJOxC/TA2S bcTO8kue9ceNTQE6HyJxZSqv4uALogUafA9DJh9RX1jW/LuEgJ7mcO2U8sEBRCoXtcsX rTC0n+uk86RTUEovGmjqFX/itMiWmBuJskrRGp2VsVfrLVsAD2iYQvIClhUBESNhy9Ad MXhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="Ayz/A0hT"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b16si6151353pgb.501.2019.04.01.10.13.31; Mon, 01 Apr 2019 10:13:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="Ayz/A0hT"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730160AbfDARLQ (ORCPT + 99 others); Mon, 1 Apr 2019 13:11:16 -0400 Received: from mail.kernel.org ([198.145.29.99]:59666 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729526AbfDARLO (ORCPT ); Mon, 1 Apr 2019 13:11:14 -0400 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 4889D206B8; Mon, 1 Apr 2019 17:11:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554138673; bh=gnvx0E5d/E2X+/TEkUI2F88PTOy9EN1UFl5LY7WU5us=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ayz/A0hThn1+DmdmZSo+QeyNicoUPwGoiGRw/Gvw5r1JlM5HIPlkkbvdxa/3Jo2tl sWBJ7PWwt2YMwJdLDp/LYmOV4wBqL5Qw/YgXCq12LMCQWvR6Sj1hYmIYnSrerNuqbh 2hP1hmoOWJ4VSVRomaVzYQnYD7CszkUj9YQazhJk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Pavithra R. Prakash" , "Gautham R. Shenoy" , Vaidyanathan Srinivasan , Michael Ellerman Subject: [PATCH 5.0 136/146] powerpc/pseries/energy: Use OF accessor functions to read ibm,drc-indexes Date: Mon, 1 Apr 2019 19:02:28 +0200 Message-Id: <20190401170059.614669770@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190401170048.449559024@linuxfoundation.org> References: <20190401170048.449559024@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 5.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Gautham R. Shenoy commit ce9afe08e71e3f7d64f337a6e932e50849230fc2 upstream. In cpu_to_drc_index() in the case when FW_FEATURE_DRC_INFO is absent, we currently use of_read_property() to obtain the pointer to the array corresponding to the property "ibm,drc-indexes". The elements of this array are of type __be32, but are accessed without any conversion to the OS-endianness, which is buggy on a Little Endian OS. Fix this by using of_property_read_u32_index() accessor function to safely read the elements of the array. Fixes: e83636ac3334 ("pseries/drc-info: Search DRC properties for CPU indexes") Cc: stable@vger.kernel.org # v4.16+ Reported-by: Pavithra R. Prakash Signed-off-by: Gautham R. Shenoy Reviewed-by: Vaidyanathan Srinivasan [mpe: Make the WARN_ON a WARN_ON_ONCE so it's not retriggerable] Signed-off-by: Michael Ellerman Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/platforms/pseries/pseries_energy.c | 27 ++++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) --- a/arch/powerpc/platforms/pseries/pseries_energy.c +++ b/arch/powerpc/platforms/pseries/pseries_energy.c @@ -77,18 +77,27 @@ static u32 cpu_to_drc_index(int cpu) ret = drc.drc_index_start + (thread_index * drc.sequential_inc); } else { - const __be32 *indexes; - - indexes = of_get_property(dn, "ibm,drc-indexes", NULL); - if (indexes == NULL) - goto err_of_node_put; + u32 nr_drc_indexes, thread_drc_index; /* - * The first element indexes[0] is the number of drc_indexes - * returned in the list. Hence thread_index+1 will get the - * drc_index corresponding to core number thread_index. + * The first element of ibm,drc-indexes array is the + * number of drc_indexes returned in the list. Hence + * thread_index+1 will get the drc_index corresponding + * to core number thread_index. */ - ret = indexes[thread_index + 1]; + rc = of_property_read_u32_index(dn, "ibm,drc-indexes", + 0, &nr_drc_indexes); + if (rc) + goto err_of_node_put; + + WARN_ON_ONCE(thread_index > nr_drc_indexes); + rc = of_property_read_u32_index(dn, "ibm,drc-indexes", + thread_index + 1, + &thread_drc_index); + if (rc) + goto err_of_node_put; + + ret = thread_drc_index; } rc = 0;