aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-10-28 10:53:04 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-10-28 10:53:04 -0400
commited2e5581d2702743460349e494f3ab8c4b0f28d8 (patch)
tree58c4d331766807bf45c48c8a5123a90db04e87f1
parent81280572ca6f54009edfa4deee563e8678784218 (diff)
parent6fa977520871b1fc0be64247abad02b678c13fda (diff)
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: cciss: remove overlapping PCI IDs block: cciss: fix information leak to userland drivers/block/aoe/aoeblk.c: ratelimit a warning printk drivers/block/z2ram.c: correct printing of sector_t aoe: don't use flush_scheduled_work() drivers/block/drbd/drbd_main.c: fix error path loop: Properly clear sysfs in autoclear mode
-rw-r--r--drivers/block/aoe/aoeblk.c4
-rw-r--r--drivers/block/aoe/aoedev.c4
-rw-r--r--drivers/block/cciss.c37
-rw-r--r--drivers/block/drbd/drbd_main.c2
-rw-r--r--drivers/block/loop.c2
-rw-r--r--drivers/block/z2ram.c6
6 files changed, 11 insertions, 44 deletions
diff --git a/drivers/block/aoe/aoeblk.c b/drivers/block/aoe/aoeblk.c
index f21c237a9e5e..541e18879965 100644
--- a/drivers/block/aoe/aoeblk.c
+++ b/drivers/block/aoe/aoeblk.c
@@ -4,12 +4,14 @@
4 * block device routines 4 * block device routines
5 */ 5 */
6 6
7#include <linux/kernel.h>
7#include <linux/hdreg.h> 8#include <linux/hdreg.h>
8#include <linux/blkdev.h> 9#include <linux/blkdev.h>
9#include <linux/backing-dev.h> 10#include <linux/backing-dev.h>
10#include <linux/fs.h> 11#include <linux/fs.h>
11#include <linux/ioctl.h> 12#include <linux/ioctl.h>
12#include <linux/slab.h> 13#include <linux/slab.h>
14#include <linux/ratelimit.h>
13#include <linux/genhd.h> 15#include <linux/genhd.h>
14#include <linux/netdevice.h> 16#include <linux/netdevice.h>
15#include <linux/mutex.h> 17#include <linux/mutex.h>
@@ -207,7 +209,7 @@ aoeblk_make_request(struct request_queue *q, struct bio *bio)
207 spin_lock_irqsave(&d->lock, flags); 209 spin_lock_irqsave(&d->lock, flags);
208 210
209 if ((d->flags & DEVFL_UP) == 0) { 211 if ((d->flags & DEVFL_UP) == 0) {
210 printk(KERN_INFO "aoe: device %ld.%d is not up\n", 212 pr_info_ratelimited("aoe: device %ld.%d is not up\n",
211 d->aoemajor, d->aoeminor); 213 d->aoemajor, d->aoeminor);
212 spin_unlock_irqrestore(&d->lock, flags); 214 spin_unlock_irqrestore(&d->lock, flags);
213 mempool_free(buf, d->bufpool); 215 mempool_free(buf, d->bufpool);
diff --git a/drivers/block/aoe/aoedev.c b/drivers/block/aoe/aoedev.c
index 0849280bfc1c..6b5110a47458 100644
--- a/drivers/block/aoe/aoedev.c
+++ b/drivers/block/aoe/aoedev.c
@@ -102,6 +102,7 @@ aoedev_freedev(struct aoedev *d)
102{ 102{
103 struct aoetgt **t, **e; 103 struct aoetgt **t, **e;
104 104
105 cancel_work_sync(&d->work);
105 if (d->gd) { 106 if (d->gd) {
106 aoedisk_rm_sysfs(d); 107 aoedisk_rm_sysfs(d);
107 del_gendisk(d->gd); 108 del_gendisk(d->gd);
@@ -135,7 +136,6 @@ aoedev_flush(const char __user *str, size_t cnt)
135 all = !strncmp(buf, "all", 3); 136 all = !strncmp(buf, "all", 3);
136 } 137 }
137 138
138 flush_scheduled_work();
139 spin_lock_irqsave(&devlist_lock, flags); 139 spin_lock_irqsave(&devlist_lock, flags);
140 dd = &devlist; 140 dd = &devlist;
141 while ((d = *dd)) { 141 while ((d = *dd)) {
@@ -257,8 +257,6 @@ aoedev_exit(void)
257 struct aoedev *d; 257 struct aoedev *d;
258 ulong flags; 258 ulong flags;
259 259
260 flush_scheduled_work();
261
262 while ((d = devlist)) { 260 while ((d = devlist)) {
263 devlist = d->next; 261 devlist = d->next;
264 262
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index f09e6df15aa7..2cc4dda46279 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -66,11 +66,6 @@ MODULE_VERSION("3.6.26");
66MODULE_LICENSE("GPL"); 66MODULE_LICENSE("GPL");
67 67
68static DEFINE_MUTEX(cciss_mutex); 68static DEFINE_MUTEX(cciss_mutex);
69static int cciss_allow_hpsa;
70module_param(cciss_allow_hpsa, int, S_IRUGO|S_IWUSR);
71MODULE_PARM_DESC(cciss_allow_hpsa,
72 "Prevent cciss driver from accessing hardware known to be "
73 " supported by the hpsa driver");
74 69
75#include "cciss_cmd.h" 70#include "cciss_cmd.h"
76#include "cciss.h" 71#include "cciss.h"
@@ -98,19 +93,6 @@ static const struct pci_device_id cciss_pci_device_id[] = {
98 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3215}, 93 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3215},
99 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x3237}, 94 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x3237},
100 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x323D}, 95 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x323D},
101 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3241},
102 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3243},
103 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3245},
104 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3247},
105 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3249},
106 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x324A},
107 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x324B},
108 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3350},
109 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3351},
110 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3352},
111 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3353},
112 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3354},
113 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3355},
114 {0,} 96 {0,}
115}; 97};
116 98
@@ -138,24 +120,9 @@ static struct board_type products[] = {
138 {0x3214103C, "Smart Array E200i", &SA5_access}, 120 {0x3214103C, "Smart Array E200i", &SA5_access},
139 {0x3215103C, "Smart Array E200i", &SA5_access}, 121 {0x3215103C, "Smart Array E200i", &SA5_access},
140 {0x3237103C, "Smart Array E500", &SA5_access}, 122 {0x3237103C, "Smart Array E500", &SA5_access},
141/* controllers below this line are also supported by the hpsa driver. */
142#define HPSA_BOUNDARY 0x3223103C
143 {0x3223103C, "Smart Array P800", &SA5_access}, 123 {0x3223103C, "Smart Array P800", &SA5_access},
144 {0x3234103C, "Smart Array P400", &SA5_access}, 124 {0x3234103C, "Smart Array P400", &SA5_access},
145 {0x323D103C, "Smart Array P700m", &SA5_access}, 125 {0x323D103C, "Smart Array P700m", &SA5_access},
146 {0x3241103C, "Smart Array P212", &SA5_access},
147 {0x3243103C, "Smart Array P410", &SA5_access},
148 {0x3245103C, "Smart Array P410i", &SA5_access},
149 {0x3247103C, "Smart Array P411", &SA5_access},
150 {0x3249103C, "Smart Array P812", &SA5_access},
151 {0x324A103C, "Smart Array P712m", &SA5_access},
152 {0x324B103C, "Smart Array P711m", &SA5_access},
153 {0x3350103C, "Smart Array", &SA5_access},
154 {0x3351103C, "Smart Array", &SA5_access},
155 {0x3352103C, "Smart Array", &SA5_access},
156 {0x3353103C, "Smart Array", &SA5_access},
157 {0x3354103C, "Smart Array", &SA5_access},
158 {0x3355103C, "Smart Array", &SA5_access},
159}; 126};
160 127
161/* How long to wait (in milliseconds) for board to go into simple mode */ 128/* How long to wait (in milliseconds) for board to go into simple mode */
@@ -1184,6 +1151,7 @@ static int cciss_ioctl32_big_passthru(struct block_device *bdev, fmode_t mode,
1184 int err; 1151 int err;
1185 u32 cp; 1152 u32 cp;
1186 1153
1154 memset(&arg64, 0, sizeof(arg64));
1187 err = 0; 1155 err = 0;
1188 err |= 1156 err |=
1189 copy_from_user(&arg64.LUN_info, &arg32->LUN_info, 1157 copy_from_user(&arg64.LUN_info, &arg32->LUN_info,
@@ -3970,9 +3938,6 @@ static int __devinit cciss_lookup_board_id(struct pci_dev *pdev, u32 *board_id)
3970 subsystem_vendor_id; 3938 subsystem_vendor_id;
3971 3939
3972 for (i = 0; i < ARRAY_SIZE(products); i++) { 3940 for (i = 0; i < ARRAY_SIZE(products); i++) {
3973 /* Stand aside for hpsa driver on request */
3974 if (cciss_allow_hpsa && products[i].board_id == HPSA_BOUNDARY)
3975 return -ENODEV;
3976 if (*board_id == products[i].board_id) 3941 if (*board_id == products[i].board_id)
3977 return i; 3942 return i;
3978 } 3943 }
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
index c5dfe6486cf3..25c7a73c5062 100644
--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -2982,7 +2982,7 @@ static int drbd_create_mempools(void)
2982 2982
2983 drbd_ee_mempool = mempool_create(number, 2983 drbd_ee_mempool = mempool_create(number,
2984 mempool_alloc_slab, mempool_free_slab, drbd_ee_cache); 2984 mempool_alloc_slab, mempool_free_slab, drbd_ee_cache);
2985 if (drbd_request_mempool == NULL) 2985 if (drbd_ee_mempool == NULL)
2986 goto Enomem; 2986 goto Enomem;
2987 2987
2988 /* drbd's page pool */ 2988 /* drbd's page pool */
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 450c958b514f..1e5284ef65fa 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -1049,9 +1049,9 @@ static int loop_clr_fd(struct loop_device *lo, struct block_device *bdev)
1049 if (bdev) 1049 if (bdev)
1050 invalidate_bdev(bdev); 1050 invalidate_bdev(bdev);
1051 set_capacity(lo->lo_disk, 0); 1051 set_capacity(lo->lo_disk, 0);
1052 loop_sysfs_exit(lo);
1052 if (bdev) { 1053 if (bdev) {
1053 bd_set_size(bdev, 0); 1054 bd_set_size(bdev, 0);
1054 loop_sysfs_exit(lo);
1055 /* let user-space know about this change */ 1055 /* let user-space know about this change */
1056 kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE); 1056 kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE);
1057 } 1057 }
diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c
index dcd4cfcf4126..a22e3f895947 100644
--- a/drivers/block/z2ram.c
+++ b/drivers/block/z2ram.c
@@ -80,8 +80,10 @@ static void do_z2_request(struct request_queue *q)
80 int err = 0; 80 int err = 0;
81 81
82 if (start + len > z2ram_size) { 82 if (start + len > z2ram_size) {
83 printk( KERN_ERR DEVICE_NAME ": bad access: block=%lu, count=%u\n", 83 pr_err(DEVICE_NAME ": bad access: block=%llu, "
84 blk_rq_pos(req), blk_rq_cur_sectors(req)); 84 "count=%u\n",
85 (unsigned long long)blk_rq_pos(req),
86 blk_rq_cur_sectors(req));
85 err = -EIO; 87 err = -EIO;
86 goto done; 88 goto done;
87 } 89 }