Module Name:    src
Committed By:   christos
Date:           Sat Apr  4 15:33:36 UTC 2015

Modified Files:
        src/sys/dev/usb: umass_isdata.c

Log Message:
fix leak, found by Brainy.


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/sys/dev/usb/umass_isdata.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/umass_isdata.c
diff -u src/sys/dev/usb/umass_isdata.c:1.30 src/sys/dev/usb/umass_isdata.c:1.31
--- src/sys/dev/usb/umass_isdata.c:1.30	Fri Sep 12 12:40:38 2014
+++ src/sys/dev/usb/umass_isdata.c	Sat Apr  4 11:33:36 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: umass_isdata.c,v 1.30 2014/09/12 16:40:38 skrll Exp $	*/
+/*	$NetBSD: umass_isdata.c,v 1.31 2015/04/04 15:33:36 christos Exp $	*/
 
 /*
  * TODO:
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: umass_isdata.c,v 1.30 2014/09/12 16:40:38 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: umass_isdata.c,v 1.31 2015/04/04 15:33:36 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -195,8 +195,11 @@ umass_isdata_attach(struct umass_softc *
 	USETW(req.wLength, sizeof *cf);
 
 	err = usbd_do_request(sc->sc_udev, &req, cf);
-	if (err)
-		return (EIO);
+	if (err) {
+		sc->bus = NULL;
+		free(scbus, M_DEVBUF);
+		return EIO;
+	}
 	DPRINTF(("umass_wd_attach info:\n  EventNotification=0x%02x "
 		 "ExternalClock=0x%02x ATAInitTimeout=0x%02x\n"
 		 "  ATAMisc1=0x%02x ATAMajorCommand=0x%02x "

Reply via email to