kvm.c patch
Hidetoshi Shimokawa
simokawa at sat.t.u-tokyo.ac.jp
Fri Oct 24 00:26:26 PDT 2003
Hi,
Does anyone object to committing this patch to the tree?
This patch allows kvm_open() to open any raw devices as a crush dump.
This enables us to use /dev/fwmem* as a core file.
(at least for i386 with hw.firewire.fwmem.eui64_hi/lo)
e.g.
ps -M /dev/fwmem0.0 -N kernel.debug
dmesg -M /dev/fwmem0.0 -N kernel.debug
gdb -k -c /dev/fwmem0.0 kernel.debug
My concern is setu(g)ided command which is linked with libkvm.
As far as I checked, there are only commands setgided with kmem, and
the group kmem is allowed to access only /dev/mem and /dev/kmem for
default installation.
--- //depot/vendor/freebsd/src/lib/libkvm/kvm.c 2003/07/31 16:38:08
+++ //depot/user/simokawa/firewire/lib/libkvm/kvm.c 2003/10/08 09:29:09
@@ -192,11 +192,8 @@
*/
if (strcmp(mf, _PATH_DEVNULL) == 0) {
kd->vmfd = open(_PATH_DEVNULL, O_RDONLY);
- } else if (strcmp(mf, _PATH_MEM) != 0) {
- _kvm_err(kd, kd->program,
- "%s: not physical memory device", mf);
- goto failed;
- } else {
+ return (kd);
+ } else if (strcmp(mf, _PATH_MEM) == 0) {
if ((kd->vmfd = open(_PATH_KMEM, flag)) < 0) {
_kvm_syserr(kd, kd->program, "%s", _PATH_KMEM);
goto failed;
@@ -205,24 +202,24 @@
_kvm_syserr(kd, kd->program, "%s", _PATH_KMEM);
goto failed;
}
+ return (kd);
}
- } else {
- /*
- * This is a crash dump.
- * Initialize the virtual address translation machinery,
- * but first setup the namelist fd.
- */
- if ((kd->nlfd = open(uf, O_RDONLY, 0)) < 0) {
- _kvm_syserr(kd, kd->program, "%s", uf);
- goto failed;
- }
- if (fcntl(kd->nlfd, F_SETFD, FD_CLOEXEC) < 0) {
- _kvm_syserr(kd, kd->program, "%s", uf);
- goto failed;
- }
- if (_kvm_initvtop(kd) < 0)
- goto failed;
+ }
+ /*
+ * This is a crash dump.
+ * Initialize the virtual address translation machinery,
+ * but first setup the namelist fd.
+ */
+ if ((kd->nlfd = open(uf, O_RDONLY, 0)) < 0) {
+ _kvm_syserr(kd, kd->program, "%s", uf);
+ goto failed;
+ }
+ if (fcntl(kd->nlfd, F_SETFD, FD_CLOEXEC) < 0) {
+ _kvm_syserr(kd, kd->program, "%s", uf);
+ goto failed;
}
+ if (_kvm_initvtop(kd) < 0)
+ goto failed;
return (kd);
failed:
/*
/\ Hidetoshi Shimokawa
\/ simokawa at sat.t.u-tokyo.ac.jp
PGP public key: http://www.sat.t.u-tokyo.ac.jp/~simokawa/pgp.html
More information about the freebsd-audit
mailing list