Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 May 2020 21:16:03 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r361020 - in stable: 11/lib/libsysdecode 11/sys/fs/procfs 11/sys/sys 11/usr.sbin/procctl 12/lib/libsysdecode 12/sys/fs/procfs 12/sys/sys
Message-ID:  <202005132116.04DLG3Ig023365@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Wed May 13 21:16:02 2020
New Revision: 361020
URL: https://svnweb.freebsd.org/changeset/base/361020

Log:
  MFC 359047,359054: Deprecate procfs-based process debugging.
  
  359047:
  Mark procfs-based process debugging as deprecated for FreeBSD 13.
  
  Attempting to use ioctls on /proc/<pid>/mem to control a process will
  trigger warnings on the console.  The <sys/pioctl.h> include file will
  also now emit a compile-time warning when used from userland.
  
  359054:
  Fix the workaround to ignore the #warning for GCC.
  
  clang and gcc use different warning flags for #warning preprocessor
  directives.
  
  For both 12 and 11, adjust the GCC warning flags to only be added in
  4.7 and later since 4.2.1 does not support -Wno-cpp.  For 11, add the
  needed warning suppression to procctl's build.  procctl was removed in
  12.0.

Modified:
  stable/12/lib/libsysdecode/Makefile
  stable/12/sys/fs/procfs/procfs_ioctl.c
  stable/12/sys/sys/pioctl.h
Directory Properties:
  stable/12/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/11/lib/libsysdecode/Makefile
  stable/11/sys/fs/procfs/procfs_ioctl.c
  stable/11/sys/sys/pioctl.h
  stable/11/usr.sbin/procctl/Makefile
Directory Properties:
  stable/11/   (props changed)

Modified: stable/12/lib/libsysdecode/Makefile
==============================================================================
--- stable/12/lib/libsysdecode/Makefile	Wed May 13 20:37:46 2020	(r361019)
+++ stable/12/lib/libsysdecode/Makefile	Wed May 13 21:16:02 2020	(r361020)
@@ -120,6 +120,13 @@ CFLAGS+=-DPF
 # Workaround duplicate declarations in <netinet/ip_compat.h>
 CFLAGS.gcc.ioctl.c+= -Wno-redundant-decls
 
+# Ignore deprecation warning in <sys/pioctl.h>
+CFLAGS.clang.ioctl.c+= -Wno-\#warnings
+.if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40700
+CFLAGS.gcc.ioctl.c+= -Wno-cpp
+.endif
+
+CFLAGS.clang+=	${CFLAGS.clang.${.IMPSRC}}
 CFLAGS.gcc+=	${CFLAGS.gcc.${.IMPSRC}}
 
 DEPENDOBJS+=	tables.h

Modified: stable/12/sys/fs/procfs/procfs_ioctl.c
==============================================================================
--- stable/12/sys/fs/procfs/procfs_ioctl.c	Wed May 13 20:37:46 2020	(r361019)
+++ stable/12/sys/fs/procfs/procfs_ioctl.c	Wed May 13 21:16:02 2020	(r361020)
@@ -69,10 +69,53 @@ procfs_ioctl(PFS_IOCTL_ARGS)
 #ifdef COMPAT_FREEBSD6
 	int ival;
 #endif
+	static struct timeval lasttime;
+	static struct timeval interval = { .tv_sec = 1, .tv_usec = 0 };
 
 	KASSERT(p != NULL,
 	    ("%s() called without a process", __func__));
 	PROC_LOCK_ASSERT(p, MA_OWNED);
+
+	switch (cmd) {
+#if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43)
+	case _IOC(IOC_IN, 'p', 1, 0):
+#endif
+#ifdef COMPAT_FREEBSD6
+	case _IO('p', 1):
+#endif
+	case PIOCBIS:
+#if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43)
+	case _IOC(IOC_IN, 'p', 2, 0):
+#endif
+#ifdef COMPAT_FREEBSD6
+	case _IO('p', 2):
+#endif
+	case PIOCBIC:
+#if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43)
+	case _IOC(IOC_IN, 'p', 3, 0):
+#endif
+#ifdef COMPAT_FREEBSD6
+	case _IO('p', 3):
+#endif
+	case PIOCSFL:
+	case PIOCGFL:
+	case PIOCWAIT:
+	case PIOCSTATUS:
+#ifdef COMPAT_FREEBSD32
+	case PIOCWAIT32:
+	case PIOCSTATUS32:
+#endif
+#if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43)
+	case _IOC(IOC_IN, 'p', 5, 0):
+#endif
+#ifdef COMPAT_FREEBSD6
+	case _IO('p', 5):
+#endif
+	case PIOCCONT:
+		if (ratecheck(&lasttime, &interval) != 0)
+			gone_in(13, "procfs-based process debugging");
+		break;
+	}
 
 	error = 0;
 	switch (cmd) {

Modified: stable/12/sys/sys/pioctl.h
==============================================================================
--- stable/12/sys/sys/pioctl.h	Wed May 13 20:37:46 2020	(r361019)
+++ stable/12/sys/sys/pioctl.h	Wed May 13 21:16:02 2020	(r361020)
@@ -41,6 +41,10 @@
 #ifndef _SYS_PIOCTL_H
 # define _SYS_PIOCTL_H
 
+#ifndef _KERNEL
+#warning "<sys/pioctl.h> is deprecated, ptrace() should be used instead"
+#endif
+
 # include <sys/ioccom.h>
 
 struct procfs_status {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202005132116.04DLG3Ig023365>