From patchwork Wed Jul 11 09:14:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 141701 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp48333ljj; Wed, 11 Jul 2018 02:15:06 -0700 (PDT) X-Google-Smtp-Source: AAOMgpe37NZ2AgbDeFaaAArNu8mUzNXCzGSCavagT/ztVZeNdh/DKHCzb0Ek33CwV8kCGV0UC3b5 X-Received: by 2002:a62:1a4a:: with SMTP id a71-v6mr1960027pfa.190.1531300506116; Wed, 11 Jul 2018 02:15:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531300506; cv=none; d=google.com; s=arc-20160816; b=Jq1teQw36B5MVhMalKh/+E5C3rmzvyQnGoBr2dT89FixzKnbjHsIAIePnC+U2PKED7 +oiGqc/HpM32dAvub77aDBi5pwUO9peaHCO80pePcTHl3/dPbFH4eHgwWNpMpHeOBbO2 Mwrp1NZxWC4RLJICBztiSgktY0Xk34UwbEZj44WdgBtjg2wHP2D/57OTJ6qLNPM98Sla PBqrw3+5OGFh3fwLeWuycXQoDVaSpX/LNP0VeZg+XoVfW4XFPD+1u3w/S156sUVSwQMQ skZ2M1DJGyMk6gCppQaQIRrIgj3KQ9CR29myYN5DKVca7+iXOBeAe5D4ydS3xt+CELe1 citA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=B0WqIEVpdP5ydgroypsAAy13c3PwJGPpYw+kn2u1rzA=; b=wzCqlCNjg1VJFqjg5nwD2vBdSP7TNOpW4q2Y3tTR52sGIdZrFeq9D7V2R7DIZqXjxV Rtc57v53hGH92BOg32VgJd7BiGT8sQGbnUq495pQJPnTyMCYXcwCb3jl4yZzwOQ1gCxO CVjHu0LS4LQ9gfBI0YW7bgvTQSF14baOo734ROiRhI6jxjKpR5JyO1IzcAtGU9HzBQzy k2CF+OXLaCgGyxqHhqaxfCDGEtS5k5gPIqZry6ApxrCtOb3LSrQcJ4W5jKU0x/FacGIo vswl8WDc0fyCfYCxxRlC+oEBeuoIrTcqLEE4PBbddrBxs8k4t5k74j8Pz526mqL61Qoc rGaA== ARC-Authentication-Results: i=1; mx.google.com; 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 h1-v6si18885598pld.485.2018.07.11.02.15.05; Wed, 11 Jul 2018 02:15:06 -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; 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 S1732553AbeGKJSS (ORCPT + 22 others); Wed, 11 Jul 2018 05:18:18 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:49143 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726474AbeGKJSO (ORCPT ); Wed, 11 Jul 2018 05:18:14 -0400 Received: from wuerfel.lan ([46.223.138.35]) by mrelayeu.kundenserver.de (mreue101 [212.227.15.145]) with ESMTPA (Nemesis) id 0M0Qv7-1fvOTt2wnN-00ubJL; Wed, 11 Jul 2018 11:14:48 +0200 From: Arnd Bergmann To: adilger.kernel@dilger.ca Cc: arnd@arndb.de, jack@suse.cz, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, sirmy15@gmail.com, stable@vger.kernel.org, tgnottingham@gmail.com, tytso@mit.edu, y2038@lists.linaro.org Subject: [PATCH v2 1/6] ext4: sysfs: print ext4_super_block fields as little-endian Date: Wed, 11 Jul 2018 11:14:09 +0200 Message-Id: <20180711091414.1494843-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K1:k96ja8uKs2cKCxeGGBOC7DdqQntq9kxxFt1GvibNWAjl6FnyhOc oGHbX9U/lTfzNyLSYeEqIh8QMmHpWFCDN0fMQod7i990D13JxOiVNwE09hYFzGLsF9Sej8a amVEi7x1dqyLMdUtaRmea0LhEkI/q88GpUwpIlIvICnvTd6Skkf1BJwhz70QyjJZ1YdmYdv z65cQ82y5Ltecb5vKHzhA== X-UI-Out-Filterresults: notjunk:1; V01:K0:XB78hOjXeho=:VUFx62ifQMg9bF/Ofbfhut OS3T9wkUGtA3dTe65iJ3NRV9He4Z6QJb+u4uYT/tGBtshquIjKGXQbaZQjUKVz2wUXdFNR8L/ 0sNOA5nE8UNybHFG+U7svmR3SaPYNoyNYoS4X4QbJTN1YB9E2DpQpafEWaZlBnvjRjMF4V607 UsQuozQcnT3qTHJWAK74bf+2TBZYjudvwKs+091+36bebY+dG3mflqUue1dVrtm/hK5RWYAQJ 4Vry5oNXC0Ir+DekBxHvzWZFX1ozOxABKUKw6T6p6vWO3nHj4yKgtTpRgJjxPR2o1iQFKE4+S rjUnkp7kDDrH7ypPZOEhoohy6Rrydg21t5YMGaea64u3Ic6cOKCWnBY49Iu0DHENoIUU371Gz nm5b/y+E0r3WP47H/FlKG31YkwZFzzCHDR8wsWXHd6973rWgJ7eOaNtae8pKZlRmcv3BbFB/M 4DSlChT/z3R/qjdqdLhveO6F8UuBZRsBxqMuDuz0aeE5hlvJaMmFPIgVRtjA1To+Y3Z972fw5 UNgkHJM4h98ksf4sfT1j34ugITRrmifc0bsMeIhAyAhKfYoJgHKJaLEjuln+L6zP5RsW1zqJe cEGbwoPveN4YX6I8J3SQXurVZj3WnkvOYeAZ0BpwAnNPzChLOF+7wKR68OpeRAUTRlwqN3/Pt sYGFJCmfwvWkhzuCayQOur+XqnuCk4LBrlHz5jQm4zNkX7kzlyG/Yl+MAAJc/yVeSn04= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org While working on extended rand for last_error/first_error timestamps, I noticed that the endianess is wrong, we access the little-endian fields in struct ext4_super_block as native-endian when we print them. This adds a special case in ext4_attr_show() and ext4_attr_store() to byteswap the superblock fields if needed. In older kernels, this code was part of super.c, it got moved to sysfs.c in linux-4.4. Cc: stable@vger.kernel.org Fixes: 52c198c6820f ("ext4: add sysfs entry showing whether the fs contains errors") Reviewed-by: Andreas Dilger Signed-off-by: Arnd Bergmann --- fs/ext4/sysfs.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) -- 2.9.0 diff --git a/fs/ext4/sysfs.c b/fs/ext4/sysfs.c index f34da0bb8f17..b970a200f20c 100644 --- a/fs/ext4/sysfs.c +++ b/fs/ext4/sysfs.c @@ -274,8 +274,12 @@ static ssize_t ext4_attr_show(struct kobject *kobj, case attr_pointer_ui: if (!ptr) return 0; - return snprintf(buf, PAGE_SIZE, "%u\n", - *((unsigned int *) ptr)); + if (a->attr_ptr == ptr_ext4_super_block_offset) + return snprintf(buf, PAGE_SIZE, "%u\n", + le32_to_cpup(ptr)); + else + return snprintf(buf, PAGE_SIZE, "%u\n", + *((unsigned int *) ptr)); case attr_pointer_atomic: if (!ptr) return 0; @@ -308,7 +312,10 @@ static ssize_t ext4_attr_store(struct kobject *kobj, ret = kstrtoul(skip_spaces(buf), 0, &t); if (ret) return ret; - *((unsigned int *) ptr) = t; + if (a->attr_ptr == ptr_ext4_super_block_offset) + *((__le32 *) ptr) = cpu_to_le32(t); + else + *((unsigned int *) ptr) = t; return len; case attr_inode_readahead: return inode_readahead_blks_store(sbi, buf, len);