From nobody Wed Apr 1 09:45:02 2026 Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) (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 1F2CB3ACA48 for ; Tue, 31 Mar 2026 14:46:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774968401; cv=none; b=eqvd0IWfQd1m9kbcFqB8IOYsTd0OYdlW0sXd+TRzreyrAJzT6X4844Rl/5N/GwauVSsZt1NtItSwKIG/4Oq0K0XvXsvwWIsHRNSg6Q/eywubSjfvxT73NMoCDWCNkYfskzQ3RFYJbxWrtGAWq8INZNkNHkVEGdsThf6vXAeF5ZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774968401; c=relaxed/simple; bh=VODwtv8tqg77Qyrd2kE5ik1A7E4u1DH8nvDXjdEOiS4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=k9fHj4fzf0c7BszZY9urQRuxmSYyQPZaQQy9+w7ok8KhoC+T03+6JCLbPQxVM6mdZ/vRXmteWkaw52uKyENivfLv1sBwMV1PpnytWlZ69sNvdgJdWerb0SgeQRpWHbkxIK6g3gthEu8G+9+KzWZMVmLTtHcOSnXpMLnB6MmkBkM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=amutable.com; spf=pass smtp.mailfrom=amutable.com; dkim=pass (2048-bit key) header.d=amutable-com.20230601.gappssmtp.com header.i=@amutable-com.20230601.gappssmtp.com header.b=S45bJKH9; arc=none smtp.client-ip=209.85.215.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=amutable.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amutable.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=amutable-com.20230601.gappssmtp.com header.i=@amutable-com.20230601.gappssmtp.com header.b="S45bJKH9" Received: by mail-pg1-f195.google.com with SMTP id 41be03b00d2f7-c76af79f029so465528a12.3 for ; Tue, 31 Mar 2026 07:46:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amutable-com.20230601.gappssmtp.com; s=20230601; t=1774968397; x=1775573197; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=FYRpL6HZ5g+EveC88wD0rmWXlgJIwtaLsSKUra9EGSs=; b=S45bJKH9YZW04hWJ1ucfVfiYOOtmYbvG8RVG7wEuDXsko14GsF+Y8kMy/EsBh/t7Fs 2APio3qEpryceYjS+2fQkIFurA/3nP65T21R3lXyMxk8ZrTdsYtudGI2FmEyv8QKzVLg xzb9ki551+Qy5d6K5xIJZCnZF5JtHK3Xzsfw7m7hi+axEBv/RXupyYGUPctd08aEwBQM 27EX3gCmhzDtOKzQ7V/HLun30JaykjIP+y8YnvPbQq8RWVJwZvfM+mFxZ8OuNM/JQbx6 98YEGOLcD5cNCf0DBbmLBnjF2hEtHfmW9ObQWWM2TC5WRf+axxnlhMmNPG62wBoPSssi DDkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774968397; x=1775573197; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=FYRpL6HZ5g+EveC88wD0rmWXlgJIwtaLsSKUra9EGSs=; b=WZJQbiuBgDUHPKDO9laXoQS5eWzymG6JuIQB8ZhzLcFa/t0W/d/3FNFazPhQ4owkab z4sX7fudvDuTyifA/DMeKBXcvR1aNmhufPRlIAd+C9WBzK+ZG33kPdBUYlGX8tMngYkm hptD0litrIyCBkJRtpl7fG2dS5qsSiriUqSfWLA+R0DdDWHtTg7ualFMaNL1/mGtcEn5 5qwp0TDNlgtU8enZ/poG820228fYCIwNJuvW9/IAOVA5U2ltwjaVHeX+jWugEhmJNdjn kgRcHbh1vJP7f23Lieq2gzt1elBtA8vpzWrMZ3dLd/TluONAAqGWRSyf3QNqgTe23vk8 OiYA== X-Forwarded-Encrypted: i=1; AJvYcCV5dn5BZuE4N860sQ+fZF/M6ev03frqbY/sP4u3pO8ZdQX254pt+Pq41CJA6xCTq98ao0BICb2UY19Tr5Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yyb9tATBh8UovQM3jO89IvTggGNSjDJKhrPjXSmhNuR5Tk+c5Px 0qylwny8zfmvogoQrrA/JkB4qrcuYTC8ssUOqb3Zzp3BweOmjQzr3Sb8N/Q7tJ/KOEcS X-Gm-Gg: ATEYQzz8LmNiMzyMiIuzUHmTpIoP9+xHY77EvLEvCZpdSttZlZjJHAP7Dxn9EQPANKw 9AJGW25j72EHEi3TRUmwEW2Bbugmav5eeIZO86efjaJuejz5S0IjaWOz/hNZFF7L7Y8rEHM242s J9/wEH5k55jHq2M4OD35ZcJSu34hySO+zk/6kWPG4ftgwXdrQSqdnKB+WcAdFgUzYbmETJGw84w rKDvKEOIIZpRgZ+bZKS4rPlMLBbhQcJkauSXqFfjunUFphZn89v+BjKhJO5HADecXe53zocGzlN JgwT8dCl08BqpjIqtAArl3iX3GUwPDrbXunOahSY7dvKawby2+EtSxgCUVkHd4/yV1RC9o94N4/ RHXEvVggh3FLEkSNy4oepACbBuKaIOqfzp89/MdJ6+87RSjbeUBrH9iXi25/ge4oeT1U4wClqbx Nq+h5/UqEUasAsxx4o/4II/DTI55Uvm0wzbK+SjJOGlT+9vmDexDXFhI4vbCcYNPReV/5GeuxFQ rV4PNMcAQTrnEumFq8Y34novQ== X-Received: by 2002:a17:902:fccd:b0:2ae:a45b:42f7 with SMTP id d9443c01a7336-2b0cdd03fdcmr112665235ad.36.1774968397305; Tue, 31 Mar 2026 07:46:37 -0700 (PDT) Received: from thesius.dot.cyphar.com (2403-5809-a2fc-2-a90-9fd7-aedd-d405.ip6.aussiebb.net. [2403:5809:a2fc:2:a90:9fd7:aedd:d405]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b2427ae07fsm118719305ad.69.2026.03.31.07.46.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Mar 2026 07:46:36 -0700 (PDT) From: Aleksa Sarai Date: Wed, 01 Apr 2026 01:46:21 +1100 Subject: [PATCH RFC] dcache: permit dynamic_dname()s up to NAME_MAX Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260401-dynamic-dname-name_max-v1-1-8ca20ab2642e@amutable.com> X-B4-Tracking: v=1; b=H4sIADzey2kC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIzMDEwND3ZTKvMTczGTdFCCVqgsi4nMTK3QtUgxNUpKTLBOTUwyUgJoLilL TMivABkcrBbk5K8XW1gIAqXukfm0AAAA= X-Change-ID: 20260401-dynamic-dname-name_max-8d14dcb9acd0 To: Alexander Viro , Christian Brauner , Jan Kara , Pratyush Yadav , Dan Carpenter , Andrew Morton , Pasha Tatashin , "Mike Rapoport (Microsoft)" , Eric Dumazet , Christoph Hellwig Cc: Aleksa Sarai , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Aleksa Sarai X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2112; i=aleksa@amutable.com; h=from:subject:message-id; bh=VODwtv8tqg77Qyrd2kE5ik1A7E4u1DH8nvDXjdEOiS4=; b=owGbwMvMwCWmMf3Xpe0vXfIZT6slMWSevuf+bsNz0wg200wuNrPlObxeC9Z7RkWGRl9lWqZ27 q5PSalLxwQWBjEuBksxRZZtfp6hm+YvvpL8aSUbzBxWJpAh0iINDAwMDCwMfLmJeaVGOkZ6ptqG eoZGOkY6RgxcnAIw1Yl/GP4XnU3fY3ng2eW7Fl61Yc/TcsNU+OPfKns9XxPtJ/HgzpoAhu+JE47 wvBR5cjxnot00s/Q07f5vkssVtymfOVXiVHpDjRUA X-Developer-Key: i=aleksa@amutable.com; a=openpgp; fpr=C9C370B246B09F6DBCFC744C34401015D1D2D386 dynamic_dname() has had an implicit limit of 64 characters since it was introduced in commit c23fbb6bcb3e ("VFS: delay the dentry name generation on sockets and pipes"), however it seems that this was a fairly arbitrary number (suspiciously it was double the previously hardcoded buffer size). NAME_MAX seems like a more reasonable and consistent limit for d_name lengths. While we're at it, we can also remove the unnecessary stack-allocated array and just memmove() the formatted string to the end of the buffer. It should also be noted that at least one driver (in particular, liveupdate's usage of anon_inode for session files) already exceeded this limit without noticing that readlink(/proc/self/fd/$n) always returns -ENAMETOOLONG, so this fixes those drivers as well. Fixes: 0153094d03df ("liveupdate: luo_session: add sessions support") Fixes: c23fbb6bcb3e ("VFS: delay the dentry name generation on sockets and = pipes") Signed-off-by: Aleksa Sarai Tested-by: Luca Boccassi --- fs/d_path.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/fs/d_path.c b/fs/d_path.c index bb365511066b..a48957c0971e 100644 --- a/fs/d_path.c +++ b/fs/d_path.c @@ -301,18 +301,19 @@ EXPORT_SYMBOL(d_path); char *dynamic_dname(char *buffer, int buflen, const char *fmt, ...) { va_list args; - char temp[64]; + char *start; int sz; =20 va_start(args, fmt); - sz =3D vsnprintf(temp, sizeof(temp), fmt, args) + 1; + sz =3D vsnprintf(buffer, buflen, fmt, args) + 1; va_end(args); =20 - if (sz > sizeof(temp) || sz > buflen) + if (sz > NAME_MAX || sz > buflen) return ERR_PTR(-ENAMETOOLONG); =20 - buffer +=3D buflen - sz; - return memcpy(buffer, temp, sz); + /* Move the formatted d_name to the end of the buffer. */ + start =3D buffer + (buflen - sz); + return memmove(start, buffer, sz); } =20 char *simple_dname(struct dentry *dentry, char *buffer, int buflen) --- base-commit: 84f524dca4b8bc9e9aca8ea1dbbd2aa3a239d998 change-id: 20260401-dynamic-dname-name_max-8d14dcb9acd0 Kind regards, --=20 Aleksa Sarai https://www.cyphar.com/