Print this page
3354 kernel crash in rpcsec_gss after using gsscred
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Carlos Neira <cneirabustos@gmail.com>
Approved by: Robert Mustacchi <rm@joyent.com>
NEX-4123 xdrmblk_getpos() is unreliable
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
re #13613 rb4516 Tunables needs volatile keyword
        
@@ -21,10 +21,12 @@
 
 /*
  * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  *  Copyright (c) 1993, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright 2012 Marcel Telka <marcel@telka.sk>
+ * Copyright 2018 OmniOS Community Edition (OmniOSce) Association.
  */
 
 /*      Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T     */
 /*        All Rights Reserved   */
 
@@ -102,11 +104,13 @@
         svc_cots_kgetres,       /* Get pointer to response buffer */
         svc_cots_kfreeres,      /* Destroy pre-serialized response header */
         svc_cots_kclone_destroy, /* Destroy a clone xprt */
         svc_cots_kstart,        /* Tell `ready-to-receive' to rpcmod */
         NULL,                   /* Transport specific clone xprt */
-        svc_cots_ktattrs        /* Transport Attributes */
+        svc_cots_ktattrs,       /* Transport Attributes */
+        mir_svc_hold,           /* Increment transport reference count */
+        mir_svc_release         /* Decrement transport reference count */
 };
 
 /*
  * Master transport private data.
  * Kept in xprt->xp_p2.
@@ -725,11 +729,11 @@
 #define XIDHASH(xid)    ((xid) % DRHASHSZ)
 #define DRHASH(dr)      XIDHASH((dr)->dr_xid)
 #define REQTOXID(req)   ((req)->rq_xprt->xp_xid)
 
 static int      cotsndupreqs = 0;
-int     cotsmaxdupreqs = MAXDUPREQS;
+volatile int    cotsmaxdupreqs = MAXDUPREQS;
 static kmutex_t cotsdupreq_lock;
 static struct dupreq *cotsdrhashtbl[DRHASHSZ];
 static int      cotsdrhashstat[DRHASHSZ];
 
 static void unhash(struct dupreq *);