Message ID | 20250507121917.2364416-7-demonsingur@gmail.com |
---|---|
State | New |
Headers | show |
Series | i2c: atr: allow usage of nested ATRs | expand |
On Wed, 7 May 2025 15:19:12 +0300 Cosmin Tanislav <demonsingur@gmail.com> wrote: > It is possible for aliases to be exhausted while we are still attaching > children. > > Allow replacing mapping on attach by calling > i2c_atr_replace_mapping_by_addr() if i2c_atr_create_mapping_by_addr() > fails. > > Signed-off-by: Cosmin Tanislav <demonsingur@gmail.com> Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index ae5c2ee629f0..91aabfb4379b 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -543,6 +543,9 @@ static int i2c_atr_attach_addr(struct i2c_adapter *adapter, mutex_lock(&chan->alias_pairs_lock); c2a = i2c_atr_create_mapping_by_addr(chan, addr); + if (!c2a) + c2a = i2c_atr_replace_mapping_by_addr(chan, addr); + if (!c2a) { dev_err(atr->dev, "failed to find a free alias\n"); ret = -EBUSY;
It is possible for aliases to be exhausted while we are still attaching children. Allow replacing mapping on attach by calling i2c_atr_replace_mapping_by_addr() if i2c_atr_create_mapping_by_addr() fails. Signed-off-by: Cosmin Tanislav <demonsingur@gmail.com> --- drivers/i2c/i2c-atr.c | 3 +++ 1 file changed, 3 insertions(+)