From patchwork Tue Jan 16 15:45:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 861720 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=65.50.211.133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="bQ2W61aJ"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="jzgBMnZm"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLZMK6c0Yz9s83 for ; Wed, 17 Jan 2018 02:46:21 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mRxwJrPZGa7DUhvJwuAS1LJ6Hhh+++DRTVVVYhxt5uk=; b=bQ2W61aJEOR8SS PxU8dT2dzXkxTOD0KFKu6YEuBj0t03uDtYgWzn1OHN4YfbgOgXHKiOiOuUWJ9mZyWImutQS9cHqiE dZDZsarJX8yoBF+Ka5KO54AI3at3qtLdcy/vYkG6qafCyQfNWFtIreTa3cAgcPurAXQKXltXfXvCV /Z5WFw4BkYp1WWS03wXm8p8Qn8kFQXM1nmITODjMpnUu+GIj4L48E8tseJQMXzvu19Yh+7utNnOz8 K63cNa8OOwBbACE0dSSBa33mYBLyGa2/9rpcvCzoi3OOAWtVroWRn3v1322voOYRffGDGbO0aako/ JIxyqgE6jlDafMDPfOWA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.89 #1 (Red Hat Linux)) id 1ebTRI-0006Uh-Nd; Tue, 16 Jan 2018 15:46:16 +0000 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1ebTR4-00068y-2J for linux-mtd@lists.infradead.org; Tue, 16 Jan 2018 15:46:06 +0000 Received: by mail-lf0-x242.google.com with SMTP id t79so2608684lfe.3 for ; Tue, 16 Jan 2018 07:45:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qrKg3grLIzSbD9kSq5QSnFAL2Bzi7HUmJyQ8aLlJ3rs=; b=jzgBMnZmh/NscIc24oVdDM5K+W2oxMEI+6k29qCTrueL2LALS37FHlYJmBQv+inxpV zYkDuOD/oOS+uU9FJM8Cm9tgs9c0p8R2iVuNyK9ClhHZ9UT1CoY5UDFHaXVjY9/TpJMT PYIBrGKXEEucfoKJMqzXV4eD5nW0HzlNZVjExBwuTSyZDb8sciwv+bkpf8vXlrMTG1sz gjNmFD0NWlrVe5Gvbdc5wNrAUSKue9rL3aQHCuhxT/Oep8/xdqW8JLRg5QmdYBzkzBSs DxUPOfDXSouycdO3n2SMOP95RE2+Pm42Za0pZaP6HbuQ62H16x8MBdSJxZyWPlTrTeZa etPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qrKg3grLIzSbD9kSq5QSnFAL2Bzi7HUmJyQ8aLlJ3rs=; b=B4cxWwB730ZadzUYCL0WlYQQyZBjLh0zZ3GYjrxy810lP62oXXbcs//KK+9SinemJH SkvBpFzn/6k9WzHAInHSiUUaU6+EoQNGH1XabpXE6r/viaNssHat5ip8tK8TqJ35+skp V13VtIubDCM/PnJck48/xOVM6WQJSENdEv/3IIEHGP7+ASI5fBIY1OmwPeclKxNqCgW9 vfWcy3HsFxuUQMDouWs7QAVXvaNseJ3zfyBFqIUd0Yyu447ko0HZw58uUtSppSdxwGR/ XHimwPGIws2G0qkYhW8iPh075rwIpnOe3cpsRVMHlM5dpZd0TAHwvlA0JOY+GMDId1YN U7uw== X-Gm-Message-State: AKwxytcJs/nbOofC6RiDcP7nN4X8SKpnGKdQSv0633VSsmMeL17plH8p vN1o8ENq0ys4pAL6LFtjE+I= X-Google-Smtp-Source: ACJfBosfkf49pyKTPXcNBIr2HjACwzg3vzG0nBrd+yjbh3xkqEVdPS4EBXQPbLty2uq8IS+d5ysoLw== X-Received: by 10.46.64.134 with SMTP id r6mr9311423lje.85.1516117551386; Tue, 16 Jan 2018 07:45:51 -0800 (PST) Received: from linux-samsung.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id m89sm181708lje.66.2018.01.16.07.45.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 07:45:50 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: Brian Norris , David Woodhouse , Boris Brezillon , Marek Vasut , Richard Weinberger , Cyrille Pitchen Subject: [PATCH V5 1/2] mtd: move code adding master MTD out of mtd_add_device_partitions() Date: Tue, 16 Jan 2018 16:45:41 +0100 Message-Id: <20180116154542.9767-2-zajec5@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180116154542.9767-1-zajec5@gmail.com> References: <20180115224547.9265-1-zajec5@gmail.com> <20180116154542.9767-1-zajec5@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180116_074602_176380_F0AA71AF X-CRM114-Status: GOOD ( 15.17 ) X-Spam-Score: -2.5 (--) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-2.5 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [2a00:1450:4010:c07:0:0:0:242 listed in] [list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (zajec5[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (zajec5[at]gmail.com) -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= , linux-mtd@lists.infradead.org, Jonas Gorski Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Rafał Miłecki This change is a small cleanup of mtd_device_parse_register(). When using MTD_PARTITIONED_MASTER it makes sure a master MTD is registered before dealing with partitions. The advantage of this is not mixing code handling master MTD with code handling partitions. This commit doesn't change any behavior except from a slightly different failure code path. The new code may need to call del_mtd_device when something goes wrong. Signed-off-by: Rafał Miłecki --- V2: Use device_is_registered (thanks Boris) Add an empty line before "return ret;" V3: Use device_is_registered also in a out code path V5: Use function() notation (note the braces) Don't mention reusing mtd_parse_part which isn't done yet --- drivers/mtd/mtdcore.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c index d7ab091b36b2..20cd0cb15c33 100644 --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c @@ -646,20 +646,12 @@ static int mtd_add_device_partitions(struct mtd_info *mtd, { const struct mtd_partition *real_parts = parts->parts; int nbparts = parts->nr_parts; - int ret; - if (nbparts == 0 || IS_ENABLED(CONFIG_MTD_PARTITIONED_MASTER)) { - ret = add_mtd_device(mtd); - if (ret) - return ret; - } + if (!nbparts && !device_is_registered(&mtd->dev)) + return add_mtd_device(mtd); - if (nbparts > 0) { - ret = add_mtd_partitions(mtd, real_parts, nbparts); - if (ret && IS_ENABLED(CONFIG_MTD_PARTITIONED_MASTER)) - del_mtd_device(mtd); - return ret; - } + if (nbparts > 0) + return add_mtd_partitions(mtd, real_parts, nbparts); return 0; } @@ -719,6 +711,12 @@ int mtd_device_parse_register(struct mtd_info *mtd, const char * const *types, mtd_set_dev_defaults(mtd); + if (IS_ENABLED(CONFIG_MTD_PARTITIONED_MASTER)) { + ret = add_mtd_device(mtd); + if (ret) + return ret; + } + memset(&parsed, 0, sizeof(parsed)); ret = parse_mtd_partitions(mtd, types, &parsed, parser_data); @@ -758,6 +756,9 @@ int mtd_device_parse_register(struct mtd_info *mtd, const char * const *types, out: /* Cleanup any parsed partitions */ mtd_part_parser_cleanup(&parsed); + if (ret && device_is_registered(&mtd->dev)) + del_mtd_device(mtd); + return ret; } EXPORT_SYMBOL_GPL(mtd_device_parse_register); From patchwork Tue Jan 16 15:45:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 861721 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=65.50.211.133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="utnGUA6F"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="KhxpNBGK"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLZMs1SCKz9s7G for ; Wed, 17 Jan 2018 02:46:49 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=VsWI8FVvYZC0jDrvLeHNzvu+dbx1M9iJZTrYRM4JxUk=; b=utnGUA6FCaMkwn BFIYTmuM4oja3I6SJti6gYNUUXyufB7AYLi1l0rwfzjcv2DRNnp1Pz+P8J30abOeNpsTjZn+Koonq 2MYhsz7hr3IF6YOlOUfWB8l+N/dOgO2ooAmOeokrbKSGtMnDyPXEu2qyBUINRM7ECNF7ywmZgHgFc 9dvePlCP87puv/zDObv2IoH9YYmnwAVKGQq4BdGcf/KyQwzVGZ/f98+Ay9EeJQ/YCMwefIY5MRtKi jGe6RHnCOiX9L8TEUOPXog500QHhz2jNQ+Ko0qFYKINNOW9oXEodHywBrW4M8bi7m+tMHkzKfU1s3 z9YEspVLzZ6T6drAHeVw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.89 #1 (Red Hat Linux)) id 1ebTRj-0007CJ-Pg; Tue, 16 Jan 2018 15:46:44 +0000 Received: from mail-lf0-x244.google.com ([2a00:1450:4010:c07::244]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1ebTR7-000694-HA for linux-mtd@lists.infradead.org; Tue, 16 Jan 2018 15:46:11 +0000 Received: by mail-lf0-x244.google.com with SMTP id h92so7650606lfi.7 for ; Tue, 16 Jan 2018 07:45:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UR1U1eR1xe9p5UzODlV9ai4s7GjKfIu6Pbuc+/KGGNM=; b=KhxpNBGKt6Qu4MQi7BdupJ63m4YbhDLDI6FZ/GiXBA7V8tHlUzbMWWTZu1doVmOI79 IQur+4GOp98vVQvRi2m2AfA3JNSSkqoCl6R8jxz46w33e0K7F3CeyBocXR5rXUBI+REF yTUxV1rDcJWX1Z4sACj3fTuobZk8XaxZ9aj3pxrMzf1zpQgsbqc2NRQvw+yv+QzmtV7F HgTrZqv5VZJtZqD0ZppMQ33/6PKw4+AvsGfryHMAVGU5/9AoBdbZ0FosZW1KnsAOfvDE 64oVpo3CFSqWXxV6SI++0Cz2IkmE5Q/jEysTqDFCoMMDVa+6pQS3+fH98ed+7GWeYYiN cXgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UR1U1eR1xe9p5UzODlV9ai4s7GjKfIu6Pbuc+/KGGNM=; b=XgN/c6rCB+NvbJh57PXzI9TIcr5gX+i5Lqdt1yPvL5FGtY+QAQnF3W9r6xfOQkeap/ oKt/qSMScjOaDD9ss92RtW1ehogW74qa1+JfoKCgu2MyAtFifinE64SSurAxPwJTgaKL +53ZvdUUKjbUts5YXPGzRhaYhmgjHiFb+FkqD+ogEwVme8F9uBaW0b7zoLtlfoV5pZ2q w3Ad60iP7M844aVTUxyrdgTPGfA7wTm9kitYGc2feEit4vwTZIbNvxWlCDR6NnjtPFXI ivoKGLsMQtFMYGpOmtrOmFZ3bAQ5FXEg1kCJok8vFUvg2FyZ37WtL1YnHHsulWKVOlHF 9Hig== X-Gm-Message-State: AKwxytd1T/F7VM7E+Y7GdSiMktDSuWTNJeB4r3QwQzVkpAFk3jOcBAvk XzwwU3vP6CLDRboi0ICv04g= X-Google-Smtp-Source: ACJfBotg8bYrcdwRy7zb+fr+Erd01sf15RJGt7VTPYr8QuTk+vkdIGKtr3MBIW4/gW+rwgnOZe8DtQ== X-Received: by 10.46.68.11 with SMTP id r11mr7721315lja.13.1516117553259; Tue, 16 Jan 2018 07:45:53 -0800 (PST) Received: from linux-samsung.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id m89sm181708lje.66.2018.01.16.07.45.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Jan 2018 07:45:52 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: Brian Norris , David Woodhouse , Boris Brezillon , Marek Vasut , Richard Weinberger , Cyrille Pitchen Subject: [PATCH V5 2/2] mtd: get rid of the mtd_add_device_partitions() Date: Tue, 16 Jan 2018 16:45:42 +0100 Message-Id: <20180116154542.9767-3-zajec5@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180116154542.9767-1-zajec5@gmail.com> References: <20180115224547.9265-1-zajec5@gmail.com> <20180116154542.9767-1-zajec5@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180116_074605_580907_0011CBAC X-CRM114-Status: GOOD ( 15.83 ) X-Spam-Score: -1.8 (-) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-1.8 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [2a00:1450:4010:c07:0:0:0:244 listed in] [list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (zajec5[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (zajec5[at]gmail.com) -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= , linux-mtd@lists.infradead.org, Jonas Gorski Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Rafał Miłecki This simplifies code a bit by: 1) Avoiding an extra (tiny) function 2) Checking for amount of parsed (found) partitions just once 3) Avoiding clearing/filling struct mtd_partitions manually With this commit proper functions are called directly from the mtd_device_parse_register(). It doesn't need to use minor tricks like memsetting struct to 0 to trigger an expected mtd_add_device_partitions() behavior. Signed-off-by: Rafał Miłecki --- V2: Simplify conditions in the mtd_device_parse_register (thanks Boris) V4: Zero-initialize parsed variable. Some parsers return 0 without setting nr_parts. Update commit message: drop "a" from "a functions" & use () --- drivers/mtd/mtdcore.c | 43 ++++++++++++------------------------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c index 20cd0cb15c33..d309905e9f75 100644 --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c @@ -641,21 +641,6 @@ int del_mtd_device(struct mtd_info *mtd) return ret; } -static int mtd_add_device_partitions(struct mtd_info *mtd, - struct mtd_partitions *parts) -{ - const struct mtd_partition *real_parts = parts->parts; - int nbparts = parts->nr_parts; - - if (!nbparts && !device_is_registered(&mtd->dev)) - return add_mtd_device(mtd); - - if (nbparts > 0) - return add_mtd_partitions(mtd, real_parts, nbparts); - - return 0; -} - /* * Set a few defaults based on the parent devices, if not provided by the * driver @@ -706,7 +691,7 @@ int mtd_device_parse_register(struct mtd_info *mtd, const char * const *types, const struct mtd_partition *parts, int nr_parts) { - struct mtd_partitions parsed; + struct mtd_partitions parsed = { }; int ret; mtd_set_dev_defaults(mtd); @@ -717,24 +702,20 @@ int mtd_device_parse_register(struct mtd_info *mtd, const char * const *types, return ret; } - memset(&parsed, 0, sizeof(parsed)); - + /* Prefer parsed partitions over driver-provided fallback */ ret = parse_mtd_partitions(mtd, types, &parsed, parser_data); - if ((ret < 0 || parsed.nr_parts == 0) && parts && nr_parts) { - /* Fall back to driver-provided partitions */ - parsed = (struct mtd_partitions){ - .parts = parts, - .nr_parts = nr_parts, - }; - } else if (ret < 0) { - /* Didn't come up with parsed OR fallback partitions */ - pr_info("mtd: failed to find partitions; one or more parsers reports errors (%d)\n", - ret); - /* Don't abort on errors; we can still use unpartitioned MTD */ - memset(&parsed, 0, sizeof(parsed)); + if (!ret && parsed.nr_parts) { + parts = parsed.parts; + nr_parts = parsed.nr_parts; } - ret = mtd_add_device_partitions(mtd, &parsed); + if (nr_parts) + ret = add_mtd_partitions(mtd, parts, nr_parts); + else if (!device_is_registered(&mtd->dev)) + ret = add_mtd_device(mtd); + else + ret = 0; + if (ret) goto out;