diff options
-rw-r--r-- | drivers/ata/libata-core.c | 27 | ||||
-rw-r--r-- | drivers/ata/pata_ali.c | 4 | ||||
-rw-r--r-- | drivers/ata/pata_hpt366.c | 18 | ||||
-rw-r--r-- | drivers/ata/pata_hpt37x.c | 18 | ||||
-rw-r--r-- | drivers/ata/pata_it821x.c | 17 | ||||
-rw-r--r-- | drivers/ata/pata_serverworks.c | 17 |
6 files changed, 23 insertions, 78 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 7d4b002568e7..a03019c40ac4 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -3325,35 +3325,20 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { | |||
3325 | { } | 3325 | { } |
3326 | }; | 3326 | }; |
3327 | 3327 | ||
3328 | static int ata_strim(char *s, size_t len) | ||
3329 | { | ||
3330 | len = strnlen(s, len); | ||
3331 | |||
3332 | /* ATAPI specifies that empty space is blank-filled; remove blanks */ | ||
3333 | while ((len > 0) && (s[len - 1] == ' ')) { | ||
3334 | len--; | ||
3335 | s[len] = 0; | ||
3336 | } | ||
3337 | return len; | ||
3338 | } | ||
3339 | |||
3340 | unsigned long ata_device_blacklisted(const struct ata_device *dev) | 3328 | unsigned long ata_device_blacklisted(const struct ata_device *dev) |
3341 | { | 3329 | { |
3342 | unsigned char model_num[ATA_ID_PROD_LEN]; | 3330 | unsigned char model_num[ATA_ID_PROD_LEN + 1]; |
3343 | unsigned char model_rev[ATA_ID_FW_REV_LEN]; | 3331 | unsigned char model_rev[ATA_ID_FW_REV_LEN + 1]; |
3344 | unsigned int nlen, rlen; | ||
3345 | const struct ata_blacklist_entry *ad = ata_device_blacklist; | 3332 | const struct ata_blacklist_entry *ad = ata_device_blacklist; |
3346 | 3333 | ||
3347 | ata_id_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); | 3334 | ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); |
3348 | ata_id_string(dev->id, model_rev, ATA_ID_FW_REV, sizeof(model_rev)); | 3335 | ata_id_c_string(dev->id, model_rev, ATA_ID_FW_REV, sizeof(model_rev)); |
3349 | nlen = ata_strim(model_num, sizeof(model_num)); | ||
3350 | rlen = ata_strim(model_rev, sizeof(model_rev)); | ||
3351 | 3336 | ||
3352 | while (ad->model_num) { | 3337 | while (ad->model_num) { |
3353 | if (!strncmp(ad->model_num, model_num, nlen)) { | 3338 | if (!strcmp(ad->model_num, model_num)) { |
3354 | if (ad->model_rev == NULL) | 3339 | if (ad->model_rev == NULL) |
3355 | return ad->horkage; | 3340 | return ad->horkage; |
3356 | if (!strncmp(ad->model_rev, model_rev, rlen)) | 3341 | if (!strcmp(ad->model_rev, model_rev)) |
3357 | return ad->horkage; | 3342 | return ad->horkage; |
3358 | } | 3343 | } |
3359 | ad++; | 3344 | ad++; |
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c index 76e386043dcd..fde5ce9f7eae 100644 --- a/drivers/ata/pata_ali.c +++ b/drivers/ata/pata_ali.c | |||
@@ -153,11 +153,11 @@ static void ali_early_error_handler(struct ata_port *ap) | |||
153 | 153 | ||
154 | static unsigned long ali_20_filter(const struct ata_port *ap, struct ata_device *adev, unsigned long mask) | 154 | static unsigned long ali_20_filter(const struct ata_port *ap, struct ata_device *adev, unsigned long mask) |
155 | { | 155 | { |
156 | char model_num[ATA_ID_PROD_LEN]; | 156 | char model_num[ATA_ID_PROD_LEN + 1]; |
157 | /* No DMA on anything but a disk for now */ | 157 | /* No DMA on anything but a disk for now */ |
158 | if (adev->class != ATA_DEV_ATA) | 158 | if (adev->class != ATA_DEV_ATA) |
159 | mask &= ~(ATA_MASK_MWDMA | ATA_MASK_UDMA); | 159 | mask &= ~(ATA_MASK_MWDMA | ATA_MASK_UDMA); |
160 | ata_id_string(adev->id, model_num, ATA_ID_PROD, sizeof(model_num)); | 160 | ata_id_c_string(adev->id, model_num, ATA_ID_PROD, sizeof(model_num)); |
161 | if (strstr(model_num, "WDC")) | 161 | if (strstr(model_num, "WDC")) |
162 | return mask &= ~ATA_MASK_UDMA; | 162 | return mask &= ~ATA_MASK_UDMA; |
163 | return ata_pci_default_filter(ap, adev, mask); | 163 | return ata_pci_default_filter(ap, adev, mask); |
diff --git a/drivers/ata/pata_hpt366.c b/drivers/ata/pata_hpt366.c index 81deb2c3824c..2202c7ec16e3 100644 --- a/drivers/ata/pata_hpt366.c +++ b/drivers/ata/pata_hpt366.c | |||
@@ -151,23 +151,13 @@ static const char *bad_ata66_3[] = { | |||
151 | 151 | ||
152 | static int hpt_dma_blacklisted(const struct ata_device *dev, char *modestr, const char *list[]) | 152 | static int hpt_dma_blacklisted(const struct ata_device *dev, char *modestr, const char *list[]) |
153 | { | 153 | { |
154 | unsigned char model_num[ATA_ID_PROD_LEN]; | 154 | unsigned char model_num[ATA_ID_PROD_LEN + 1]; |
155 | char *s; | ||
156 | unsigned int len; | ||
157 | int i = 0; | 155 | int i = 0; |
158 | 156 | ||
159 | ata_id_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); | 157 | ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); |
160 | s = &model_num[0]; | ||
161 | len = strnlen(s, sizeof(model_num)); | ||
162 | 158 | ||
163 | /* ATAPI specifies that empty space is blank-filled; remove blanks */ | 159 | while (list[i] != NULL) { |
164 | while ((len > 0) && (s[len - 1] == ' ')) { | 160 | if (!strcmp(list[i], model_num)) { |
165 | len--; | ||
166 | s[len] = 0; | ||
167 | } | ||
168 | |||
169 | while(list[i] != NULL) { | ||
170 | if (!strncmp(list[i], s, len)) { | ||
171 | printk(KERN_WARNING DRV_NAME ": %s is not supported for %s.\n", | 161 | printk(KERN_WARNING DRV_NAME ": %s is not supported for %s.\n", |
172 | modestr, list[i]); | 162 | modestr, list[i]); |
173 | return 1; | 163 | return 1; |
diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c index ff767755e98b..9e1eb473c0a1 100644 --- a/drivers/ata/pata_hpt37x.c +++ b/drivers/ata/pata_hpt37x.c | |||
@@ -349,23 +349,13 @@ static u32 hpt37x_find_mode(struct ata_port *ap, int speed) | |||
349 | 349 | ||
350 | static int hpt_dma_blacklisted(const struct ata_device *dev, char *modestr, const char *list[]) | 350 | static int hpt_dma_blacklisted(const struct ata_device *dev, char *modestr, const char *list[]) |
351 | { | 351 | { |
352 | unsigned char model_num[ATA_ID_PROD_LEN]; | 352 | unsigned char model_num[ATA_ID_PROD_LEN + 1]; |
353 | char *s; | ||
354 | unsigned int len; | ||
355 | int i = 0; | 353 | int i = 0; |
356 | 354 | ||
357 | ata_id_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); | 355 | ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); |
358 | s = &model_num[0]; | ||
359 | len = strnlen(s, sizeof(model_num)); | ||
360 | 356 | ||
361 | /* ATAPI specifies that empty space is blank-filled; remove blanks */ | 357 | while (list[i] != NULL) { |
362 | while ((len > 0) && (s[len - 1] == ' ')) { | 358 | if (!strcmp(list[i], model_num)) { |
363 | len--; | ||
364 | s[len] = 0; | ||
365 | } | ||
366 | |||
367 | while(list[i] != NULL) { | ||
368 | if (!strncmp(list[i], s, len)) { | ||
369 | printk(KERN_WARNING DRV_NAME ": %s is not supported for %s.\n", | 359 | printk(KERN_WARNING DRV_NAME ": %s is not supported for %s.\n", |
370 | modestr, list[i]); | 360 | modestr, list[i]); |
371 | return 1; | 361 | return 1; |
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c index c84dfaede89c..171fbd206bd5 100644 --- a/drivers/ata/pata_it821x.c +++ b/drivers/ata/pata_it821x.c | |||
@@ -531,22 +531,9 @@ static int it821x_smart_set_mode(struct ata_port *ap, struct ata_device **unused | |||
531 | 531 | ||
532 | static void it821x_dev_config(struct ata_port *ap, struct ata_device *adev) | 532 | static void it821x_dev_config(struct ata_port *ap, struct ata_device *adev) |
533 | { | 533 | { |
534 | unsigned char model_num[ATA_ID_PROD_LEN]; | 534 | unsigned char model_num[ATA_ID_PROD_LEN + 1]; |
535 | char *s; | ||
536 | unsigned int len; | ||
537 | 535 | ||
538 | /* This block ought to be a library routine as it is in several | 536 | ata_id_c_string(adev->id, model_num, ATA_ID_PROD, sizeof(model_num)); |
539 | drivers now */ | ||
540 | |||
541 | ata_id_string(adev->id, model_num, ATA_ID_PROD, sizeof(model_num)); | ||
542 | s = &model_num[0]; | ||
543 | len = strnlen(s, sizeof(model_num)); | ||
544 | |||
545 | /* ATAPI specifies that empty space is blank-filled; remove blanks */ | ||
546 | while ((len > 0) && (s[len - 1] == ' ')) { | ||
547 | len--; | ||
548 | s[len] = 0; | ||
549 | } | ||
550 | 537 | ||
551 | if (adev->max_sectors > 255) | 538 | if (adev->max_sectors > 255) |
552 | adev->max_sectors = 255; | 539 | adev->max_sectors = 255; |
diff --git a/drivers/ata/pata_serverworks.c b/drivers/ata/pata_serverworks.c index bf9452728d19..4b8c2352cdca 100644 --- a/drivers/ata/pata_serverworks.c +++ b/drivers/ata/pata_serverworks.c | |||
@@ -218,25 +218,18 @@ static unsigned long serverworks_osb4_filter(const struct ata_port *ap, struct a | |||
218 | static unsigned long serverworks_csb_filter(const struct ata_port *ap, struct ata_device *adev, unsigned long mask) | 218 | static unsigned long serverworks_csb_filter(const struct ata_port *ap, struct ata_device *adev, unsigned long mask) |
219 | { | 219 | { |
220 | const char *p; | 220 | const char *p; |
221 | char model_num[ATA_ID_PROD_LEN]; | 221 | char model_num[ATA_ID_PROD_LEN + 1]; |
222 | int len, i; | 222 | int i; |
223 | 223 | ||
224 | /* Disk, UDMA */ | 224 | /* Disk, UDMA */ |
225 | if (adev->class != ATA_DEV_ATA) | 225 | if (adev->class != ATA_DEV_ATA) |
226 | return ata_pci_default_filter(ap, adev, mask); | 226 | return ata_pci_default_filter(ap, adev, mask); |
227 | 227 | ||
228 | /* Actually do need to check */ | 228 | /* Actually do need to check */ |
229 | ata_id_string(adev->id, model_num, ATA_ID_PROD, sizeof(model_num)); | 229 | ata_id_c_string(adev->id, model_num, ATA_ID_PROD, sizeof(model_num)); |
230 | /* Precuationary - why not do this in the libata core ?? */ | ||
231 | 230 | ||
232 | len = strlen(model_num); | 231 | for (i = 0; (p = csb_bad_ata100[i]) != NULL; i++) { |
233 | while ((len > 0) && (model_num[len - 1] == ' ')) { | 232 | if (!strcmp(p, model_num)) |
234 | len--; | ||
235 | model_num[len] = 0; | ||
236 | } | ||
237 | |||
238 | for(i = 0; (p = csb_bad_ata100[i]) != NULL; i++) { | ||
239 | if (!strncmp(p, model_num, len)) | ||
240 | mask &= ~(0x1F << ATA_SHIFT_UDMA); | 233 | mask &= ~(0x1F << ATA_SHIFT_UDMA); |
241 | } | 234 | } |
242 | return ata_pci_default_filter(ap, adev, mask); | 235 | return ata_pci_default_filter(ap, adev, mask); |