summaryrefslogtreecommitdiffstats
path: root/freebsd/lib
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-10-23 08:22:44 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-10-25 08:38:45 +0200
commitb3169c2a6a01cc0555181f61b5254dd2c1f1c310 (patch)
treef84d67c9d17b2625481513fa6dc85929fdb08442 /freebsd/lib
parentUpdate rtems_waf (diff)
downloadrtems-libbsd-b3169c2a6a01cc0555181f61b5254dd2c1f1c310.tar.bz2
Update to FreeBSD head 2018-10-23
Git mirror commit 59f44d20be3f99d181ca742e636d45fc39ec982b. This commit updates OpenSSL to version 1.1.1. This required an update of racoon which uses some internal stuff from OpenSSL and seems to be mostly unmaintained, e.g. there is update in the FreeBSD ports to cope with OpenSSL 1.1.1. Update #3472.
Diffstat (limited to 'freebsd/lib')
-rw-r--r--freebsd/lib/libc/net/nsdispatch.c14
-rw-r--r--freebsd/lib/libc/net/nslexer.l1
-rw-r--r--freebsd/lib/libmemstat/memstat_malloc.c66
3 files changed, 53 insertions, 28 deletions
diff --git a/freebsd/lib/libc/net/nsdispatch.c b/freebsd/lib/libc/net/nsdispatch.c
index 4b74407c..1c7612f1 100644
--- a/freebsd/lib/libc/net/nsdispatch.c
+++ b/freebsd/lib/libc/net/nsdispatch.c
@@ -505,9 +505,19 @@ nss_load_module(const char *source, nss_module_register_fn reg_fn)
*/
mod.handle = nss_builtin_handle;
fn = reg_fn;
- } else if (!is_dynamic())
+ } else if (!is_dynamic()) {
goto fin;
- else {
+ } else if (strcmp(source, NSSRC_CACHE) == 0 ||
+ strcmp(source, NSSRC_COMPAT) == 0 ||
+ strcmp(source, NSSRC_DB) == 0 ||
+ strcmp(source, NSSRC_DNS) == 0 ||
+ strcmp(source, NSSRC_FILES) == 0 ||
+ strcmp(source, NSSRC_NIS) == 0) {
+ /*
+ * Avoid calling dlopen(3) for built-in modules.
+ */
+ goto fin;
+ } else {
if (snprintf(buf, sizeof(buf), "nss_%s.so.%d", mod.name,
NSS_MODULE_INTERFACE_VERSION) >= (int)sizeof(buf))
goto fin;
diff --git a/freebsd/lib/libc/net/nslexer.l b/freebsd/lib/libc/net/nslexer.l
index 17cfef8a..946aace3 100644
--- a/freebsd/lib/libc/net/nslexer.l
+++ b/freebsd/lib/libc/net/nslexer.l
@@ -50,6 +50,7 @@ static char *rcsid =
%}
+%option never-interactive
%option noinput
%option nounput
%option yylineno
diff --git a/freebsd/lib/libmemstat/memstat_malloc.c b/freebsd/lib/libmemstat/memstat_malloc.c
index b252a2d4..3d7daaac 100644
--- a/freebsd/lib/libmemstat/memstat_malloc.c
+++ b/freebsd/lib/libmemstat/memstat_malloc.c
@@ -282,15 +282,28 @@ kread_symbol(kvm_t *kvm, int index, void *address, size_t size,
return (0);
}
+static int
+kread_zpcpu(kvm_t *kvm, u_long base, void *buf, size_t size, int cpu)
+{
+ ssize_t ret;
+
+ ret = kvm_read_zpcpu(kvm, base, buf, size, cpu);
+ if (ret < 0)
+ return (MEMSTAT_ERROR_KVM);
+ if ((size_t)ret != size)
+ return (MEMSTAT_ERROR_KVM_SHORTREAD);
+ return (0);
+}
+
int
memstat_kvm_malloc(struct memory_type_list *list, void *kvm_handle)
{
struct memory_type *mtp;
void *kmemstatistics;
- int hint_dontsearch, j, mp_maxcpus, ret;
+ int hint_dontsearch, j, mp_maxcpus, mp_ncpus, ret;
char name[MEMTYPE_MAXNAME];
- struct malloc_type_stats *mts, *mtsp;
- struct malloc_type_internal *mtip;
+ struct malloc_type_stats mts;
+ struct malloc_type_internal mti, *mtip;
struct malloc_type type, *typep;
kvm_t *kvm;
@@ -323,17 +336,12 @@ memstat_kvm_malloc(struct memory_type_list *list, void *kvm_handle)
return (-1);
}
- mts = malloc(sizeof(struct malloc_type_stats) * mp_maxcpus);
- if (mts == NULL) {
- list->mtl_error = MEMSTAT_ERROR_NOMEMORY;
- return (-1);
- }
+ mp_ncpus = kvm_getncpus(kvm);
for (typep = kmemstatistics; typep != NULL; typep = type.ks_next) {
ret = kread(kvm, typep, &type, sizeof(type), 0);
if (ret != 0) {
_memstat_mtl_empty(list);
- free(mts);
list->mtl_error = ret;
return (-1);
}
@@ -341,7 +349,6 @@ memstat_kvm_malloc(struct memory_type_list *list, void *kvm_handle)
MEMTYPE_MAXNAME);
if (ret != 0) {
_memstat_mtl_empty(list);
- free(mts);
list->mtl_error = ret;
return (-1);
}
@@ -351,11 +358,9 @@ memstat_kvm_malloc(struct memory_type_list *list, void *kvm_handle)
* kernel's, we populate our own array.
*/
mtip = type.ks_handle;
- ret = kread(kvm, mtip->mti_stats, mts, mp_maxcpus *
- sizeof(struct malloc_type_stats), 0);
+ ret = kread(kvm, mtip, &mti, sizeof(mti), 0);
if (ret != 0) {
_memstat_mtl_empty(list);
- free(mts);
list->mtl_error = ret;
return (-1);
}
@@ -369,7 +374,6 @@ memstat_kvm_malloc(struct memory_type_list *list, void *kvm_handle)
name, mp_maxcpus);
if (mtp == NULL) {
_memstat_mtl_empty(list);
- free(mts);
list->mtl_error = MEMSTAT_ERROR_NOMEMORY;
return (-1);
}
@@ -379,24 +383,34 @@ memstat_kvm_malloc(struct memory_type_list *list, void *kvm_handle)
* be kept in sync.
*/
_memstat_mt_reset_stats(mtp, mp_maxcpus);
- for (j = 0; j < mp_maxcpus; j++) {
- mtsp = &mts[j];
- mtp->mt_memalloced += mtsp->mts_memalloced;
- mtp->mt_memfreed += mtsp->mts_memfreed;
- mtp->mt_numallocs += mtsp->mts_numallocs;
- mtp->mt_numfrees += mtsp->mts_numfrees;
- mtp->mt_sizemask |= mtsp->mts_size;
+ for (j = 0; j < mp_ncpus; j++) {
+ ret = kread_zpcpu(kvm, (u_long)mti.mti_stats, &mts,
+ sizeof(mts), j);
+ if (ret != 0) {
+ _memstat_mtl_empty(list);
+ list->mtl_error = ret;
+ return (-1);
+ }
+ mtp->mt_memalloced += mts.mts_memalloced;
+ mtp->mt_memfreed += mts.mts_memfreed;
+ mtp->mt_numallocs += mts.mts_numallocs;
+ mtp->mt_numfrees += mts.mts_numfrees;
+ mtp->mt_sizemask |= mts.mts_size;
mtp->mt_percpu_alloc[j].mtp_memalloced =
- mtsp->mts_memalloced;
+ mts.mts_memalloced;
mtp->mt_percpu_alloc[j].mtp_memfreed =
- mtsp->mts_memfreed;
+ mts.mts_memfreed;
mtp->mt_percpu_alloc[j].mtp_numallocs =
- mtsp->mts_numallocs;
+ mts.mts_numallocs;
mtp->mt_percpu_alloc[j].mtp_numfrees =
- mtsp->mts_numfrees;
+ mts.mts_numfrees;
mtp->mt_percpu_alloc[j].mtp_sizemask =
- mtsp->mts_size;
+ mts.mts_size;
+ }
+ for (; j < mp_maxcpus; j++) {
+ bzero(&mtp->mt_percpu_alloc[j],
+ sizeof(mtp->mt_percpu_alloc[0]));
}
mtp->mt_bytes = mtp->mt_memalloced - mtp->mt_memfreed;