diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-28 10:53:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-28 10:53:04 -0400 |
commit | ed2e5581d2702743460349e494f3ab8c4b0f28d8 (patch) | |
tree | 58c4d331766807bf45c48c8a5123a90db04e87f1 | |
parent | 81280572ca6f54009edfa4deee563e8678784218 (diff) | |
parent | 6fa977520871b1fc0be64247abad02b678c13fda (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.c | 4 | ||||
-rw-r--r-- | drivers/block/aoe/aoedev.c | 4 | ||||
-rw-r--r-- | drivers/block/cciss.c | 37 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_main.c | 2 | ||||
-rw-r--r-- | drivers/block/loop.c | 2 | ||||
-rw-r--r-- | drivers/block/z2ram.c | 6 |
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"); | |||
66 | MODULE_LICENSE("GPL"); | 66 | MODULE_LICENSE("GPL"); |
67 | 67 | ||
68 | static DEFINE_MUTEX(cciss_mutex); | 68 | static DEFINE_MUTEX(cciss_mutex); |
69 | static int cciss_allow_hpsa; | ||
70 | module_param(cciss_allow_hpsa, int, S_IRUGO|S_IWUSR); | ||
71 | MODULE_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 | } |