From nobody Sat Apr 4 00:14:01 2026 Received: from embla.dev.snart.me (embla.dev.snart.me [54.252.183.203]) (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 EDB70259CB2 for ; Sun, 22 Mar 2026 11:52:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=54.252.183.203 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774180360; cv=none; b=Yq50J9jAdxHTzrH5MddlA8bqq63MamHtU/8vJxEyxebjWEcUrtZd6oJthvVuMSqM6y/aNOwhz+OkNqtwrlwl8c0Ey2lgm4bI/lKOiheX7UwuqvIDQcJMyOvarCS8X//sLyFQdRmWilWbNscOTeZA5GBKzutRwmOOrszhqTfeptg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774180360; c=relaxed/simple; bh=PpFLbBe5bo+WJ5xfD4n/7RbwxHFtNx98qIpmzRmZJ7U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BYpvK2O4V4kVpqlKR3q4vtAA2wtovUDLJVwsK1E9alXJm56j/vSUtEYsLOQnSUQ/2r5zCKRjIiaL9s7cmlvLRYMwQl8O3oOsUYdvX9WjZIMJpGG1P5Bpp9rcsOxcQdoajMMpcTMP8SKzsmuhpVbjoj8ObRC1VF2BxKbW595lngY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=dev.snart.me; spf=pass smtp.mailfrom=dev.snart.me; dkim=pass (1024-bit key) header.d=dev.snart.me header.i=@dev.snart.me header.b=E6UIQpfG; arc=none smtp.client-ip=54.252.183.203 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=dev.snart.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=dev.snart.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=dev.snart.me header.i=@dev.snart.me header.b="E6UIQpfG" Received: from embla.dev.snart.me (localhost [IPv6:::1]) by embla.dev.snart.me (Postfix) with ESMTP id A0C501D490; Sun, 22 Mar 2026 11:52:36 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 embla.dev.snart.me A0C501D490 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=dev.snart.me; s=00; t=1774180357; bh=PpFLbBe5bo+WJ5xfD4n/7RbwxHFtNx98qIpmzRmZJ7U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=E6UIQpfGUs5vlCHZHVfR4htjdLOOz3xjk1kmOUve+ukLosU0TxpH4VyvwRfpnhJkD Bg6HRQ5CYfHUu/zwh/lioFofkbFWMwJUoEBU0GV2MGnsmJjcvcRwo7iOyqokLHsyc7 3esDCiE/xzgL+eP1c2djjwBU6euupueSPwlBv7uw= Received: from maya.d.snart.me ([182.226.25.243]) by embla.dev.snart.me with ESMTPSA id WttmEgTYv2nfvggA8KYfjw (envelope-from ); Sun, 22 Mar 2026 11:52:36 +0000 From: David Timber To: arnd@arndb.de, gregkh@linuxfoundation.org Cc: linux-kernel@vger.kernel.org, David Timber Subject: [PATCH v1] drivers/char/mem.c: fix null and zero dev lseek Date: Sun, 22 Mar 2026 20:52:28 +0900 Message-ID: <20260322115228.22413-1-dxdt@dev.snart.me> X-Mailer: git-send-email 2.53.0.1.ga224b40d3f.dirty In-Reply-To: <2026032005-porcupine-nursery-9611@gregkh> References: <2026032005-porcupine-nursery-9611@gregkh> 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" Return -EINVAL if whence is not understood by /dev/null or /dev/zero. lseek() on /dev/null and /dev/zero always returns 0. This is problematic for userland programs that detect holes and advancing the offset by the calculated delta (SEEK_HOLE - SEEK_DATA), which will always be calculated as zero. Link: https://github.com/util-linux/util-linux/pull/4132 Signed-off-by: David Timber --- drivers/char/mem.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/char/mem.c b/drivers/char/mem.c index cca4529431f8..f0318e924db9 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -576,7 +576,19 @@ static ssize_t write_full(struct file *file, const cha= r __user *buf, */ static loff_t null_lseek(struct file *file, loff_t offset, int orig) { - return file->f_pos =3D 0; + loff_t ret; + + switch (orig) { + case SEEK_SET: + case SEEK_CUR: + case SEEK_END: + ret =3D file->f_pos =3D 0; + break; + default: + ret =3D -EINVAL; + } + + return ret; } =20 /* --=20 2.53.0.1.ga224b40d3f.dirty