mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 22:14:03 +02:00
i2c: atr: fix dangling adapter pointer on add failure
i2c_atr_add_adapter() stores atr->adapter[chan_id] before
i2c_add_adapter() so that the I2C bus notifier can match child clients
during registration. On failure the channel is freed but the slot was
left pointing at freed memory, which can lead to use-after-free in
i2c_atr_del_adapter() / cleanup and also block reuse with -EEXIST.
Clear the slot on the i2c_add_adapter() error path before freeing chan.
Fixes: a076a860ac ("media: i2c: add I2C Address Translator (ATR) support")
Signed-off-by: Linkai Gong <gonglinkai@kylinos.cn>
Cc: <stable@vger.kernel.org> # v6.6+
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://patch.msgid.link/20260907071102.1080840-1-gonglinkai@kylinos.cn
This commit is contained in:
parent
e0c3e9d76a
commit
ad34235808
|
|
@ -855,6 +855,7 @@ int i2c_atr_add_adapter(struct i2c_atr *atr, struct i2c_atr_adap_desc *desc)
|
|||
|
||||
ret = i2c_add_adapter(&chan->adap);
|
||||
if (ret) {
|
||||
atr->adapter[chan_id] = NULL;
|
||||
dev_err(dev, "failed to add atr-adapter %u (error=%d)\n",
|
||||
chan_id, ret);
|
||||
goto err_free_alias_pool;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user