OK, Found out what diff makes it crash ...
--- linux-2.6.24.orig/drivers/scsi/arcmsr/arcmsr_hba.c +++ linux-2.6.24/drivers/scsi/arcmsr/arcmsr_hba.c @@ -1381,12 +1381,13 @@
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); + ver_addr = (unsigned long *)tmp; + if (!tmp) { retvalue = ARCMSR_MESSAGE_FAIL; goto message_out; } @@ -1422,18 +1423,19 @@ 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); + ver_addr = (unsigned long *)tmp; + if (!tmp) { retvalue = ARCMSR_MESSAGE_FAIL; goto message_out; } @@ -1483,7 +1485,7 @@ retvalue = ARCMSR_MESSAGE_FAIL; } } - pci_free_consistent(acb->pdev, 1032, ver_addr, buf_handle); + kfree(tmp); } break;
OK, Found out what diff makes it crash ...
--- linux-2. 6.24.orig/ drivers/ scsi/arcmsr/ arcmsr_ hba.c 6.24/drivers/ scsi/arcmsr/ arcmsr_ hba.c
+++ linux-2.
@@ -1381,12 +1381,13 @@
case ARCMSR_ MESSAGE_ READ_RQBUFFER: {
unsigned long *ver_addr;
uint8_ t *pQbuffer, *ptmpQbuffer;
int32_ t allxfer_len = 0;
- dma_addr_t buf_handle;
+ void *tmp;
- ver_addr = pci_alloc_ consistent( acb->pdev, 1032, &buf_handle); GFP_DMA) ;
retvalue = ARCMSR_ MESSAGE_ FAIL;
goto message_out;
memcpy( pcmdmessagefld- >messagedatabuf fer, (uint8_t *)ver_addr, allxfer_len);
pcmdmessagefl d->cmdmessage. Length = allxfer_len;
pcmdmessagefl d->cmdmessage. ReturnCode = ARCMSR_ MESSAGE_ RETURNCODE_ OK; consistent( acb->pdev, 1032, ver_addr, buf_handle);
break;
- if (!ver_addr) {
+ tmp = kmalloc(1032, GFP_KERNEL|
+ ver_addr = (unsigned long *)tmp;
+ if (!tmp) {
}
@@ -1422,18 +1423,19 @@
- pci_free_
+ kfree(tmp);
}
case ARCMSR_ MESSAGE_ WRITE_WQBUFFER: {
unsigned long *ver_addr;
int32_ t my_empty_len, user_len, wqbuf_firstindex, wqbuf_lastindex;
uint8_ t *pQbuffer, *ptmpuserbuffer;
- dma_addr_t buf_handle;
+ void *tmp;
- ver_addr = pci_alloc_ consistent( acb->pdev, 1032, &buf_handle); GFP_DMA) ;
retvalue = ARCMSR_ MESSAGE_ FAIL;
goto message_out;
retvalue = ARCMSR_ MESSAGE_ FAIL;
}
} consistent( acb->pdev, 1032, ver_addr, buf_handle);
break;
- if (!ver_addr) {
+ tmp = kmalloc(1032, GFP_KERNEL|
+ ver_addr = (unsigned long *)tmp;
+ if (!tmp) {
}
@@ -1483,7 +1485,7 @@
- pci_free_
+ kfree(tmp);
}