git: 0a90043e63d3 - main - Remove 12.x ABI compat for kernel dump ioctls

From: Mitchell Horne <mhorne_at_FreeBSD.org>
Date: Fri, 15 Apr 2022 15:06:22 UTC
The branch main has been updated by mhorne:

URL: https://cgit.FreeBSD.org/src/commit/?id=0a90043e63d3d3fe0b39a05794af5ea0e0e05938

commit 0a90043e63d3d3fe0b39a05794af5ea0e0e05938
Author:     Mitchell Horne <mhorne@FreeBSD.org>
AuthorDate: 2022-04-14 22:44:39 +0000
Commit:     Mitchell Horne <mhorne@FreeBSD.org>
CommitDate: 2022-04-15 15:06:05 +0000

    Remove 12.x ABI compat for kernel dump ioctls
    
    This code was marked gone_in(14), so it can now be removed.
    
    The only consumer of this interface is dumpon(8). We do not maintain
    strict backwards compatibility for this utility because a) it
    can't/shouldn't be used from a jail or chroot and b) it is highly
    specific interface unique to FreeBSD. The host's (presumably more
    up-to-date) copy of dumpon(8) should be used to configure kernel dump
    devices.
    
    Reviewed by:    markj, emaste
    MFC after:      never
    Differential Revision:  https://reviews.freebsd.org/D34914
---
 sys/dev/null/null.c                  |  6 ---
 sys/geom/geom_dev.c                  | 21 ---------
 sys/netinet/netdump/netdump.h        | 11 -----
 sys/netinet/netdump/netdump_client.c | 86 ++----------------------------------
 sys/sys/disk.h                       | 13 ------
 5 files changed, 3 insertions(+), 134 deletions(-)

diff --git a/sys/dev/null/null.c b/sys/dev/null/null.c
index 54b648bbf086..9099f274e222 100644
--- a/sys/dev/null/null.c
+++ b/sys/dev/null/null.c
@@ -109,12 +109,6 @@ null_ioctl(struct cdev *dev __unused, u_long cmd, caddr_t data __unused,
 
 	error = 0;
 	switch (cmd) {
-#ifdef COMPAT_FREEBSD12
-	case DIOCSKERNELDUMP_FREEBSD12:
-		if (cmd == DIOCSKERNELDUMP_FREEBSD12)
-			gone_in(14, "FreeBSD 12.x ABI compat");
-		/* FALLTHROUGH */
-#endif
 	case DIOCSKERNELDUMP:
 		bzero(&kda, sizeof(kda));
 		kda.kda_index = KDA_REMOVE_ALL;
diff --git a/sys/geom/geom_dev.c b/sys/geom/geom_dev.c
index 574cfa9f0215..7bcab1645c4e 100644
--- a/sys/geom/geom_dev.c
+++ b/sys/geom/geom_dev.c
@@ -531,9 +531,6 @@ g_dev_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, struct thread
 	struct g_provider *pp;
 	off_t offset, length, chunk, odd;
 	int i, error;
-#ifdef COMPAT_FREEBSD12
-	struct diocskerneldump_arg kda_copy;
-#endif
 
 	cp = dev->si_drv2;
 	pp = cp->provider;
@@ -570,24 +567,6 @@ g_dev_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, struct thread
 		if (error == 0 && *(u_int *)data == 0)
 			error = ENOENT;
 		break;
-#ifdef COMPAT_FREEBSD12
-	case DIOCSKERNELDUMP_FREEBSD12:
-	    {
-		struct diocskerneldump_arg_freebsd12 *kda12;
-
-		gone_in(14, "FreeBSD 12.x ABI compat");
-
-		kda12 = (void *)data;
-		memcpy(&kda_copy, kda12, sizeof(kda_copy));
-		kda_copy.kda_index = (kda12->kda12_enable ?
-		    0 : KDA_REMOVE_ALL);
-
-		explicit_bzero(kda12, sizeof(*kda12));
-		/* Kludge to pass kda_copy to kda in fallthrough. */
-		data = (void *)&kda_copy;
-	    }
-	    /* FALLTHROUGH */
-#endif
 	case DIOCSKERNELDUMP:
 	    {
 		struct diocskerneldump_arg *kda;
diff --git a/sys/netinet/netdump/netdump.h b/sys/netinet/netdump/netdump.h
index aeb44c0b0d21..9ff04be798af 100644
--- a/sys/netinet/netdump/netdump.h
+++ b/sys/netinet/netdump/netdump.h
@@ -57,17 +57,6 @@
 #define	na_seqno	da_seqno
 #endif /* !_KERNEL */
 
-struct netdump_conf_freebsd12 {
-	struct diocskerneldump_arg_freebsd12 ndc12_kda;
-	char		ndc12_iface[IFNAMSIZ];
-	struct in_addr	ndc12_server;
-	struct in_addr	ndc12_client;
-	struct in_addr	ndc12_gateway;
-};
-
-#define	NETDUMPGCONF_FREEBSD12	_IOR('n', 1, struct netdump_conf_freebsd12)
-#define	NETDUMPSCONF_FREEBSD12	_IOW('n', 2, struct netdump_conf_freebsd12)
-
 #define	_PATH_NETDUMP	"/dev/netdump"
 
 #endif /* _NETINET_NETDUMP_H_ */
diff --git a/sys/netinet/netdump/netdump_client.c b/sys/netinet/netdump/netdump_client.c
index 5a1b10316860..b570fed139b9 100644
--- a/sys/netinet/netdump/netdump_client.c
+++ b/sys/netinet/netdump/netdump_client.c
@@ -496,62 +496,16 @@ static int
 netdump_ioctl(struct cdev *dev __unused, u_long cmd, caddr_t addr,
     int flags __unused, struct thread *td)
 {
-	struct diocskerneldump_arg kda_copy, *conf;
+	struct diocskerneldump_arg *conf;
 	struct dumperinfo dumper;
 	uint8_t *encryptedkey;
 	int error;
-#ifdef COMPAT_FREEBSD12
-	struct diocskerneldump_arg_freebsd12 *kda12;
-	struct netdump_conf_freebsd12 *conf12;
-#endif
 
 	conf = NULL;
 	error = 0;
 	NETDUMP_WLOCK();
 
 	switch (cmd) {
-#ifdef COMPAT_FREEBSD12
-		/*
-		 * Used by dumpon(8) in 12.x for clearing previous
-		 * configuration -- then NETDUMPSCONF_FREEBSD12 is used to
-		 * actually configure netdump.
-		 */
-	case DIOCSKERNELDUMP_FREEBSD12:
-		gone_in(14, "12.x ABI compatibility");
-
-		kda12 = (void *)addr;
-		if (kda12->kda12_enable) {
-			error = ENXIO;
-			break;
-		}
-		if (netdump_enabled())
-			netdump_unconfigure();
-		break;
-
-	case NETDUMPGCONF_FREEBSD12:
-		gone_in(14, "FreeBSD 12.x ABI compat");
-		conf12 = (void *)addr;
-
-		if (!netdump_enabled()) {
-			error = ENXIO;
-			break;
-		}
-		if (nd_conf.ndc_af != AF_INET) {
-			error = EOPNOTSUPP;
-			break;
-		}
-
-		if (nd_ifp != NULL)
-			strlcpy(conf12->ndc12_iface, nd_ifp->if_xname,
-			    sizeof(conf12->ndc12_iface));
-		memcpy(&conf12->ndc12_server, &nd_server,
-		    sizeof(conf12->ndc12_server));
-		memcpy(&conf12->ndc12_client, &nd_client,
-		    sizeof(conf12->ndc12_client));
-		memcpy(&conf12->ndc12_gateway, &nd_gateway,
-		    sizeof(conf12->ndc12_gateway));
-		break;
-#endif
 	case DIOCGKERNELDUMP:
 		conf = (void *)addr;
 		/*
@@ -573,43 +527,10 @@ netdump_ioctl(struct cdev *dev __unused, u_long cmd, caddr_t addr,
 		conf->kda_af = nd_conf.ndc_af;
 		conf = NULL;
 		break;
-
-#ifdef COMPAT_FREEBSD12
-	case NETDUMPSCONF_FREEBSD12:
-		gone_in(14, "FreeBSD 12.x ABI compat");
-
-		conf12 = (struct netdump_conf_freebsd12 *)addr;
-
-		_Static_assert(offsetof(struct diocskerneldump_arg, kda_server)
-		    == offsetof(struct netdump_conf_freebsd12, ndc12_server),
-		    "simplifying assumption");
-
-		memset(&kda_copy, 0, sizeof(kda_copy));
-		memcpy(&kda_copy, conf12,
-		    offsetof(struct diocskerneldump_arg, kda_server));
-
-		/* 12.x ABI could only configure IPv4 (INET) netdump. */
-		kda_copy.kda_af = AF_INET;
-		memcpy(&kda_copy.kda_server.in4, &conf12->ndc12_server,
-		    sizeof(struct in_addr));
-		memcpy(&kda_copy.kda_client.in4, &conf12->ndc12_client,
-		    sizeof(struct in_addr));
-		memcpy(&kda_copy.kda_gateway.in4, &conf12->ndc12_gateway,
-		    sizeof(struct in_addr));
-
-		kda_copy.kda_index =
-		    (conf12->ndc12_kda.kda12_enable ? 0 : KDA_REMOVE_ALL);
-
-		conf = &kda_copy;
-		explicit_bzero(conf12, sizeof(*conf12));
-		/* FALLTHROUGH */
-#endif
 	case DIOCSKERNELDUMP:
 		encryptedkey = NULL;
-		if (cmd == DIOCSKERNELDUMP) {
-			conf = (void *)addr;
-			memcpy(&kda_copy, conf, sizeof(kda_copy));
-		}
+		conf = (void *)addr;
+
 		/* Netdump only supports IP4 at this time. */
 		if (conf->kda_af != AF_INET) {
 			error = EPROTONOSUPPORT;
@@ -669,7 +590,6 @@ netdump_ioctl(struct cdev *dev __unused, u_long cmd, caddr_t addr,
 		error = ENOTTY;
 		break;
 	}
-	explicit_bzero(&kda_copy, sizeof(kda_copy));
 	if (conf != NULL)
 		explicit_bzero(conf, sizeof(*conf));
 	NETDUMP_WUNLOCK();
diff --git a/sys/sys/disk.h b/sys/sys/disk.h
index ce79dcad9566..8edcbe97a8f0 100644
--- a/sys/sys/disk.h
+++ b/sys/sys/disk.h
@@ -130,17 +130,6 @@ struct diocgattr_arg {
 
 #define	DIOCZONECMD	_IOWR('d', 143, struct disk_zone_args)
 
-struct diocskerneldump_arg_freebsd12 {
-	uint8_t		 kda12_enable;
-	uint8_t		 kda12_compression;
-	uint8_t		 kda12_encryption;
-	uint8_t		 kda12_key[KERNELDUMP_KEY_MAX_SIZE];
-	uint32_t	 kda12_encryptedkeysize;
-	uint8_t		*kda12_encryptedkey;
-};
-#define	DIOCSKERNELDUMP_FREEBSD12 \
-	_IOW('d', 144, struct diocskerneldump_arg_freebsd12)
-
 #ifndef WITHOUT_NETDUMP
 #include <net/if.h>
 #include <netinet/in.h>
@@ -184,8 +173,6 @@ struct diocskerneldump_arg {
 	union kd_ip	 kda_gateway;
 	uint8_t		 kda_af;
 };
-_Static_assert(__offsetof(struct diocskerneldump_arg, kda_iface) ==
-    sizeof(struct diocskerneldump_arg_freebsd12), "simplifying assumption");
 #define	DIOCSKERNELDUMP _IOW('d', 145, struct diocskerneldump_arg)
 	/*
 	 * Enable/Disable the device for kernel core dumps.