From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754969AbbKWNeR (ORCPT ); Mon, 23 Nov 2015 08:34:17 -0500 Received: from mout.kundenserver.de ([217.72.192.73]:54205 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754923AbbKWNeO (ORCPT ); Mon, 23 Nov 2015 08:34:14 -0500 From: Arnd Bergmann To: linux-raid@vger.kernel.org, Neil Brown Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH] md: avoid warning for 32-bit sector_t Date: Mon, 23 Nov 2015 14:33:39 +0100 Message-ID: <65226011.NWtA6TWNA3@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:VgzrLULSmuqQ7Q2T+cARzvxH1thg1E1VJmJPNpdSfQUNkSsP9hF Rq32ciU3Q4J3JY0nB9E7KGB6OCWV1+DOPd7OOXWTXXoTMoLnH+aUP0eTdEBFM3zlPn4SE4F Ow+pgxazb4em1rMtP5gLrwRKb84P5WVwaPR1YlsAYwu2C2Lg4W55sfUJWtpgOUz0pa7YlBK zJbkRc2vZP3QfUnnmtvmA== X-UI-Out-Filterresults: notjunk:1;V01:K0:OY7C0FXLUq0=:R+FOdXGfDGMPpPAnSS8kFe TIpmfu/GuUlefGx5svJkClRrb5+wlebWUpRLqFcpbMV6bFmICVyRVNewLPNjt5Mc0iZA0/aYV gSMrKhL+IDzClwLp3DMurpmkO8tw3+d6Kjp/GhJfYy6urR20o993V75rMq1FWraer67fYL/8C ydcgXw00XXQ6EvxXXRzg1oLpXqjJo5G9vmTtPAQY8kYL8lB+pTMnvwtNbkf84b24ZqcTMCNC/ OjNQgV8g126M915g8qV/Hq/ucArpfFqJgveRQb8ER1bKMTuYNm7s5+C9oaN+hZ8HactzIZ59Y LhTcR2aKQ5fEKDVqIKUvNvW2n0CN7N3B47rMaSHfeiBfE/v6pvRG33XC5SxbVYAZNJ288uHwh ELVAa+fDs5+VfIHx/qLeDOGlZ2gIOnBHSgJDsh4/W1+mbpoKv2f5uq3+LXYfiD+7tKHNnMZxR vqzP9v/ItL7etRaHC8GAUblHHZuPteofgJErxXzzam97eh/F3GH2iBOkwtLJ9pQWvjnzE9TvE L+Bg1KqVq01UP+K84ZMFtNkYLP2FT81pmwR+T7XzzX/OtdluxjsAgYxDNrsJADhzYO1z7i4QW NBmXL45447koWtbfV+6I8Rah+4cMI7OseSMvJLPGo5W3EThoAUGP4u8ek1lN7E8oYPBJH2qGW f+cD7/obHPatiOMDiYCK5UcIaOUgQebD/rGfHGGfV/RXrq1j1rME637xcXQ5N4rOpaPDH+nh9 hrFhDGQi2H2N90K8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When CONFIG_LBDAF is not set, sector_t is only 32-bits wide, which means we cannot have devices with more than 2TB, and the code that is trying to handle compatibility support for large devices in md version 0.90 is meaningless but also causes a compile-time warning: drivers/md/md.c: In function 'super_90_load': drivers/md/md.c:1029:19: warning: large integer implicitly truncated to unsigned type [-Woverflow] drivers/md/md.c: In function 'super_90_rdev_size_change': drivers/md/md.c:1323:17: warning: large integer implicitly truncated to unsigned type [-Woverflow] This adds a check for CONFIG_LBDAF to avoid even getting into this code path, and also adds an explicit cast to let the compiler know it doesn't have to warn about the truncation. Signed-off-by: Arnd Bergmann --- Noticed on ARM randconfig builds with recent gcc versions. diff --git a/drivers/md/md.c b/drivers/md/md.c index 0b48c5d7c489..ee9a7ab44f32 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -1025,8 +1025,9 @@ static int super_90_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor * (not needed for Linear and RAID0 as metadata doesn't * record this size) */ - if (rdev->sectors >= (2ULL << 32) && sb->level >= 1) - rdev->sectors = (2ULL << 32) - 2; + if (IS_ENABLED(CONFIG_LBDAF) && (u64)rdev->sectors >= (2ULL << 32) && + sb->level >= 1) + rdev->sectors = (sector_t)(2ULL << 32) - 2; if (rdev->sectors < ((sector_t)sb->size) * 2 && sb->level >= 1) /* "this cannot possibly happen" ... */ @@ -1319,8 +1320,9 @@ super_90_rdev_size_change(struct md_rdev *rdev, sector_t num_sectors) /* Limit to 4TB as metadata cannot record more than that. * 4TB == 2^32 KB, or 2*2^32 sectors. */ - if (num_sectors >= (2ULL << 32) && rdev->mddev->level >= 1) - num_sectors = (2ULL << 32) - 2; + if (IS_ENABLED(CONFIG_LBDAF) && (u64)num_sectors >= (2ULL << 32) && + rdev->mddev->level >= 1) + num_sectors = (sector_t)(2ULL << 32) - 2; md_super_write(rdev->mddev, rdev, rdev->sb_start, rdev->sb_size, rdev->sb_page); md_super_wait(rdev->mddev);