On Fri, 2008-02-15 at 15:57 -0600, James Bottomley wrote:
> On Fri, 2008-02-15 at 10:56 -1000, Joshua Hoblitt wrote:
> > Hi James,
> > 
> > Daniel took the time to patch up the 2.6.24 version.  I've tested it and
> > the warning messages are gone.  Please take a look at:
> > 
> 
> > diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c 
> > b/drivers/scsi/arcmsr/arcmsr_hba.c
> > index f4a202e..4f9ff32 100644
> > --- a/drivers/scsi/arcmsr/arcmsr_hba.c
> > +++ b/drivers/scsi/arcmsr/arcmsr_hba.c
> > @@ -1380,12 +1388,13 @@ static int arcmsr_iop_message_xfer(struct 
> > AdapterControlBlock *acb, \
> >  
> >     case ARCMSR_MESSAGE_READ_RQBUFFER: {
> >             unsigned long *ver_addr;
> > -           dma_addr_t buf_handle;
> >             uint8_t *pQbuffer, *ptmpQbuffer;
> >             int32_t allxfer_len = 0;
> > +           void *tmp;
> >  
> > -           ver_addr = pci_alloc_consistent(acb->pdev, 1032, &buf_handle);
> > -           if (!ver_addr) {
> > +           tmp = kmalloc(1032, GFP_KERNEL|GFP_DMA);
> 
> GFP_DMA is pretty pointless for a buffer which never actually gets anywhere 
> near a DMA, isn't it?
> 
> > +           ver_addr = (unsigned long *)tmp;
> 
> No cast needed from void *
> 
> > +           if (!tmp) {
> >                     retvalue = ARCMSR_MESSAGE_FAIL;
> >                     goto message_out;
> >             }
> > @@ -1421,18 +1430,19 @@ static int arcmsr_iop_message_xfer(struct 
> > AdapterControlBlock *acb, \
> >             memcpy(pcmdmessagefld->messagedatabuffer, (uint8_t *)ver_addr, 
> > allxfer_len);
> >             pcmdmessagefld->cmdmessage.Length = allxfer_len;
> >             pcmdmessagefld->cmdmessage.ReturnCode = 
> > ARCMSR_MESSAGE_RETURNCODE_OK;
> > -           pci_free_consistent(acb->pdev, 1032, ver_addr, buf_handle);
> > +           kfree(tmp);
> >             }
> >             break;
> >  
> >     case ARCMSR_MESSAGE_WRITE_WQBUFFER: {
> >             unsigned long *ver_addr;
> > -           dma_addr_t buf_handle;
> >             int32_t my_empty_len, user_len, wqbuf_firstindex, 
> > wqbuf_lastindex;
> >             uint8_t *pQbuffer, *ptmpuserbuffer;
> > +           void *tmp;
> >  
> > -           ver_addr = pci_alloc_consistent(acb->pdev, 1032, &buf_handle);
> > -           if (!ver_addr) {
> > +           tmp = kmalloc(1032, GFP_KERNEL|GFP_DMA);

Actually, also all the code around here implies we're in atomic context,
so that GFP_KERNEL can't be right either.

James


-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to