From nobody Fri Apr 3 01:23:04 2026 Received: from mail-dy1-f177.google.com (mail-dy1-f177.google.com [74.125.82.177]) (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 644923368BF for ; Wed, 25 Mar 2026 09:09:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774429758; cv=none; b=Sad8JUxELs3VuqRowpQwX7yCXAqB+FADJ57eJEDRKp5nZMaVwGzeWWI7WGizGJg+xJEOWGhrC8HX096llPnwoSrQKLjIS8yjmka1mun1bfbZwt977hPA9UYoR67niW0joU92Q/a5PD+hgziC2AmtmJcOKPxsWGCBSJ/dfiecExs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774429758; c=relaxed/simple; bh=vLc4tl1bcz7zAmXY8hAkknqRMwhTq2tCZElw7BIMEec=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=HI0uK1ykO+dKAn+aszoj0Sfq91u3lRQrjaybTi/7KwUO7VQRthvbC5/Yje7710vDVIUK1iEgJ1qbyEcxIYkpAWq6n1mqADXk4arGtVrTsO+sfxFNlDC3d0i7gmRGh1oQWBuaAgnMRpk9az21H/pJ9dqfLA0xn8cz9ESGDOm4s3U= 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=mC+ujwce; arc=none smtp.client-ip=74.125.82.177 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="mC+ujwce" Received: by mail-dy1-f177.google.com with SMTP id 5a478bee46e88-2c0ecaae7dfso10447364eec.1 for ; Wed, 25 Mar 2026 02:09:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774429756; x=1775034556; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=sa/J6TmYzy7RRB74cQu1tp4OkFjKDwdrKLlqQYcFCKQ=; b=mC+ujwceHcPb5pz9S1LuBdAW0Q4Rf+vOroAeSaIPicnU9b5KBaVI6NxQK1zF1ii8JO r0/ToJSnau+mL6LyX9nPKafPcNI9ZemWFgezk/63oqfK9MQcTRpgt8ZZJkv6jmDl6sLx aNeXr6JRrLsoa6p82HrL9NINc2M3y+5lJvdf5/TWiijzZqX/uQFxrMP6z4W1asCuHi8M /bJOePeNbIY0KcAPjeHzxWih1pslppWRjqprFb9CkNtZbR31uy/HjiKuXxisLZb5gYeH O4qga3GEMB0ZFDuGzWA/7uBtLve2Qf0Y7bnvn88stpOqFm9cmLvGKgLogD81t3xd75qJ ClZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774429756; x=1775034556; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=sa/J6TmYzy7RRB74cQu1tp4OkFjKDwdrKLlqQYcFCKQ=; b=mqovmJyP4uRdo2rJMs61HCX7tzH4arY8vjujwXwjP9rLJRofACk9/dtRpscfztUrGk Xw1Osd6IS9NiZFlfAlHom1J918an7feuxrgC7sy1GjURw9B6R+KcCGMxNXnk+jzqWMBm SKe3K5/yHCEo5ZPRyS1Pd3ln2CeENQQgKB9o29YqnGM9kY2k/Gyl4RUNGQQH7ijAARLc XZsU2/A4bHX6AFNcxglHRBYr6sToweryIn+hIo+JAE6Yn7MZZ8y8qD2gOQA0wD3yE2Ir gDY0BW287mOk/D7vsvfrKKESOufjACsvcqsk9OZeWYW124dHtev5Z4IXLIuM2DxmM/RI 2xxg== X-Forwarded-Encrypted: i=1; AJvYcCWhxV5PxQu+Yv9UKbZx1WueLcxdmbf1c6UHwq9a+oQs3ycRQyM7xxZvWSQ12W+1Dlc1JjriiCE8P9C2kRE=@vger.kernel.org X-Gm-Message-State: AOJu0Yxq4bVh3WJoJQwCbaiiRaUy14YUbTJbF95uVKLgodnYP/yPQ/hv Jr7KNh52dtH+6LI1u3wJ7onJ55+NHboTBZeZ3DlFdQFEdupULT3adzkj X-Gm-Gg: ATEYQzyd2dTJRXWhpSqHM5zgUumtluAegBb6If0uMKmGa08RQOMkKfhjRDe1drDgI7C 2qoAs1h62mx4/G7MOZltwU/OwprGfP2Ag4Tczi3HWHmm4H1DbWLqOPXJlz/hqcXO2iJXRA8kyuK r/FdCuRdD3vUi6Y3IUOD5mUYdLQGFcPD8Nhl8AxEJbuEEW2LhzMmnSDppNbLFERNrueTGfOLtQr vlmvA3vXntFRKMcAGiPnO4sN0IMmQnTdPQZRXsxrCGQcFisz/BTjZrpNB7rHlUhb3BtzosLJoF/ 1E7xgRLWXsR3hoFmiAqZKQQN7GfLoOgUSAO3TiTQsyUuwLud/06S1akX9LZNX3rig+a7R9WzW9D nDuMVEt66AstHse/O/fw89/hDedhO4Hzy3l9/AbFwoT0UA+Kj6rB7shboRNW3kss2ctIOueP9YA xKFIFsaYVNaUkCL92DEXOF5QbfV5zjXpsVN33W04T5mNWCQPOsu8Uhm1nTmSR8MAMZFimdPD9Dv hraepZd6DdWw4XHYmHxJDuaJsVJDkfo0kXOnb3G0c9VHBqBkGSNXSoCA/OwPR5IYU850RuLfSEL Zw== X-Received: by 2002:a05:7301:1288:b0:2b7:24fc:f638 with SMTP id 5a478bee46e88-2c15d114cc4mr1569043eec.0.1774429756409; Wed, 25 Mar 2026 02:09:16 -0700 (PDT) Received: from 2045L.localdomain (17.sub-72-110-68.myvzw.com. [72.110.68.17]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c10b29d28csm21760210eec.19.2026.03.25.02.09.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 02:09:16 -0700 (PDT) From: Gui-Dong Han To: gregkh@linuxfoundation.org, rafael@kernel.org, dakr@kernel.org Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, akaieurus@qq.com, Gui-Dong Han , Geert Uytterhoeven Subject: [PATCH] driver core: simplify __device_set_driver_override() clearing logic Date: Wed, 25 Mar 2026 17:09:05 +0800 Message-ID: <20260325090905.169000-1-hanguidong02@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Currently, __device_set_driver_override() handles clearing the override via empty string ("") and newline ("\n") in two separate paths. The "\n" case also performs an unnecessary memory allocation and immediate free. Simplify the logic by initializing 'new' to NULL and only allocating memory if the string length remains non-zero after stripping the trailing newline. Reduce code size, improve readability, and avoid unnecessary memory operations. No functional change intended. Suggested-by: Geert Uytterhoeven Link: https://lore.kernel.org/driver-core/DGS82WWLXPJ0.2EH4VJSF30UR5@kernel= .org/ Signed-off-by: Gui-Dong Han --- drivers/base/dd.c | 43 ++++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 37c7e54e0e4c..1a8f93051470 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -383,7 +383,7 @@ __exitcall(deferred_probe_exit); =20 int __device_set_driver_override(struct device *dev, const char *s, size_t= len) { - const char *new, *old; + const char *new =3D NULL, *old; char *cp; =20 if (!s) @@ -404,37 +404,26 @@ int __device_set_driver_override(struct device *dev, = const char *s, size_t len) */ len =3D strlen(s); =20 - if (!len) { - /* Empty string passed - clear override */ - spin_lock(&dev->driver_override.lock); - old =3D dev->driver_override.name; - dev->driver_override.name =3D NULL; - spin_unlock(&dev->driver_override.lock); - kfree(old); - - return 0; + /* Handle trailing newline */ + if (len) { + cp =3D strnchr(s, len, '\n'); + if (cp) + len =3D cp - s; } =20 - cp =3D strnchr(s, len, '\n'); - if (cp) - len =3D cp - s; - - new =3D kstrndup(s, len, GFP_KERNEL); - if (!new) - return -ENOMEM; + /* If empty string or "\n" passed, new remains NULL, clearing + * the driver_override.name. + */ + if (len) { + new =3D kstrndup(s, len, GFP_KERNEL); + if (!new) + return -ENOMEM; + } =20 spin_lock(&dev->driver_override.lock); old =3D dev->driver_override.name; - if (cp !=3D s) { - dev->driver_override.name =3D new; - spin_unlock(&dev->driver_override.lock); - } else { - /* "\n" passed - clear override */ - dev->driver_override.name =3D NULL; - spin_unlock(&dev->driver_override.lock); - - kfree(new); - } + dev->driver_override.name =3D new; + spin_unlock(&dev->driver_override.lock); kfree(old); =20 return 0; --=20 2.43.0