git: 0a90043e63d3 - main - Remove 12.x ABI compat for kernel dump ioctls
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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.