From nobody Mon Sep 28 20:05:30 2026 Received: from gw2.atmark-techno.com (gw2.atmark-techno.com [35.74.137.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5486C3AAF5F for ; Tue, 18 Aug 2026 02:10:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=35.74.137.57 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787019017; cv=none; b=HR+JEOu3RaaJ9gME+FXD9jsgAO+4mYE64UUm78eiwzxHlWkMBmiaMj0CbppLvttu7U+gdJgikYxz2TU0Xqg44DjSKfNYCJWKYsSv0hq/FvivrMHBsIcp9xDvLHXncqVTtfzykgIgICiolwzTSBGawIFAoO8SpId3nVWUrgpH4M4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787019017; c=relaxed/simple; bh=R7ClDPED5fZAM18u5fygTm93ZxEhU7uCx11V791hrQ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YBq5TtWNZIXH0E0GMt03COP7ccfqkzKYW480w8/Y8ulyFhGoFEa+mEIWzFJQAoOlmycQtr1EfbiCAAmurVYWN5Uug/0iKlAh4hWAIIROQpKN1dnMaRVl4K1YgcyrL1EttN9vZmu/N4LfK5mgoiGn1rH5qyoQaMX57bA19AlVDNQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=atmark-techno.com; spf=pass smtp.mailfrom=atmark-techno.com; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b=EORos9mr; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b=IQWkXctA; arc=none smtp.client-ip=35.74.137.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=atmark-techno.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atmark-techno.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b="EORos9mr"; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b="IQWkXctA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=atmark-techno.com; s=gw2_bookworm; t=1787019015; bh=R7ClDPED5fZAM18u5fygTm93ZxEhU7uCx11V791hrQ8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EORos9mrakUPaNFszQxJ4bjPi+bBtBukE8p4IwP5/GXIUyuo/H4QAn/9J/j3HMRK8 f+emRH04+5kfsO9HFo52CkqL9Lf7pl2Y1uDiHbYSLP6mGmtsF+OnvS7Ppb+s9kvdVs 1Mjzhtb1ED9Pd+U/2YUoM2sOBOL0/BeZFXr35MNuPbZWRpcV68lIaWAekgPLEenf4G MG+w0caMw2xI3FwmOtpRuXy4k8mPRkn/vh/tTHWDN0pdS7V+kZm0SAY5iBoXXWS4nh beSTTJ6MvbeEtVp//3WVldKn+XamX+TOgi9WDvABiQi5Lw5GpfXmHhnjbc3m5cZC8C TlNcKusDrWjLw== Received: from gw2.atmark-techno.com (localhost [127.0.0.1]) by gw2.atmark-techno.com (Postfix) with ESMTP id 356A98A6 for ; Tue, 18 Aug 2026 11:10:15 +0900 (JST) Authentication-Results: gw2.atmark-techno.com; dkim=pass (2048-bit key; unprotected) header.d=atmark-techno.com header.i=@atmark-techno.com header.a=rsa-sha256 header.s=google header.b=IQWkXctA; dkim-atps=neutral Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by gw2.atmark-techno.com (Postfix) with ESMTPS id 5EA3F921 for ; Tue, 18 Aug 2026 11:10:14 +0900 (JST) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38dc085b0a7so7563296a91.2 for ; Mon, 17 Aug 2026 19:10:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atmark-techno.com; s=google; t=1787019013; x=1787623813; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=blAtEYI9MivA6nQmBBbGkLtbWjRSXRisfP4s1nyOg10=; b=IQWkXctAygICGqI+NwQlnZaBeTnWL+4bY0KfZKvLXPnYG50QISHYP1nWg/+K/tfEvW oXJTdnLzi4+J7Mi4g46PpzTEXXpiYZRTKeU80jSRRbcEVFPDDX8RCG0GwBX8YDB61UkK vGOuFgPigT/sTGlbGwGtjMNco/DDBAXBTmSsZ4/pzG9lePGcx1tfbmweRSY25vOdKWS/ yyGjDsy9edvB/T3ivRBEhIn4lux9ztgEhdQgaO9tajLIINSsmHSDx1ZlFMhAYrQ2CIUz 3pnT8ek8iu0mROD/3h7n56elxMGxgen1ve4Nq3gkVM5LF460k37axz77zgkH6p5g2CKk KvXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787019013; x=1787623813; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=blAtEYI9MivA6nQmBBbGkLtbWjRSXRisfP4s1nyOg10=; b=ck8q5hZJhAcnB5BbGy4c2/eMCdcTrwn3KiTVMo11yfvNR8GBL12vmxnFTvZNVTCkzn jiQe5rDKVgpmY2bPTvtqxCXGbiiVFcll6cwcMzd9Xn8X26Ffw5kxw+TjQIaYFoNwGJ/0 FYHS/aGbP1eIU+Iaq0dTfvirTlCJz4jhfoRwFzh7DdVH67qmk5gyLzuW3VMJMTejlzXg VCtAGZTOOrmQYd88xODVVbOQhsN2ua6QAI/sMTK68tWVMQMwAjic7oV3hb3btC4s1wO1 QDB0+mj6CXAwdh4/0nYVSeDiTLHz/HX0yZ+ZpqOyM/zS4enwwCkG9CErBzNOA4TjHYAB zfnQ== X-Forwarded-Encrypted: i=1; AHgh+RpFqCwcyQCYLzLX5NJklaBhLodj2Ftn5NhqT1lHx0gvqxRndd+6NHzGSoIa6+j9hWum/00RZ10b240hgcA=@vger.kernel.org X-Gm-Message-State: AOJu0YxZ6LaQvmwzt99d72MuXW/PDqfjjUQ9q2sEWU1KFHWpJKKKVU9H Sg75vD74PV9pMQvMECir/LH2wuYKaKecl256IJs3j35vQipiGXQisB7cRiDylB6vzj34uE3gqZH 1yAxCjDXyu0J7gmuKXZ104eaFXxRC6EmnXw57gmLmAHJDYrnhWrcZwBFBurMwvDGqIG4= X-Gm-Gg: AR+sD12OPf6FNHI3G31VH3p1v/WdLBHriR//bBhbTZA3Dkk2qhJ46vgjPfUlvRxCv1e RJW6Vs/IgqFqQILzyZuasb6EP4k/D0lCHtCPFbWfmuwgRnmop0PLzNLvkpMFbAq6/EWXr4I7Dmk VxDG5AeMTap1xDaq466fxuSx8j/tPDK1uBhH9o0UtdeHQKuKfgXxQxPldVLhVlQkGrn9yfEM9X8 Wx+yIOUvPtvu2eKfpz0b5co/vjLN3kui7QkGrY5gYTr4EyqxMfAoDxDEvprhW86YUd4H+gEMGIP q4RbDYpoxfgfhyG56YpIJ8qZwCehMZLcC7cxJewLNm4jwANNi9oz1enuII8ffL9My3zPoG/LMPN 8drjzPrPs1irIEoF926xQNbKgk3ZL5iylZeyuz/2vvKqAsXwU X-Received: by 2002:a17:90b:58e5:b0:381:a766:efc9 with SMTP id 98e67ed59e1d1-3933caf3a05mr31691928a91.7.1787019013223; Mon, 17 Aug 2026 19:10:13 -0700 (PDT) X-Received: by 2002:a17:90b:58e5:b0:381:a766:efc9 with SMTP id 98e67ed59e1d1-3933caf3a05mr31691826a91.7.1787019012676; Mon, 17 Aug 2026 19:10:12 -0700 (PDT) Received: from localhost (sodcd-04p2-40.ppp11.odn.ad.jp. [203.139.65.40]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-3954d3b40basm4255804a91.14.2026.08.17.19.10.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 19:10:12 -0700 (PDT) From: Dominique Martinet Date: Tue, 18 Aug 2026 02:09:34 +0000 Subject: [PATCH v6.12.y 1/2] mtd: ubi: skip programming unused bits in ubi headers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260818-ubi-backports-v1-1-324d6816d2ae@atmark-techno.com> References: <20260818-ubi-backports-v1-0-324d6816d2ae@atmark-techno.com> In-Reply-To: <20260818-ubi-backports-v1-0-324d6816d2ae@atmark-techno.com> To: stable@vger.kernel.org Cc: Richard Weinberger , Zhihao Cheng , Miquel Raynal , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Dominique Martinet , Cheng Ming Lin X-Mailer: b4 0.16-dev-a9e92 X-Developer-Signature: v=1; a=openpgp-sha256; l=2537; i=dominique.martinet@atmark-techno.com; h=from:subject:message-id; bh=HJvhoiOjIe9nNu2RlsGRExOAzZRI5eQ3mmYZZFbmpC8=; b=owEBbQKS/ZANAwAKAfKKYH/WjHEHAcsmYgBqg78Aze2trKQWuMUsy+egLC2N65QMVPDv0JLYk Ku9l/EaYquJAjMEAAEKAB0WIQQoFSiLMD+txr0veJbyimB/1oxxBwUCaoO/AAAKCRDyimB/1oxx B1SBD/4+WmZjfcNBAm4smlV1jtTsrwmhFLvWXUO0TYKQTEwOdlAls43b8TSVhWWqbwsTN27Mwsr 5HTdMQr7k6W/vYMfFiEzFCxszmPK5bRGyn8gEC2VMImlF7d3pjUpzKZLJ/bvN9uAuAz/uynL8z1 VcwpI+KZ2GTzqLy7kjDC3+FtOr78VOoUTYK3yl7yG9Hw+fcFekgkvNLWWVdDnY1rf+21WC1brbB Gg/rqSXUCEHHd7nZDLyjxL+P8Nalm3tPJJ58PzJc8S2CyRa9r1RUV0ZYHxutbgPTW51bQpEmJHl du7ezOT+PY06mqj5x5POXbH7qUNDnm8yAG6Fjw49o+uSU5Hs6x0XeHa+8fgbVz9iuajLRv6A7l9 F3BgnEVx8OQIxQrNASwajS70HbJsMvtQP2WgeZtpH/Zw6ECyDsfUyNG+Z3S8TlJGGI/rzsYFuPa Xb4NFnmptcFRuhDonOJtyT+cDHKO5Dbvu6I7l4i24JWvImNhpf+LSR9fqPAoiZn83Bs9aFT58vl cgiXJg3M7CtdlRKTv4ZpZ/n2FDhCuNuR8JZgcq8NN13MIbxo3kuoFfuNKyuYct7qcASoi5xH/vX EJsU+NXr/a2kF0a0pBhDKi2F9DIerkcM8MH6II3I3esuHLzlqrhWuKNyO2bLaUyb4ZhrIsp4G/y 3aOh2DJqpbhhZXA== X-Developer-Key: i=dominique.martinet@atmark-techno.com; a=openpgp; fpr=2815288B303FADC6BD2F7896F28A607FD68C7107 From: Cheng Ming Lin This patch prevents unnecessary programming of bits in ec_hdr and vid_hdr that are not used or read during normal UBI operation. These unused bits are typcially already set to 1 in erased flash and do not need to be explicitly programmed to 0 if they are not used. Programming such unused areas offers no functional benefit and may result in unnecessary flash wear, reducing the overall lifetime of the device. By skipping these writes, we preserve the flash state as much as possible and minimize wear caused by redundant operations. This change ensures that only necessary fields are written when preparing UBI headers, improving flash efficiency without affecting functionality. Additionally, the Kioxia TC58NVG1S3HTA00 datasheet (page 63) also notes that continuous program/erase cycling with a high percentage of '0' bits in the data pattern can accelerate block endurance degradation. This further supports avoiding large 0x00 patterns. Link: https://europe.kioxia.com/content/dam/kioxia/newidr/productinfo/datas= heet/201910/DST_TC58NVG1S3HTA00-TDE_EN_31442.pdf Signed-off-by: Cheng Ming Lin Reviewed-by: Miquel Raynal Reviewed-by: Zhihao Cheng Signed-off-by: Richard Weinberger (cherry picked from commit 77530d1a78ca5c274e37d6494a965223672630b2) Signed-off-by: Dominique Martinet --- drivers/mtd/ubi/io.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/mtd/ubi/io.c b/drivers/mtd/ubi/io.c index a4999bce435f..915eb64cb001 100644 --- a/drivers/mtd/ubi/io.c +++ b/drivers/mtd/ubi/io.c @@ -868,6 +868,8 @@ int ubi_io_write_ec_hdr(struct ubi_device *ubi, int pnu= m, return -EROFS; } =20 + memset((char *)ec_hdr + UBI_EC_HDR_SIZE, 0xFF, ubi->ec_hdr_alsize - UBI_E= C_HDR_SIZE); + err =3D ubi_io_write(ubi, ec_hdr, pnum, 0, ubi->ec_hdr_alsize); return err; } @@ -1150,6 +1152,14 @@ int ubi_io_write_vid_hdr(struct ubi_device *ubi, int= pnum, return -EROFS; } =20 + if (ubi->vid_hdr_shift) { + memset((char *)p, 0xFF, ubi->vid_hdr_shift); + memset((char *)p + ubi->vid_hdr_shift + UBI_VID_HDR_SIZE, 0xFF, + ubi->vid_hdr_alsize - (ubi->vid_hdr_shift + UBI_VID_HDR_SIZE)); + } else { + memset((char *)p + UBI_VID_HDR_SIZE, 0xFF, ubi->vid_hdr_alsize - UBI_VID= _HDR_SIZE); + } + err =3D ubi_io_write(ubi, p, pnum, ubi->vid_hdr_aloffset, ubi->vid_hdr_alsize); return err; --=20 2.55.0.dirty From nobody Mon Sep 28 20:05:30 2026 Received: from gw2.atmark-techno.com (gw2.atmark-techno.com [35.74.137.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 15CD63A7F58 for ; Tue, 18 Aug 2026 02:10:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=35.74.137.57 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787019029; cv=none; b=Q6I5YnLJDXqQEaaXI9ucOVlD0RGdai5C7305EWvMmfBhW4a1CjLJVMOSYvW3gq6FMU4VEHWVL6ZYIgUwslqPiidLWDx8fiEUuyWQrZXZKcwby9qPEJs2OeOe/cLFHkT/C0nwEKQsjEaRvwmvtIq2Md+u9K0eSuKhQhcILJgJzvY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787019029; c=relaxed/simple; bh=Ix1zjxj4eYL9/VS5Wq53zDMooCyEsxJIqXZutJWL2yA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OMINtUGzTWaO3RNIs+zsFQAbBoPKUlsBxIJQfPKtHLg81tBMd5lBvig7VlD8x3yrIQjfvbnRakci3EY54TVtDu7QXlcWViVr/w8s127JYksocpV6fv43KmMG00hWaDqAzkad3O9STFDMCswm/4gjFXR13Pb41FgCoSmP7xz+SGs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=atmark-techno.com; spf=pass smtp.mailfrom=atmark-techno.com; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b=fOUWnuqn; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b=LKhHjpOZ; arc=none smtp.client-ip=35.74.137.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=atmark-techno.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atmark-techno.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b="fOUWnuqn"; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b="LKhHjpOZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=atmark-techno.com; s=gw2_bookworm; t=1787019017; bh=Ix1zjxj4eYL9/VS5Wq53zDMooCyEsxJIqXZutJWL2yA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fOUWnuqn/vc+FKoqEbrp/1ObhGHqidhMq+YWNv612wY4rMk4iIg7fP/cKtVhBViGq hc436HeT77REQ8tL/LtYhSiu5cXSI7yrvwDU7M9P48+F+A/MjvBKAiXw/clMt9e6oz 9ys8YsZP/yF9jdMOUEAcuvnv9OWg68OwsxlUO8i65uP8L98ZkQW91mUH+YShat/6YA TBUwvR1H1jTTFLqOWomgGQI4j/90xZcfKSe+gJQZnZ+HRL8VwnCv98zEEjOW/oEMVX jGR7loJmwSOTjmSAemFehXA9X/GrhEvVlnCr0DdUmcNPX5aGT8c5AWQ+M3sQJzbieN WdYDEdRbIBzKw== Received: from gw2.atmark-techno.com (localhost [127.0.0.1]) by gw2.atmark-techno.com (Postfix) with ESMTP id 09617936 for ; Tue, 18 Aug 2026 11:10:17 +0900 (JST) Authentication-Results: gw2.atmark-techno.com; dkim=pass (2048-bit key; unprotected) header.d=atmark-techno.com header.i=@atmark-techno.com header.a=rsa-sha256 header.s=google header.b=LKhHjpOZ; dkim-atps=neutral Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by gw2.atmark-techno.com (Postfix) with ESMTPS id 308CC965 for ; Tue, 18 Aug 2026 11:10:16 +0900 (JST) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38e475f83a2so6650432a91.1 for ; Mon, 17 Aug 2026 19:10:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atmark-techno.com; s=google; t=1787019015; x=1787623815; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hi7xHirHoUw4IoNwrufN13NNn3nrIkfX3xAtdGuYP9I=; b=LKhHjpOZNbMsFttQu3DzQGJwrlDuRrRsXzxPeYzBmL5lZ1VNug2s68iF6wgTRYEOZ1 GLqRdlxDU0gU7OS75jDeKGDgEAT/IycTaTfaKUbtVlKk3A5B+ox8p8QVz0kSwuFYncte HXxlPP9inoUkXLI/Kye+vlKzg2W2+aANHTrol79gLjAsZFNomQAWMGKBDp7tMC8EZYdm 2328poiMKaSLElMgcorg0xKGyhl/g7qKEKVsHMdRP/NDhVXgQ89U5gbinSA2olYCSXTb /ao8Sw7QuEjqCdwcMbdLEUIYk3CIVOBvXScI19uw0ZW12AIDkNjih9FdznCimJWyis1o HvCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787019015; x=1787623815; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=hi7xHirHoUw4IoNwrufN13NNn3nrIkfX3xAtdGuYP9I=; b=RAHrWrWW1HnF39JcOboT6BIgnNIJpNYa574f59n8SW33W+AQfwQAI40TFp667+gRlD WrtZZkA56AFRJImuj8CjePCQxyjEDc8TgKl2PdhqKiwBbJzkSqHompTOtyZfNf5SeZJI +CZpNOgA27k3UcKed538QnP1srUrZvjJhqHCI03Cmnzs7EhMRvM77Guxv5u2qCcWOa4J UNRy9InLr1sfTlMED2n+WfFOUm99O/uHswgz81P9+rGH0tO0XwMya2lrWD3okYrG4C7R sl6P4+Wh6o+AcdUx+29rvKRwYggq32y3cbNvGV/04eW5bigHCKoiZBSaSJ+5u+a8T9Pp 2duw== X-Forwarded-Encrypted: i=1; AHgh+RqKM9MvswQrCr9nLFkkU89rfEb4N3PDhjASnVemvOLM3mWlqLHxCfezuiIeKTBqLbQxlo1FncJbYXWPmtM=@vger.kernel.org X-Gm-Message-State: AOJu0YxA7g+szhpDzlt5b0e7/KVGu6HmkDkfD2icQM513VUADw7t+4XB XcvQjucKTYLF3YyLScERY1iD9oJ4n8i9u6f88/BXY+0L/eDyI2ExB36kPSw/32p7oc/H6+EuXs4 xlzecDr+2DqoysDv9IN5Ja02R7ahK/Zz6zdWOzBfrwDzekAvzIC196Fw43URPxnahx70= X-Gm-Gg: AR+sD135VWIpFSofOGspuWKp7fqSuz09IirqRgWDaqf4+jCbyFexBBPtzNau0UhAyg1 mlFMxS7lDOrbF8PIYypGXKbu3ZxKVxzQgjMBsxRhHK9EWvzWnWu/1n6kVRirs8i8/ATUyf6LwQz Z4t2Uxde+h6Dsy3VSqex3cRxqSHhimok2vPCu5Gv79IKW36A0UB2gP8uQSe6s/SeSAdyxAhBPng aHYw7UUclPGBCrM/ouC4wbcYL8g+1XDfkuy4itgAjeJVedcWA9Ww1rPz5deOihg8xz6+gQ+IBBu g5UJLWey/JoRuEjqTuqP0PMj13lSJp6MdbYhXIrdyTDFQlM48eRzP2M/bUnQZd1ogLHWK7lqWoZ P+6tNJkr28+8+B1ItRL8wWnbpDmFd9Fy9bjnH/9Bf3U41Y85u X-Received: by 2002:a17:90b:554d:b0:381:152b:d596 with SMTP id 98e67ed59e1d1-3955a7b15e0mr5097000a91.11.1787019014972; Mon, 17 Aug 2026 19:10:14 -0700 (PDT) X-Received: by 2002:a17:90b:554d:b0:381:152b:d596 with SMTP id 98e67ed59e1d1-3955a7b15e0mr5096927a91.11.1787019014405; Mon, 17 Aug 2026 19:10:14 -0700 (PDT) Received: from localhost (sodcd-04p2-40.ppp11.odn.ad.jp. [203.139.65.40]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-3954d2b8080sm4232945a91.4.2026.08.17.19.10.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 19:10:14 -0700 (PDT) From: Dominique Martinet Date: Tue, 18 Aug 2026 02:09:35 +0000 Subject: [PATCH v6.12.y 2/2] ubi: fastmap: fix ubi->fm memory leak Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260818-ubi-backports-v1-2-324d6816d2ae@atmark-techno.com> References: <20260818-ubi-backports-v1-0-324d6816d2ae@atmark-techno.com> In-Reply-To: <20260818-ubi-backports-v1-0-324d6816d2ae@atmark-techno.com> To: stable@vger.kernel.org Cc: Richard Weinberger , Zhihao Cheng , Miquel Raynal , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Dominique Martinet , Liyuan Pang X-Mailer: b4 0.16-dev-a9e92 X-Developer-Signature: v=1; a=openpgp-sha256; l=5399; i=dominique.martinet@atmark-techno.com; h=from:subject:message-id; bh=Rq6t/hYpg1RyNp9DwzyGXOvBRMwbHlqH4hMASIwQb4A=; b=owEBbQKS/ZANAwAKAfKKYH/WjHEHAcsmYgBqg78BSbSrWtBI8J25bEZy7VSwp01/XxwlIYIU0 +V9J17cSK+JAjMEAAEKAB0WIQQoFSiLMD+txr0veJbyimB/1oxxBwUCaoO/AQAKCRDyimB/1oxx BwzCD/4jLnvNtg6zBHE+Q7dSHaPc0f4p0IQzhtS2u3f0jxRqKaY1IeALuhVhoO6xgEAXwTMQBo/ RTG7MCAMlIFnyasf3aIBv6TOPsqA6EjkqcCcB8faNIdyh4t0KLeP2g9IbpPxTGxrLCd1LdOFB7X G3NLsZvybLqRBKanzigKUc88GdXqOZfQUbRpW7xVgjXkEZRphGpmDxGQxh+NyFk9R4FL812XXGB 32MmZ/Q3uPUhC/jJb0veyiCbQrCRdlZyj/psQXg0fwdD97kMWvst1thPDfXT3/a+aA5c24ESsof TxRyDMXzpLEljGFinXLAmvlipDaPppDpfGi6ZSqPEwXajSGwnxALMkdUaHBWQ/rsR7kxV1BXrNk w5Bw9nUY8HqI38PhwB8Ju+3KZRN8j8wYyrqh6Dg7FpfB/j+0KZiaxNxKQ0NVxUKPLaBcg+5rjTi LEjxcWlQzUhnLYydJoqnmkDKFD+k/T63Gf0s+U86aToGZd9V9MxlqFGja0K7b0uGBqkpjy7eeO7 7RbKUvxBkiCp2V50OG9xmrio+/Y+Q5MbKP2HLB98CE8a4oZbLy38lXXWrXMl8eOHH6b4LVriZ7E 9soJT7dheh7smtbp2K3EngDI2EFAT7Xd/yYlnTfMDL3CokEFikF4q07c2fj5dwnwV3d/1ZruEk5 xhMz/oeTbMiGgpA== X-Developer-Key: i=dominique.martinet@atmark-techno.com; a=openpgp; fpr=2815288B303FADC6BD2F7896F28A607FD68C7107 From: Liyuan Pang The problem is that scan_fast() allocate memory for ubi->fm and ubi->fm->e[x], but if the following attach process fails in ubi_wl_init or ubi_read_volume_table, the whole attach process will fail without executing ubi_wl_close to free the memory under ubi->fm. Fix this by add a new ubi_free_fastmap function in fastmap.c to free the memory allocated for fm. If SLUB_DEBUG and KUNIT are enabled, the following warning messages will show: ubi0: detaching mtd0 ubi0: mtd0 is detached ubi0: default fastmap pool size: 200 ubi0: default fastmap WL pool size: 100 ubi0: attaching mtd0 ubi0: attached by fastmap ubi0: fastmap pool size: 200 ubi0: fastmap WL pool size: 100 ubi0 error: ubi_wl_init [ubi]: no enough physical eraseblocks (4, need 203) ubi0 error: ubi_attach_mtd_dev [ubi]: failed to attach mtd0, error -28 UBI error: cannot attach mtd0 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D BUG ubi_wl_entry_slab (Tainted: G B O L ): Objects remaining in u= bi_wl_entry_slab on __kmem_cache_shutdown() Reviewed-by: Zhihao Cheng ---------------------------------------------------------------------------= -- Slab 0xffff2fd23a40cd00 objects=3D22 used=3D1 fp=3D0xffff2fd1d0334fd8 flags= =3D0x883fffc010200(slab|head|section=3D34|node=3D0|zone=3D1|lastcpupid=3D0x= 7fff) CPU: 0 PID: 5884 Comm: insmod Tainted: G B O L 5.10.0 #1 Hardware name: LS1043A RDB Board (DT) Call trace: dump_backtrace+0x0/0x198 show_stack+0x18/0x28 dump_stack+0xe8/0x15c slab_err+0x94/0xc0 __kmem_cache_shutdown+0x1fc/0x39c kmem_cache_destroy+0x48/0x138 ubi_init+0x1d4/0xf34 [ubi] do_one_initcall+0xb4/0x24c do_init_module+0x4c/0x1dc load_module+0x212c/0x2260 __se_sys_finit_module+0xb4/0xd8 __arm64_sys_finit_module+0x18/0x28 el0_svc_common.constprop.0+0x78/0x1a0 do_el0_svc+0x78/0x90 el0_svc+0x20/0x38 el0_sync_handler+0xf0/0x140 normal+0x3d8/0x400 Object 0xffff2fd1d0334e68 @offset=3D3688 Allocated in ubi_scan_fastmap+0xf04/0xf40 [ubi] age=3D80 cpu=3D0 pid=3D5884 __slab_alloc.isra.21+0x6c/0xb4 kmem_cache_alloc+0x1e4/0x80c ubi_scan_fastmap+0xf04/0xf40 [ubi] ubi_attach+0x1f0/0x3a8 [ubi] ubi_attach_mtd_dev+0x810/0xbc8 [ubi] ubi_init+0x238/0xf34 [ubi] do_one_initcall+0xb4/0x24c do_init_module+0x4c/0x1dc load_module+0x212c/0x2260 __se_sys_finit_module+0xb4/0xd8 __arm64_sys_finit_module+0x18/0x28 el0_svc_common.constprop.0+0x78/0x1a0 do_el0_svc+0x78/0x90 el0_svc+0x20/0x38 el0_sync_handler+0xf0/0x140 normal+0x3d8/0x400 Link: https://bugzilla.kernel.org/show_bug.cgi?id=3D220744 Signed-off-by: Liyuan Pang Reviewed-by: Zhihao Cheng Signed-off-by: Richard Weinberger (cherry picked from commit d133e30aabc7c8eb8206827f8fbe0f3679adb911) Signed-off-by: Dominique Martinet --- drivers/mtd/ubi/attach.c | 4 +++- drivers/mtd/ubi/fastmap-wl.c | 8 +------- drivers/mtd/ubi/ubi.h | 12 ++++++++++++ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/drivers/mtd/ubi/attach.c b/drivers/mtd/ubi/attach.c index adc47b87b38a..884171871d0e 100644 --- a/drivers/mtd/ubi/attach.c +++ b/drivers/mtd/ubi/attach.c @@ -1600,7 +1600,7 @@ int ubi_attach(struct ubi_device *ubi, int force_scan) =20 err =3D ubi_read_volume_table(ubi, ai); if (err) - goto out_ai; + goto out_fm; =20 err =3D ubi_wl_init(ubi, ai); if (err) @@ -1642,6 +1642,8 @@ int ubi_attach(struct ubi_device *ubi, int force_scan) out_vtbl: ubi_free_all_volumes(ubi); vfree(ubi->vtbl); +out_fm: + ubi_free_fastmap(ubi); out_ai: destroy_ai(ai); return err; diff --git a/drivers/mtd/ubi/fastmap-wl.c b/drivers/mtd/ubi/fastmap-wl.c index 9bdb6525f128..e2bc1122bfd3 100644 --- a/drivers/mtd/ubi/fastmap-wl.c +++ b/drivers/mtd/ubi/fastmap-wl.c @@ -530,8 +530,6 @@ int ubi_is_erase_work(struct ubi_work *wrk) =20 static void ubi_fastmap_close(struct ubi_device *ubi) { - int i; - return_unused_pool_pebs(ubi, &ubi->fm_pool); return_unused_pool_pebs(ubi, &ubi->fm_wl_pool); =20 @@ -540,11 +538,7 @@ static void ubi_fastmap_close(struct ubi_device *ubi) ubi->fm_anchor =3D NULL; } =20 - if (ubi->fm) { - for (i =3D 0; i < ubi->fm->used_blocks; i++) - kfree(ubi->fm->e[i]); - } - kfree(ubi->fm); + ubi_free_fastmap(ubi); } =20 /** diff --git a/drivers/mtd/ubi/ubi.h b/drivers/mtd/ubi/ubi.h index 1c9e874e8ede..450a7b9a5bd7 100644 --- a/drivers/mtd/ubi/ubi.h +++ b/drivers/mtd/ubi/ubi.h @@ -970,10 +970,22 @@ int ubi_scan_fastmap(struct ubi_device *ubi, struct u= bi_attach_info *ai, struct ubi_attach_info *scan_ai); int ubi_fastmap_init_checkmap(struct ubi_volume *vol, int leb_count); void ubi_fastmap_destroy_checkmap(struct ubi_volume *vol); +static inline void ubi_free_fastmap(struct ubi_device *ubi) +{ + if (ubi->fm) { + int i; + + for (i =3D 0; i < ubi->fm->used_blocks; i++) + kmem_cache_free(ubi_wl_entry_slab, ubi->fm->e[i]); + kfree(ubi->fm); + ubi->fm =3D NULL; + } +} #else static inline int ubi_update_fastmap(struct ubi_device *ubi) { return 0; } static inline int ubi_fastmap_init_checkmap(struct ubi_volume *vol, int le= b_count) { return 0; } static inline void ubi_fastmap_destroy_checkmap(struct ubi_volume *vol) {} +static inline void ubi_free_fastmap(struct ubi_device *ubi) { } #endif =20 /* block.c */ --=20 2.55.0.dirty