diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2019-09-04 12:19:44 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2019-09-04 12:19:44 +0000 |
commit | f03504a3d8ff76e9b29505fc561f7ac625712180 (patch) | |
tree | 8f2df3e2f797a1c61173c20ce2ae7e1f33de961f /usr/src | |
parent | 1ed9823d08fd2b08c4d4f0d9a57075899d36b295 (diff) | |
parent | a8ea0c9dd566453d9b69eab5f863930da9d0c4ae (diff) | |
download | illumos-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
Diffstat (limited to 'usr/src')
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) |