:I'm not sure this is the correct approach, but the attached patch
:should fix this issue.
:
:Joe
:...
:
:diff --git a/sys/dev/disk/vn/vn.c b/sys/dev/disk/vn/vn.c
:index 95bcf44..9f45281 100644
:--- a/sys/dev/disk/vn/vn.c
:+++ b/sys/dev/disk/vn/vn.c
:@@ -697,7 +697,7 @@ vnsetcred(struct vn_softc *vn, struct ucred *cred)
:        * Set credits in our softc
:        */
: 
:-      if (vn->sc_cred)
:+      if (vn->sc_cred && vn->sc_cred->cr_ref > 0)
:               crfree(vn->sc_cred);
:       vn->sc_cred = crdup(cred);

    That can't be right.  If vn->sc_cred is set at all there must be a
    ref on it.  If there isn't something is leaking a crfree() without
    clearing it.

                                        -Matt
                                        Matthew Dillon 
                                        <[email protected]>

Reply via email to