- don't leak ccb on alloc failure.
- KASSERT to prevent memory leak.
This commit is contained in:
parent
5198f250f5
commit
9ac12f166f
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: nvme.c,v 1.31 2017/10/28 04:53:55 riastradh Exp $ */
|
||||
/* $NetBSD: nvme.c,v 1.32 2018/02/27 12:59:53 christos Exp $ */
|
||||
/* $OpenBSD: nvme.c,v 1.49 2016/04/18 05:59:50 dlg Exp $ */
|
||||
|
||||
/*
|
||||
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: nvme.c,v 1.31 2017/10/28 04:53:55 riastradh Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: nvme.c,v 1.32 2018/02/27 12:59:53 christos Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
@ -570,8 +570,10 @@ nvme_ns_identify(struct nvme_softc *sc, uint16_t nsid)
|
||||
KASSERT(ccb != NULL); /* it's a bug if we don't have spare ccb here */
|
||||
|
||||
mem = nvme_dmamem_alloc(sc, sizeof(*identify));
|
||||
if (mem == NULL)
|
||||
if (mem == NULL) {
|
||||
nvme_ccb_put(sc->sc_admin_q, ccb);
|
||||
return ENOMEM;
|
||||
}
|
||||
|
||||
memset(&sqe, 0, sizeof(sqe));
|
||||
sqe.opcode = NVM_ADMIN_IDENTIFY;
|
||||
@ -601,6 +603,7 @@ nvme_ns_identify(struct nvme_softc *sc, uint16_t nsid)
|
||||
|
||||
ns = nvme_ns_get(sc, nsid);
|
||||
KASSERT(ns);
|
||||
KASSERT(ns->ident == NULL);
|
||||
ns->ident = identify;
|
||||
|
||||
done:
|
||||
|
Loading…
x
Reference in New Issue
Block a user