aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/cciss.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block/cciss.c')
-rw-r--r--drivers/block/cciss.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index ca83f96756ad..6526157edafc 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -41,8 +41,9 @@
41#include <linux/spinlock.h> 41#include <linux/spinlock.h>
42#include <linux/compat.h> 42#include <linux/compat.h>
43#include <linux/mutex.h> 43#include <linux/mutex.h>
44#include <linux/bitmap.h>
45#include <linux/io.h>
44#include <asm/uaccess.h> 46#include <asm/uaccess.h>
45#include <asm/io.h>
46 47
47#include <linux/dma-mapping.h> 48#include <linux/dma-mapping.h>
48#include <linux/blkdev.h> 49#include <linux/blkdev.h>
@@ -978,8 +979,7 @@ static CommandList_struct *cmd_alloc(ctlr_info_t *h)
978 i = find_first_zero_bit(h->cmd_pool_bits, h->nr_cmds); 979 i = find_first_zero_bit(h->cmd_pool_bits, h->nr_cmds);
979 if (i == h->nr_cmds) 980 if (i == h->nr_cmds)
980 return NULL; 981 return NULL;
981 } while (test_and_set_bit(i & (BITS_PER_LONG - 1), 982 } while (test_and_set_bit(i, h->cmd_pool_bits) != 0);
982 h->cmd_pool_bits + (i / BITS_PER_LONG)) != 0);
983 c = h->cmd_pool + i; 983 c = h->cmd_pool + i;
984 memset(c, 0, sizeof(CommandList_struct)); 984 memset(c, 0, sizeof(CommandList_struct));
985 cmd_dma_handle = h->cmd_pool_dhandle + i * sizeof(CommandList_struct); 985 cmd_dma_handle = h->cmd_pool_dhandle + i * sizeof(CommandList_struct);
@@ -1046,8 +1046,7 @@ static void cmd_free(ctlr_info_t *h, CommandList_struct *c)
1046 int i; 1046 int i;
1047 1047
1048 i = c - h->cmd_pool; 1048 i = c - h->cmd_pool;
1049 clear_bit(i & (BITS_PER_LONG - 1), 1049 clear_bit(i, h->cmd_pool_bits);
1050 h->cmd_pool_bits + (i / BITS_PER_LONG));
1051 h->nr_frees++; 1050 h->nr_frees++;
1052} 1051}
1053 1052
@@ -4268,10 +4267,7 @@ static void __devinit cciss_find_board_params(ctlr_info_t *h)
4268 4267
4269static inline bool CISS_signature_present(ctlr_info_t *h) 4268static inline bool CISS_signature_present(ctlr_info_t *h)
4270{ 4269{
4271 if ((readb(&h->cfgtable->Signature[0]) != 'C') || 4270 if (!check_signature(h->cfgtable->Signature, "CISS", 4)) {
4272 (readb(&h->cfgtable->Signature[1]) != 'I') ||
4273 (readb(&h->cfgtable->Signature[2]) != 'S') ||
4274 (readb(&h->cfgtable->Signature[3]) != 'S')) {
4275 dev_warn(&h->pdev->dev, "not a valid CISS config table\n"); 4271 dev_warn(&h->pdev->dev, "not a valid CISS config table\n");
4276 return false; 4272 return false;
4277 } 4273 }
@@ -4812,8 +4808,7 @@ static __devinit int cciss_init_reset_devices(struct pci_dev *pdev)
4812 4808
4813static __devinit int cciss_allocate_cmd_pool(ctlr_info_t *h) 4809static __devinit int cciss_allocate_cmd_pool(ctlr_info_t *h)
4814{ 4810{
4815 h->cmd_pool_bits = kmalloc( 4811 h->cmd_pool_bits = kmalloc(BITS_TO_LONGS(h->nr_cmds) *
4816 DIV_ROUND_UP(h->nr_cmds, BITS_PER_LONG) *
4817 sizeof(unsigned long), GFP_KERNEL); 4812 sizeof(unsigned long), GFP_KERNEL);
4818 h->cmd_pool = pci_alloc_consistent(h->pdev, 4813 h->cmd_pool = pci_alloc_consistent(h->pdev,
4819 h->nr_cmds * sizeof(CommandList_struct), 4814 h->nr_cmds * sizeof(CommandList_struct),
@@ -5068,9 +5063,7 @@ reinit_after_soft_reset:
5068 pci_set_drvdata(pdev, h); 5063 pci_set_drvdata(pdev, h);
5069 /* command and error info recs zeroed out before 5064 /* command and error info recs zeroed out before
5070 they are used */ 5065 they are used */
5071 memset(h->cmd_pool_bits, 0, 5066 bitmap_zero(h->cmd_pool_bits, h->nr_cmds);
5072 DIV_ROUND_UP(h->nr_cmds, BITS_PER_LONG)
5073 * sizeof(unsigned long));
5074 5067
5075 h->num_luns = 0; 5068 h->num_luns = 0;
5076 h->highest_lun = -1; 5069 h->highest_lun = -1;