From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D357BC4332F for ; Sat, 11 Nov 2023 17:18:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F08228D0013; Sat, 11 Nov 2023 12:18:57 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id EB7698D0003; Sat, 11 Nov 2023 12:18:57 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D81A78D0013; Sat, 11 Nov 2023 12:18:57 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id C1A698D0003 for ; Sat, 11 Nov 2023 12:18:57 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 8A0C841312 for ; Sat, 11 Nov 2023 17:18:57 +0000 (UTC) X-FDA: 81446333514.04.F207FB8 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by imf21.hostedemail.com (Postfix) with ESMTP id A78FE1C0015 for ; Sat, 11 Nov 2023 17:18:54 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=Les6S1Zx; spf=pass (imf21.hostedemail.com: domain of lkp@intel.com designates 198.175.65.10 as permitted sender) smtp.mailfrom=lkp@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1699723135; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=c9K6Yu11iQIMhF8nLQ3Yd0Lse7n04j0Yp+msxJcvO4o=; b=uWhtEywKTD7uLMVZ7f7EJ0O+SeAVtZ3Ixt8alCW5pRiY4mz/6x9qsqMRD6qK4BHLLtEJqF UcLY4tvuSVHzHUxLJhTCeALLieAkWPOMEBFuD+YczCwb8uS31Rc5edwM9AquyWqsOhDgqx Xrlcr1DcmdDlkQL1pozl9OM3vDcokpQ= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=Les6S1Zx; spf=pass (imf21.hostedemail.com: domain of lkp@intel.com designates 198.175.65.10 as permitted sender) smtp.mailfrom=lkp@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1699723135; a=rsa-sha256; cv=none; b=KU5feZE3/XmeBaZS4/FYp16VSAfJ1PinyM0QnKI/xJNBinvq+MJy3km/gehlMS7B1g8r0p ViD57cbDZayIAEcbwueUtHNtWW52XHpsbXBx366KZU0sPWS9iZs4BxHNY7nmGYs+GJAdk2 vvgoORQ4Y/1zsI9ejvSifDMweXHIumk= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1699723135; x=1731259135; h=date:from:to:cc:subject:message-id:mime-version; bh=Zl5wRSekfT4CTjRhGGwX7nkyFiIAdgWB12bwQ5UL76k=; b=Les6S1ZxWKJC3gsEzum0qdhWXKtA/vBzUJCOeHeYtzIOKbzR7AwJAcnM lezyafyaVw9V6FscT6mn0g2g6m0E4rrIgEcSE8zaUtvuSOZZAcilVlu5h HOxf5vtvs0sVCA68mw7gYghwQBxQubGPKJYqW35ATk/fnfVQJEVN0+UYb 1qnUxX4S/jtxuFzz+XAjhJg6fUeLvaANqo3ZtiygP0Ku87Se1Cug8WoHX wd34U2KH+tcgYBU1lSRNnfJHCMaKEosi341LDyKavrdrmEolTDf9uRqB1 xbVj5nirxq+JLIPWBYRA6rC8w9hh3xh0E9w58XYlhw3ZHaz0ta2ckkxaU g==; X-IronPort-AV: E=McAfee;i="6600,9927,10891"; a="3345731" X-IronPort-AV: E=Sophos;i="6.03,295,1694761200"; d="scan'208";a="3345731" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Nov 2023 09:18:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.03,295,1694761200"; d="scan'208";a="11701484" Received: from lkp-server01.sh.intel.com (HELO 17d9e85e5079) ([10.239.97.150]) by orviesa001.jf.intel.com with ESMTP; 11 Nov 2023 09:18:51 -0800 Received: from kbuild by 17d9e85e5079 with local (Exim 4.96) (envelope-from ) id 1r1rdB-000Adu-06; Sat, 11 Nov 2023 17:18:49 +0000 Date: Sun, 12 Nov 2023 01:17:53 +0800 From: kernel test robot To: Luc Van Oostenryck Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org, Andrew Morton , Linux Memory Management List Subject: drivers/mtd/ubi/fastmap.c:1028:17: sparse: sparse: incorrect type in assignment (different base types) Message-ID: <202311120122.miUV2XBw-lkp@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Rspamd-Queue-Id: A78FE1C0015 X-Rspam-User: X-Stat-Signature: bot89mwixitoh3961mrarwdh89bwqw55 X-Rspamd-Server: rspam01 X-HE-Tag: 1699723134-193694 X-HE-Meta: U2FsdGVkX19fZfhw0+iXiWiap46jZR7JM2x5O880szILkCg9syxhe0p9F/745/uh4CDM0BDfG9lxTtPVzvNYhjqmiJ6V5WCgpS6RMNmw9/yZeZLZQr2gCtS3WNeNLTvhfSwyjk7XPilTmkmoDISxpCzgkBqrkbfzVxpqi2SAp8ckRvXWZC4GK8SBpB7SxFQZu//PGBsYJ/DTp1TuzWZkpe+IIulFVJWZGLfaw4/NEI4oi7UqR4GCJUEWTyWN/0xx4d3G1hhPqZZTKNOjEXKq6XHegkVQFIuw02Ep/d4obIR8/j2S0jXukeqWAd5i08JKYYDgMz9+b15cv5049r2aU6yBMzgzOVvPLnMtAwg+NKRcTS5Q9VtapqL5H03+fgv/iZ2+vgHr+dLc0V20/dnvUAkKR3HdxGA4YIoXwLt/hP4uSCBlwxAN+HW+HbEiugh2KL29ju0znkHOS6QLpTPjIddwlTNjnF3soqzmx/nX8AwPmhosv4uth+/KDEQQ+HW+kMNgywDaoKctvlX32EFkWq+uKVmpGr/ZT0iG7YNncFxwSItVS+WNMYdRXtbfLP6lKOSCpI0IM7IlpXxAhv7gRS2rsm3oz5o8vKd0QPxsHRH/sIEW7z5nszB167FvRooZf1qcMyzDe2Ec+w3DGRzlImXliTfcmImcQFOu8UPFOxhv2RFG2HeNehQQEu8BeyM6a1hHbhWuQGaPJZFB6RTGUlsrY0zdhoWN/FhgcfTJaA0o5yf1r/SdTHpCYSKA08TZ7S1/oshbyuEPW//5mK5vBkFpBotQ7Ucz3xrYfX/Apk45XcMeVT3ReOfHLdsz+ERPsWuZDyGsqPaf7EpEaiIYNF+7YcvBlFHfvlcpxgGD0XZ9CuJLV6FsP5d61Ha6j3ohtWbPMEsOcVV5DyRpbAIes4FUMDxnrCdCkv3C0zITTad3N3bXaQBZv612SdbPFRrW8quqYJk9cykkhL2+0Ez NCL6FwRZ yqe7KX1K/n3DZ/Fo82mpyJ9fyowz3715WFqPpFWY0zNdk0T9W9q/j3+h0y9HtHjwpZI/9UAFGSfLsgNkVtTLNQQLYtA1j3mZZG+tOO6mdHcMZMnjtqpy0BbZl8GhUCVYg80G8UP/lXcpUeWOLhTRWf5xNWdHbFh4J2kOuR4+kZ2YbUSrR88L3DEhfqL4jNtXGZZWeRMfE8kXdXwalOAoeF1RdQwG60ANucns8y5RcYuDBMQDAFy9n6MqR/u1UDQjDLf/Vx/GQreNTdbETEKeUHbUtWp3D6TXgKAfDSCUsqEK6UdtDs+ENY0sg5xNVcCC17dJ/Tcv1CVmvG/jyNPaz3rgQdIyx2k96rDsfu0u9pKis7hvyW8jdUuTJXw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 3ca112b71f35dd5d99fc4571a56b5fc6f0c15814 commit: d991bb1c8da842a2a0b9dc83b1005e655783f861 include/linux/compiler-gcc.h: sparse can do constant folding of __builtin_bswap*() date: 2 years, 6 months ago config: i386-randconfig-062-20230912 (https://download.01.org/0day-ci/archive/20231112/202311120122.miUV2XBw-lkp@intel.com/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231112/202311120122.miUV2XBw-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot | Closes: https://lore.kernel.org/oe-kbuild-all/202311120122.miUV2XBw-lkp@intel.com/ sparse warnings: (new ones prefixed by >>) drivers/mtd/ubi/fastmap.c:569:23: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long max_sqnum @@ got restricted __be64 [usertype] sqnum @@ drivers/mtd/ubi/fastmap.c:569:23: sparse: expected unsigned long long max_sqnum drivers/mtd/ubi/fastmap.c:569:23: sparse: got restricted __be64 [usertype] sqnum >> drivers/mtd/ubi/fastmap.c:1028:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be32 [usertype] tmp_crc @@ got unsigned int [usertype] @@ drivers/mtd/ubi/fastmap.c:1028:17: sparse: expected restricted __be32 [usertype] tmp_crc drivers/mtd/ubi/fastmap.c:1028:17: sparse: got unsigned int [usertype] drivers/mtd/ubi/fastmap.c:1030:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be32 [usertype] crc @@ got unsigned int @@ drivers/mtd/ubi/fastmap.c:1030:13: sparse: expected restricted __be32 [usertype] crc drivers/mtd/ubi/fastmap.c:1030:13: sparse: got unsigned int drivers/mtd/ubi/fastmap.c:1039:22: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be64 [usertype] sqnum @@ got unsigned long long [assigned] sqnum @@ drivers/mtd/ubi/fastmap.c:1039:22: sparse: expected restricted __be64 [usertype] sqnum drivers/mtd/ubi/fastmap.c:1039:22: sparse: got unsigned long long [assigned] sqnum vim +1028 drivers/mtd/ubi/fastmap.c 8a1435880f4524 Rabin Vincent 2017-04-03 838 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 839 /** dbb7d2a88d2a7b Richard Weinberger 2012-09-26 840 * ubi_scan_fastmap - scan the fastmap. dbb7d2a88d2a7b Richard Weinberger 2012-09-26 841 * @ubi: UBI device object dbb7d2a88d2a7b Richard Weinberger 2012-09-26 842 * @ai: UBI attach info to be filled fdf10ed710c0aa Richard Weinberger 2016-06-14 843 * @scan_ai: UBI attach info from the first 64 PEBs, fdf10ed710c0aa Richard Weinberger 2016-06-14 844 * used to find the most recent Fastmap data structure dbb7d2a88d2a7b Richard Weinberger 2012-09-26 845 * dbb7d2a88d2a7b Richard Weinberger 2012-09-26 846 * Returns 0 on success, UBI_NO_FASTMAP if no fastmap was found, dbb7d2a88d2a7b Richard Weinberger 2012-09-26 847 * UBI_BAD_FASTMAP if one was found but is not usable. dbb7d2a88d2a7b Richard Weinberger 2012-09-26 848 * < 0 indicates an internal error. dbb7d2a88d2a7b Richard Weinberger 2012-09-26 849 */ dbb7d2a88d2a7b Richard Weinberger 2012-09-26 850 int ubi_scan_fastmap(struct ubi_device *ubi, struct ubi_attach_info *ai, fdf10ed710c0aa Richard Weinberger 2016-06-14 851 struct ubi_attach_info *scan_ai) dbb7d2a88d2a7b Richard Weinberger 2012-09-26 852 { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 853 struct ubi_fm_sb *fmsb, *fmsb2; 3291b52f9ff0ac Boris Brezillon 2016-09-16 854 struct ubi_vid_io_buf *vb; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 855 struct ubi_vid_hdr *vh; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 856 struct ubi_ec_hdr *ech; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 857 struct ubi_fastmap_layout *fm; 8a1435880f4524 Rabin Vincent 2017-04-03 858 struct ubi_ainf_peb *aeb; fdf10ed710c0aa Richard Weinberger 2016-06-14 859 int i, used_blocks, pnum, fm_anchor, ret = 0; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 860 size_t fm_size; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 861 __be32 crc, tmp_crc; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 862 unsigned long long sqnum = 0; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 863 fdf10ed710c0aa Richard Weinberger 2016-06-14 864 fm_anchor = find_fm_anchor(scan_ai); fdf10ed710c0aa Richard Weinberger 2016-06-14 865 if (fm_anchor < 0) fdf10ed710c0aa Richard Weinberger 2016-06-14 866 return UBI_NO_FASTMAP; fdf10ed710c0aa Richard Weinberger 2016-06-14 867 8a1435880f4524 Rabin Vincent 2017-04-03 868 /* Copy all (possible) fastmap blocks into our new attach structure. */ 8a1435880f4524 Rabin Vincent 2017-04-03 869 list_for_each_entry(aeb, &scan_ai->fastmap, u.list) { 8a1435880f4524 Rabin Vincent 2017-04-03 870 struct ubi_ainf_peb *new; 8a1435880f4524 Rabin Vincent 2017-04-03 871 8a1435880f4524 Rabin Vincent 2017-04-03 872 new = clone_aeb(ai, aeb); 8a1435880f4524 Rabin Vincent 2017-04-03 873 if (!new) 8a1435880f4524 Rabin Vincent 2017-04-03 874 return -ENOMEM; 8a1435880f4524 Rabin Vincent 2017-04-03 875 8a1435880f4524 Rabin Vincent 2017-04-03 876 list_add(&new->u.list, &ai->fastmap); 8a1435880f4524 Rabin Vincent 2017-04-03 877 } fdf10ed710c0aa Richard Weinberger 2016-06-14 878 111ab0b26fc1bf Richard Weinberger 2014-11-10 879 down_write(&ubi->fm_protect); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 880 memset(ubi->fm_buf, 0, ubi->fm_size); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 881 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 882 fmsb = kmalloc(sizeof(*fmsb), GFP_KERNEL); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 883 if (!fmsb) { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 884 ret = -ENOMEM; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 885 goto out; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 886 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 887 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 888 fm = kzalloc(sizeof(*fm), GFP_KERNEL); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 889 if (!fm) { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 890 ret = -ENOMEM; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 891 kfree(fmsb); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 892 goto out; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 893 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 894 fcbb6af17bda4b Boris Brezillon 2016-09-16 895 ret = ubi_io_read_data(ubi, fmsb, fm_anchor, 0, sizeof(*fmsb)); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 896 if (ret && ret != UBI_IO_BITFLIPS) dbb7d2a88d2a7b Richard Weinberger 2012-09-26 897 goto free_fm_sb; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 898 else if (ret == UBI_IO_BITFLIPS) dbb7d2a88d2a7b Richard Weinberger 2012-09-26 899 fm->to_be_tortured[0] = 1; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 900 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 901 if (be32_to_cpu(fmsb->magic) != UBI_FM_SB_MAGIC) { 326087033108e7 Tanya Brokhman 2014-10-20 902 ubi_err(ubi, "bad super block magic: 0x%x, expected: 0x%x", dbb7d2a88d2a7b Richard Weinberger 2012-09-26 903 be32_to_cpu(fmsb->magic), UBI_FM_SB_MAGIC); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 904 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 905 goto free_fm_sb; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 906 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 907 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 908 if (fmsb->version != UBI_FM_FMT_VERSION) { 326087033108e7 Tanya Brokhman 2014-10-20 909 ubi_err(ubi, "bad fastmap version: %i, expected: %i", dbb7d2a88d2a7b Richard Weinberger 2012-09-26 910 fmsb->version, UBI_FM_FMT_VERSION); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 911 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 912 goto free_fm_sb; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 913 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 914 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 915 used_blocks = be32_to_cpu(fmsb->used_blocks); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 916 if (used_blocks > UBI_FM_MAX_BLOCKS || used_blocks < 1) { 326087033108e7 Tanya Brokhman 2014-10-20 917 ubi_err(ubi, "number of fastmap blocks is invalid: %i", 326087033108e7 Tanya Brokhman 2014-10-20 918 used_blocks); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 919 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 920 goto free_fm_sb; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 921 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 922 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 923 fm_size = ubi->leb_size * used_blocks; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 924 if (fm_size != ubi->fm_size) { 326087033108e7 Tanya Brokhman 2014-10-20 925 ubi_err(ubi, "bad fastmap size: %zi, expected: %zi", 326087033108e7 Tanya Brokhman 2014-10-20 926 fm_size, ubi->fm_size); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 927 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 928 goto free_fm_sb; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 929 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 930 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 931 ech = kzalloc(ubi->ec_hdr_alsize, GFP_KERNEL); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 932 if (!ech) { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 933 ret = -ENOMEM; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 934 goto free_fm_sb; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 935 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 936 3291b52f9ff0ac Boris Brezillon 2016-09-16 937 vb = ubi_alloc_vid_buf(ubi, GFP_KERNEL); 3291b52f9ff0ac Boris Brezillon 2016-09-16 938 if (!vb) { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 939 ret = -ENOMEM; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 940 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 941 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 942 3291b52f9ff0ac Boris Brezillon 2016-09-16 943 vh = ubi_get_vid_hdr(vb); 3291b52f9ff0ac Boris Brezillon 2016-09-16 944 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 945 for (i = 0; i < used_blocks; i++) { c22301ad4fa0f4 Richard Genoud 2013-09-28 946 int image_seq; c22301ad4fa0f4 Richard Genoud 2013-09-28 947 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 948 pnum = be32_to_cpu(fmsb->block_loc[i]); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 949 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 950 if (ubi_io_is_bad(ubi, pnum)) { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 951 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 952 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 953 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 954 5283ec72b0cca4 Richard Weinberger 2016-06-14 955 if (i == 0 && pnum != fm_anchor) { 5283ec72b0cca4 Richard Weinberger 2016-06-14 956 ubi_err(ubi, "Fastmap anchor PEB mismatch: PEB: %i vs. %i", 5283ec72b0cca4 Richard Weinberger 2016-06-14 957 pnum, fm_anchor); 5283ec72b0cca4 Richard Weinberger 2016-06-14 958 ret = UBI_BAD_FASTMAP; 5283ec72b0cca4 Richard Weinberger 2016-06-14 959 goto free_hdr; 5283ec72b0cca4 Richard Weinberger 2016-06-14 960 } 5283ec72b0cca4 Richard Weinberger 2016-06-14 961 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 962 ret = ubi_io_read_ec_hdr(ubi, pnum, ech, 0); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 963 if (ret && ret != UBI_IO_BITFLIPS) { 326087033108e7 Tanya Brokhman 2014-10-20 964 ubi_err(ubi, "unable to read fastmap block# %i EC (PEB: %i)", dbb7d2a88d2a7b Richard Weinberger 2012-09-26 965 i, pnum); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 966 if (ret > 0) dbb7d2a88d2a7b Richard Weinberger 2012-09-26 967 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 968 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 969 } else if (ret == UBI_IO_BITFLIPS) dbb7d2a88d2a7b Richard Weinberger 2012-09-26 970 fm->to_be_tortured[i] = 1; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 971 c22301ad4fa0f4 Richard Genoud 2013-09-28 972 image_seq = be32_to_cpu(ech->image_seq); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 973 if (!ubi->image_seq) c22301ad4fa0f4 Richard Genoud 2013-09-28 974 ubi->image_seq = image_seq; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 975 c22301ad4fa0f4 Richard Genoud 2013-09-28 976 /* c22301ad4fa0f4 Richard Genoud 2013-09-28 977 * Older UBI implementations have image_seq set to zero, so c22301ad4fa0f4 Richard Genoud 2013-09-28 978 * we shouldn't fail if image_seq == 0. c22301ad4fa0f4 Richard Genoud 2013-09-28 979 */ c22301ad4fa0f4 Richard Genoud 2013-09-28 980 if (image_seq && (image_seq != ubi->image_seq)) { 326087033108e7 Tanya Brokhman 2014-10-20 981 ubi_err(ubi, "wrong image seq:%d instead of %d", c22301ad4fa0f4 Richard Genoud 2013-09-28 982 be32_to_cpu(ech->image_seq), ubi->image_seq); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 983 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 984 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 985 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 986 3291b52f9ff0ac Boris Brezillon 2016-09-16 987 ret = ubi_io_read_vid_hdr(ubi, pnum, vb, 0); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 988 if (ret && ret != UBI_IO_BITFLIPS) { 326087033108e7 Tanya Brokhman 2014-10-20 989 ubi_err(ubi, "unable to read fastmap block# %i (PEB: %i)", dbb7d2a88d2a7b Richard Weinberger 2012-09-26 990 i, pnum); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 991 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 992 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 993 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 994 if (i == 0) { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 995 if (be32_to_cpu(vh->vol_id) != UBI_FM_SB_VOLUME_ID) { 326087033108e7 Tanya Brokhman 2014-10-20 996 ubi_err(ubi, "bad fastmap anchor vol_id: 0x%x, expected: 0x%x", dbb7d2a88d2a7b Richard Weinberger 2012-09-26 997 be32_to_cpu(vh->vol_id), dbb7d2a88d2a7b Richard Weinberger 2012-09-26 998 UBI_FM_SB_VOLUME_ID); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 999 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1000 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1001 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1002 } else { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1003 if (be32_to_cpu(vh->vol_id) != UBI_FM_DATA_VOLUME_ID) { 326087033108e7 Tanya Brokhman 2014-10-20 1004 ubi_err(ubi, "bad fastmap data vol_id: 0x%x, expected: 0x%x", dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1005 be32_to_cpu(vh->vol_id), dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1006 UBI_FM_DATA_VOLUME_ID); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1007 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1008 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1009 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1010 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1011 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1012 if (sqnum < be64_to_cpu(vh->sqnum)) dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1013 sqnum = be64_to_cpu(vh->sqnum); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1014 fcbb6af17bda4b Boris Brezillon 2016-09-16 1015 ret = ubi_io_read_data(ubi, ubi->fm_buf + (ubi->leb_size * i), fcbb6af17bda4b Boris Brezillon 2016-09-16 1016 pnum, 0, ubi->leb_size); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1017 if (ret && ret != UBI_IO_BITFLIPS) { 326087033108e7 Tanya Brokhman 2014-10-20 1018 ubi_err(ubi, "unable to read fastmap block# %i (PEB: %i, " dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1019 "err: %i)", i, pnum, ret); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1020 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1021 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1022 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1023 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1024 kfree(fmsb); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1025 fmsb = NULL; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1026 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1027 fmsb2 = (struct ubi_fm_sb *)(ubi->fm_buf); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 @1028 tmp_crc = be32_to_cpu(fmsb2->data_crc); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1029 fmsb2->data_crc = 0; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1030 crc = crc32(UBI_CRC32_INIT, ubi->fm_buf, fm_size); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1031 if (crc != tmp_crc) { 326087033108e7 Tanya Brokhman 2014-10-20 1032 ubi_err(ubi, "fastmap data CRC is invalid"); 326087033108e7 Tanya Brokhman 2014-10-20 1033 ubi_err(ubi, "CRC should be: 0x%x, calc: 0x%x", 326087033108e7 Tanya Brokhman 2014-10-20 1034 tmp_crc, crc); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1035 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1036 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1037 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1038 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1039 fmsb2->sqnum = sqnum; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1040 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1041 fm->used_blocks = used_blocks; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1042 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1043 ret = ubi_attach_fastmap(ubi, ai, fm); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1044 if (ret) { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1045 if (ret > 0) dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1046 ret = UBI_BAD_FASTMAP; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1047 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1048 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1049 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1050 for (i = 0; i < used_blocks; i++) { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1051 struct ubi_wl_entry *e; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1052 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1053 e = kmem_cache_alloc(ubi_wl_entry_slab, GFP_KERNEL); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1054 if (!e) { dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1055 while (i--) af7bcee27652bb Pan Bian 2017-10-29 1056 kmem_cache_free(ubi_wl_entry_slab, fm->e[i]); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1057 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1058 ret = -ENOMEM; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1059 goto free_hdr; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1060 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1061 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1062 e->pnum = be32_to_cpu(fmsb2->block_loc[i]); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1063 e->ec = be32_to_cpu(fmsb2->block_ec[i]); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1064 fm->e[i] = e; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1065 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1066 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1067 ubi->fm = fm; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1068 ubi->fm_pool.max_size = ubi->fm->max_pool_size; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1069 ubi->fm_wl_pool.max_size = ubi->fm->max_wl_pool_size; 326087033108e7 Tanya Brokhman 2014-10-20 1070 ubi_msg(ubi, "attached by fastmap"); 326087033108e7 Tanya Brokhman 2014-10-20 1071 ubi_msg(ubi, "fastmap pool size: %d", ubi->fm_pool.max_size); 326087033108e7 Tanya Brokhman 2014-10-20 1072 ubi_msg(ubi, "fastmap WL pool size: %d", 326087033108e7 Tanya Brokhman 2014-10-20 1073 ubi->fm_wl_pool.max_size); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1074 ubi->fm_disabled = 0; 1900149c835ab5 Richard Weinberger 2016-04-26 1075 ubi->fast_attach = 1; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1076 3291b52f9ff0ac Boris Brezillon 2016-09-16 1077 ubi_free_vid_buf(vb); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1078 kfree(ech); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1079 out: 111ab0b26fc1bf Richard Weinberger 2014-11-10 1080 up_write(&ubi->fm_protect); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1081 if (ret == UBI_BAD_FASTMAP) 326087033108e7 Tanya Brokhman 2014-10-20 1082 ubi_err(ubi, "Attach by fastmap failed, doing a full scan!"); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1083 return ret; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1084 dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1085 free_hdr: 3291b52f9ff0ac Boris Brezillon 2016-09-16 1086 ubi_free_vid_buf(vb); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1087 kfree(ech); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1088 free_fm_sb: dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1089 kfree(fmsb); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1090 kfree(fm); dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1091 goto out; dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1092 } dbb7d2a88d2a7b Richard Weinberger 2012-09-26 1093 :::::: The code at line 1028 was first introduced by commit :::::: dbb7d2a88d2a7bd3624e090bee42cdee048d9290 UBI: Add fastmap core :::::: TO: Richard Weinberger :::::: CC: Artem Bityutskiy -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki