diff -urN 2.2.15pre14/drivers/block/cpqarray.c cpqarray/drivers/block/cpqarray.c --- 2.2.15pre14/drivers/block/cpqarray.c Fri Mar 10 04:27:13 2000 +++ cpqarray/drivers/block/cpqarray.c Fri Mar 10 04:51:56 2000 @@ -113,7 +113,7 @@ static void getgeometry(int ctlr); static void start_fwbk(int ctlr); -static cmdlist_t * cmd_alloc(ctlr_info_t *h); +static cmdlist_t * cmd_alloc(ctlr_info_t *h, int gfp_mask); static void cmd_free(ctlr_info_t *h, cmdlist_t *c); static int sendcmd( @@ -877,7 +877,7 @@ return; } - if ((c = cmd_alloc(h)) == NULL) + if ((c = cmd_alloc(h, GFP_ATOMIC)) == NULL) { start_io(h); return; @@ -1201,7 +1201,7 @@ unsigned long flags; int error; - if ((c = cmd_alloc(NULL)) == NULL) + if ((c = cmd_alloc(NULL, GFP_KERNEL)) == NULL) return -ENOMEM; c->ctlr = ctlr; c->hdr.unit = (io->unit & UNITVALID) ? (io->unit & ~UNITVALID) : dsk; @@ -1300,13 +1300,13 @@ * critical (and can wait for kmalloc and possibly sleep) can pass in NULL * as the first argument to get a new command. */ -static cmdlist_t * cmd_alloc(ctlr_info_t *h) +static cmdlist_t * cmd_alloc(ctlr_info_t *h, int gfp_mask) { cmdlist_t * c; int i; if (h == NULL) { - c = (cmdlist_t*)kmalloc(sizeof(cmdlist_t), GFP_KERNEL); + c = (cmdlist_t*)kmalloc(sizeof(cmdlist_t), gfp_mask); if(c==NULL) return NULL; } else { @@ -1358,7 +1358,7 @@ unsigned long i; ctlr_info_t *info_p = hba[ctlr]; - c = cmd_alloc(info_p); + c = cmd_alloc(info_p, GFP_KERNEL); c->ctlr = ctlr; c->hdr.unit = log_unit; c->hdr.prio = 0;