Subject: bug#77232: closed (Re: bug#77232: [PATCH] Allow also to get attributes of the terminal line)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 19 Apr 2025 15:13:02 +0000

Your bug report

#77232: [PATCH] Allow also to get attributes of the terminal line

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
77232: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=77232
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#77232: [PATCH] Allow also to get attributes of the terminal line
From: Eli Zaretskii <[email-masked]>
To: Philipp Stephani <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Sat, 19 Apr 2025 18:12:13 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Philipp Stephani <[email-masked]>
> Date: Sat, 19 Apr 2025 16:42:04 +0200
> Cc: "Dr. Werner Fink" <[email-masked]>,
>  [email-masked]
> 
> 
> 
> > Am 19.04.2025 um 15:55 schrieb Eli Zaretskii <[email-masked]>:
> > 
> > Ping! Philipp, any further comments?  Should we install this?
> 
> Yeah, looks good

Thanks, installed on the master branch, and closing the bug.

Subject: [PATCH] Allow also to get attributes of the terminal line
From: Werner Fink <[email-masked]>
To: [email-masked]
Cc: Werner Fink <[email-masked]>
Date: Mon, 24 Mar 2025 09:51:47 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

as well as support mmap(2) flag MAP_DROPPABLE to allow
zero memory under memory pressure on newer Linux systems.

Otherwise a `make -k check` fails here in our build environment
with newer kernels and with /dev/console as physical device.

Signed-off-by: Werner Fink <[email-masked]>
---
 lib-src/seccomp-filter.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git lib-src/seccomp-filter.c lib-src/seccomp-filter.c
index d6421f0ebdb..4dda7d8f020 100644
--- lib-src/seccomp-filter.c
+++ lib-src/seccomp-filter.c
@@ -42,6 +42,9 @@ variants of those files that can be used to sandbox Emacs before
 #include <stdlib.h>
 #include <stdint.h>
 #include <stdio.h>
+/* glibc uses internal an other TCGETS ioctl for its
+   tcgetattr(3) call with its internal struct termios */
+#include <asm/termbits.h>
 #include <time.h>
 
 #include <asm/prctl.h>
@@ -64,6 +67,11 @@ variants of those files that can be used to sandbox Emacs before
 #define ARCH_CET_STATUS 0x3001
 #endif
 
+/* https://github.com/torvalds/linux/commit/9651fcedf7b92d3f7f1ab179e8ab55b85ee10fc1 */
+#ifndef MAP_DROPPABLE
+#define MAP_DROPPABLE 0x0
+#endif
+
 static ATTRIBUTE_FORMAT_PRINTF (2, 3) _Noreturn void
 fail (int error, const char *format, ...)
 {
@@ -187,7 +195,7 @@ main (int argc, char **argv)
            some versions of the dynamic loader still use it.  Also
            allow allocating thread stacks.  */
         SCMP_A3_32 (SCMP_CMP_MASKED_EQ,
-                    ~(MAP_SHARED | MAP_PRIVATE | MAP_FILE
+                    ~(MAP_SHARED | MAP_PRIVATE | MAP_FILE | MAP_DROPPABLE
                       | MAP_ANONYMOUS | MAP_FIXED | MAP_DENYWRITE
                       | MAP_STACK | MAP_NORESERVE),
                     0));
@@ -274,6 +282,11 @@ main (int argc, char **argv)
         SCMP_A0_32 (SCMP_CMP_EQ, STDIN_FILENO),
         SCMP_A1_32 (SCMP_CMP_EQ, TIOCGPGRP));
 
+  /* Allow `tcgetattr' call of glibc on physical terminal devices. */
+  RULE (SCMP_ACT_ALLOW, SCMP_SYS (ioctl),
+        SCMP_A0_32 (SCMP_CMP_EQ, STDERR_FILENO),
+        SCMP_A1_32 (SCMP_CMP_EQ, TCGETS));
+
   /* Allow reading (but not setting) file flags.  */
   RULE (SCMP_ACT_ALLOW, SCMP_SYS (fcntl),
         SCMP_A1_32 (SCMP_CMP_EQ, F_GETFL));
-- 
2.35.3