Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp2173697ybg; Fri, 5 Jun 2020 07:24:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw/J8ba4mf3IPgIity+gw2fe7x60W8IyLYKoGaNOZmn33EwmGCXTCZyhymtDXq9JyTRS8b+ X-Received: by 2002:a17:906:3481:: with SMTP id g1mr8485479ejb.530.1591367084989; Fri, 05 Jun 2020 07:24:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591367084; cv=none; d=google.com; s=arc-20160816; b=CEpjacl/H9YT1cbf8rtSKy3IJtH/Z8AQJVmgzw412jwi5v2ciewdO0F/6pGAVkMtfG 07cLEiTn7IEa+4ZPAeaHbBjwpjyz7LbviOggVj2rr48DcU3O16GS569u4jC2Eh90YnHC TmXLMLwtSE/+loYf+cx2pBvfM8uhUzDaYpguSE0t4Gr2/ryLa+lpgnmu3h1hBWGeUbtd zvToL22zvLPlggjL413uLvZr5258G6joJ8egevj/OpQROCzlmYhoBy9+psdze1lzBR9m ahuqWIIlPpxF3qZSljQ3AbPXtC9E1QHVnHOFwr/hPm6HFwB93PsE3uBgPHa58hekxkLw r4Rw== 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=atA0MoWDw76kXec1fCf0qKzfPToleysveRu0qvvVYdc=; b=ifF0HsKAG/idI6cZp/SjWHwJJpdYsuPlLUzSe8GcWrCR3yo+/oReUcE7+oUd/+9S8A d4ORdRLp6v0o4x6doQcUBfL1CjmdemTwE0ftxKOgWxhmI/OqLdjJipB9dqZuVxPcj2TD rScC9do2UFZRhduMN2lmWOfE+OnT2Sbpxg8qdxkNLO8C0m99L1aQEGaeu20z5SKeWz5C lhY2PcUcJ60jpJdXWWyUIRcjdapZsC9BJg+U1i9CzFnjhJDh69QzHBAmJ3LwAdcm4l44 FnZkwDeW/fu7+jRiqqnkJ1iU3gNoRzmcn7jBiGhnQTViD9dTmG8UZze2LXbgZhMxOvoN FEkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=C+rnbEzl; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g15si3551485ejh.346.2020.06.05.07.24.21; Fri, 05 Jun 2020 07:24:44 -0700 (PDT) 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; dkim=pass header.i=@kernel.org header.s=default header.b=C+rnbEzl; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728926AbgFEOUL (ORCPT + 99 others); Fri, 5 Jun 2020 10:20:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:50852 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728881AbgFEOTx (ORCPT ); Fri, 5 Jun 2020 10:19:53 -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 F145C2086A; Fri, 5 Jun 2020 14:19:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1591366792; bh=BIYWajaI1KvjRnL5KKXrEQDz4NUESrwTb95Dq8TCVnk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C+rnbEzlrsmj1ukJacz88HrCIx6EViU968If+TvKwyEQuE9UmiYKCH+a6YJ26OB/9 GZlGbQIX/6mqwGkejIfDJ8TdMW3BM3FqlkOXbZph0tP4SWvuMK2epoqp2UAdLcBI1o 49y2ST31MWXckc6+GnnAMVaSuZQwhAzb/kv/+MOU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vishal Verma , "Aneesh Kumar K.V" , Dan Williams , Guenter Roeck Subject: =?UTF-8?q?=5BPATCH=204=2E19=2002/28=5D=20libnvdimm=3A=20Fix=20endian=20conversion=20issues=C2=A0?= Date: Fri, 5 Jun 2020 16:15:04 +0200 Message-Id: <20200605140252.475940014@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200605140252.338635395@linuxfoundation.org> References: <20200605140252.338635395@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Aneesh Kumar K.V commit 86aa66687442ef45909ff9814b82b4d2bb892294 upstream. nd_label->dpa issue was observed when trying to enable the namespace created with little-endian kernel on a big-endian kernel. That made me run `sparse` on the rest of the code and other changes are the result of that. Fixes: d9b83c756953 ("libnvdimm, btt: rework error clearing") Fixes: 9dedc73a4658 ("libnvdimm/btt: Fix LBA masking during 'free list' population") Reviewed-by: Vishal Verma Signed-off-by: Aneesh Kumar K.V Link: https://lore.kernel.org/r/20190809074726.27815-1-aneesh.kumar@linux.ibm.com Signed-off-by: Dan Williams Cc: Guenter Roeck Signed-off-by: Greg Kroah-Hartman --- drivers/nvdimm/btt.c | 8 ++++---- drivers/nvdimm/namespace_devs.c | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) --- a/drivers/nvdimm/btt.c +++ b/drivers/nvdimm/btt.c @@ -400,9 +400,9 @@ static int btt_flog_write(struct arena_i arena->freelist[lane].sub = 1 - arena->freelist[lane].sub; if (++(arena->freelist[lane].seq) == 4) arena->freelist[lane].seq = 1; - if (ent_e_flag(ent->old_map)) + if (ent_e_flag(le32_to_cpu(ent->old_map))) arena->freelist[lane].has_err = 1; - arena->freelist[lane].block = le32_to_cpu(ent_lba(ent->old_map)); + arena->freelist[lane].block = ent_lba(le32_to_cpu(ent->old_map)); return ret; } @@ -568,8 +568,8 @@ static int btt_freelist_init(struct aren * FIXME: if error clearing fails during init, we want to make * the BTT read-only */ - if (ent_e_flag(log_new.old_map) && - !ent_normal(log_new.old_map)) { + if (ent_e_flag(le32_to_cpu(log_new.old_map)) && + !ent_normal(le32_to_cpu(log_new.old_map))) { arena->freelist[i].has_err = 1; ret = arena_clear_freelist_error(arena, i); if (ret) --- a/drivers/nvdimm/namespace_devs.c +++ b/drivers/nvdimm/namespace_devs.c @@ -1996,7 +1996,7 @@ static struct device *create_namespace_p nd_mapping = &nd_region->mapping[i]; label_ent = list_first_entry_or_null(&nd_mapping->labels, typeof(*label_ent), list); - label0 = label_ent ? label_ent->label : 0; + label0 = label_ent ? label_ent->label : NULL; if (!label0) { WARN_ON(1); @@ -2332,8 +2332,9 @@ static struct device **scan_labels(struc continue; /* skip labels that describe extents outside of the region */ - if (nd_label->dpa < nd_mapping->start || nd_label->dpa > map_end) - continue; + if (__le64_to_cpu(nd_label->dpa) < nd_mapping->start || + __le64_to_cpu(nd_label->dpa) > map_end) + continue; i = add_namespace_resource(nd_region, nd_label, devs, count); if (i < 0)