[issue1777] vn panic: Freeing already free credential! 0xdef403f8

Matthew Dillon dillon at apollo.backplane.com
Fri Jun 4 21:46:06 PDT 2010


: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 
					<dillon at backplane.com>





More information about the Bugs mailing list