DAC960, remove redundant (and uninitialized) PciDevice pointer.
PATCH 1/1 DAC960, remove redundant (and uninitialized) PciDevice pointer.
this patch fixes a bug that appeared only on Alpha hardware with DAC960 controllers. The Command->PciDevice structure member was never initialized. This was passed to the pci scatter/gather functions. This didn't cause a problem for x86 platforms because the scatter/gather funtions never really used that information. Alpha platforms do use that pointer.
The Command->PciDevice field was also redundant with the Controller->PCIDevice field, which IS initialized properly. So, eliminating the redundant structure member and substituting the Controller's member fixes the bug.
-------------------------------------------------------------------------
drivers/block/DAC960.c +3 -3
@@ -3300,7 +3300,7 @@ Command->SegmentCount =blk_rq_map_sg (Controller->RequestQueue, Command->Request, Command->cmd_sglist);/* pci_map_sg MAY change the value of SegCount */ - Command->SegmentCount =pci_map_sg (Command->PciDevice, Command->cmd_sglist, + Command->SegmentCount =pci_map_sg (Controller->PCIDevice, Command->cmd_sglist, Command->SegmentCount, Command->DmaDirection);DAC960_QueueReadWriteCommand (Command);
@@ -3336,7 +3336,7 @@ (void )blk_rq_map_sg (Controller->RequestQueue, Command->Request, Command->cmd_sglist); - (void )pci_map_sg (Command->PciDevice, Command->cmd_sglist,1 , + (void )pci_map_sg (Controller->PCIDevice, Command->cmd_sglist,1 , Command->DmaDirection);/* * Resubmitting the request sector at a time is really tedious.
@@ -3377,7 +3377,7 @@if (SuccessfulIO) UpToDate =1 ; -pci_unmap_sg (Command->PciDevice, Command->cmd_sglist, +pci_unmap_sg (Command->Controller->PCIDevice, Command->cmd_sglist, Command->SegmentCount, Command->DmaDirection);if (!end_that_request_first (Request, UpToDate, Command->BlockCount)) {
drivers/block/DAC960.h +0 -1
@@ -2248,7 +2248,6 @@int DmaDirection;struct scatterlist *cmd_sglist;struct request *Request; -struct pci_dev *PciDevice; union { struct { DAC960_V1_CommandMailbox_T CommandMailbox;