Re: [PATCH v3 2/2] ata: pata_parport: fix parport attach idr_alloc for

From: Niklas Cassel

Date: Tue Sep 22 2026 - 11:00:44 EST


On Tue, Sep 22, 2026 at 11:38:01AM +0800, Pei Xiao wrote:
> idr_alloc() expects an inclusive start and an exclusive end, so passing
> port->number as both arguments produces an empty range. Because
> idr_alloc() only falls back to INT_MAX when end <= 0, the allocation
> succeeds solely for parport0 and returns -ENOSPC for every other port,
> which pata_parport_attach() silently ignores. As a result only
> parport0 gets probed and any higher-numbered parports are never
> attached.
>
> Use port->number + 1 as the end so the range [port->number,
> port->number + 1) contains exactly the desired ID.
>
> Fixes: 246a1c4c6b7f ("ata: pata_parport: add driver (PARIDE replacement)")
> Signed-off-by: Pei Xiao <xiaopei01@xxxxxxxxxx>
> ---
> drivers/ata/pata_parport/pata_parport.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/ata/pata_parport/pata_parport.c b/drivers/ata/pata_parport/pata_parport.c
> index 046ab7e3adbc..6f4e3f47d63e 100644
> --- a/drivers/ata/pata_parport/pata_parport.c
> +++ b/drivers/ata/pata_parport/pata_parport.c
> @@ -727,7 +727,7 @@ static void pata_parport_attach(struct parport *port)
> int pr_num, id;
>
> mutex_lock(&pi_mutex);
> - id = idr_alloc(&parport_list, port, port->number, port->number,
> + id = idr_alloc(&parport_list, port, port->number, port->number + 1,
> GFP_KERNEL);

This patch looks correct to me.


Kind regards,
Niklas