Page MenuHomeFreeBSD

D19470.diff
No OneTemporary

D19470.diff

Index: head/sys/dev/smartpqi/smartpqi_cam.c
===================================================================
--- head/sys/dev/smartpqi/smartpqi_cam.c
+++ head/sys/dev/smartpqi/smartpqi_cam.c
@@ -483,13 +483,21 @@
}
rcb->sgt = os_mem_alloc(softs, nseg * sizeof(rcb_t));
+ if (rcb->sgt == NULL) {
+ xpt_freeze_simq(softs->os_specific.sim, 1);
+ rcb->cm_ccb->ccb_h.status |= (CAM_REQUEUE_REQ|
+ CAM_RELEASE_SIMQ);
+ DBG_ERR_BTL(rcb->dvp, "os_mem_alloc() failed; nseg = %d\n", nseg);
+ pqi_unmap_request(rcb);
+ xpt_done((union ccb *)rcb->cm_ccb);
+ return;
+ }
+
rcb->nseg = nseg;
- if (rcb->sgt != NULL) {
- for (int i = 0; i < nseg; i++) {
- rcb->sgt[i].addr = segs[i].ds_addr;
- rcb->sgt[i].len = segs[i].ds_len;
- rcb->sgt[i].flags = 0;
- }
+ for (int i = 0; i < nseg; i++) {
+ rcb->sgt[i].addr = segs[i].ds_addr;
+ rcb->sgt[i].len = segs[i].ds_len;
+ rcb->sgt[i].flags = 0;
}
if (rcb->data_dir == SOP_DATA_DIR_FROM_DEVICE)

File Metadata

Mime Type
text/plain
Expires
Sun, Apr 26, 5:55 PM (3 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32192944
Default Alt Text
D19470.diff (964 B)

Event Timeline