From nobody Sun Oct 5 10:51:20 2025 Received: from mout-p-102.mailbox.org (mout-p-102.mailbox.org [80.241.56.152]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E45E63CF; Wed, 6 Aug 2025 05:31:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=80.241.56.152 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754458290; cv=none; b=arhRlEcsoFm3H9AEvk5y/7S1bQRvM0qpUNI+b3YAfYMlTttgLrHfcxbmfLbdrS/L2H4PABJiKOcUW/ulbpdY7KMXTlZ9r7ukjonTDovmRnHOCOzCagFhJVCaUxLE5dokVGJmuVUBBIP3EX3Jvz8Od+LyaRPWRZQdmim24R3l2gE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754458290; c=relaxed/simple; bh=grK8qXho5eJRNhUBpVWJrruv3CCOc+X2tolA7nBflUg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lPLpw/eLdpX2qFfRwAZdjWw/7IWNK51jt/gAoGEL5+xFME/ObtISaQ4CmP0Vbd2NTND/r3rgvA/c9XeOIxwz8bpkG+I+TbCTCql4uljT7VtfY52ayV+sRG3/CvGCXSaofyhMyykPCjF/RQLIPpEJxYVHGllG7tg6Mv15JrWb0Jk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cyphar.com; spf=pass smtp.mailfrom=cyphar.com; dkim=pass (2048-bit key) header.d=cyphar.com header.i=@cyphar.com header.b=ONxbjG7l; arc=none smtp.client-ip=80.241.56.152 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=cyphar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cyphar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cyphar.com header.i=@cyphar.com header.b="ONxbjG7l" Received: from smtp102.mailbox.org (smtp102.mailbox.org [10.196.197.102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4bxf6P2gJfz9tlP; Wed, 6 Aug 2025 07:31:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cyphar.com; s=MBO0001; t=1754458285; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=q7MzN3ay8IG6Jjs4hHxY8KUxDAJt90+4JEoWvq0gBos=; b=ONxbjG7lyvDXO08sTSvdNMc24C2fvZprSEf5JWO2FC/eTPsZM4EDcXfmO8e0Z/I5SGh3xD Jxa/I0aLz29mMe0VYQe9nAtF8p3lVAV4lyAeWrpoHrcDwJDcNLMJscE1TUuyk5uJHXRCzC sHh6mL21bKifjXAz7bMzgevhgHj9ZmI0LvesId0vwpNUxIzCHHSukvSl7gDcivPLXK3WYr fVqFHyNEPIq/dQQO9L1S4ItVY8yyXtEAXi3+ZHw/E3spAwRAfIqunpBlya57KPIhlHkFOT a/5L89Dt3iPq1LlA0VuYYt35ZgfOh6A8nVrhbfxONe5vvGOPNETBasdqxsczAg== From: Aleksa Sarai Date: Wed, 06 Aug 2025 15:31:10 +1000 Subject: [PATCH 1/2] fscontext: do not consume log entries for -EMSGSIZE case 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: <20250806-fscontext-log-cleanups-v1-1-880597d42a5a@cyphar.com> References: <20250806-fscontext-log-cleanups-v1-0-880597d42a5a@cyphar.com> In-Reply-To: <20250806-fscontext-log-cleanups-v1-0-880597d42a5a@cyphar.com> To: Alexander Viro , Christian Brauner , Jan Kara , David Howells , Shuah Khan Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Aleksa Sarai , stable@vger.kernel.org X-Developer-Signature: v=1; a=openpgp-sha256; l=1864; i=cyphar@cyphar.com; h=from:subject:message-id; bh=grK8qXho5eJRNhUBpVWJrruv3CCOc+X2tolA7nBflUg=; b=owGbwMvMwCWmMf3Xpe0vXfIZT6slMWRMerFo7d7JDMq5VR1/MvwOZod5rWXdW1O6YP7Gf/+Ob ilc0h+c3VHKwiDGxSArpsiyzc8zdNP8xVeSP61kg5nDygQyhIGLUwAmIv+C4Z/COr5CRffdSvmK jZPjJ87tUU6asjFBWzk+sUDrW/MBHlaGvzJqaott67/O26L5Om3aVA37mOx9+5clrJAMkXoQyv7 +IxMA X-Developer-Key: i=cyphar@cyphar.com; a=openpgp; fpr=C9C370B246B09F6DBCFC744C34401015D1D2D386 Userspace generally expects APIs that return EMSGSIZE to allow for them to adjust their buffer size and retry the operation. However, the fscontext log would previously clear the message even in the EMSGSIZE case. Given that it is very cheap for us to check whether the buffer is too small before we remove the message from the ring buffer, let's just do that instead. Fixes: 007ec26cdc9f ("vfs: Implement logging through fs_context") Cc: David Howells Cc: # v5.2+ Signed-off-by: Aleksa Sarai --- fs/fsopen.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/fs/fsopen.c b/fs/fsopen.c index 1aaf4cb2afb2..f5fdaa97965b 100644 --- a/fs/fsopen.c +++ b/fs/fsopen.c @@ -36,23 +36,25 @@ static ssize_t fscontext_read(struct file *file, if (ret < 0) return ret; =20 - if (log->head =3D=3D log->tail) { - mutex_unlock(&fc->uapi_mutex); - return -ENODATA; - } + ret =3D -ENODATA; + if (log->head =3D=3D log->tail) + goto err_unlock_nomsg; =20 index =3D log->tail & (logsize - 1); p =3D log->buffer[index]; + n =3D strlen(p); + + ret =3D -EMSGSIZE; + if (n > len) + goto err_unlock_nomsg; + + /* Consume the message from the queue. */ need_free =3D log->need_free & (1 << index); log->buffer[index] =3D NULL; log->need_free &=3D ~(1 << index); log->tail++; mutex_unlock(&fc->uapi_mutex); =20 - ret =3D -EMSGSIZE; - n =3D strlen(p); - if (n > len) - goto err_free; ret =3D -EFAULT; if (copy_to_user(_buf, p, n) !=3D 0) goto err_free; @@ -62,6 +64,10 @@ static ssize_t fscontext_read(struct file *file, if (need_free) kfree(p); return ret; + +err_unlock_nomsg: + mutex_unlock(&fc->uapi_mutex); + return ret; } =20 static int fscontext_release(struct inode *inode, struct file *file) --=20 2.50.1