#
369433 |
|
06-Mar-2021 |
jkim |
libkvm: Plug couple of memory leaks and check possible calloc(3) failure
First, r204494 introduced dpcpu_off in struct __kvm and it was allocated from _kvm_dpcpu_init() but it was not free(3)'ed from kvm_close(3). Second, r291406 introduced kvm_nlist2(3) and converted kvm_nlist(3) to use the new function but it did not free the temporary buffer. Also, check possible calloc(3) failure while I am in the neighborhood.
MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D29019
(cherry picked from commit 645eaa2ccaed6eea801d07d6a092974fc1713896)
Git Hash: 859105d755ce0ead5ab356c67a6234b10650477f Git Author: jkim@FreeBSD.org
|
#
331722 |
|
29-Mar-2018 |
eadler |
Revert r330897:
This was intended to be a non-functional change. It wasn't. The commit message was thus wrong. In addition it broke arm, and merged crypto related code.
Revert with prejudice.
This revert skips files touched in r316370 since that commit was since MFCed. This revert also skips files that require $FreeBSD$ property changes.
Thank you to those who helped me get out of this mess including but not limited to gonzo, kevans, rgrimes.
Requested by: gjb (re)
|
#
330897 |
|
14-Mar-2018 |
eadler |
Partial merge of the SPDX changes
These changes are incomplete but are making it difficult to determine what other changes can/should be merged.
No objections from: pfg
|
#
316071 |
|
28-Mar-2017 |
ngie |
MFC r315686,r315688:
r315686:
kvm_geterr: handle `kd` == NULL in a deterministic/graceful manner
Return a NUL string instead of just working by accident with kvm_geterr(3) when MALLOC_PRODUCTION is disabled (I didn't confirm the MALLOC_PRODUCTION being enabled path).
Document the new explicit return behavior for kvm_geterr(3), as well as the previous implicit behavior, i.e., the buffer attached to returned via kvm_geterr(3) would be empty if a previous error hadn't been stored in `kd`.
r315688:
kvm_write: fix -Wcast-qual warning in pointer arithmetic argument
Cast buf to `const char *` when doing arithmetic operation to match `cp`'s type [1].
|
#
316039 |
|
27-Mar-2017 |
ngie |
MFC r315595,r315601,r315603,r315647:
r315595:
Remove a commented out line before kvm_getprocs(3)
The commented out return value for kvm_getprocs(3) was misleading -- the uncommented line is correct.
No content change
r315601:
kvm_open2(3): remove '*' when describing addr argument for `resolver`
As noted by vangyzen, with a similar issue in D10022, the pointer portion of the .Fa macro call is unnecessary, so remove the '*'.
r315603:
kvm_close(3): return `error` instead of blindly returning `0`
`error` is the accumulated error from previous close(2) calls.
This bug has been present since the libcall's import from 4.4BSD Lite (r1573).
Noticed by: vangyzen (D10022) Relnotes: yes
r315647:
Handle kd == NULL gracefully with kvm_close(3)
Don't segfault in kvm_close(3) if provided a NULL pointer. Instead, return -1 and set errno to EINVAL.
Document this new behavior explicitly.
|
#
315785 |
|
23-Mar-2017 |
ngie |
MFC r315360:
Return NULL instead of 0 on failure in _kvm_open, kvm_open{,2,files}
This is being done for the following reasons: - kvm_open(3), etc says they will return NULL. - NULL by definition is (void*)0 per POSIX, but can be redefined, depending on the compiler, etc.
|
#
312381 |
|
18-Jan-2017 |
avg |
MFC r310630: libkvm: support access to vmm guest memory, allow writes to fwmem and vmm
Sponsored by: Panzura
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
298896 |
|
01-May-2016 |
pfg |
lib: minor spelling fixes in comments.
No functional change.
|
#
298485 |
|
22-Apr-2016 |
ngie |
Fix up pointer issues with lib/libkvm
In particular, - avoid dereferencing NULL pointers - test pointers against NULL, not 0 - test for errout == NULL in the top-level functions (kvm_open, kvm_openfiles, kvm_open2, etc) - Replace a realloc and free on failure with reallocf
Found with: devel/cocchinelle
Differential Revision: https://reviews.freebsd.org/D5954 MFC after: 1 week Reviewed by: jhb Sponsored by: EMC / Isilon Storage Division
|
#
291406 |
|
27-Nov-2015 |
jhb |
Add support to libkvm for reading vmcores from other architectures. - Add a kvaddr_type to represent kernel virtual addresses instead of unsigned long. - Add a struct kvm_nlist which is a stripped down version of struct nlist that uses kvaddr_t for n_value. - Add a kvm_native() routine that returns true if an open kvm descriptor is for a native kernel and memory image. - Add a kvm_open2() function similar to kvm_openfiles(). It drops the unused 'swapfile' argument and adds a new function pointer argument for a symbol resolving function. Native kernels still use _fdnlist() from libc to resolve symbols if a resolver function is not supplied, but cross kernels require a resolver. - Add a kvm_nlist2() function similar to kvm_nlist() except that it uses struct kvm_nlist instead of struct nlist. - Add a kvm_read2() function similar to kvm_read() except that it uses kvaddr_t instead of unsigned long for the kernel virtual address. - Add a new kvm_arch switch of routines needed by a vmcore backend. Each backend is responsible for implementing kvm_read2() for a given vmcore format. - Use libelf to read headers from ELF kernels and cores (except for powerpc cores). - Add internal helper routines for the common page offset hash table used by the minidump backends. - Port all of the existing kvm backends to implement a kvm_arch switch and to be cross-friendly by using private constants instead of ones that vary by platform (e.g. PAGE_SIZE). Static assertions are present when a given backend is compiled natively to ensure the private constants match the real ones. - Enable all of the existing vmcore backends on all platforms. This means that libkvm on any platform should be able to perform KVA translation and read data from a vmcore of any platform.
Tested on: amd64, i386, sparc64 (marius) Differential Revision: https://reviews.freebsd.org/D3341
|
#
291372 |
|
26-Nov-2015 |
jhb |
Remove trailing whitespace.
|
#
260022 |
|
28-Dec-2013 |
marcel |
Allow building a cross libkvm by setting TARGET_ARCH. The library so produced will be called libkvm-${ARCH} instead of libkvm. This allows installing it alongside the native version. For symbol lookups, use ps_pglobal_lookup() instead of __fdnlist() when building a cross libkvm. It is assumed that the cross tool that uses the cross libkvm also provides an implementation for this proc_services function.
Note that this commit does not change any of the architecture-specific code for cross-compilation.
|
#
250231 |
|
04-May-2013 |
jilles |
libkvm: Make second /dev/null file descriptor close-on-exec as well.
MFC after: 1 week
|
#
250230 |
|
04-May-2013 |
jilles |
libkvm: Use O_CLOEXEC instead of separate fcntl(F_SETFD) call.
MFC after: 1 week
|
#
218196 |
|
02-Feb-2011 |
uqs |
libkvm: fix logic inversion introduced with last commit
Reported by: Brandon Gooch <jamesbrandongooch@gmail.com> Pointy hat to: uqs
|
#
217744 |
|
23-Jan-2011 |
uqs |
libkvm code janitoring
- make WARNS=6 clean for archs w/o strict alignment requirments - add const, ANSIfy, remove unused vars, cast types for comparison - thanks to differing definitions of VM_MIN_ADDRESS across our archs, we need to trick the compiler to not complain about signedness. We could either fix VM_MIN_ADDRESS to always be a simple integer or make the check conditional on $ARCH.
Closes PRs: kern/42386, kern/83364 Reviewed by: bde
|
#
215315 |
|
14-Nov-2010 |
dim |
Similar to sys/net/vnet.h, define the linker set name for sys/sys/pcpu.h as a macro, and use it instead of literal strings.
|
#
204494 |
|
28-Feb-2010 |
rwatson |
A first cut at teaching libkvm how to deal with dynamic per-CPU storage (DPCPU):
A new API, kvm_dpcpu_setcpu(3), selects the active CPU for the purposes of DPCPU. Calls to kvm_nlist(3) will automatically translate DPCPU symbols and return a pointer to the current CPU's version of the data. Consumers needing to read the same symbol on several CPUs will invoke a series of setcpu/nlist calls, one per CPU of interest.
This addition makes it possible for tools like netstat(1) to query the values of DPCPU variables during crashdump analysis, and is based on similar code handling virtualized global variables.
MFC after: 1 week Sponsored by: Juniper Networks, Inc.
|
#
195838 |
|
23-Jul-2009 |
bz |
Make libkvm work on live systems and crashdumps with and without VIMAGE virtualization in the kernel.
If we cannot resolve a symbol try to see if we can find it with prefix of the virtualized subsystem, currently only "vnet_entry" by identifying either the vnet of the current process for a live system or the vnet of proc0 (or of dumptid if compiled in a non-default way).
The way this is done currently allows us to only touch libkvm but no single application. Once we are going to virtualize more subsystems we will have to review this decision for better scaling.
Submitted by: rwatson (initial version of kvm_vnet.c, lots of ideas) Reviewed by: rwatson Approved by: re (kib)
|
#
183986 |
|
17-Oct-2008 |
delphij |
Reduce code duplication: use calloc() intead of malloc() and memset afterward.
|
#
175243 |
|
11-Jan-2008 |
delphij |
Plug memory leaks that is observed when argbuf or argspc is used in the context.
Submitted by: Michal Vranek <michal.vranek seznam cz> PR: bin/118380 MFC after: 1 month
|
#
170772 |
|
15-Jun-2007 |
simokawa |
Re-enable raw dump format support on i386 and amd64 for /dev/fwmem.
|
#
165888 |
|
08-Jan-2007 |
imp |
Remove the advertising clause. UCB did this some time ago, but these files were never updated to reflect that.
MFC After: 2 days
|
#
162462 |
|
20-Sep-2006 |
wkoszek |
Don't forget to set internal error message in kvm_nlist().
Approved by: cognet (mentor)
|
#
154404 |
|
15-Jan-2006 |
csjp |
Validate that the supplied file is not empty before trying mmap(2) it and access the pages associated with it.
Submitted by: Wojciech A. Koszek PR: bin/91411 MFC after: 1 week
|
#
147672 |
|
29-Jun-2005 |
peter |
Support crash dumps > 4GB in size on 32 bit platforms. _kvm_kvatop() returned an lseek offset in a "u_long *" value, which can't express >4GB offsets on 32 bit machines (eg: PAE). Change to "off_t *" for all.
Support ELF crashdumps on i386 and amd64.
Support PAE crashdumps on i386. This is done by auto-detecting the presence of the IdlePDPT which means that PAE is active.
I used Marcel's _kvm_pa2off strategy and ELF header reader for ELF support on amd64. Paul Saab ported the amd64 changes to i386 and we implemented the PAE support from there.
Note that gdb6 in the src tree uses whatever libkvm supports. If you want to debug an old crash dump, you might want to keep an old libkvm.so handy and use LD_PRELOAD or the like. This does not detect the old raw dump format.
Approved by: re
|
#
130246 |
|
08-Jun-2004 |
stefanf |
Avoid assignments to cast expressions.
Reviewed by: md5 Approved by: das (mentor)
|
#
121678 |
|
29-Oct-2003 |
simokawa |
Allow to specify a character special device as a core file.
This enable us to use /dev/fwmem* as a core file. 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 You need to set target EUI64 in hw.firewire.fwmem.eui64_hi/lo before opening the device. On the target arch, (PCI) bus address must be equivalent to physical address. (We cannot use this for sparc64 because of IOMMU.)
No objection in: -audit
|
#
118284 |
|
31-Jul-2003 |
phk |
Remove unnecssary <vm/swap_pager.h> includes.
These were probably not cleaned up back in whatever murky past these files were split into separate files.
|
#
103224 |
|
11-Sep-2002 |
nectar |
In kvm_openfiles/kvm_open, mark the file descriptors as close-on-exec. Applications can not do this themselves, as the descriptors are hidden behind the opaque `kvm_t' type.
|
#
97407 |
|
28-May-2002 |
alfred |
Assume __STDC__, remove non-__STDC__ code.
Submitted by: keramida
|
#
92917 |
|
21-Mar-2002 |
obrien |
Remove __P() usage.
|
#
92913 |
|
21-Mar-2002 |
obrien |
Remove 'register' keyword.
|
#
89640 |
|
22-Jan-2002 |
ru |
Finish cleanup in kvm.c revisions 1.10 and 1.11 -- mark sf (swapfile) argument to kvm_open() and kvm_openfiles() as unused.
BSD didn't read swap since kvm.c CSRG revision 5.21 (u-area is pageable under new VM. no need to read from swap.)
The old !NEWVM code was removed in CSRG revision 5.23 (~ten years ago).
|
#
84768 |
|
10-Oct-2001 |
bde |
Compensate for "Compensate for header dethreading" by backing it out.
|
#
83551 |
|
16-Sep-2001 |
dillon |
Implement __FBSDID()
|
#
76176 |
|
01-May-2001 |
markm |
Compensate for header dethreading.
|
#
64233 |
|
04-Aug-2000 |
kris |
Limit the amount of data copied to the error buffer to _POSIX2_LINE_MAX. This is the documented size which the user-provided buffer must be.
|
#
58870 |
|
31-Mar-2000 |
nectar |
Change the return value of kvm_read/kvm_write to be -1 on error, to match the documented interface.
Previously it returned 0 on error.
PR: bin/10511
|
#
58642 |
|
26-Mar-2000 |
obrien |
-Wall, which caught a real bug where buflen wasn't being set properly.
|
#
55127 |
|
27-Dec-1999 |
peter |
Use kldsym(2) to lookup symbol values. This avoids the kvm_mkdb juggling and is module aware. Yes, this means that kvm_nlist(3) will find symbols in loaded modules. The emulation of the nlist struct is pretty crude but seems to work well enough for all the users in the tree that I found.
|
#
52117 |
|
11-Oct-1999 |
peter |
Delete the sf (swapfile) arg to an internal function that used to point to /dev/drum but has not been used for a LONG time. Add $FreeBSD$
|
#
50331 |
|
25-Aug-1999 |
bde |
Don't open the swap file. The open descriptor for it hasn't been used for over 5 years since we switched to using procfs for kvm_uread(). This cleanup was motivated by recent breakage of the default swap file (/dev/drum) when swapon() has not been called.
|
#
37316 |
|
30-Jun-1998 |
phk |
Allow /dev/null as path for the "/dev/mem" file, and assume that people know what they're doing if they do that. This will allow ps to use the kvm_proc.c bits without having access to /dev/mem.
Fix kvm_proc.c to not need /dev/mem for access to argv/envp
|
#
19629 |
|
11-Nov-1996 |
ache |
kvm_malloc: When malloc fails. don't try to memset NULL pointer, it cause core dump Replace malloc+memset with calloc, theoretically it can do some optimization of zeroing process internally Improve error diagnostic
|
#
12683 |
|
09-Dec-1995 |
peter |
phkmalloc strikes again! :-) Another use of un-cleared returns from malloc squashed...
|
#
8870 |
|
30-May-1995 |
rgrimes |
Remove trailing whitespace.
|
#
6701 |
|
25-Feb-1995 |
bde |
Fix previous fix to agree with the man page - don't report errors in kvm_open() if errstr is NULL.
|
#
6683 |
|
24-Feb-1995 |
phk |
Remove some unused variables and fix two blatant core dump triggers.
|
#
3041 |
|
23-Sep-1994 |
wollman |
Get rid of _PATH_UNIX completely; use getbootfile(3) instead.
DANGER WILL ROBINSON! _PATH_UNIX is currently defined as the literal string "don't use this". I am of two minds about this myself, but wanted to get something into the tree as quickly as possible.
|
#
1856 |
|
05-Aug-1994 |
dg |
Converted 'vmunix' to 'kernel'.
|
#
1574 |
|
27-May-1994 |
rgrimes |
This commit was generated by cvs2svn to compensate for changes in r1573, which included commits to RCS files with non-trunk default branches.
|
#
1573 |
|
27-May-1994 |
rgrimes |
BSD 4.4 Lite Lib Sources
|