From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (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 508DB2FA0DF for ; Thu, 18 Jun 2026 20:12:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=209.85.218.45 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781813546; cv=pass; b=agLvxQ5XsTEWh6/SqIN8mkSiaziE3ysirAysuIDCk1/f/8lKu0u0SC8riX5aOOUYVKWBq6xRcjOru2Agdpw3kwS1QWtPbXBp44Mnmyv5G7kBtuYndnyMDWmNzGWP3ZYlczdDTo2CMIbCJoCxIBEgmNHVZT0LC5AEYAhB2b5tMqg= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781813546; c=relaxed/simple; bh=LMakqLJ6DkcTSQEvzCOdk0uSWAk9ih3/TMMLZUgSXv0=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=Wt+62nHCp4LSj0xEc8TjU3DQZdwj0JBcHetlmbEvk//X0PBVTWFq/KEu8YZN2ZCi0Qt3hA059CSmblThvOskWultnDVHnFR+ephAIquH3x3jrAyDouB4UHFT+WmtqFhNDtHC766uu+fjvurchO9X9WLOwNEwBtldqfIubvhKg8s= ARC-Authentication-Results:i=2; 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=CyqSJFfb; arc=pass smtp.client-ip=209.85.218.45 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="CyqSJFfb" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-bed2b9bfa02so191207066b.1 for ; Thu, 18 Jun 2026 13:12:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781813544; cv=none; d=google.com; s=arc-20240605; b=HcND/qGRfqhqv92u1X3KPrdYF3UB2rz+WbU0q+6YNRJXESbQTA0Ib4Hcxcu5kJpBOj wQ26sj5Lo2XtWtcl7AoQ/atOUt/LLZ6qLZfu1wpA9G5WGNhPevWw1PsjU6CCPBPNbBIO quorHwpbuQsFJx38VwFB0yVBQQDZGmyHsk4lyXwyXDsl+anuBoU+UQkmY7rWpw3i8IVK Z3/jf9NJGjJi+0WariaKsGeEGxYVoKZE0cfwxaU3/mEQle+EO55VxJ5Y7spTfRfO6brU pWRS1CoaMDtB5KfbxO1ZE9vTKx2DJvAat6S3PWxZC97P6ZJeqmDxFIs+6WakAvbSlNoE mrcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=bFVUtXxyP6VoM5jqUw1jZWOdMMyM7Iu3TpJdXEYl8Xo=; fh=RHHHT10fZ5/IPyScyypMipwDUfQBYzyLgjWN2GHwfoA=; b=DWuRbvb4gQPMvkMWogwEnlHu2UfUk8rrEpNLJrzgzCMdobrBYcZ7H39+K2E4yAItpe 4mW43PQHBB86gCtJ4sMO7H/OZRuH75AXFK5ltrAylQBVGgEb3KtXvr6awotwQIV+J2Wa SB0jx2SK3FdG3bjJkGo69vEbdd7QejRA+iXBXbKuh9GuyZYPDTlvpdvV89NsLjErAXc5 GD+WJnXdeHIrYtzz/LNv7DFoKLvzLzF8lXaH15cPg46Nkylt9L6nAtfaToE18Rqv6lSn PRfc5wEd5CqNcmk+mDzAUBctt9Z7j2o52Yitcb+LD1IcUoWwVws072c+zVpNIE37/tSx 5tQA==; darn=vger.kernel.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781813544; x=1782418344; darn=vger.kernel.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=bFVUtXxyP6VoM5jqUw1jZWOdMMyM7Iu3TpJdXEYl8Xo=; b=CyqSJFfbj14vgXG4O6MFQGT4neY1d6HyVYoHw5wBS3+43dJl5zqpeJyECm2f1tyCT1 tCv8BRmvcovgnUSbyaxH/dC/ZtjgXXekKLe5dzYsoU7agh7BCdTZQ7Rm77HldTdEOU00 nB2MlEj4yWZGyXOFNs78o8uTG+EtLp2Sap5dr9sZ92PhdF4LlvSu5Fl5KgUb55MTPIwV OtMRkDdFfRRpz8ziB4Sb6XwXLhxk23nt53SMX21gm6fS1qFeZReJwrKgAPyuPOVDO2fE GqmVKpBkblZkIiAdxDr+l3R40oZZGaXDkYw5K2mUq4X4im9Xr5Xrm4XgE1jQs9xzWtz9 vZ+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781813544; x=1782418344; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=bFVUtXxyP6VoM5jqUw1jZWOdMMyM7Iu3TpJdXEYl8Xo=; b=XB93e7hw1hiGSRxhTMXyktpHE5Vd5Cj1zNIJfaA9e7woGlA8xc9j7B/0si9IqeDH1b 3E0a7L82qB1gw5jEtMIxemQ6m/lHCc+rJKHFQCV6CyPA0NUR8HPN7BB4kXF8OAd0LO6e xHTS+oiJnGTzg5p2TUpf49MRvg0vwt3K9F8KBj8SqEkQe0hJREL83hxHvgN0iei24k5b 4r2nfXvNqKpnTJtzQyQUO6hHC9h273Q+84TnUZk5ciwzOtGUVyUo8RbmBju6dKXLFRY+ 09Nk9b0Yh+MMkuKmaK2N2y+/2bOO5duCxAhuaNBDGP7Oo1mIvtG52zpxErUTxPHOsnI5 17Jw== X-Forwarded-Encrypted: i=1; AFNElJ80nvXlNUE7Z1CSe5adQCxyN1Flp5ypS9pDk95Ge1Sa2Edyvt51DsiJRo4pxLsLF/x6l0W+faPClaioE3U=@vger.kernel.org X-Gm-Message-State: AOJu0YxR8Yloqx7CpK3WtS8UnWQqgj/5IPclGyQyqDzaylV9ihJ5c7lS lgVFrpdZfovA+ssyIqMBD7MQfy46SNvmIjhclHA0Cm167iS+sGuZp76MgCGFnGJKK4i3KYMwFOs XSdjYQe+UvbfqF6ImZE9YszMZeYIlJVc= X-Gm-Gg: AfdE7ckKNHzO5vMD7b3rFtahNihlfJrmmLqrA59HDeBTN1m+H78maRAb7yWKhqgV2n5 qMKsLa4UUqu8Con8UKQ+T/hOuYbqQiB+NehQaUibznARQquVjxzmwXoBtB9UvVOtd6MTqe5KiiE Ob2lkt2ohevNtv2pnEqCgellY/h/yIGElc92K3btWliaYVbwzjigau5SUvTBvA6sap5b9dII8oA sp2WQ8HpS5a7UBGJZraqbWBbRa+BdEJuAgJy8urorEQIjb8yTivhEQ2om4soJy1YSochZpLvQ== X-Received: by 2002:a17:906:fd8b:b0:bec:5ebd:e169 with SMTP id a640c23a62f3a-c097b3881bcmr33922566b.22.1781813543526; Thu, 18 Jun 2026 13:12:23 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20260618140200.1888707-1-mmyangfl@gmail.com> In-Reply-To: <20260618140200.1888707-1-mmyangfl@gmail.com> From: Luiz Angelo Daros de Luca Date: Thu, 18 Jun 2026 17:12:11 -0300 X-Gm-Features: AVVi8CeZMaZG9qRSL2sCRrsIisg80Q57ZNYJ-TUgdL61DGbSatq9lopZICrX2wk Message-ID: Subject: Re: [PATCH net] net: dsa: realtek: fix memory leak in rtl8366rb_setup_led() To: David Yang Cc: netdev@vger.kernel.org, Linus Walleij , =?UTF-8?Q?Alvin_=C5=A0ipraga?= , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Thanks David, > led_classdev_register_ext() only reads init_data.devicename - it never > stores the pointer. However, the caller allocated devicename with > kasprintf() but never freed it, leaking the string memory. > > Fix it with a stack buffer to avoid dynamic buffers completely. > > Fixes: 32d617005475 ("net: dsa: realtek: add LED drivers for rtl8366rb") > Signed-off-by: David Yang > --- > drivers/net/dsa/realtek/rtl8366rb-leds.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/dsa/realtek/rtl8366rb-leds.c b/drivers/net/dsa/realtek/rtl8366rb-leds.c > index 509ffd3f8db5..ba50d311cb15 100644 > --- a/drivers/net/dsa/realtek/rtl8366rb-leds.c > +++ b/drivers/net/dsa/realtek/rtl8366rb-leds.c > @@ -89,6 +89,7 @@ static int rtl8366rb_setup_led(struct realtek_priv *priv, struct dsa_port *dp, > struct led_init_data init_data = { }; > enum led_default_state state; > struct rtl8366rb_led *led; > + char name[64]; > u32 led_group; > int ret; > > @@ -129,10 +130,9 @@ static int rtl8366rb_setup_led(struct realtek_priv *priv, struct dsa_port *dp, > init_data.fwnode = led_fwnode; > init_data.devname_mandatory = true; > > - init_data.devicename = kasprintf(GFP_KERNEL, "Realtek-%d:0%d:%d", > - dp->ds->index, dp->index, led_group); Indeed, it will leak. init_data is local and init_data.devicename is read by led_compose_name, not stored. However, stack is a limited space for allocation. You can alternatively solve the leak using devm_kasprintf() (my choice) or adding a kfree() before leaving the function. > - if (!init_data.devicename) > - return -ENOMEM; > + snprintf(name, sizeof(name), "Realtek-%d:0%d:%d", > + dp->ds->index, dp->index, led_group); > + init_data.devicename = name; > > ret = devm_led_classdev_register_ext(priv->dev, &led->cdev, &init_data); > if (ret) { > -- > 2.53.0 >