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.

Reviewed by:	emaste
MFC after:	1 week
Relnotes:	yes
Differential Revision:	https://reviews.freebsd.org/D23822
This commit is contained in:
John Baldwin 2020-03-17 18:44:03 +00:00
parent 2e1dfb346f
commit 8d8a74e69e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=359047
3 changed files with 50 additions and 0 deletions

View File

@ -121,6 +121,9 @@ CFLAGS.gcc.ioctl.c+= -Wno-redundant-decls
CFLAGS.gcc+= ${CFLAGS.gcc.${.IMPSRC}}
# Ignore deprecation warning in <sys/pioctl.h>
CFLAGS.ioctl.c+= -Wno-\#warnings
DEPENDOBJS+= tables.h
tables.h: mktables
sh ${.CURDIR}/mktables ${SYSROOT:U${DESTDIR}}${INCLUDEDIR} ${.TARGET}

View File

@ -69,11 +69,54 @@ 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) {
#if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43)

View File

@ -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 {