summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2019-09-04 12:19:44 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2019-09-04 12:19:44 +0000
commitf03504a3d8ff76e9b29505fc561f7ac625712180 (patch)
tree8f2df3e2f797a1c61173c20ce2ae7e1f33de961f
parent1ed9823d08fd2b08c4d4f0d9a57075899d36b295 (diff)
parenta8ea0c9dd566453d9b69eab5f863930da9d0c4ae (diff)
downloadillumos-joyent-f03504a3d8ff76e9b29505fc561f7ac625712180.tar.gz
[illumos-gate merge]
commit a8ea0c9dd566453d9b69eab5f863930da9d0c4ae 11584 ::xcall would be useful commit cd4bec9bcc617ecbc586bb4c2feb7096df189b13 11645 tst.utf8probefunc.ksh needs to specify -m32 consistently commit bf10ed2ef23d4a6289a032ea1be97e21e6258009 11594 ldterm: cast between incompatible function types commit 2575b44147c38559884d4c042492bb21783cb486 11595 ufs: cast between incompatible function types commit 571982554c7574488834ef19f61c63ee15df365c 11596 bufmod: cast between incompatible function types commit e8e33323835377cff0a2d52f0c1c7b1847215110 11597 pckt: cast between incompatible function types commit d9c462b2dd4afc98da9074ea6ace57ecd8035001 11598 pfmod: cast between incompatible function types commit fd121eb4d1d06ebe9153101f4c80d19c65452dd2 11599 ptem: cast between incompatible function types commit b6ed8f224ac74c5a605c334c1cf1e093427251f4 11642 getresponse.c: memory leak in init_yes(), add fini_yes(). commit 51c48e9829e8ff3cb6bfb9b8ad96b995abedf063 11638 zfs mmp test bugs commit 4942e22259992130a6f34737c52dfbd4f4d5b151 11644 kmf_openssl: NULL pointer issues commit dbdc225a81ccef01e9d416169099b09ddbc06ea1 11530 badseg test creates cores commit 89cb8ffb5df88f95defaae8f0f4f0c67ccd9d17e 11643 panic when detaching vioif commit 9e59ac1c9bffd2ba0d7192da3c5f7d1c3444991a 11538 i86pc: unix should always build dboot as 32-bit
-rw-r--r--usr/src/cmd/dtrace/test/tst/common/pid/tst.utf8probefunc.ksh4
-rw-r--r--usr/src/cmd/mdb/i86pc/modules/unix/unix.c4
-rw-r--r--usr/src/common/util/getresponse.c19
-rw-r--r--usr/src/common/util/getresponse.h3
-rw-r--r--usr/src/lib/libkmf/plugins/kmf_openssl/common/openssl_spi.c258
-rw-r--r--usr/src/pkg/manifests/system-test-ostest.mf1
-rw-r--r--usr/src/test/os-tests/tests/i386/Makefile8
-rw-r--r--usr/src/test/os-tests/tests/i386/badseg.sh45
-rw-r--r--usr/src/test/os-tests/tests/i386/badseg_exec.c (renamed from usr/src/test/os-tests/tests/i386/badseg.c)16
-rwxr-xr-xusr/src/test/zfs-tests/tests/functional/mmp/mmp_on_off.ksh5
-rwxr-xr-xusr/src/test/zfs-tests/tests/functional/mmp/mmp_on_thread.ksh5
-rwxr-xr-xusr/src/test/zfs-tests/tests/functional/mmp/mmp_on_uberblocks.ksh5
-rw-r--r--usr/src/uts/common/fs/ufs/ufs_vnops.c25
-rw-r--r--usr/src/uts/common/io/bufmod.c27
-rw-r--r--usr/src/uts/common/io/ldterm.c62
-rw-r--r--usr/src/uts/common/io/pckt.c44
-rw-r--r--usr/src/uts/common/io/pfmod.c23
-rw-r--r--usr/src/uts/common/io/ptem.c35
-rw-r--r--usr/src/uts/common/io/vioif/vioif.c9
-rw-r--r--usr/src/uts/common/io/vioif/vioif.h1
-rw-r--r--usr/src/uts/common/io/virtio/virtio_main.c4
-rw-r--r--usr/src/uts/i86pc/Makefile.rules3
22 files changed, 307 insertions, 299 deletions
diff --git a/usr/src/cmd/dtrace/test/tst/common/pid/tst.utf8probefunc.ksh b/usr/src/cmd/dtrace/test/tst/common/pid/tst.utf8probefunc.ksh
index c5d4abfb59..927028e9e0 100644
--- a/usr/src/cmd/dtrace/test/tst/common/pid/tst.utf8probefunc.ksh
+++ b/usr/src/cmd/dtrace/test/tst/common/pid/tst.utf8probefunc.ksh
@@ -11,7 +11,7 @@
#
#
-# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+# Copyright 2019 Joyent, Inc.
#
DIR=/var/tmp/dtest.$$
@@ -43,7 +43,7 @@ fi
# There's the right way, the wrong way, and the Max Power way!
#
cat foo.orig.s | sed 's/foo/foø/g' > foo.s
-gcc -o foo foo.s
+gcc -m32 -o foo foo.s
if ! dtrace -n 'pid$target:a.out:f*:entry{printf("probefunc: %s\n", \
probefunc)}' -qc ./foo ; then
diff --git a/usr/src/cmd/mdb/i86pc/modules/unix/unix.c b/usr/src/cmd/mdb/i86pc/modules/unix/unix.c
index 59678052c2..bd7dfda6ed 100644
--- a/usr/src/cmd/mdb/i86pc/modules/unix/unix.c
+++ b/usr/src/cmd/mdb/i86pc/modules/unix/unix.c
@@ -803,7 +803,7 @@ scalehrtime_help(void)
/*ARGSUSED*/
static int
-scalehrtime_cmd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
+scalehrtime_dcmd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
{
uint32_t nsec_scale;
hrtime_t tsc = addr, hrt, tsc_last, base, mult = 1;
@@ -1013,7 +1013,7 @@ static const mdb_dcmd_t dcmds[] = {
mfntopfn_dcmd },
{ "memseg_list", ":", "show memseg list", memseg_list },
{ "scalehrtime", ":[-a|-r]", "scale an unscaled high-res time",
- scalehrtime_cmd, scalehrtime_help },
+ scalehrtime_dcmd, scalehrtime_help },
{ "x86_featureset", NULL, "dump the x86_featureset vector",
x86_featureset_dcmd },
{ "xcall", ":", "print CPU cross-call state", xcall_dcmd, xcall_help },
diff --git a/usr/src/common/util/getresponse.c b/usr/src/common/util/getresponse.c
index 6bde237a14..db070816cb 100644
--- a/usr/src/common/util/getresponse.c
+++ b/usr/src/common/util/getresponse.c
@@ -40,13 +40,9 @@
#define DEFAULT_NOEXPR "^[nN]"
#define FREE_MEM \
- if (yesstr) \
free(yesstr); \
- if (nostr) \
free(nostr); \
- if (yesexpr) \
free(yesexpr); \
- if (noexpr) \
free(noexpr)
#define SET_DEFAULT_STRS \
@@ -112,9 +108,24 @@ init_yes(void)
SET_DEFAULT_STRS;
fallback = 1;
}
+ if (fallback == 0) {
+ free(yesexpr);
+ free(noexpr);
+ }
return (0);
}
+void
+fini_yes(void)
+{
+ free(yesstr);
+ free(nostr);
+ yesstr = DEFAULT_YESSTR;
+ nostr = DEFAULT_NOSTR;
+ regfree(&preg_yes);
+ regfree(&preg_no);
+}
+
static int
yes_no(int (*func)(char *))
{
diff --git a/usr/src/common/util/getresponse.h b/usr/src/common/util/getresponse.h
index cb63d634fa..dd77af8ad2 100644
--- a/usr/src/common/util/getresponse.h
+++ b/usr/src/common/util/getresponse.h
@@ -26,8 +26,6 @@
#ifndef _UTIL_GETRESPONSE_H
#define _UTIL_GETRESPONSE_H
-#pragma ident "%Z%%M% %I% %E% SMI"
-
/*
* Declarations for getresponse().
*/
@@ -41,6 +39,7 @@ extern "C" {
extern char *yesstr;
extern char *nostr;
extern int init_yes(void);
+extern void fini_yes(void);
extern int yes(void);
extern int yes_check(char *);
extern int no(void);
diff --git a/usr/src/lib/libkmf/plugins/kmf_openssl/common/openssl_spi.c b/usr/src/lib/libkmf/plugins/kmf_openssl/common/openssl_spi.c
index f65274f7c2..142fa13f4a 100644
--- a/usr/src/lib/libkmf/plugins/kmf_openssl/common/openssl_spi.c
+++ b/usr/src/lib/libkmf/plugins/kmf_openssl/common/openssl_spi.c
@@ -5,8 +5,8 @@
*/
/*
* Copyright (c) 2012, OmniTI Computer Consulting, Inc. All rights reserved.
- * Copyright 2018 OmniOS Community Edition (OmniOSce) Association.
* Copyright 2018 RackTop Systems.
+ * Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
*/
/*
* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
@@ -151,7 +151,6 @@ DECLARE_STACK_OF(EVP_PKEY)
(free_func))
#else
-/* LINTED E_STATIC_UNUSED */
DEFINE_STACK_OF(EVP_PKEY)
#endif
@@ -159,116 +158,85 @@ mutex_t init_lock = DEFAULTMUTEX;
static int ssl_initialized = 0;
static BIO *bio_err = NULL;
-static int
-test_for_file(char *, mode_t);
-static KMF_RETURN
-openssl_parse_bag(PKCS12_SAFEBAG *, char *, int,
+static int test_for_file(char *, mode_t);
+
+static KMF_RETURN openssl_parse_bag(PKCS12_SAFEBAG *, char *, int,
STACK_OF(EVP_PKEY) *, STACK_OF(X509) *);
-static KMF_RETURN
-local_export_pk12(KMF_HANDLE_T, KMF_CREDENTIAL *, int, KMF_X509_DER_CERT *,
- int, KMF_KEY_HANDLE *, char *);
+static KMF_RETURN local_export_pk12(KMF_HANDLE_T, KMF_CREDENTIAL *, int,
+ KMF_X509_DER_CERT *, int, KMF_KEY_HANDLE *, char *);
static KMF_RETURN set_pkey_attrib(EVP_PKEY *, ASN1_TYPE *, int);
-static KMF_RETURN
-extract_pem(KMF_HANDLE *, char *, char *, KMF_BIGINT *, char *,
- CK_UTF8CHAR *, CK_ULONG, EVP_PKEY **, KMF_DATA **, int *);
+static KMF_RETURN extract_pem(KMF_HANDLE *, char *, char *, KMF_BIGINT *,
+ char *, CK_UTF8CHAR *, CK_ULONG, EVP_PKEY **, KMF_DATA **, int *);
-static KMF_RETURN
-kmf_load_cert(KMF_HANDLE *, char *, char *, KMF_BIGINT *, KMF_CERT_VALIDITY,
- char *, KMF_DATA *);
+static KMF_RETURN kmf_load_cert(KMF_HANDLE *, char *, char *, KMF_BIGINT *,
+ KMF_CERT_VALIDITY, char *, KMF_DATA *);
-static KMF_RETURN
-load_certs(KMF_HANDLE *, char *, char *, KMF_BIGINT *, KMF_CERT_VALIDITY,
- char *, KMF_DATA **, uint32_t *);
+static KMF_RETURN load_certs(KMF_HANDLE *, char *, char *, KMF_BIGINT *,
+ KMF_CERT_VALIDITY, char *, KMF_DATA **, uint32_t *);
-static KMF_RETURN
-sslBN2KMFBN(BIGNUM *, KMF_BIGINT *);
+static KMF_RETURN sslBN2KMFBN(BIGNUM *, KMF_BIGINT *);
-static EVP_PKEY *
-ImportRawRSAKey(KMF_RAW_RSA_KEY *);
+static EVP_PKEY *ImportRawRSAKey(KMF_RAW_RSA_KEY *);
-static KMF_RETURN
-convertToRawKey(EVP_PKEY *, KMF_RAW_KEY_DATA *);
+static KMF_RETURN convertToRawKey(EVP_PKEY *, KMF_RAW_KEY_DATA *);
-KMF_RETURN
-OpenSSL_FindCert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_FindCert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-void
-OpenSSL_FreeKMFCert(KMF_HANDLE_T, KMF_X509_DER_CERT *);
+void OpenSSL_FreeKMFCert(KMF_HANDLE_T, KMF_X509_DER_CERT *);
-KMF_RETURN
-OpenSSL_StoreCert(KMF_HANDLE_T handle, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_StoreCert(KMF_HANDLE_T handle, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_DeleteCert(KMF_HANDLE_T handle, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_DeleteCert(KMF_HANDLE_T handle, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_CreateKeypair(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_CreateKeypair(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_StoreKey(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_StoreKey(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_EncodePubKeyData(KMF_HANDLE_T, KMF_KEY_HANDLE *, KMF_DATA *);
+KMF_RETURN OpenSSL_EncodePubKeyData(KMF_HANDLE_T, KMF_KEY_HANDLE *,
+ KMF_DATA *);
-KMF_RETURN
-OpenSSL_SignData(KMF_HANDLE_T, KMF_KEY_HANDLE *, KMF_OID *,
- KMF_DATA *, KMF_DATA *);
+KMF_RETURN OpenSSL_SignData(KMF_HANDLE_T, KMF_KEY_HANDLE *, KMF_OID *,
+ KMF_DATA *, KMF_DATA *);
-KMF_RETURN
-OpenSSL_DeleteKey(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_DeleteKey(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_ImportCRL(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_ImportCRL(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_DeleteCRL(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_DeleteCRL(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_ListCRL(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_ListCRL(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_FindCertInCRL(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_FindCertInCRL(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_CertGetPrintable(KMF_HANDLE_T, const KMF_DATA *,
- KMF_PRINTABLE_ITEM, char *);
+KMF_RETURN OpenSSL_CertGetPrintable(KMF_HANDLE_T, const KMF_DATA *,
+ KMF_PRINTABLE_ITEM, char *);
-KMF_RETURN
-OpenSSL_GetErrorString(KMF_HANDLE_T, char **);
+KMF_RETURN OpenSSL_GetErrorString(KMF_HANDLE_T, char **);
-KMF_RETURN
-OpenSSL_FindPrikeyByCert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_FindPrikeyByCert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_DecryptData(KMF_HANDLE_T, KMF_KEY_HANDLE *, KMF_OID *,
- KMF_DATA *, KMF_DATA *);
+KMF_RETURN OpenSSL_DecryptData(KMF_HANDLE_T, KMF_KEY_HANDLE *, KMF_OID *,
+ KMF_DATA *, KMF_DATA *);
-KMF_RETURN
-OpenSSL_CreateOCSPRequest(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_CreateOCSPRequest(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_GetOCSPStatusForCert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_GetOCSPStatusForCert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_FindKey(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_FindKey(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_ExportPK12(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_ExportPK12(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_CreateSymKey(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
+KMF_RETURN OpenSSL_CreateSymKey(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
-KMF_RETURN
-OpenSSL_GetSymKeyValue(KMF_HANDLE_T, KMF_KEY_HANDLE *, KMF_RAW_SYM_KEY *);
+KMF_RETURN OpenSSL_GetSymKeyValue(KMF_HANDLE_T, KMF_KEY_HANDLE *,
+ KMF_RAW_SYM_KEY *);
-KMF_RETURN
-OpenSSL_VerifyCRLFile(KMF_HANDLE_T, char *, KMF_DATA *);
+KMF_RETURN OpenSSL_VerifyCRLFile(KMF_HANDLE_T, char *, KMF_DATA *);
-KMF_RETURN
-OpenSSL_CheckCRLDate(KMF_HANDLE_T, char *);
+KMF_RETURN OpenSSL_CheckCRLDate(KMF_HANDLE_T, char *);
static
KMF_PLUGIN_FUNCLIST openssl_plugin_table =
@@ -306,7 +274,6 @@ static mutex_t *lock_cs;
static long *lock_count;
static void
-/* ARGSUSED1 */
locking_cb(int mode, int type, char *file, int line)
{
if (mode & CRYPTO_LOCK) {
@@ -594,8 +561,7 @@ cleanup:
* values. If it matches, then return the X509 data structure.
*/
static KMF_RETURN
-load_X509cert(KMF_HANDLE *kmfh,
- char *issuer, char *subject, KMF_BIGINT *serial,
+load_X509cert(KMF_HANDLE *kmfh, char *issuer, char *subject, KMF_BIGINT *serial,
char *pathname, X509 **outcert)
{
KMF_RETURN rv = KMF_OK;
@@ -769,11 +735,8 @@ load_certs(KMF_HANDLE *kmfh, char *issuer, char *subject, KMF_BIGINT *serial,
}
static KMF_RETURN
-kmf_load_cert(KMF_HANDLE *kmfh,
- char *issuer, char *subject, KMF_BIGINT *serial,
- KMF_CERT_VALIDITY validity,
- char *pathname,
- KMF_DATA *cert)
+kmf_load_cert(KMF_HANDLE *kmfh, char *issuer, char *subject, KMF_BIGINT *serial,
+ KMF_CERT_VALIDITY validity, char *pathname, KMF_DATA *cert)
{
KMF_RETURN rv = KMF_OK;
X509 *x509cert = NULL;
@@ -1213,9 +1176,7 @@ exit:
}
void
-/*ARGSUSED*/
-OpenSSL_FreeKMFCert(KMF_HANDLE_T handle,
- KMF_X509_DER_CERT *kmf_cert)
+OpenSSL_FreeKMFCert(KMF_HANDLE_T handle, KMF_X509_DER_CERT *kmf_cert)
{
if (kmf_cert != NULL) {
if (kmf_cert->certificate.Data != NULL) {
@@ -1226,7 +1187,6 @@ OpenSSL_FreeKMFCert(KMF_HANDLE_T handle,
}
}
-/*ARGSUSED*/
KMF_RETURN
OpenSSL_StoreCert(KMF_HANDLE_T handle, int numattr, KMF_ATTRIBUTE *attrlist)
{
@@ -1381,7 +1341,7 @@ out:
KMF_RETURN
OpenSSL_EncodePubKeyData(KMF_HANDLE_T handle, KMF_KEY_HANDLE *key,
- KMF_DATA *keydata)
+ KMF_DATA *keydata)
{
KMF_RETURN rv = KMF_OK;
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
@@ -1425,7 +1385,7 @@ cleanup:
static KMF_RETURN
ssl_write_key(KMF_HANDLE *kmfh, KMF_ENCODE_FORMAT format, BIO *out,
- KMF_CREDENTIAL *cred, EVP_PKEY *pkey, boolean_t private)
+ KMF_CREDENTIAL *cred, EVP_PKEY *pkey, boolean_t private)
{
int rv = 0;
RSA *rsa;
@@ -1482,8 +1442,7 @@ ssl_write_key(KMF_HANDLE *kmfh, KMF_ENCODE_FORMAT format, BIO *out,
}
KMF_RETURN
-OpenSSL_CreateKeypair(KMF_HANDLE_T handle, int numattr,
- KMF_ATTRIBUTE *attrlist)
+OpenSSL_CreateKeypair(KMF_HANDLE_T handle, int numattr, KMF_ATTRIBUTE *attrlist)
{
KMF_RETURN rv = KMF_OK;
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
@@ -1556,7 +1515,6 @@ OpenSSL_CreateKeypair(KMF_HANDLE_T handle, int numattr,
if (rsaexp->len > 0 &&
rsaexp->len <= sizeof (eValue) &&
rsaexp->val != NULL) {
- /* LINTED E_BAD_PTR_CAST_ALIGN */
eValue = *(uint32_t *)rsaexp->val;
if (BN_set_word(eValue_bn, eValue) == 0) {
rv = KMF_ERR_BAD_PARAMETER;
@@ -1753,7 +1711,8 @@ cleanup:
* all of the bits.
*/
static int
-fixbnlen(const BIGNUM *bn, unsigned char *buf, int len) {
+fixbnlen(const BIGNUM *bn, unsigned char *buf, int len)
+{
int bytes = len - BN_num_bytes(bn);
/* prepend with leading 0x00 if necessary */
@@ -1770,7 +1729,7 @@ fixbnlen(const BIGNUM *bn, unsigned char *buf, int len) {
KMF_RETURN
OpenSSL_SignData(KMF_HANDLE_T handle, KMF_KEY_HANDLE *key,
- KMF_OID *AlgOID, KMF_DATA *tobesigned, KMF_DATA *output)
+ KMF_OID *AlgOID, KMF_DATA *tobesigned, KMF_DATA *output)
{
KMF_RETURN ret = KMF_OK;
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
@@ -1909,9 +1868,7 @@ cleanup:
}
KMF_RETURN
-/*ARGSUSED*/
-OpenSSL_DeleteKey(KMF_HANDLE_T handle,
- int numattr, KMF_ATTRIBUTE *attrlist)
+OpenSSL_DeleteKey(KMF_HANDLE_T handle, int numattr, KMF_ATTRIBUTE *attrlist)
{
KMF_RETURN rv = KMF_OK;
KMF_KEY_HANDLE *key;
@@ -2031,7 +1988,7 @@ ext2NID(int kmfext)
KMF_RETURN
OpenSSL_CertGetPrintable(KMF_HANDLE_T handle, const KMF_DATA *pcert,
- KMF_PRINTABLE_ITEM flag, char *resultStr)
+ KMF_PRINTABLE_ITEM flag, char *resultStr)
{
KMF_RETURN ret = KMF_OK;
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
@@ -2260,7 +2217,6 @@ out:
}
KMF_RETURN
-/*ARGSUSED*/
OpenSSL_FindPrikeyByCert(KMF_HANDLE_T handle, int numattr,
KMF_ATTRIBUTE *attrlist)
{
@@ -2320,10 +2276,8 @@ OpenSSL_FindPrikeyByCert(KMF_HANDLE_T handle, int numattr,
}
KMF_RETURN
-/*ARGSUSED*/
OpenSSL_DecryptData(KMF_HANDLE_T handle, KMF_KEY_HANDLE *key,
- KMF_OID *AlgOID, KMF_DATA *ciphertext,
- KMF_DATA *output)
+ KMF_OID *AlgOID, KMF_DATA *ciphertext, KMF_DATA *output)
{
KMF_RETURN ret = KMF_OK;
RSA *rsa = NULL;
@@ -2438,7 +2392,7 @@ end:
KMF_RETURN
OpenSSL_CreateOCSPRequest(KMF_HANDLE_T handle,
- int numattr, KMF_ATTRIBUTE *attrlist)
+ int numattr, KMF_ATTRIBUTE *attrlist)
{
KMF_RETURN ret = KMF_OK;
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
@@ -2542,7 +2496,6 @@ static X509 *ocsp_find_signer_sk(STACK_OF(X509) *certs, OCSP_BASICRESP *bs)
keyhash = pid->data;
/* Calculate hash of each key and compare */
for (i = 0; i < sk_X509_num(certs); i++) {
- /* LINTED E_BAD_PTR_CAST_ALIGN */
X509 *x = sk_X509_value(certs, i);
/* Use pubkey_digest to get the key ID value */
(void) X509_pubkey_digest(x, EVP_sha1(), tmphash, NULL);
@@ -2553,7 +2506,6 @@ static X509 *ocsp_find_signer_sk(STACK_OF(X509) *certs, OCSP_BASICRESP *bs)
}
/* ocsp_find_signer() is copied from openssl source */
-/* ARGSUSED2 */
static int
ocsp_find_signer(X509 **psigner, OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
X509_STORE *st, unsigned long flags)
@@ -2668,7 +2620,7 @@ check_response_signature(KMF_HANDLE_T handle, OCSP_BASICRESP *bs,
goto end;
}
- if (sk_X509_push(cert_stack2, signer) == NULL) {
+ if (sk_X509_push(cert_stack2, signer) == 0) {
ret = KMF_ERR_INTERNAL;
goto end;
}
@@ -2708,8 +2660,8 @@ end:
}
KMF_RETURN
-OpenSSL_GetOCSPStatusForCert(KMF_HANDLE_T handle,
- int numattr, KMF_ATTRIBUTE *attrlist)
+OpenSSL_GetOCSPStatusForCert(KMF_HANDLE_T handle, int numattr,
+ KMF_ATTRIBUTE *attrlist)
{
KMF_RETURN ret = KMF_OK;
BIO *derbio = NULL;
@@ -2881,8 +2833,8 @@ end:
}
static KMF_RETURN
-fetch_key(KMF_HANDLE_T handle, char *path,
- KMF_KEY_CLASS keyclass, KMF_KEY_HANDLE *key)
+fetch_key(KMF_HANDLE_T handle, char *path, KMF_KEY_CLASS keyclass,
+ KMF_KEY_HANDLE *key)
{
KMF_RETURN rv = KMF_OK;
EVP_PKEY *pkey = NULL;
@@ -2977,8 +2929,7 @@ out:
}
KMF_RETURN
-OpenSSL_FindKey(KMF_HANDLE_T handle,
- int numattr, KMF_ATTRIBUTE *attrlist)
+OpenSSL_FindKey(KMF_HANDLE_T handle, int numattr, KMF_ATTRIBUTE *attrlist)
{
KMF_RETURN rv = KMF_OK;
char *fullpath = NULL;
@@ -3107,7 +3058,7 @@ add_alias_to_bag(PKCS12_SAFEBAG *bag, X509 *xcert)
static PKCS7 *
add_cert_to_safe(X509 *sslcert, KMF_CREDENTIAL *cred,
- uchar_t *keyid, unsigned int keyidlen)
+ uchar_t *keyid, unsigned int keyidlen)
{
PKCS12_SAFEBAG *bag = NULL;
PKCS7 *cert_authsafe = NULL;
@@ -3150,8 +3101,7 @@ out:
static PKCS7 *
add_key_to_safe(EVP_PKEY *pkey, KMF_CREDENTIAL *cred,
- uchar_t *keyid, unsigned int keyidlen,
- char *label, int label_len)
+ uchar_t *keyid, unsigned int keyidlen, char *label, int label_len)
{
PKCS8_PRIV_KEY_INFO *p8 = NULL;
STACK_OF(PKCS12_SAFEBAG) *bag_stack = NULL;
@@ -3203,9 +3153,8 @@ ImportRawRSAKey(KMF_RAW_RSA_KEY *key)
{
RSA *rsa = NULL;
EVP_PKEY *newkey = NULL;
- BIGNUM *n = NULL, *e = NULL, *d = NULL,
- *p = NULL, *q = NULL,
- *dmp1 = NULL, *dmq1 = NULL, *iqmp = NULL;
+ BIGNUM *n = NULL, *e = NULL, *d = NULL, *p = NULL, *q = NULL;
+ BIGNUM *dmp1 = NULL, *dmq1 = NULL, *iqmp = NULL;
if ((rsa = RSA_new()) == NULL)
goto cleanup;
@@ -3276,8 +3225,8 @@ ImportRawDSAKey(KMF_RAW_DSA_KEY *key)
{
DSA *dsa = NULL;
EVP_PKEY *newkey = NULL;
- BIGNUM *p = NULL, *q = NULL, *g = NULL,
- *priv_key = NULL, *pub_key = NULL;
+ BIGNUM *p = NULL, *q = NULL, *g = NULL;
+ BIGNUM *priv_key = NULL, *pub_key = NULL;
if ((dsa = DSA_new()) == NULL)
goto cleanup;
@@ -3418,11 +3367,9 @@ find_matching_key(X509 *xcert, int numkeys, KMF_KEY_HANDLE *keylist)
}
static KMF_RETURN
-local_export_pk12(KMF_HANDLE_T handle,
- KMF_CREDENTIAL *cred,
- int numcerts, KMF_X509_DER_CERT *certlist,
- int numkeys, KMF_KEY_HANDLE *keylist,
- char *filename)
+local_export_pk12(KMF_HANDLE_T handle, KMF_CREDENTIAL *cred, int numcerts,
+ KMF_X509_DER_CERT *certlist, int numkeys, KMF_KEY_HANDLE *keylist,
+ char *filename)
{
KMF_RETURN rv = KMF_OK;
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
@@ -3700,12 +3647,9 @@ end:
* However, the file may be just a list of X509 certs with no keys.
*/
static KMF_RETURN
-extract_pem(KMF_HANDLE *kmfh,
- char *issuer, char *subject, KMF_BIGINT *serial,
- char *filename, CK_UTF8CHAR *pin,
- CK_ULONG pinlen, EVP_PKEY **priv_key, KMF_DATA **certs,
- int *numcerts)
-/* ARGSUSED6 */
+extract_pem(KMF_HANDLE *kmfh, char *issuer, char *subject, KMF_BIGINT *serial,
+ char *filename, CK_UTF8CHAR *pin, CK_ULONG pinlen, EVP_PKEY **priv_key,
+ KMF_DATA **certs, int *numcerts)
{
KMF_RETURN rv = KMF_OK;
FILE *fp;
@@ -3739,7 +3683,6 @@ extract_pem(KMF_HANDLE *kmfh,
}
for (i = 0; i < sk_X509_INFO_num(x509_info_stack); i++) {
- /* LINTED E_BAD_PTR_CAST_ALIGN */
cert_infos[ncerts] = sk_X509_INFO_value(x509_info_stack, i);
ncerts++;
}
@@ -3789,7 +3732,7 @@ extract_pem(KMF_HANDLE *kmfh,
}
rv = ssl_cert2KMFDATA(kmfh, info->x509,
- &certlist[matchcerts++]);
+ &certlist[matchcerts++]);
if (rv != KMF_OK) {
int j;
@@ -3821,7 +3764,6 @@ extract_pem(KMF_HANDLE *kmfh,
err:
/* Cleanup the stack of X509 info records */
for (i = 0; i < sk_X509_INFO_num(x509_info_stack); i++) {
- /* LINTED E_BAD_PTR_CAST_ALIGN */
info = (X509_INFO *)sk_X509_INFO_value(x509_info_stack, i);
X509_INFO_free(info);
}
@@ -3836,13 +3778,12 @@ err:
static KMF_RETURN
openssl_parse_bags(const STACK_OF(PKCS12_SAFEBAG) *bags, char *pin,
- STACK_OF(EVP_PKEY) *keys, STACK_OF(X509) *certs)
+ STACK_OF(EVP_PKEY) *keys, STACK_OF(X509) *certs)
{
KMF_RETURN ret;
int i;
for (i = 0; i < sk_PKCS12_SAFEBAG_num(bags); i++) {
- /* LINTED E_BAD_PTR_CAST_ALIGN */
PKCS12_SAFEBAG *bag = sk_PKCS12_SAFEBAG_value(bags, i);
ret = openssl_parse_bag(bag, pin, (pin ? strlen(pin) : 0),
keys, certs);
@@ -3881,7 +3822,7 @@ set_pkey_attrib(EVP_PKEY *pkey, ASN1_TYPE *attrib, int nid)
static KMF_RETURN
openssl_parse_bag(PKCS12_SAFEBAG *bag, char *pass, int passlen,
- STACK_OF(EVP_PKEY) *keylist, STACK_OF(X509) *certlist)
+ STACK_OF(EVP_PKEY) *keylist, STACK_OF(X509) *certlist)
{
KMF_RETURN ret = KMF_OK;
PKCS8_PRIV_KEY_INFO *p8 = NULL;
@@ -4011,11 +3952,8 @@ end:
}
static KMF_RETURN
-openssl_pkcs12_parse(PKCS12 *p12, char *pin,
- STACK_OF(EVP_PKEY) *keys,
- STACK_OF(X509) *certs,
- STACK_OF(X509) *ca)
-/* ARGSUSED3 */
+openssl_pkcs12_parse(PKCS12 *p12, char *pin, STACK_OF(EVP_PKEY) *keys,
+ STACK_OF(X509) *certs, STACK_OF(X509) *ca)
{
KMF_RETURN ret = KMF_OK;
STACK_OF(PKCS7) *asafes = NULL;
@@ -4043,7 +3981,6 @@ openssl_pkcs12_parse(PKCS12 *p12, char *pin,
for (i = 0; ret == KMF_OK && i < sk_PKCS7_num(asafes); i++) {
bags = NULL;
- /* LINTED E_BAD_PTR_CAST_ALIGN */
p7 = sk_PKCS7_value(asafes, i);
bagnid = OBJ_obj2nid(p7->type);
@@ -4077,9 +4014,7 @@ out:
*/
static KMF_RETURN
extract_pkcs12(BIO *fbio, CK_UTF8CHAR *pin, CK_ULONG pinlen,
- STACK_OF(EVP_PKEY) **priv_key, STACK_OF(X509) **certs,
- STACK_OF(X509) **ca)
-/* ARGSUSED2 */
+ STACK_OF(EVP_PKEY) **priv_key, STACK_OF(X509) **certs, STACK_OF(X509) **ca)
{
PKCS12 *pk12, *pk12_tmp;
STACK_OF(EVP_PKEY) *pkeylist = NULL;
@@ -4258,7 +4193,7 @@ cleanup:
static KMF_RETURN
add_cert_to_list(KMF_HANDLE *kmfh, X509 *sslcert,
- KMF_X509_DER_CERT **certlist, int *ncerts)
+ KMF_X509_DER_CERT **certlist, int *ncerts)
{
KMF_RETURN rv = KMF_OK;
KMF_X509_DER_CERT *list = (*certlist);
@@ -4298,7 +4233,7 @@ add_cert_to_list(KMF_HANDLE *kmfh, X509 *sslcert,
static KMF_RETURN
add_key_to_list(KMF_RAW_KEY_DATA **keylist,
- KMF_RAW_KEY_DATA *newkey, int *nkeys)
+ KMF_RAW_KEY_DATA *newkey, int *nkeys)
{
KMF_RAW_KEY_DATA *list = (*keylist);
int n = (*nkeys);
@@ -4402,7 +4337,6 @@ convertPK12Objects(
int i;
for (i = 0; sslkeys != NULL && i < sk_EVP_PKEY_num(sslkeys); i++) {
- /* LINTED E_BAD_PTR_CAST_ALIGN */
EVP_PKEY *pkey = sk_EVP_PKEY_value(sslkeys, i);
rv = convertToRawKey(pkey, &key);
if (rv == KMF_OK)
@@ -4414,7 +4348,6 @@ convertPK12Objects(
/* Now add the certificate to the certlist */
for (i = 0; sslcert != NULL && i < sk_X509_num(sslcert); i++) {
- /* LINTED E_BAD_PTR_CAST_ALIGN */
X509 *cert = sk_X509_value(sslcert, i);
rv = add_cert_to_list(kmfh, cert, certlist, ncerts);
if (rv != KMF_OK)
@@ -4430,7 +4363,6 @@ convertPK12Objects(
* Lint is complaining about the embedded casting, and
* to fix it, you need to fix openssl header files.
*/
- /* LINTED E_BAD_PTR_CAST_ALIGN */
c = sk_X509_value(sslcacerts, i);
/* Now add the ca cert to the certlist */
@@ -4442,10 +4374,9 @@ convertPK12Objects(
}
KMF_RETURN
-openssl_import_objects(KMF_HANDLE *kmfh,
- char *filename, KMF_CREDENTIAL *cred,
- KMF_X509_DER_CERT **certlist, int *ncerts,
- KMF_RAW_KEY_DATA **keylist, int *nkeys)
+openssl_import_objects(KMF_HANDLE *kmfh, char *filename, KMF_CREDENTIAL *cred,
+ KMF_X509_DER_CERT **certlist, int *ncerts,
+ KMF_RAW_KEY_DATA **keylist, int *nkeys)
{
KMF_RETURN rv = KMF_OK;
KMF_ENCODE_FORMAT format;
@@ -4659,8 +4590,7 @@ out:
}
KMF_RETURN
-OpenSSL_CreateSymKey(KMF_HANDLE_T handle,
- int numattr, KMF_ATTRIBUTE *attrlist)
+OpenSSL_CreateSymKey(KMF_HANDLE_T handle, int numattr, KMF_ATTRIBUTE *attrlist)
{
KMF_RETURN ret = KMF_OK;
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
@@ -4816,7 +4746,7 @@ OpenSSL_IsCRLFile(KMF_HANDLE_T handle, char *filename, int *pformat)
KMF_RETURN ret = KMF_OK;
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
BIO *bio = NULL;
- X509_CRL *xcrl = NULL;
+ X509_CRL *xcrl = NULL;
if (filename == NULL) {
return (KMF_ERR_BAD_PARAMETER);
@@ -4929,8 +4859,7 @@ test_for_file(char *filename, mode_t mode)
}
KMF_RETURN
-OpenSSL_StoreKey(KMF_HANDLE_T handle, int numattr,
- KMF_ATTRIBUTE *attrlist)
+OpenSSL_StoreKey(KMF_HANDLE_T handle, int numattr, KMF_ATTRIBUTE *attrlist)
{
KMF_RETURN rv = KMF_OK;
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
@@ -5498,7 +5427,6 @@ OpenSSL_FindCertInCRL(KMF_HANDLE_T handle, int numattr, KMF_ATTRIBUTE *attrlist)
}
for (i = 0; i < sk_X509_REVOKED_num(revoke_stack); i++) {
- /* LINTED E_BAD_PTR_CAST_ALIGN */
revoke = sk_X509_REVOKED_value(revoke_stack, i);
if (ASN1_INTEGER_cmp(X509_get_serialNumber(xcert),
X509_REVOKED_get0_serialNumber(revoke)) == 0) {
@@ -5529,7 +5457,7 @@ OpenSSL_VerifyCRLFile(KMF_HANDLE_T handle, char *crlname, KMF_DATA *tacert)
KMF_RETURN ret = KMF_OK;
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
BIO *bcrl = NULL;
- X509_CRL *xcrl = NULL;
+ X509_CRL *xcrl = NULL;
X509 *xcert = NULL;
EVP_PKEY *pkey;
int sslret;
@@ -5616,7 +5544,7 @@ OpenSSL_CheckCRLDate(KMF_HANDLE_T handle, char *crlname)
KMF_HANDLE *kmfh = (KMF_HANDLE *)handle;
KMF_ENCODE_FORMAT crl_format;
BIO *bcrl = NULL;
- X509_CRL *xcrl = NULL;
+ X509_CRL *xcrl = NULL;
int i;
if (handle == NULL || crlname == NULL) {
diff --git a/usr/src/pkg/manifests/system-test-ostest.mf b/usr/src/pkg/manifests/system-test-ostest.mf
index 78d46bdf6a..ed58094eda 100644
--- a/usr/src/pkg/manifests/system-test-ostest.mf
+++ b/usr/src/pkg/manifests/system-test-ostest.mf
@@ -46,6 +46,7 @@ file path=opt/os-tests/tests/file-locking/acquire-lock.64 mode=0555
file path=opt/os-tests/tests/file-locking/runtests.32 mode=0555
file path=opt/os-tests/tests/file-locking/runtests.64 mode=0555
$(i386_ONLY)file path=opt/os-tests/tests/i386/badseg mode=0555
+$(i386_ONLY)file path=opt/os-tests/tests/i386/badseg_exec mode=0555
$(i386_ONLY)file path=opt/os-tests/tests/i386/ldt mode=0555
file path=opt/os-tests/tests/pf_key/acquire-compare mode=0555
file path=opt/os-tests/tests/pf_key/acquire-spray mode=0555
diff --git a/usr/src/test/os-tests/tests/i386/Makefile b/usr/src/test/os-tests/tests/i386/Makefile
index 4933cf6e02..cbea8ec2b2 100644
--- a/usr/src/test/os-tests/tests/i386/Makefile
+++ b/usr/src/test/os-tests/tests/i386/Makefile
@@ -10,13 +10,13 @@
#
#
-# Copyright 2018 Joyent, Inc.
+# Copyright 2019 Joyent, Inc.
#
include $(SRC)/cmd/Makefile.cmd
include $(SRC)/test/Makefile.com
-PROGS += ldt badseg
+PROGS += ldt badseg_exec badseg
ROOTOPTPKG = $(ROOT)/opt/os-tests
TESTDIR = $(ROOTOPTPKG)/tests/i386
@@ -24,15 +24,13 @@ ROOTOPTPROGS = $(PROGS:%=$(TESTDIR)/%)
CSTD = $(CSTD_GNU99)
-# for badseg
+# for badseg_exec
COPTFLAG =
all: $(PROGS)
install: all $(ROOTOPTPROGS)
-lint:
-
clobber: clean
-$(RM) $(PROGS)
diff --git a/usr/src/test/os-tests/tests/i386/badseg.sh b/usr/src/test/os-tests/tests/i386/badseg.sh
new file mode 100644
index 0000000000..d21cb6bb17
--- /dev/null
+++ b/usr/src/test/os-tests/tests/i386/badseg.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+# Copyright 2019 Joyent, Inc.
+#
+
+#
+# badseg intentionally core-dumps. It does a setrlimit(), but we need to
+# prevent global core dumps too: we'll do this by blocking the path for
+# badseg_exec, but let other processes core dump still just in case.
+#
+
+set -e
+set -x
+
+old_enabled=$(/usr/bin/svcprop -p config_params/global_enabled coreadm)
+old_pattern=$(/usr/bin/svcprop -p config_params/global_pattern coreadm)
+old_log=$(/usr/bin/svcprop -p config_params/global_log_enabled coreadm)
+
+mkfile 1m /var/cores/badseg_exec
+coreadm -e global -d log -g /var/cores/%f/%p
+# let it settle
+sleep 3
+
+$(dirname $0)/badseg_exec || true
+
+coreadm -g "$old_pattern"
+
+if [[ "$old_enabled" = "true" ]]; then
+ coreadm -e global
+fi
+
+if [[ "$old_log" = "true" ]]; then
+ coreadm -e log
+fi
+
+rm -f /var/cores/badseg_exec
diff --git a/usr/src/test/os-tests/tests/i386/badseg.c b/usr/src/test/os-tests/tests/i386/badseg_exec.c
index 51de1211cf..999d47c86b 100644
--- a/usr/src/test/os-tests/tests/i386/badseg.c
+++ b/usr/src/test/os-tests/tests/i386/badseg_exec.c
@@ -10,7 +10,7 @@
*/
/*
- * Copyright 2018 Joyent, Inc.
+ * Copyright 2019 Joyent, Inc.
*/
#include <stdlib.h>
@@ -18,6 +18,8 @@
#include <sys/wait.h>
#include <unistd.h>
#include <sys/regset.h>
+#include <sys/resource.h>
+#include <err.h>
/*
* Load a bunch of bad selectors into the seg regs: this will typically cause
@@ -117,9 +119,9 @@ inchild(void (*func)())
switch ((pid = fork())) {
case 0:
func();
- exit(0);
+ exit(EXIT_SUCCESS);
case -1:
- exit(1);
+ exit(EXIT_FAILURE);
default:
(void) waitpid(pid, NULL, 0);
return;
@@ -130,6 +132,12 @@ inchild(void (*func)())
int
main(int argc, char *argv[])
{
+ struct rlimit rl = { 0, };
+
+ if (setrlimit(RLIMIT_CORE, &rl) != 0) {
+ err(EXIT_FAILURE, "failed to disable cores");
+ }
+
for (selector = 0; selector < 8194; selector++) {
inchild(resetcs);
inchild(resetds);
@@ -144,5 +152,5 @@ main(int argc, char *argv[])
inchild(badss);
}
- exit(0);
+ exit(EXIT_SUCCESS);
}
diff --git a/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_off.ksh b/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_off.ksh
index 8bef86a0ff..cb35351d7b 100755
--- a/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_off.ksh
+++ b/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_off.ksh
@@ -16,6 +16,7 @@
#
# Copyright (c) 2017 by Lawrence Livermore National Security, LLC.
+# Copyright 2019 Joyent, Inc.
#
# DESCRIPTION:
@@ -44,7 +45,7 @@ verify_runnable "both"
function cleanup
{
default_cleanup_noexit
- log_must set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_DEFAULT
+ log_must set_tunable32 zfs_txg_timeout $TXG_TIMEOUT_DEFAULT
log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_DEFAULT
log_must rm -f $PREV_UBER $CURR_UBER
log_must mmp_clear_hostid
@@ -54,7 +55,7 @@ log_assert "mmp thread won't write uberblocks with multihost=off"
log_onexit cleanup
log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_MIN
-log_must set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_LONG
+log_must set_tunable32 zfs_txg_timeout $TXG_TIMEOUT_LONG
log_must mmp_set_hostid $HOSTID1
default_setup_noexit $DISK
diff --git a/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_thread.ksh b/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_thread.ksh
index 07384c6231..c8478a03bd 100755
--- a/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_thread.ksh
+++ b/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_thread.ksh
@@ -16,6 +16,7 @@
#
# Copyright (c) 2017 by Lawrence Livermore National Security, LLC.
+# Copyright 2019 Joyent, Inc.
#
# DESCRIPTION:
@@ -39,7 +40,7 @@ verify_runnable "both"
function cleanup
{
default_cleanup_noexit
- log_must set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_DEFAULT
+ log_must set_tunable32 zfs_txg_timeout $TXG_TIMEOUT_DEFAULT
log_must rm -f $PREV_UBER $CURR_UBER
log_must mmp_clear_hostid
}
@@ -47,7 +48,7 @@ function cleanup
log_assert "mmp thread writes uberblocks (MMP)"
log_onexit cleanup
-log_must set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_LONG
+log_must set_tunable32 zfs_txg_timeout $TXG_TIMEOUT_LONG
log_must mmp_set_hostid $HOSTID1
default_setup_noexit $DISK
diff --git a/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_uberblocks.ksh b/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_uberblocks.ksh
index 0cb38f8899..7c12b7fbdd 100755
--- a/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_uberblocks.ksh
+++ b/usr/src/test/zfs-tests/tests/functional/mmp/mmp_on_uberblocks.ksh
@@ -16,6 +16,7 @@
#
# Copyright (c) 2017 by Lawrence Livermore National Security, LLC.
+# Copyright 2019 Joyent, Inc.
#
# DESCRIPTION:
@@ -45,14 +46,14 @@ MAX=$((EXPECTED + FUDGE))
function cleanup
{
default_cleanup_noexit
- set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_DEFAULT
+ set_tunable32 zfs_txg_timeout $TXG_TIMEOUT_DEFAULT
log_must mmp_clear_hostid
}
log_assert "Ensure MMP uberblocks update at the correct interval"
log_onexit cleanup
-log_must set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_LONG
+log_must set_tunable32 zfs_txg_timeout $TXG_TIMEOUT_LONG
log_must mmp_set_hostid $HOSTID1
default_setup_noexit "$DISKS"
diff --git a/usr/src/uts/common/fs/ufs/ufs_vnops.c b/usr/src/uts/common/fs/ufs/ufs_vnops.c
index 370c982f08..8aa961e340 100644
--- a/usr/src/uts/common/fs/ufs/ufs_vnops.c
+++ b/usr/src/uts/common/fs/ufs/ufs_vnops.c
@@ -26,7 +26,7 @@
*/
/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
-/* All Rights Reserved */
+/* All Rights Reserved */
/*
* Portions of this source code were derived from Berkeley 4.3 BSD
@@ -102,7 +102,7 @@
static struct instats ins;
-static int ufs_getpage_ra(struct vnode *, u_offset_t, struct seg *, caddr_t);
+static int ufs_getpage_ra(struct vnode *, u_offset_t, struct seg *, caddr_t);
static int ufs_getpage_miss(struct vnode *, u_offset_t, size_t, struct seg *,
caddr_t, struct page **, size_t, enum seg_rw, int);
static int ufs_open(struct vnode **, int, struct cred *, caller_context_t *);
@@ -245,7 +245,7 @@ struct dump {
struct inode *ip; /* the file we contain */
daddr_t fsbs; /* number of blocks stored */
struct timeval32 time; /* time stamp for the struct */
- daddr32_t dblk[1]; /* place holder for block info */
+ daddr32_t dblk[1]; /* place holder for block info */
};
static struct dump *dump_info = NULL;
@@ -1233,7 +1233,7 @@ out:
* --------------------------
* always@ IATTCHG|IBDWRITE
*
- * @ - If we are doing synchronous write the only time we should
+ * @ - If we are doing synchronous write the only time we should
* not be sync'ing the ip here is if we have the stickyhack
* activated, the file is marked with the sticky bit and
* no exec bit, the file length has not been changed and
@@ -4409,14 +4409,14 @@ ufs_getpage(struct vnode *vp, offset_t off, size_t len, uint_t *protp,
u_offset_t uoff = (u_offset_t)off; /* type conversion */
u_offset_t pgoff;
u_offset_t eoff;
- struct inode *ip = VTOI(vp);
+ struct inode *ip = VTOI(vp);
struct ufsvfs *ufsvfsp = ip->i_ufsvfs;
- struct fs *fs;
+ struct fs *fs;
struct ulockfs *ulp;
page_t **pl;
caddr_t pgaddr;
krw_t rwtype;
- int err;
+ int err;
int has_holes;
int beyond_eof;
int seqmode;
@@ -5206,7 +5206,7 @@ ufs_putpages(struct vnode *vp, offset_t off, size_t len, int flags,
return (err);
}
-static void
+static int
ufs_iodone(buf_t *bp)
{
struct inode *ip;
@@ -5228,6 +5228,7 @@ ufs_iodone(buf_t *bp)
mutex_exit(&ip->i_tlock);
iodone(bp);
+ return (0);
}
/*
@@ -5419,7 +5420,7 @@ ufs_putapage(struct vnode *vp, page_t *pp, u_offset_t *offp, size_t *lenp,
/* write throttle */
ASSERT(bp->b_iodone == NULL);
- bp->b_iodone = (int (*)())ufs_iodone;
+ bp->b_iodone = ufs_iodone;
mutex_enter(&ip->i_tlock);
ip->i_writes += bp->b_bcount;
mutex_exit(&ip->i_tlock);
@@ -5617,7 +5618,7 @@ ufs_delmap(struct vnode *vp, offset_t off, struct as *as, caddr_t addr,
}
mutex_enter(&ip->i_tlock);
- ip->i_mapcnt -= btopr(len); /* Count released mappings */
+ ip->i_mapcnt -= btopr(len); /* Count released mappings */
ASSERT(ip->i_mapcnt >= 0);
mutex_exit(&ip->i_tlock);
return (0);
@@ -5690,9 +5691,9 @@ ufs_l_pathconf(struct vnode *vp, int cmd, ulong_t *valp, struct cred *cr,
{
struct ufsvfs *ufsvfsp = VTOI(vp)->i_ufsvfs;
struct ulockfs *ulp = NULL;
- struct inode *sip = NULL;
+ struct inode *sip = NULL;
int error;
- struct inode *ip = VTOI(vp);
+ struct inode *ip = VTOI(vp);
int issync;
error = ufs_lockfs_begin(ufsvfsp, &ulp, ULOCKFS_PATHCONF_MASK);
diff --git a/usr/src/uts/common/io/bufmod.c b/usr/src/uts/common/io/bufmod.c
index c1dd697a78..41fbe83e6a 100644
--- a/usr/src/uts/common/io/bufmod.c
+++ b/usr/src/uts/common/io/bufmod.c
@@ -107,9 +107,9 @@ struct sb {
*/
static int sbopen(queue_t *, dev_t *, int, int, cred_t *);
static int sbclose(queue_t *, int, cred_t *);
-static void sbwput(queue_t *, mblk_t *);
-static void sbrput(queue_t *, mblk_t *);
-static void sbrsrv(queue_t *);
+static int sbwput(queue_t *, mblk_t *);
+static int sbrput(queue_t *, mblk_t *);
+static int sbrsrv(queue_t *);
static void sbioctl(queue_t *, mblk_t *);
static void sbaddmsg(queue_t *, mblk_t *);
static void sbtick(void *);
@@ -126,8 +126,8 @@ static struct module_info sb_minfo = {
};
static struct qinit sb_rinit = {
- (int (*)())sbrput, /* qi_putp */
- (int (*)())sbrsrv, /* qi_srvp */
+ sbrput, /* qi_putp */
+ sbrsrv, /* qi_srvp */
sbopen, /* qi_qopen */
sbclose, /* qi_qclose */
NULL, /* qi_qadmin */
@@ -136,7 +136,7 @@ static struct qinit sb_rinit = {
};
static struct qinit sb_winit = {
- (int (*)())sbwput, /* qi_putp */
+ sbwput, /* qi_putp */
NULL, /* qi_srvp */
NULL, /* qi_qopen */
NULL, /* qi_qclose */
@@ -402,7 +402,7 @@ sbioc(queue_t *wq, mblk_t *mp)
* for manipulating the buffering state and hand them to sbioctl.
* Other message types are passed on through.
*/
-static void
+static int
sbwput(queue_t *wq, mblk_t *mp)
{
struct sb *sbp = (struct sb *)wq->q_ptr;
@@ -447,6 +447,7 @@ sbwput(queue_t *wq, mblk_t *mp)
putnext(wq, mp);
break;
}
+ return (0);
}
/*
@@ -454,7 +455,7 @@ sbwput(queue_t *wq, mblk_t *mp)
* messages and grouping them into aggregates according to the current
* buffering parameters.
*/
-static void
+static int
sbrput(queue_t *rq, mblk_t *mp)
{
struct sb *sbp = (struct sb *)rq->q_ptr;
@@ -535,13 +536,14 @@ sbrput(queue_t *rq, mblk_t *mp)
}
break;
}
+ return (0);
}
/*
* read service procedure.
*/
/* ARGSUSED */
-static void
+static int
sbrsrv(queue_t *rq)
{
mblk_t *mp;
@@ -554,10 +556,11 @@ sbrsrv(queue_t *rq)
if (!canputnext(rq) && (mp->b_datap->db_type <= QPCTL)) {
/* should only get here if SB_NO_SROPS */
(void) putbq(rq, mp);
- return;
+ return (0);
}
putnext(rq, mp);
}
+ return (0);
}
/*
@@ -969,7 +972,7 @@ sbaddmsg(queue_t *rq, mblk_t *mp)
* Truncate the message.
*/
if ((sbp->sb_snap > 0) && (origlen > sbp->sb_snap) &&
- (adjmsg(mp, -(origlen - sbp->sb_snap)) == 1))
+ (adjmsg(mp, -(origlen - sbp->sb_snap)) == 1))
hp.sbh_totlen = hp.sbh_msglen = sbp->sb_snap;
else
hp.sbh_totlen = hp.sbh_msglen = origlen;
@@ -1097,7 +1100,7 @@ sbaddmsg(queue_t *rq, mblk_t *mp)
;
if ((wrapperlen <= MBLKTAIL(last)) &&
- (last->b_datap->db_ref == 1)) {
+ (last->b_datap->db_ref == 1)) {
if (pad > 0) {
/*
* Pad with zeroes to the next pointer boundary
diff --git a/usr/src/uts/common/io/ldterm.c b/usr/src/uts/common/io/ldterm.c
index 498d2d9bee..97a9c1a478 100644
--- a/usr/src/uts/common/io/ldterm.c
+++ b/usr/src/uts/common/io/ldterm.c
@@ -416,11 +416,11 @@ _info(struct modinfo *modinfop)
static int ldtermopen(queue_t *, dev_t *, int, int, cred_t *);
static int ldtermclose(queue_t *, int, cred_t *);
-static void ldtermrput(queue_t *, mblk_t *);
-static void ldtermrsrv(queue_t *);
+static int ldtermrput(queue_t *, mblk_t *);
+static int ldtermrsrv(queue_t *);
static int ldtermrmsg(queue_t *, mblk_t *);
-static void ldtermwput(queue_t *, mblk_t *);
-static void ldtermwsrv(queue_t *);
+static int ldtermwput(queue_t *, mblk_t *);
+static int ldtermwsrv(queue_t *);
static int ldtermwmsg(queue_t *, mblk_t *);
static mblk_t *ldterm_docanon(unsigned char, mblk_t *, size_t, queue_t *,
ldtermstd_state_t *, int *);
@@ -574,8 +574,8 @@ static struct module_info ldtermmiinfo = {
static struct qinit ldtermrinit = {
- (int (*)())ldtermrput,
- (int (*)())ldtermrsrv,
+ ldtermrput,
+ ldtermrsrv,
ldtermopen,
ldtermclose,
NULL,
@@ -594,8 +594,8 @@ static struct module_info ldtermmoinfo = {
static struct qinit ldtermwinit = {
- (int (*)())ldtermwput,
- (int (*)())ldtermwsrv,
+ ldtermwput,
+ ldtermwsrv,
ldtermopen,
ldtermclose,
NULL,
@@ -945,7 +945,7 @@ ldtermclose(queue_t *q, int cflag, cred_t *crp)
/*
* Put procedure for input from driver end of stream (read queue).
*/
-static void
+static int
ldtermrput(queue_t *q, mblk_t *mp)
{
ldtermstd_state_t *tp;
@@ -972,7 +972,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
if (iocp->ioc_id == tp->t_iocid) {
tp->t_state &= ~TS_IOCWAIT;
freemsg(mp);
- return;
+ return (0);
}
}
@@ -980,7 +980,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
default:
(void) putq(q, mp);
- return;
+ return (0);
/*
* Send these up unmolested
@@ -991,12 +991,12 @@ ldtermrput(queue_t *q, mblk_t *mp)
case M_IOCNAK:
putnext(q, mp);
- return;
+ return (0);
case M_IOCACK:
ldterm_ioctl_reply(q, mp);
- return;
+ return (0);
case M_BREAK:
@@ -1021,7 +1021,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
if ((mp = allocb(3, BPRI_HI)) == NULL) {
cmn_err(CE_WARN,
"ldtermrput: no blocks");
- return;
+ return (0);
}
mp->b_datap->db_type = M_DATA;
*mp->b_wptr++ = (uchar_t)'\377';
@@ -1036,7 +1036,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
} else {
freemsg(mp);
}
- return;
+ return (0);
}
/*
* We look at the apparent modes here instead of the
@@ -1060,7 +1060,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
if ((mp = allocb(3, BPRI_HI)) == NULL) {
cmn_err(CE_WARN,
"ldtermrput: no blocks");
- return;
+ return (0);
}
mp->b_datap->db_type = M_DATA;
*mp->b_wptr++ = (uchar_t)'\377';
@@ -1075,7 +1075,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
if ((mp = allocb(1, BPRI_HI)) == NULL) {
cmn_err(CE_WARN,
"ldtermrput: no blocks");
- return;
+ return (0);
}
mp->b_datap->db_type = M_DATA;
*mp->b_wptr++ = '\0';
@@ -1084,7 +1084,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
} else {
freemsg(mp);
}
- return;
+ return (0);
case M_CTL:
DEBUG3(("ldtermrput: M_CTL received\n"));
@@ -1098,7 +1098,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
"Non standard M_CTL received by ldterm module\n"));
/* May be for someone else; pass it on */
putnext(q, mp);
- return;
+ return (0);
}
qryp = (struct iocblk *)mp->b_rptr;
@@ -1165,7 +1165,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
break;
}
putnext(q, mp); /* In case anyone else has to see it */
- return;
+ return (0);
case M_FLUSH:
/*
@@ -1202,7 +1202,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
(void) putnextctl(wrq, M_STARTI);
DEBUG1(("M_STARTI down\n"));
}
- return;
+ return (0);
case M_DATA:
break;
@@ -1226,7 +1226,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
*/
if (tp->t_state & TS_NOCANON) {
(void) putq(q, mp);
- return;
+ return (0);
}
bp = mp;
@@ -1471,6 +1471,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
(void) putnextctl(wrq, M_STOPI);
DEBUG1(("M_STOPI down\n"));
}
+ return (0);
}
@@ -1479,7 +1480,7 @@ ldtermrput(queue_t *q, mblk_t *mp)
* ('\') processing, gathering into messages, upper/lower case input
* mapping.
*/
-static void
+static int
ldtermrsrv(queue_t *q)
{
ldtermstd_state_t *tp;
@@ -1526,6 +1527,7 @@ ldtermrsrv(queue_t *q)
tp->t_state &= ~TS_TBLOCK;
(void) putctl(WR(q), M_STARTI);
}
+ return (0);
}
/*
@@ -3050,7 +3052,7 @@ ldterm_wenable(void *addr)
* if there's already something pending or if its downstream neighbor
* is clogged.
*/
-static void
+static int
ldtermwput(queue_t *q, mblk_t *mp)
{
ldtermstd_state_t *tp;
@@ -3074,7 +3076,7 @@ ldtermwput(queue_t *q, mblk_t *mp)
(*mp->b_rptr == FLUSHW)) {
tp->t_state &= ~TS_FLUSHWAIT;
freemsg(mp);
- return;
+ return (0);
}
/*
* This is coming from above, so we only
@@ -3210,7 +3212,7 @@ ldtermwput(queue_t *q, mblk_t *mp)
putnext(q, mp);
break;
}
- return;
+ return (0);
}
/*
* If our queue is nonempty or there's a traffic jam
@@ -3243,24 +3245,25 @@ ldtermwput(queue_t *q, mblk_t *mp)
*/
default:
(void) ldtermwmsg(q, mp);
- return;
+ return (0);
}
}
(void) putq(q, mp);
- return;
+ return (0);
}
/*
* We can take the fast path through, by simply calling
* ldtermwmsg to dispose of mp.
*/
(void) ldtermwmsg(q, mp);
+ return (0);
}
/*
* Line discipline output queue service procedure.
*/
-static void
+static int
ldtermwsrv(queue_t *q)
{
mblk_t *mp;
@@ -3288,6 +3291,7 @@ ldtermwsrv(queue_t *q)
break;
}
}
+ return (0);
}
diff --git a/usr/src/uts/common/io/pckt.c b/usr/src/uts/common/io/pckt.c
index 3dcb518228..410bd31e3b 100644
--- a/usr/src/uts/common/io/pckt.c
+++ b/usr/src/uts/common/io/pckt.c
@@ -25,7 +25,7 @@
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
-/* All Rights Reserved */
+/* All Rights Reserved */
/*
@@ -97,9 +97,9 @@ _info(struct modinfo *modinfop)
static int pcktopen(queue_t *, dev_t *, int, int, cred_t *);
static int pcktclose(queue_t *, int, cred_t *);
-static void pcktrput(queue_t *, mblk_t *);
-static void pcktrsrv(queue_t *);
-static void pcktwput(queue_t *, mblk_t *);
+static int pcktrput(queue_t *, mblk_t *);
+static int pcktrsrv(queue_t *);
+static int pcktwput(queue_t *, mblk_t *);
static mblk_t *add_ctl_info(queue_t *, mblk_t *);
static void add_ctl_wkup(void *);
@@ -142,8 +142,8 @@ static struct module_info pcktoinfo = {
};
static struct qinit pcktrinit = {
- (int (*)())pcktrput,
- (int (*)())pcktrsrv,
+ pcktrput,
+ pcktrsrv,
pcktopen,
pcktclose,
NULL,
@@ -152,7 +152,7 @@ static struct qinit pcktrinit = {
};
static struct qinit pcktwinit = {
- (int (*)())pcktwput,
+ pcktwput,
NULL,
NULL,
NULL,
@@ -311,7 +311,7 @@ pcktclose(
* This is called from the module or
* driver downstream.
*/
-static void
+static int
pcktrput(
queue_t *q, /* Pointer to the read queue */
mblk_t *mp) /* Pointer to the current message block */
@@ -406,6 +406,7 @@ prefix_head:
putnext(q, mp);
break;
}
+ return (0);
}
/*
@@ -416,7 +417,7 @@ prefix_head:
* The function will attempt to get the messages off the queue and
* process them.
*/
-static void
+static int
pcktrsrv(queue_t *q)
{
mblk_t *mp;
@@ -435,7 +436,7 @@ pcktrsrv(queue_t *q)
if (!datamsg(mp->b_datap->db_type))
noenable(q);
(void) putbq(q, mp);
- return;
+ return (0);
}
/*
@@ -460,7 +461,7 @@ pcktrsrv(queue_t *q)
/*
* Running into memory or flow ctl problems.
*/
- return;
+ return (0);
}
/* FALL THROUGH */
@@ -469,6 +470,7 @@ pcktrsrv(queue_t *q)
break;
}
}
+ return (0);
}
/*
@@ -476,12 +478,13 @@ pcktrsrv(queue_t *q)
* All messages are send downstream unchanged
*/
-static void
+static int
pcktwput(
queue_t *q, /* Pointer to the read queue */
mblk_t *mp) /* Pointer to current message block */
{
putnext(q, mp);
+ return (0);
}
#ifdef _MULTI_DATAMODEL
@@ -497,8 +500,7 @@ pcktwput(
static mblk_t *
pckt_reallocb(
queue_t *q, /* Pointer to the read queue */
- mblk_t *mp /* Pointer to the message block to be changed */
-)
+ mblk_t *mp) /* Pointer to the message block to be changed */
{
mblk_t *nmp;
@@ -539,7 +541,7 @@ pckt_reallocb(
/*
* add_ctl_info: add message control information to in coming
- * message.
+ * message.
*/
static mblk_t *
add_ctl_info(
@@ -613,15 +615,15 @@ add_ctl_info(
* from <sys/stream.h>.
*/
struct iocblk32 {
- int32_t ioc_cmd;
+ int32_t ioc_cmd;
caddr32_t ioc_cr;
uint32_t ioc_id;
- int32_t ioc_count;
- int32_t ioc_error;
- int32_t ioc_rval;
- int32_t ioc_fill1;
+ int32_t ioc_count;
+ int32_t ioc_error;
+ int32_t ioc_rval;
+ int32_t ioc_fill1;
uint32_t ioc_flag;
- int32_t ioc_filler[2];
+ int32_t ioc_filler[2];
} niocblk_32;
struct iocblk *iocblk_64;
diff --git a/usr/src/uts/common/io/pfmod.c b/usr/src/uts/common/io/pfmod.c
index c9c452e6ef..e6c241eafa 100644
--- a/usr/src/uts/common/io/pfmod.c
+++ b/usr/src/uts/common/io/pfmod.c
@@ -35,7 +35,7 @@
*
* Based on SunOS 4.x version. This version has minor changes:
* - general SVR4 porting stuff
- * - change name and prefixes from "nit" buffer to streams buffer
+ * - change name and prefixes from "nit" buffer to streams buffer
* - multithreading assumes configured as D_MTQPAIR
*/
@@ -87,12 +87,8 @@ static int pfopen(queue_t *, dev_t *, int, int, cred_t *);
static int pfclose(queue_t *, int, cred_t *);
static void pfioctl(queue_t *wq, mblk_t *mp);
static int FilterPacket(struct packdesc *, struct epacketfilt *);
-/*
- * To save instructions, since STREAMS ignores the return value
- * from these functions, they are defined as void here. Kind of icky, but...
- */
-static void pfwput(queue_t *, mblk_t *);
-static void pfrput(queue_t *, mblk_t *);
+static int pfwput(queue_t *, mblk_t *);
+static int pfrput(queue_t *, mblk_t *);
static struct module_info pf_minfo = {
22, /* mi_idnum */
@@ -104,7 +100,7 @@ static struct module_info pf_minfo = {
};
static struct qinit pf_rinit = {
- (int (*)())pfrput, /* qi_putp */
+ pfrput, /* qi_putp */
NULL,
pfopen, /* qi_qopen */
pfclose, /* qi_qclose */
@@ -114,7 +110,7 @@ static struct qinit pf_rinit = {
};
static struct qinit pf_winit = {
- (int (*)())pfwput, /* qi_putp */
+ pfwput, /* qi_putp */
NULL, /* qi_srvp */
NULL, /* qi_qopen */
NULL, /* qi_qclose */
@@ -207,7 +203,7 @@ pfclose(queue_t *rq, int flags __unused, cred_t *credp __unused)
* Write-side put procedure. Its main task is to detect ioctls.
* Other message types are passed on through.
*/
-static void
+static int
pfwput(queue_t *wq, mblk_t *mp)
{
switch (mp->b_datap->db_type) {
@@ -219,6 +215,7 @@ pfwput(queue_t *wq, mblk_t *mp)
putnext(wq, mp);
break;
}
+ return (0);
}
/*
@@ -230,7 +227,7 @@ pfwput(queue_t *wq, mblk_t *mp)
* which are skipped over before executing the packet filter
* on any remaining M_DATA mblks.
*/
-static void
+static int
pfrput(queue_t *rq, mblk_t *mp)
{
struct epacketfilt *pfp = (struct epacketfilt *)rq->q_ptr;
@@ -308,7 +305,7 @@ pfrput(queue_t *rq, mblk_t *mp)
if (mbp) {
pd.pd_body = (ushort_t *)mbp->b_rptr;
pd.pd_bodylen = (mbp->b_wptr - mbp->b_rptr) /
- sizeof (ushort_t);
+ sizeof (ushort_t);
} else {
pd.pd_body = NULL;
pd.pd_bodylen = 0;
@@ -328,7 +325,7 @@ pfrput(queue_t *rq, mblk_t *mp)
putnext(rq, mp);
break;
}
-
+ return (0);
}
/*
diff --git a/usr/src/uts/common/io/ptem.c b/usr/src/uts/common/io/ptem.c
index e4dc15a3ac..6497465b61 100644
--- a/usr/src/uts/common/io/ptem.c
+++ b/usr/src/uts/common/io/ptem.c
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
-/* All Rights Reserved */
+/* All Rights Reserved */
/*
@@ -97,9 +97,9 @@ _info(struct modinfo *modinfop)
*/
static int ptemopen(queue_t *, dev_t *, int, int, cred_t *);
static int ptemclose(queue_t *, int, cred_t *);
-static void ptemrput(queue_t *, mblk_t *);
-static void ptemwput(queue_t *, mblk_t *);
-static void ptemwsrv(queue_t *);
+static int ptemrput(queue_t *, mblk_t *);
+static int ptemwput(queue_t *, mblk_t *);
+static int ptemwsrv(queue_t *);
static struct module_info ptem_info = {
0xabcd,
@@ -111,7 +111,7 @@ static struct module_info ptem_info = {
};
static struct qinit ptemrinit = {
- (int (*)()) ptemrput,
+ ptemrput,
NULL,
ptemopen,
ptemclose,
@@ -121,8 +121,8 @@ static struct qinit ptemrinit = {
};
static struct qinit ptemwinit = {
- (int (*)()) ptemwput,
- (int (*)()) ptemwsrv,
+ ptemwput,
+ ptemwsrv,
ptemopen,
ptemclose,
nulldev,
@@ -267,7 +267,7 @@ ptemclose(queue_t *q, int flag, cred_t *credp)
*
* This is called from the module or driver downstream.
*/
-static void
+static int
ptemrput(queue_t *q, mblk_t *mp)
{
struct iocblk *iocp; /* M_IOCTL data */
@@ -425,6 +425,7 @@ ptemrput(queue_t *q, mblk_t *mp)
putnext(q, mp);
break;
}
+ return (0);
}
@@ -437,7 +438,7 @@ ptemrput(queue_t *q, mblk_t *mp)
* basically just giving up and reporting failure. It really ought to
* set up bufcalls and only fail when it's absolutely necessary.
*/
-static void
+static int
ptemwput(queue_t *q, mblk_t *mp)
{
struct ptem *ntp = (struct ptem *)q->q_ptr;
@@ -514,7 +515,7 @@ ptemwput(queue_t *q, mblk_t *mp)
putnext(q, mp);
break;
}
- return;
+ return (0);
}
/*
* If our queue is nonempty or flow control persists
@@ -546,13 +547,13 @@ ptemwput(queue_t *q, mblk_t *mp)
*/
default:
(void) ptemwmsg(q, mp);
- return;
+ return (0);
}
break;
case M_DELAY: /* tty delays not supported */
freemsg(mp);
- return;
+ return (0);
case M_DATA:
if ((mp->b_wptr - mp->b_rptr) < 0) {
@@ -560,28 +561,29 @@ ptemwput(queue_t *q, mblk_t *mp)
* Free all bad length messages.
*/
freemsg(mp);
- return;
+ return (0);
} else if ((mp->b_wptr - mp->b_rptr) == 0) {
if (!(ntp->state & IS_PTSTTY)) {
freemsg(mp);
- return;
+ return (0);
}
}
}
(void) putq(q, mp);
- return;
+ return (0);
}
/*
* fast path into ptemwmsg to dispose of mp.
*/
if (!ptemwmsg(q, mp))
(void) putq(q, mp);
+ return (0);
}
/*
* ptem write queue service procedure.
*/
-static void
+static int
ptemwsrv(queue_t *q)
{
mblk_t *mp;
@@ -592,6 +594,7 @@ ptemwsrv(queue_t *q)
break;
}
}
+ return (0);
}
diff --git a/usr/src/uts/common/io/vioif/vioif.c b/usr/src/uts/common/io/vioif/vioif.c
index 201e84e11b..a97dd9deca 100644
--- a/usr/src/uts/common/io/vioif/vioif.c
+++ b/usr/src/uts/common/io/vioif/vioif.c
@@ -1725,7 +1725,6 @@ vioif_detach(dev_info_t *dip, ddi_detach_cmd_t cmd)
dev_err(dip, CE_WARN, "!MAC unregister failed (%d)", r);
return (DDI_FAILURE);
}
- mac_free(vif->vif_macp);
/*
* Shut down the device so that we can recover any previously
@@ -1743,9 +1742,13 @@ vioif_detach(dev_info_t *dip, ddi_detach_cmd_t cmd)
vioif_rxbuf_free(vif, rb);
}
- (void) virtio_fini(vif->vif_virtio, B_FALSE);
-
+ /*
+ * vioif_free_bufs() must be called before virtio_fini()
+ * as it uses virtio_chain_free() which itself depends on some
+ * virtio data structures still being around.
+ */
vioif_free_bufs(vif);
+ (void) virtio_fini(vif->vif_virtio, B_FALSE);
mutex_exit(&vif->vif_mutex);
mutex_destroy(&vif->vif_mutex);
diff --git a/usr/src/uts/common/io/vioif/vioif.h b/usr/src/uts/common/io/vioif/vioif.h
index 51dbc1acd4..19d8965bd4 100644
--- a/usr/src/uts/common/io/vioif/vioif.h
+++ b/usr/src/uts/common/io/vioif/vioif.h
@@ -342,7 +342,6 @@ struct vioif {
vioif_runstate_t vif_runstate;
mac_handle_t vif_mac_handle;
- mac_register_t *vif_macp;
virtio_queue_t *vif_rx_vq;
virtio_queue_t *vif_tx_vq;
diff --git a/usr/src/uts/common/io/virtio/virtio_main.c b/usr/src/uts/common/io/virtio/virtio_main.c
index be92dacfba..cb81142a53 100644
--- a/usr/src/uts/common/io/virtio/virtio_main.c
+++ b/usr/src/uts/common/io/virtio/virtio_main.c
@@ -81,6 +81,7 @@ static int virtio_interrupts_setup(virtio_t *, int);
static void virtio_interrupts_teardown(virtio_t *);
static void virtio_interrupts_disable_locked(virtio_t *);
static void virtio_queue_free(virtio_queue_t *);
+static void virtio_device_reset_locked(virtio_t *);
/*
* We use the same device access attributes for BAR mapping and access to the
@@ -194,7 +195,7 @@ virtio_fini(virtio_t *vio, boolean_t failed)
*/
virtio_set_status(vio, VIRTIO_STATUS_FAILED);
} else {
- virtio_device_reset(vio);
+ virtio_device_reset_locked(vio);
}
/*
@@ -215,6 +216,7 @@ virtio_fini(virtio_t *vio, boolean_t failed)
/*
* Ensure we have torn down everything we set up.
*/
+ vio->vio_initlevel &= ~VIRTIO_INITLEVEL_SHUTDOWN;
VERIFY0(vio->vio_initlevel);
mutex_exit(&vio->vio_mutex);
diff --git a/usr/src/uts/i86pc/Makefile.rules b/usr/src/uts/i86pc/Makefile.rules
index 1863226fd0..3d3c8131c1 100644
--- a/usr/src/uts/i86pc/Makefile.rules
+++ b/usr/src/uts/i86pc/Makefile.rules
@@ -262,7 +262,8 @@ DBOOT_MACH_32 = -D_BOOT_TARGET_i386
DBOOT_MACH_64 = -D_BOOT_TARGET_amd64
DBOOT_DEFS = -D_BOOT $(DBOOT_MACH_$(CLASS))
DBOOT_DEFS += -D_MACHDEP -U_KERNEL -D_I32LPx
-DBOOT_FLAGS = $(CCVERBOSE) $(CSTD) $(CERRWARN) $(CCNOAUTOINLINE)
+DBOOT_FLAGS = $(CFLAGS_XARCH_32) $(CCVERBOSE) $(CSTD) $(CERRWARN)
+DBOOT_FLAGS += $(CCNOAUTOINLINE)
DBOOT_CC_INCL = -I$(SRC)/common -I$(SRC)/common/util $(INCLUDE_PATH)
DBOOT_AS_INCL = $(AS_INC_PATH)