From patchwork Sat Mar 21 17:05:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 1259495 X-Patchwork-Delegate: joe.hershberger@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=mpS6U2em; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 48l6W32brlz9sPR for ; Sun, 22 Mar 2020 04:06:39 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 59EFA81807; Sat, 21 Mar 2020 18:06:16 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="mpS6U2em"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A2EEC81807; Sat, 21 Mar 2020 18:05:39 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 05D62817C3 for ; Sat, 21 Mar 2020 18:05:32 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=marek.vasut@gmail.com Received: by mail-wm1-x341.google.com with SMTP id 25so9812893wmk.3 for ; Sat, 21 Mar 2020 10:05:32 -0700 (PDT) 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=9JPAqrVuLE9k8gwo+wgwTgzt9nNTB2K7UbTJGDmEPeo=; b=mpS6U2emtAkaq7ugW9/AJr+znMMKTTFcTfylDw0rLbUvv8zToSxgHcbVFq7kb/269f NSZXikXeehZK8pz5dTMEXBWcAr354gWb7ayBV6N4YZywtt3l0YthfhRrmCh+Oibk3i9k JrG1Wp6g/+fbd/bUIkKEqwFLWhJmBTmS/kkgGhtSnwnoicFOkrYKt2uTaFkzHMmOYSbT IULLE0vCQvL3BTe8E1UDad6IAKNogEhwthKx9qu23WAhcYs2A8/GBf3MjFTg2HMSLKW6 Gn9wdWyHT6LB8myFnG34B3cAN6rf8aiOe69E50+PIoTqhYCuID/N7Hkltj7Z38GtX0dd AvKA== 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=9JPAqrVuLE9k8gwo+wgwTgzt9nNTB2K7UbTJGDmEPeo=; b=lYReRKZkYfcEd4lJk1rtyURRVfwlZ1qwYY8muGZoHzAxm/PExta1pVgyLxt2W24cUg ZrYCD+3i0kf9wvUA7CMhNgqEnloQXeKEt58ZIrPJuHmglGBiA7azODq7bM1lo+foHKp2 CeRpUKbaG2vmL+0xRs3z82AU1aYnsKhGhqugLe3GX1dl5EkZfWrE7ahZRnRY6x406ieK 6Dcqx+bQ6ybWQcG31uuhpmOE0Y1+w5mDBhN4PJRq0wt/fXbQGzo7txCKAQ3fqS9cUsSn OJlid6glJE3wfwaRJKmZYgRwF9WyGb6/Eps9+SRrD8zinDy4nwtke6L7Pfc7QmtmeLCk tquA== X-Gm-Message-State: ANhLgQ1ckgK591NITgWkapr3s+1jTE7cdKg+AG4cTp7dwe1aHezPVOBi 3RjrotuzzIMr8F9tMwy8bzpBVpiv X-Google-Smtp-Source: ADFU+vt+ifLCc+tOPSuqxsri1WrC6Jv5JvzbrCoVjFlc3knSdaX5mjIIwWPlUFaaSmLUyt3COCvbnQ== X-Received: by 2002:a05:600c:280b:: with SMTP id m11mr2275630wmb.99.1584810332148; Sat, 21 Mar 2020 10:05:32 -0700 (PDT) Received: from desktop.lan (ip-86-49-35-8.net.upcbroadband.cz. [86.49.35.8]) by smtp.gmail.com with ESMTPSA id w7sm15029416wrr.60.2020.03.21.10.05.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Mar 2020 10:05:31 -0700 (PDT) From: Marek Vasut X-Google-Original-From: Marek Vasut To: u-boot@lists.denx.de Cc: Marek Vasut , Joe Hershberger , Masahiro Yamada Subject: [PATCH V2 05/13] net: smc911x: Fix potential memleak() in init fail path Date: Sat, 21 Mar 2020 18:05:00 +0100 Message-Id: <20200321170508.82753-6-marek.vasut+renesas@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200321170508.82753-1-marek.vasut+renesas@gmail.com> References: <20200321170508.82753-1-marek.vasut+renesas@gmail.com> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.30rc1 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de X-Virus-Status: Clean Fix memleak in the init fail path, where if allocation or registration of MDIO bus fails, then ethernet interface is not unregistered and the private data are not freed, yet the probe function reports a failure. Signed-off-by: Marek Vasut Cc: Joe Hershberger Cc: Masahiro Yamada --- V2: No change --- drivers/net/smc911x.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c index 01358a3878..4eebf51b36 100644 --- a/drivers/net/smc911x.c +++ b/drivers/net/smc911x.c @@ -282,15 +282,23 @@ int smc911x_initialize(u8 dev_num, int base_addr) #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) int retval; struct mii_dev *mdiodev = mdio_alloc(); - if (!mdiodev) + if (!mdiodev) { + eth_unregister(dev); + free(dev); return -ENOMEM; + } + strncpy(mdiodev->name, dev->name, MDIO_NAME_LEN); mdiodev->read = smc911x_miiphy_read; mdiodev->write = smc911x_miiphy_write; retval = mdio_register(mdiodev); - if (retval < 0) + if (retval < 0) { + mdio_free(mdiodev); + eth_unregister(dev); + free(dev); return retval; + } #endif return 1;