mirror of
https://codeberg.org/guix/guix.git
synced 2026-05-13 15:03:44 +00:00
gnu: gnumach: Don't truncate kernel messages.
* gnu/packages/patches/gnumach-kmsg-overflow.patch: New patch * gnu/local.mk (dist_path_DATA): Register patch. * gnu/packages/hurd.scm (gnumach): Add the patch. Change-Id: Ibc75e9374426fe4aacbc94c1265d7dbb77386afa Signed-off-by: Ludovic Courtès <ludo@gnu.org> Signed-off-by: Rutherther <rutherther@ditigal.xyz>
This commit is contained in:
@@ -1508,6 +1508,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/gnome-tweaks-search-paths.patch \
|
||||
%D%/packages/patches/gnulib-bootstrap.patch \
|
||||
%D%/packages/patches/gnumach-div0.patch \
|
||||
%D%/packages/patches/gnumach-kmsg-overflow.patch \
|
||||
%D%/packages/patches/gnumach-version.patch \
|
||||
%D%/packages/patches/gnupg-default-pinentry.patch \
|
||||
%D%/packages/patches/gnupg-1-build-with-gcc10.patch \
|
||||
|
||||
@@ -279,7 +279,8 @@ Hurd-minimal package which are needed for both glibc and GCC.")
|
||||
(inherit (package-source gnumach-headers))
|
||||
(patches (append (origin-patches
|
||||
(package-source gnumach-headers))
|
||||
(search-patches "gnumach-div0.patch")))))
|
||||
(search-patches "gnumach-div0.patch"
|
||||
"gnumach-kmsg-overflow.patch")))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments gnumach-headers)
|
||||
((#:configure-flags flags ''())
|
||||
|
||||
59
gnu/packages/patches/gnumach-kmsg-overflow.patch
Normal file
59
gnu/packages/patches/gnumach-kmsg-overflow.patch
Normal file
@@ -0,0 +1,59 @@
|
||||
Upstream Status: https://lists.gnu.org/archive/html/bug-hurd/2025-12/msg00043.html
|
||||
|
||||
From 2c9868cd8974e75a028349aa1ec9b1417f5d6617 Mon Sep 17 00:00:00 2001
|
||||
From: Yelninei <yelninei@tutamail.com>
|
||||
Date: Thu, 2 Oct 2025 16:20:00 +0000
|
||||
Subject: [PATCH] kmsg: Don't truncate messages when overflowing.
|
||||
|
||||
Instead of discarding a character drop the first unread one.
|
||||
---
|
||||
device/kmsg.c | 21 +++++++++------------
|
||||
1 file changed, 9 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/device/kmsg.c b/device/kmsg.c
|
||||
index e5b518e6..bb72930d 100644
|
||||
--- a/device/kmsg.c
|
||||
+++ b/device/kmsg.c
|
||||
@@ -217,7 +217,6 @@ void
|
||||
kmsg_putchar (int c)
|
||||
{
|
||||
io_req_t ior;
|
||||
- int offset;
|
||||
spl_t s = -1;
|
||||
|
||||
/* XXX: cninit is not called before cnputc is used. So call kmsginit
|
||||
@@ -230,22 +229,20 @@ kmsg_putchar (int c)
|
||||
|
||||
if (spl_init)
|
||||
s = simple_lock_irq (&kmsg_lock);
|
||||
- offset = kmsg_write_offset + 1;
|
||||
- if (offset == KMSGBUFSIZE)
|
||||
- offset = 0;
|
||||
-
|
||||
- if (offset == kmsg_read_offset)
|
||||
- {
|
||||
- /* Discard C. */
|
||||
- if (spl_init)
|
||||
- simple_unlock_irq (s, &kmsg_lock);
|
||||
- return;
|
||||
- }
|
||||
|
||||
kmsg_buffer[kmsg_write_offset++] = c;
|
||||
if (kmsg_write_offset == KMSGBUFSIZE)
|
||||
kmsg_write_offset = 0;
|
||||
|
||||
+ if(kmsg_write_offset == kmsg_read_offset)
|
||||
+ {
|
||||
+ /* Drop first unread char */
|
||||
+ kmsg_read_offset++;
|
||||
+ if (kmsg_read_offset == KMSGBUFSIZE)
|
||||
+ kmsg_read_offset = 0;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
while ((ior = (io_req_t) dequeue_head (&kmsg_read_queue)) != NULL)
|
||||
iodone (ior);
|
||||
|
||||
--
|
||||
2.52.0
|
||||
|
||||
Reference in New Issue
Block a user