| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Copyright 2008 ioogle, Inc. All rights reserved. |
|---|
| 3 | | - * Released under GPL v2. |
|---|
| 4 | 4 | * |
|---|
| 5 | 5 | * Libata transport class. |
|---|
| 6 | 6 | * |
|---|
| .. | .. |
|---|
| 196 | 196 | { XFER_PIO_0, "XFER_PIO_0" }, |
|---|
| 197 | 197 | { XFER_PIO_SLOW, "XFER_PIO_SLOW" } |
|---|
| 198 | 198 | }; |
|---|
| 199 | | -ata_bitfield_name_match(xfer,ata_xfer_names) |
|---|
| 199 | +ata_bitfield_name_search(xfer, ata_xfer_names) |
|---|
| 200 | 200 | |
|---|
| 201 | 201 | /* |
|---|
| 202 | 202 | * ATA Port attributes |
|---|
| .. | .. |
|---|
| 208 | 208 | { \ |
|---|
| 209 | 209 | struct ata_port *ap = transport_class_to_port(dev); \ |
|---|
| 210 | 210 | \ |
|---|
| 211 | | - return snprintf(buf, 20, format_string, cast ap->field); \ |
|---|
| 211 | + return scnprintf(buf, 20, format_string, cast ap->field); \ |
|---|
| 212 | 212 | } |
|---|
| 213 | 213 | |
|---|
| 214 | 214 | #define ata_port_simple_attr(field, name, format_string, type) \ |
|---|
| .. | .. |
|---|
| 301 | 301 | pm_runtime_enable(dev); |
|---|
| 302 | 302 | pm_runtime_forbid(dev); |
|---|
| 303 | 303 | |
|---|
| 304 | | - transport_add_device(dev); |
|---|
| 304 | + error = transport_add_device(dev); |
|---|
| 305 | + if (error) |
|---|
| 306 | + goto tport_transport_add_err; |
|---|
| 305 | 307 | transport_configure_device(dev); |
|---|
| 306 | 308 | |
|---|
| 307 | 309 | error = ata_tlink_add(&ap->link); |
|---|
| .. | .. |
|---|
| 312 | 314 | |
|---|
| 313 | 315 | tport_link_err: |
|---|
| 314 | 316 | transport_remove_device(dev); |
|---|
| 317 | + tport_transport_add_err: |
|---|
| 315 | 318 | device_del(dev); |
|---|
| 316 | 319 | |
|---|
| 317 | 320 | tport_err: |
|---|
| 318 | 321 | transport_destroy_device(dev); |
|---|
| 319 | 322 | put_device(dev); |
|---|
| 320 | | - ata_host_put(ap->host); |
|---|
| 321 | 323 | return error; |
|---|
| 322 | 324 | } |
|---|
| 323 | 325 | |
|---|
| .. | .. |
|---|
| 426 | 428 | goto tlink_err; |
|---|
| 427 | 429 | } |
|---|
| 428 | 430 | |
|---|
| 429 | | - transport_add_device(dev); |
|---|
| 431 | + error = transport_add_device(dev); |
|---|
| 432 | + if (error) |
|---|
| 433 | + goto tlink_transport_err; |
|---|
| 430 | 434 | transport_configure_device(dev); |
|---|
| 431 | 435 | |
|---|
| 432 | 436 | ata_for_each_dev(ata_dev, link, ALL) { |
|---|
| .. | .. |
|---|
| 441 | 445 | ata_tdev_delete(ata_dev); |
|---|
| 442 | 446 | } |
|---|
| 443 | 447 | transport_remove_device(dev); |
|---|
| 448 | + tlink_transport_err: |
|---|
| 444 | 449 | device_del(dev); |
|---|
| 445 | 450 | tlink_err: |
|---|
| 446 | 451 | transport_destroy_device(dev); |
|---|
| .. | .. |
|---|
| 479 | 484 | { \ |
|---|
| 480 | 485 | struct ata_device *ata_dev = transport_class_to_dev(dev); \ |
|---|
| 481 | 486 | \ |
|---|
| 482 | | - return snprintf(buf, 20, format_string, cast ata_dev->field); \ |
|---|
| 487 | + return scnprintf(buf, 20, format_string, cast ata_dev->field); \ |
|---|
| 483 | 488 | } |
|---|
| 484 | 489 | |
|---|
| 485 | 490 | #define ata_dev_simple_attr(field, format_string, type) \ |
|---|
| .. | .. |
|---|
| 533 | 538 | if (ata_dev->class == ATA_DEV_PMP) |
|---|
| 534 | 539 | return 0; |
|---|
| 535 | 540 | for(i=0;i<ATA_ID_WORDS;i++) { |
|---|
| 536 | | - written += snprintf(buf+written, 20, "%04x%c", |
|---|
| 541 | + written += scnprintf(buf+written, 20, "%04x%c", |
|---|
| 537 | 542 | ata_dev->id[i], |
|---|
| 538 | 543 | ((i+1) & 7) ? ' ' : '\n'); |
|---|
| 539 | 544 | } |
|---|
| .. | .. |
|---|
| 552 | 557 | if (ata_dev->class != ATA_DEV_PMP) |
|---|
| 553 | 558 | return 0; |
|---|
| 554 | 559 | for(i=0;i<SATA_PMP_GSCR_DWORDS;i++) { |
|---|
| 555 | | - written += snprintf(buf+written, 20, "%08x%c", |
|---|
| 560 | + written += scnprintf(buf+written, 20, "%08x%c", |
|---|
| 556 | 561 | ata_dev->gscr[i], |
|---|
| 557 | 562 | ((i+1) & 3) ? ' ' : '\n'); |
|---|
| 558 | 563 | } |
|---|
| .. | .. |
|---|
| 581 | 586 | else |
|---|
| 582 | 587 | mode = "unqueued"; |
|---|
| 583 | 588 | |
|---|
| 584 | | - return snprintf(buf, 20, "%s\n", mode); |
|---|
| 589 | + return scnprintf(buf, 20, "%s\n", mode); |
|---|
| 585 | 590 | } |
|---|
| 586 | 591 | |
|---|
| 587 | 592 | static DEVICE_ATTR(trim, S_IRUGO, show_ata_dev_trim, NULL); |
|---|
| .. | .. |
|---|
| 678 | 683 | return error; |
|---|
| 679 | 684 | } |
|---|
| 680 | 685 | |
|---|
| 681 | | - transport_add_device(dev); |
|---|
| 686 | + error = transport_add_device(dev); |
|---|
| 687 | + if (error) { |
|---|
| 688 | + device_del(dev); |
|---|
| 689 | + ata_tdev_free(ata_dev); |
|---|
| 690 | + return error; |
|---|
| 691 | + } |
|---|
| 692 | + |
|---|
| 682 | 693 | transport_configure_device(dev); |
|---|
| 683 | 694 | return 0; |
|---|
| 684 | 695 | } |
|---|