Hello all, This patch series was orginally meant to simply assign a unique id used for printing earlier (ap->print_id), but has since grown to also include cleanups related to ata_port_alloc() (since ap->print_id is now assigned in ata_port_alloc()). Patch 1-3 fixes incorrect cleanups in the error paths. Patch 4,12 removes a useless libata wrappers only used for libsas. Patch 5 introduces a ata_port_free(), in order to avoid duplicated code. Patch 6 removes a unused function declaration in include/linux/libata.h. Patch 7 remove support for decreasing the number of ports, as it is never used by any libata driver (including libsas and ipr). Patch 8 removes a superfluous assignment in ata_sas_port_alloc(). Patch 9 removes the unnecessary local_port_no struct member in ata_port. Patch 10 performs the ata_port print_id assignment earlier, so that the ata_port_* print functions can be used even before the ata_host has been registered. Patch 11 changes the print_id assignment to use an ida_alloc(), such that we will reuse IDs that are no longer in use, rather than keep increasing the print_id forever. Patch 13 adds a debug print in case the port is marked as external, this code runs before the ata_host has been registered, so it depends on patch 10. Martin, how do you want us to coordinate libsas changes? You don't seem to have any libsas changes staged for 6.11 so far, and the libsas changes in this series are quite isolated (and small), so perhaps we can simply queue them via the libata tree? Kind regards, Niklas Changes since v1: -Added patches that fixes incorrect cleanups in the error paths. -Added patches to remove useless libata wrappers only used for libsas. -Added patch that introduces ata_port_free(). -Added patch that removes a unused function declaration in libata.h. -Added patch that removes local_port_no (Damien). -Added patch that assigns the print_id using ida_alloc() (Damien). -Picked up tags. Link to v1: https://lore.kernel.org/linux-ide/20240618153537.2687621-7-cassel@xxxxxxxxxx/ Niklas Cassel (13): ata: libata-core: Fix null pointer dereference on error ata: libata-core: Fix double free on error ata: ahci: Clean up sysfs file on error ata,scsi: Remove useless wrappers ata_sas_tport_{add,delete}() ata,scsi: libata-core: Add ata_port_free() ata: libata: Remove unused function declaration for ata_scsi_detect() ata: libata-core: Remove support for decreasing the number of ports ata: libata-sata: Remove superfluous assignment in ata_sas_port_alloc() ata: libata-core: Remove local_port_no struct member ata: libata: Assign print_id at port allocation time ata: libata-core: Reuse available ata_port print_ids ata,scsi: Remove useless ata_sas_port_alloc() wrapper ata: ahci: Add debug print for external port drivers/ata/ahci.c | 21 +++++++--- drivers/ata/libata-core.c | 66 ++++++++++++++++-------------- drivers/ata/libata-sata.c | 49 ---------------------- drivers/ata/libata-transport.c | 5 ++- drivers/ata/libata-transport.h | 3 -- drivers/ata/libata.h | 1 - drivers/scsi/libsas/sas_ata.c | 14 +++++-- drivers/scsi/libsas/sas_discover.c | 4 +- include/linux/libata.h | 12 +++--- 9 files changed, 71 insertions(+), 104 deletions(-) -- 2.45.2