aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/aacraid/commctrl.c13
-rw-r--r--drivers/scsi/fcoe/fcoe_ctlr.c2
-rw-r--r--drivers/scsi/megaraid/megaraid_sas_base.c6
-rw-r--r--drivers/scsi/megaraid/megaraid_sas_fusion.c2
-rw-r--r--drivers/scsi/mpt3sas/mpt3sas_base.c22
-rw-r--r--drivers/scsi/ses.c3
6 files changed, 29 insertions, 19 deletions
diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c
index b381b3718a98..5648b715fed9 100644
--- a/drivers/scsi/aacraid/commctrl.c
+++ b/drivers/scsi/aacraid/commctrl.c
@@ -63,7 +63,7 @@ static int ioctl_send_fib(struct aac_dev * dev, void __user *arg)
63 struct fib *fibptr; 63 struct fib *fibptr;
64 struct hw_fib * hw_fib = (struct hw_fib *)0; 64 struct hw_fib * hw_fib = (struct hw_fib *)0;
65 dma_addr_t hw_fib_pa = (dma_addr_t)0LL; 65 dma_addr_t hw_fib_pa = (dma_addr_t)0LL;
66 unsigned size; 66 unsigned int size, osize;
67 int retval; 67 int retval;
68 68
69 if (dev->in_reset) { 69 if (dev->in_reset) {
@@ -87,7 +87,8 @@ static int ioctl_send_fib(struct aac_dev * dev, void __user *arg)
87 * will not overrun the buffer when we copy the memory. Return 87 * will not overrun the buffer when we copy the memory. Return
88 * an error if we would. 88 * an error if we would.
89 */ 89 */
90 size = le16_to_cpu(kfib->header.Size) + sizeof(struct aac_fibhdr); 90 osize = size = le16_to_cpu(kfib->header.Size) +
91 sizeof(struct aac_fibhdr);
91 if (size < le16_to_cpu(kfib->header.SenderSize)) 92 if (size < le16_to_cpu(kfib->header.SenderSize))
92 size = le16_to_cpu(kfib->header.SenderSize); 93 size = le16_to_cpu(kfib->header.SenderSize);
93 if (size > dev->max_fib_size) { 94 if (size > dev->max_fib_size) {
@@ -118,6 +119,14 @@ static int ioctl_send_fib(struct aac_dev * dev, void __user *arg)
118 goto cleanup; 119 goto cleanup;
119 } 120 }
120 121
122 /* Sanity check the second copy */
123 if ((osize != le16_to_cpu(kfib->header.Size) +
124 sizeof(struct aac_fibhdr))
125 || (size < le16_to_cpu(kfib->header.SenderSize))) {
126 retval = -EINVAL;
127 goto cleanup;
128 }
129
121 if (kfib->header.Command == cpu_to_le16(TakeABreakPt)) { 130 if (kfib->header.Command == cpu_to_le16(TakeABreakPt)) {
122 aac_adapter_interrupt(dev); 131 aac_adapter_interrupt(dev);
123 /* 132 /*
diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c
index a569c65f22b1..dcf36537a767 100644
--- a/drivers/scsi/fcoe/fcoe_ctlr.c
+++ b/drivers/scsi/fcoe/fcoe_ctlr.c
@@ -2923,7 +2923,7 @@ static int fcoe_ctlr_vlan_recv(struct fcoe_ctlr *fip, struct sk_buff *skb)
2923 mutex_unlock(&fip->ctlr_mutex); 2923 mutex_unlock(&fip->ctlr_mutex);
2924 2924
2925drop: 2925drop:
2926 kfree(skb); 2926 kfree_skb(skb);
2927 return rc; 2927 return rc;
2928} 2928}
2929 2929
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index 2dab3dc2aa69..c1ed25adb17e 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -5037,7 +5037,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
5037 /* Find first memory bar */ 5037 /* Find first memory bar */
5038 bar_list = pci_select_bars(instance->pdev, IORESOURCE_MEM); 5038 bar_list = pci_select_bars(instance->pdev, IORESOURCE_MEM);
5039 instance->bar = find_first_bit(&bar_list, sizeof(unsigned long)); 5039 instance->bar = find_first_bit(&bar_list, sizeof(unsigned long));
5040 if (pci_request_selected_regions(instance->pdev, instance->bar, 5040 if (pci_request_selected_regions(instance->pdev, 1<<instance->bar,
5041 "megasas: LSI")) { 5041 "megasas: LSI")) {
5042 dev_printk(KERN_DEBUG, &instance->pdev->dev, "IO memory region busy!\n"); 5042 dev_printk(KERN_DEBUG, &instance->pdev->dev, "IO memory region busy!\n");
5043 return -EBUSY; 5043 return -EBUSY;
@@ -5339,7 +5339,7 @@ fail_ready_state:
5339 iounmap(instance->reg_set); 5339 iounmap(instance->reg_set);
5340 5340
5341 fail_ioremap: 5341 fail_ioremap:
5342 pci_release_selected_regions(instance->pdev, instance->bar); 5342 pci_release_selected_regions(instance->pdev, 1<<instance->bar);
5343 5343
5344 return -EINVAL; 5344 return -EINVAL;
5345} 5345}
@@ -5360,7 +5360,7 @@ static void megasas_release_mfi(struct megasas_instance *instance)
5360 5360
5361 iounmap(instance->reg_set); 5361 iounmap(instance->reg_set);
5362 5362
5363 pci_release_selected_regions(instance->pdev, instance->bar); 5363 pci_release_selected_regions(instance->pdev, 1<<instance->bar);
5364} 5364}
5365 5365
5366/** 5366/**
diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
index ec837544f784..52d8bbf7feb5 100644
--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
@@ -2603,7 +2603,7 @@ megasas_release_fusion(struct megasas_instance *instance)
2603 2603
2604 iounmap(instance->reg_set); 2604 iounmap(instance->reg_set);
2605 2605
2606 pci_release_selected_regions(instance->pdev, instance->bar); 2606 pci_release_selected_regions(instance->pdev, 1<<instance->bar);
2607} 2607}
2608 2608
2609/** 2609/**
diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
index 751f13edece0..750f82c339d4 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -2188,6 +2188,17 @@ mpt3sas_base_map_resources(struct MPT3SAS_ADAPTER *ioc)
2188 } else 2188 } else
2189 ioc->msix96_vector = 0; 2189 ioc->msix96_vector = 0;
2190 2190
2191 if (ioc->is_warpdrive) {
2192 ioc->reply_post_host_index[0] = (resource_size_t __iomem *)
2193 &ioc->chip->ReplyPostHostIndex;
2194
2195 for (i = 1; i < ioc->cpu_msix_table_sz; i++)
2196 ioc->reply_post_host_index[i] =
2197 (resource_size_t __iomem *)
2198 ((u8 __iomem *)&ioc->chip->Doorbell + (0x4000 + ((i - 1)
2199 * 4)));
2200 }
2201
2191 list_for_each_entry(reply_q, &ioc->reply_queue_list, list) 2202 list_for_each_entry(reply_q, &ioc->reply_queue_list, list)
2192 pr_info(MPT3SAS_FMT "%s: IRQ %d\n", 2203 pr_info(MPT3SAS_FMT "%s: IRQ %d\n",
2193 reply_q->name, ((ioc->msix_enable) ? "PCI-MSI-X enabled" : 2204 reply_q->name, ((ioc->msix_enable) ? "PCI-MSI-X enabled" :
@@ -5280,17 +5291,6 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc)
5280 if (r) 5291 if (r)
5281 goto out_free_resources; 5292 goto out_free_resources;
5282 5293
5283 if (ioc->is_warpdrive) {
5284 ioc->reply_post_host_index[0] = (resource_size_t __iomem *)
5285 &ioc->chip->ReplyPostHostIndex;
5286
5287 for (i = 1; i < ioc->cpu_msix_table_sz; i++)
5288 ioc->reply_post_host_index[i] =
5289 (resource_size_t __iomem *)
5290 ((u8 __iomem *)&ioc->chip->Doorbell + (0x4000 + ((i - 1)
5291 * 4)));
5292 }
5293
5294 pci_set_drvdata(ioc->pdev, ioc->shost); 5294 pci_set_drvdata(ioc->pdev, ioc->shost);
5295 r = _base_get_ioc_facts(ioc, CAN_SLEEP); 5295 r = _base_get_ioc_facts(ioc, CAN_SLEEP);
5296 if (r) 5296 if (r)
diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c
index 53ef1cb6418e..0e8601aa877a 100644
--- a/drivers/scsi/ses.c
+++ b/drivers/scsi/ses.c
@@ -778,6 +778,8 @@ static void ses_intf_remove_enclosure(struct scsi_device *sdev)
778 if (!edev) 778 if (!edev)
779 return; 779 return;
780 780
781 enclosure_unregister(edev);
782
781 ses_dev = edev->scratch; 783 ses_dev = edev->scratch;
782 edev->scratch = NULL; 784 edev->scratch = NULL;
783 785
@@ -789,7 +791,6 @@ static void ses_intf_remove_enclosure(struct scsi_device *sdev)
789 kfree(edev->component[0].scratch); 791 kfree(edev->component[0].scratch);
790 792
791 put_device(&edev->edev); 793 put_device(&edev->edev);
792 enclosure_unregister(edev);
793} 794}
794 795
795static void ses_intf_remove(struct device *cdev, 796static void ses_intf_remove(struct device *cdev,