From: Zhixing Chen <running910@gmail.com>
To: Heiner Kallweit <hkallweit1@gmail.com>, nic_swsd@realtek.com
Cc: Andrew Lunn <andrew+netdev@lunn.ch>,
"David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
netdev@vger.kernel.org, Zhixing Chen <running910@gmail.com>
Subject: [PATCH net-next] r8169: keep LED device name valid after setup
Date: Thu, 13 Aug 2026 18:07:11 +0800 [thread overview]
Message-ID: <20260813100711.14724-1-running910@gmail.com> (raw)
rtl8168_setup_ldev() and rtl8125_setup_led_ldev() build the LED device
name in a stack buffer and assign it to led_cdev->name.
The LED class device registration path reads led_cdev->name after it has
been assigned, and struct led_classdev stores the name as part of the LED
class device state. Do not keep a pointer to a setup function's stack
buffer there.
Store the name in struct r8169_led_classdev instead, so it remains valid
for the lifetime of the LED class device.
Signed-off-by: Zhixing Chen <running910@gmail.com>
---
I noticed this while reviewing the r8169 driver code. The LED name is
stored in led_cdev->name, but the current buffer lifetime does not match
the LED class device lifetime.
I have not seen a crash from this, but led_cdev->name points to a stack
buffer after setup returns. Storing the name in the per-LED private object
keeps the pointer lifetime aligned with the LED class device.
---
drivers/net/ethernet/realtek/r8169_leds.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/realtek/r8169_leds.c b/drivers/net/ethernet/realtek/r8169_leds.c
index 1999e81f0bca..5a2067be3095 100644
--- a/drivers/net/ethernet/realtek/r8169_leds.c
+++ b/drivers/net/ethernet/realtek/r8169_leds.c
@@ -31,6 +31,7 @@ struct r8169_led_classdev {
struct led_classdev led;
struct net_device *ndev;
int index;
+ char name[LED_MAX_NAME_SIZE];
};
#define lcdev_to_r8169_ldev(lcdev) container_of(lcdev, struct r8169_led_classdev, led)
@@ -131,13 +132,12 @@ static void rtl8168_setup_ldev(struct r8169_led_classdev *ldev,
{
struct rtl8169_private *tp = netdev_priv(ndev);
struct led_classdev *led_cdev = &ldev->led;
- char led_name[LED_MAX_NAME_SIZE];
ldev->ndev = ndev;
ldev->index = index;
- r8169_get_led_name(tp, index, led_name, LED_MAX_NAME_SIZE);
- led_cdev->name = led_name;
+ r8169_get_led_name(tp, index, ldev->name, sizeof(ldev->name));
+ led_cdev->name = ldev->name;
led_cdev->hw_control_trigger = "netdev";
led_cdev->flags |= LED_RETAIN_AT_SHUTDOWN;
led_cdev->hw_control_is_supported = rtl8168_led_hw_control_is_supported;
@@ -230,13 +230,12 @@ static void rtl8125_setup_led_ldev(struct r8169_led_classdev *ldev,
{
struct rtl8169_private *tp = netdev_priv(ndev);
struct led_classdev *led_cdev = &ldev->led;
- char led_name[LED_MAX_NAME_SIZE];
ldev->ndev = ndev;
ldev->index = index;
- r8169_get_led_name(tp, index, led_name, LED_MAX_NAME_SIZE);
- led_cdev->name = led_name;
+ r8169_get_led_name(tp, index, ldev->name, sizeof(ldev->name));
+ led_cdev->name = ldev->name;
led_cdev->hw_control_trigger = "netdev";
led_cdev->flags |= LED_RETAIN_AT_SHUTDOWN;
led_cdev->hw_control_is_supported = rtl8125_led_hw_control_is_supported;
base-commit: f6057f06ef7afa9893ed33603f7917fa39d237b5
--
2.34.1
reply other threads:[~2026-08-13 10:08 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260813100711.14724-1-running910@gmail.com \
--to=running910@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nic_swsd@realtek.com \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox