From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8FFE83EEAE7 for ; Tue, 9 Jun 2026 08:45:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780994740; cv=none; b=rfDTGwNIH3GqGumQBBdyo81e7oVHwwoN9SRRb8pelp+2TMqnGUMo6XySVisXO2YrPeia24lqKK0Nl4Gt8uaAQv5DkfqYidj5vNFdMsFRLc/My43vZ07+x9b3PJCQpj26Ys7jjlJwbxxKMl17TOkhi8kmOH5zG3VxsfyH+rVBvXY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780994740; c=relaxed/simple; bh=wE7DnLEzRiRlSQhW4/mQzqUeJRYrSAJRD/7/5J2veWA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BffrBmUYTJvpR19kNsOnIoDTI7lJxA7oBw6Nz+fDH0EsW9RBhJKnXcyl0VAGjeXbGa6s11MmIlVJssoelI1rhRyChlknVhbNku0Eu2bLRHNpQQq+I+mohK4ZgVLmGIhwyh4wD55yfae1fJ9n3h5ZpdBKLOaKcz7BQ/AikNllyDE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mYtsd8f1; arc=none smtp.client-ip=209.85.215.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mYtsd8f1" Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-c85c9e8b7e4so2160689a12.1 for ; Tue, 09 Jun 2026 01:45:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780994739; x=1781599539; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XMZKKG2BBX9CHEXIGFRRZh0XQLWC1SczIy5eW5H9mYA=; b=mYtsd8f1aoans88RRTjcfU8T1EFXbFs34VlyIJb/KzA7qCOdi7PeMUhj6aiweI1AI3 wBJcNoQShZReVtp7FjGRsSR5/UlMXkbTa946260xB+KDqfJlzh2nHpoIngSgIy/p+F13 mVOOecei/QBNvRjHzU5CaGoyFuzEj9Bd+WE+UW8+UsqcT1VrxvjaOBwIeYnH7259+nj/ 820hykWTymNNX8OPIlOcci3bNUJkBXMGdzNcw0V5XOCc7QFmlXOz/ZC1ybeMpzHaIpK/ wv/MV2lJBlJNnafmbcKaVb+84PsWxPwVU7Ita1PhL/EQP3fL4Pvh71NoFwFDSTSXRuNx UcIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780994739; x=1781599539; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XMZKKG2BBX9CHEXIGFRRZh0XQLWC1SczIy5eW5H9mYA=; b=VdKXu5c0nPpEp5Z+JBjuYwZ2LtrW1dpHiiAecJYizl19sxxD/cWSingSU7JidYgE0s YwwLNIBgXmasaZZObV/xyldlicd+CPcVr6z2SbbnW0Gi4/tIhpCw3METIo2B17HcSuYr dFI4K/p0lMoD3S3fYahsjSGK7HpPKu8RiVqD6qPCEPqkl8VIDInbfKdKFfB0S2Ys+1Ev rzvvR/b/qvuD4wsk9ICYY93iaj3sWGLpFgz703CEJ/+OFiwbpYvWDOVuQ9C8KgDoMcYI D387swwCMpyvG5ZR2JbGhJ/Whhl3ixYaLZsu8A+nZPXJ8KcXJVIEkzMoc1HAy2CxV3yW dceA== X-Forwarded-Encrypted: i=1; AFNElJ8+VPwgtJGqVfefy7LcOWFBacurLl/wDIbyKZi21XLvjtQVQB0Egod/reXI3H2KXCtEL3l+t1aaLSTD/zE=@vger.kernel.org X-Gm-Message-State: AOJu0YxTUl057tCph79UND9yhWhU0NsbzRpwKVdUquv9e2EFV1FNUazl acnnVtTZwxX8+xxPj8QEFPFYpagxqpNT+vMnVm99RT+EebT5tQUEyKj3pqNV9TOR X-Gm-Gg: Acq92OEW8QWMxzEo83kBvWB5NdA+fVqqm8RX8LeZufaM50ts2c06MzGriEtA6PA8jAs zYpQ+yra+LQL9DOFM0VbrJstDLoieYXGyNHuN/ezSRsg1QAcNPKv8FVQdsdIRSB0xLHOw9x/RB8 BKTWE2P/J8USe0nwKp9fs8jVnGMyFFbCUGeLzMOIxCp/j8axirT8roG2/+MxtY7Cpl+DSrxxroW 1oP0b6YvcfXdOYGiJv2hoEMw0JgFx/HDJ16oBfP/SBBylMlUPsVTfU9gErJUn1jEX7HGovzhsjn qbDT/FHpXNH+6FkUkXpTNDIpgNW8h9Dz1oDGhREWY+0guUaA9StFJYAucVoGIlnZfXm4mst7jaH WK2Yvf7Wff96r4/gXY4KPnlXEycg3d03l0XFNy+TOP+C6y5GNJ0gF4hYjmnvdCZ47q4b3Dmr3Hu wmckGectT+OuSQvXM1W/jucCPAdKXmOx1LXOzk1BAwO3+o/z3jhjMB/Q== X-Received: by 2002:a05:6a21:6492:b0:3b4:6dee:a42b with SMTP id adf61e73a8af0-3b4cd003836mr23118277637.34.1780994738981; Tue, 09 Jun 2026 01:45:38 -0700 (PDT) Received: from haichao.tail057a43.ts.net ([2001:da8:e000:1206:37c9:44fa:729b:6aaa]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c85deeb2bdesm17608599a12.0.2026.06.09.01.45.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 01:45:38 -0700 (PDT) From: Ruoyu Wang To: Miquel Raynal , Richard Weinberger , Vignesh Raghavendra Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Ruoyu Wang Subject: [PATCH v2 2/2] mtd: slram: simplify register_device() cleanup Date: Tue, 9 Jun 2026 16:45:28 +0800 Message-ID: <20260609084528.5-3-ruoyuw560@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260609084528.5-1-ruoyuw560@gmail.com> References: <20260609084528.5-1-ruoyuw560@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Use local variables for the list entry, mtd_info, and private data while initializing a new device. This keeps the initialization path easier to read and publishes the new list entry only after mtd_device_register() has succeeded. Signed-off-by: Ruoyu Wang --- drivers/mtd/devices/slram.c | 86 ++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 44 deletions(-) diff --git a/drivers/mtd/devices/slram.c b/drivers/mtd/devices/slram.c index 48c2bc6b65eec..aa38ecdffc975 100644 --- a/drivers/mtd/devices/slram.c +++ b/drivers/mtd/devices/slram.c @@ -129,6 +129,9 @@ static int slram_write(struct mtd_info *mtd, loff_t to, size_t len, static int register_device(char *name, unsigned long start, unsigned long length) { slram_mtd_list_t **curmtd; + slram_mtd_list_t *new_mtd; + struct mtd_info *mtdinfo; + slram_priv_t *priv; int ret = -ENOMEM; curmtd = &slram_mtdlist; @@ -136,73 +139,68 @@ static int register_device(char *name, unsigned long start, unsigned long length curmtd = &(*curmtd)->next; } - *curmtd = kmalloc_obj(slram_mtd_list_t); - if (!(*curmtd)) { + new_mtd = kmalloc_obj(slram_mtd_list_t); + if (!new_mtd) { E("slram: Cannot allocate new MTD device.\n"); return(-ENOMEM); } - (*curmtd)->mtdinfo = kzalloc_obj(struct mtd_info); - (*curmtd)->next = NULL; - - if ((*curmtd)->mtdinfo) { - (*curmtd)->mtdinfo->priv = - kzalloc_obj(slram_priv_t); + new_mtd->next = NULL; - if (!(*curmtd)->mtdinfo->priv) { - kfree((*curmtd)->mtdinfo); - (*curmtd)->mtdinfo = NULL; - } + mtdinfo = kzalloc_obj(struct mtd_info); + if (!mtdinfo) { + E("slram: Cannot allocate new MTD device.\n"); + goto err_free_list; } + new_mtd->mtdinfo = mtdinfo; - if (!(*curmtd)->mtdinfo) { + priv = kzalloc_obj(slram_priv_t); + if (!priv) { E("slram: Cannot allocate new MTD device.\n"); - goto err_free_list; + goto err_free_mtdinfo; } + mtdinfo->priv = priv; - if (!(((slram_priv_t *)(*curmtd)->mtdinfo->priv)->start = - memremap(start, length, - MEMREMAP_WB | MEMREMAP_WT | MEMREMAP_WC))) { + priv->start = memremap(start, length, + MEMREMAP_WB | MEMREMAP_WT | MEMREMAP_WC); + if (!priv->start) { E("slram: memremap failed\n"); ret = -EIO; goto err_free_priv; } - ((slram_priv_t *)(*curmtd)->mtdinfo->priv)->end = - ((slram_priv_t *)(*curmtd)->mtdinfo->priv)->start + length; - - - (*curmtd)->mtdinfo->name = name; - (*curmtd)->mtdinfo->size = length; - (*curmtd)->mtdinfo->flags = MTD_CAP_RAM; - (*curmtd)->mtdinfo->_erase = slram_erase; - (*curmtd)->mtdinfo->_point = slram_point; - (*curmtd)->mtdinfo->_unpoint = slram_unpoint; - (*curmtd)->mtdinfo->_read = slram_read; - (*curmtd)->mtdinfo->_write = slram_write; - (*curmtd)->mtdinfo->owner = THIS_MODULE; - (*curmtd)->mtdinfo->type = MTD_RAM; - (*curmtd)->mtdinfo->erasesize = SLRAM_BLK_SZ; - (*curmtd)->mtdinfo->writesize = 1; - - if (mtd_device_register((*curmtd)->mtdinfo, NULL, 0)) { + priv->end = priv->start + length; + + mtdinfo->name = name; + mtdinfo->size = length; + mtdinfo->flags = MTD_CAP_RAM; + mtdinfo->_erase = slram_erase; + mtdinfo->_point = slram_point; + mtdinfo->_unpoint = slram_unpoint; + mtdinfo->_read = slram_read; + mtdinfo->_write = slram_write; + mtdinfo->owner = THIS_MODULE; + mtdinfo->type = MTD_RAM; + mtdinfo->erasesize = SLRAM_BLK_SZ; + mtdinfo->writesize = 1; + + if (mtd_device_register(mtdinfo, NULL, 0)) { E("slram: Failed to register new device\n"); ret = -EAGAIN; goto err_unmap; } + *curmtd = new_mtd; T("slram: Registered device %s from %luKiB to %luKiB\n", name, (start / 1024), ((start + length) / 1024)); - T("slram: Mapped from 0x%p to 0x%p\n", - ((slram_priv_t *)(*curmtd)->mtdinfo->priv)->start, - ((slram_priv_t *)(*curmtd)->mtdinfo->priv)->end); - return(0); + T("slram: Mapped from 0x%p to 0x%p\n", priv->start, priv->end); + return 0; err_unmap: - memunmap(((slram_priv_t *)(*curmtd)->mtdinfo->priv)->start); + memunmap(priv->start); err_free_priv: - kfree((*curmtd)->mtdinfo->priv); + kfree(priv); +err_free_mtdinfo: + kfree(mtdinfo); err_free_list: - kfree((*curmtd)->mtdinfo); - kfree(*curmtd); - *curmtd = NULL; + kfree(new_mtd); return ret; } -- 2.51.0