From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-vk1-f178.google.com (mail-vk1-f178.google.com [209.85.221.178]) (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 7033133263A for ; Mon, 2 Mar 2026 10:38:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.178 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772447930; cv=none; b=hHayWSnzLdlBgfdWURrQCOP9uXtSBBzm5rWGagt4Xxckr0FUfRHFOOV4QJNu+CsEUKakwfgB1CpsCHJ8cOIxNBA8KRx4bK0v7yKHxeAqdArHieNPqTZrFdjWSnkxZ9XF9V3sD3EhmdvLtDCQn4UCptEE/rfFGTrHTeDArwGsSFg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772447930; c=relaxed/simple; bh=PO0TbLRbiVrKvdhPwH7RKWikT/wKrrUI+0ibUOovsCk=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=scPOte+MsJw/Rm5iQSdc40TiQqBkbOzxQOdvB3a8jmBISd4gJdwQdl7cv8FBNmnYb/qwgJp3x9BpdKT0AaTDYfiVtvia20g/+tC775ZhGK29NrqkSaoMH+zUgfwnz5J/0GjX+pJuDOWNIyyx6h+a6imngbRg5Ixf/DZyHgSWnLg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.221.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-vk1-f178.google.com with SMTP id 71dfb90a1353d-5688b9e4e80so4742579e0c.1 for ; Mon, 02 Mar 2026 02:38:49 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772447928; x=1773052728; 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=bl7RAWu6mKzowPFnldQghONe5pbsD04RWaX4BUYhOlo=; b=HptYitCVQN1KvKZf1zAooxdQ4ldIMCC+d+IxKWQQHZlSvkXqb497O+h8HGJ3hmyp9A BxY5ZT1Awnwx7Ki2zymdDifztN2Zs5IB1cjE9iEbgbp49kpd5TTIMgGpI569tRc663nC 3G1AA5IxcmznJwaQK5kIvQi78K7o47FWsj8LUXeYLhagLe19rqmar0tJjkR66vCVHQ3a 75I+hlNXQ3SetVSamNtEZnpVnhK84u+gX2aqmTe7PMVqCMSm9n1BQdH9Q9pqUtkOTvVC tOrn1E3pZk8yXT6K76t51Eu2PhI620YzwrBIB+gJNoHlGdr2eYtcpRGiZnlwWczWSoqZ K3Nw== X-Forwarded-Encrypted: i=1; AJvYcCU56S7gnXAbztZBfLlpKpqbtTCbxfVc7bsiQtX2tmlAdwzmJ2m2InH+pzN22J3aQDtDLbXyaXUkMpPCg44=@vger.kernel.org X-Gm-Message-State: AOJu0YwcJXR0cpIbrjmE94fVI2mN7Wp1zjAeAYRhJFEYtx12jQWBIjv/ Xh/Ywkg0VUveOAlsaIbQa1tcyQQybwSC+2F97dxFFPJtlEOrLuuXkZ3lxWIMzzV3 X-Gm-Gg: ATEYQzwICLPMg9r1fHicpg/NJvkwFCojIuCEu2Tzr8JarXpt7mMSHfBDZRrZUxuPaSp HW0XW0txJEK+uhMnE8pndFZzgaRJmzGXn70LcWP4wkbyum5sxc7fzgNrxIh2B1gNcSuBY5j9FbU pGGuPlFFCeKTDYDKC5b6fe0mkRpdEoCoLz8ddgdM00/nuXb8bds0HQTuVVg8ygfGcTBHZQlcsUJ m36vmNeMuH9mh4Z8I/X1U9iPAeo1RROPkKsUQmC3jUKIzdkQO9HwTbqCUtMnacU9UMEDUoFVsgw xjBTR9Sddla6kmMlBhSga7PvirK/jFTxfackQhwSm6I18rjGanlo0zCaSw3srfDMxeZd/kiNoG5 Z10xnzI+MYXP+S43zP4OTZk+osj0ptLecVYkJOkXGjr4Inz1ANC6JJNCdv4zy4V/RGz20jC5nfY KA/tQ5xDtKs3VNiyrKDnrSowffP6AcsN46WgRL3jejyNbAMOjz/e3nCGAalZp8uUPY X-Received: by 2002:ac5:c64a:0:b0:56a:8b56:8165 with SMTP id 71dfb90a1353d-56a909ebbe7mr5173184e0c.6.1772447928200; Mon, 02 Mar 2026 02:38:48 -0800 (PST) Received: from mail-vk1-f169.google.com (mail-vk1-f169.google.com. [209.85.221.169]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-56a91bbd85csm15223755e0c.7.2026.03.02.02.38.47 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 02 Mar 2026 02:38:47 -0800 (PST) Received: by mail-vk1-f169.google.com with SMTP id 71dfb90a1353d-5674f3e80edso4088623e0c.1 for ; Mon, 02 Mar 2026 02:38:47 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWdIOB9ayXMutyLPwDodjmYvZCYpMqOKtmy17S0E2V+xkWHUpQON31SyF33Ew6QrNU16HvryMI59dp0KKE=@vger.kernel.org X-Received: by 2002:a05:6102:440e:b0:5ef:b32c:dff8 with SMTP id ada2fe7eead31-5ff1cda8e40mr7754538137.5.1772447927548; Mon, 02 Mar 2026 02:38:47 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20260302002729.19438-1-dakr@kernel.org> <20260302002729.19438-2-dakr@kernel.org> In-Reply-To: From: Geert Uytterhoeven Date: Mon, 2 Mar 2026 11:38:36 +0100 X-Gmail-Original-Message-ID: X-Gm-Features: AaiRm52rSumTG3nFZ9P6FzWdxvQ0hMzWVlbis5lyqzx4MgKVwMUrLmFH3gE-zLg Message-ID: Subject: Re: [PATCH 1/3] driver core: generalize driver_override in struct device To: Danilo Krummrich Cc: gregkh@linuxfoundation.org, rafael@kernel.org, hanguidong02@gmail.com, ysato@users.sourceforge.jp, dalias@libc.org, glaubitz@physik.fu-berlin.de, abelvesa@kernel.org, srini@kernel.org, s.nawrocki@samsung.com, nuno.sa@analog.com, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-hwmon@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-sound@vger.kernel.org, linux-sh@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Hi Danilo, On Mon, 2 Mar 2026 at 11:26, Danilo Krummrich wrote: > On Mon Mar 2, 2026 at 11:00 AM CET, Geert Uytterhoeven wrote: > >> --- a/drivers/base/dd.c > >> +++ b/drivers/base/dd.c > >> @@ -381,6 +381,66 @@ static void __exit deferred_probe_exit(void) > >> } > >> __exitcall(deferred_probe_exit); > >> > >> +int __device_set_driver_override(struct device *dev, const char *s, size_t len) > >> +{ > >> + const char *new, *old; > >> + char *cp; > >> + > >> + if (!s) > >> + return -EINVAL; > >> + > >> + /* > >> + * The stored value will be used in sysfs show callback (sysfs_emit()), > >> + * which has a length limit of PAGE_SIZE and adds a trailing newline. > >> + * Thus we can store one character less to avoid truncation during sysfs > >> + * show. > >> + */ > >> + if (len >= (PAGE_SIZE - 1)) > >> + return -EINVAL; > >> + > >> + /* > >> + * Compute the real length of the string in case userspace sends us a > >> + * bunch of \0 characters like python likes to do. > >> + */ > >> + len = strlen(s); > >> + > > > > The newline case below is is basically the same case as the empty > > string. Hence if you would move the newline check here: > > > > if (len) { > > cp = strnchr(s, len, '\n'); > > if (cp) > > len = cp - s; > > } > > > > then the "cp != s" check below is no longer needed. > > > >> + if (!len) { > >> + /* Empty string passed - clear override */ > >> + spin_lock(&dev->driver_override.lock); > >> + old = dev->driver_override.name; > >> + dev->driver_override.name = NULL; > >> + spin_unlock(&dev->driver_override.lock); > >> + kfree(old); > >> + > >> + return 0; > >> + } > > > > Also, this block can be eliminated completely... > > > >> + > >> + cp = strnchr(s, len, '\n'); > >> + if (cp) > >> + len = cp - s; > >> + > >> + new = kstrndup(s, len, GFP_KERNEL); > >> + if (!new) > >> + return -ENOMEM; > > > > ... by pre-initializing new to NULL, and making the allocation of new > > conditional on len being non-zero. > > > >> + > >> + spin_lock(&dev->driver_override.lock); > >> + old = dev->driver_override.name; > >> + if (cp != s) { > >> + dev->driver_override.name = new; > >> + spin_unlock(&dev->driver_override.lock); > >> + } else { > >> + /* "\n" passed - clear override */ > >> + dev->driver_override.name = NULL; > >> + spin_unlock(&dev->driver_override.lock); > >> + > >> + kfree(new); > >> + } > >> + kfree(old); > >> + > >> + return 0; > >> +} > >> +EXPORT_SYMBOL_GPL(__device_set_driver_override); > > This is essentially a copy of driver_set_override(). Except for the required > minor changes I intentionally kept it "as is" as it will go through -fixes and > we know it works properly. So I will have two to fix? ;-) > Do you mind sending a follow-up patch with your suggested improvements? Adding it to my TODO list, if this patch makes it as-is. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds