Page MenuHomeFreeBSD

D16136.id45065.diff
No OneTemporary

D16136.id45065.diff

Index: sys/dev/xen/blkfront/blkfront.c
===================================================================
--- sys/dev/xen/blkfront/blkfront.c
+++ sys/dev/xen/blkfront/blkfront.c
@@ -1333,7 +1333,10 @@
if (sc->xbd_max_request_indirectpages > 0) {
indirectpages = contigmalloc(
PAGE_SIZE * sc->xbd_max_request_indirectpages,
- M_XENBLOCKFRONT, M_ZERO, 0, ~0, PAGE_SIZE, 0);
+ M_XENBLOCKFRONT, M_ZERO | M_NOWAIT, 0, ~0, PAGE_SIZE, 0);
+ if (indirectpages == NULL) {
+ sc->xbd_max_request_indirectpages = 0;
+ }
} else {
indirectpages = NULL;
}
@@ -1345,8 +1348,11 @@
&cm->cm_indirectionrefs[j]))
break;
}
- if (j < sc->xbd_max_request_indirectpages)
+ if (j < sc->xbd_max_request_indirectpages) {
+ contigfree(indirectpages, PAGE_SIZE *
+ sc->xbd_max_request_indirectpages, M_XENBLOCKFRONT);
break;
+ }
cm->cm_indirectionpages = indirectpages;
xbd_free_command(cm);
}

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 21, 7:55 PM (1 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27115298
Default Alt Text
D16136.id45065.diff (946 B)

Event Timeline