From: Cosmin Tanislav Date: Wed, 7 May 2025 12:19:12 +0000 (+0300) Subject: i2c: atr: allow replacing mappings in attach_addr() X-Git-Tag: v6.16-rc1~112^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b09d8a9cce2664cdcef91f10eed9557321ce4a81;p=thirdparty%2Flinux.git i2c: atr: allow replacing mappings in attach_addr() 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 Reviewed-by: Luca Ceresoli Signed-off-by: Wolfram Sang --- diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index 5353de8d3c2e8..f3fd52588e421 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;