[PATCH v4 07/16] i3c: renesas: Clean DATBAS register on detach

Claudiu Beznea claudiu.beznea at kernel.org
Wed Jun 17 21:37:31 PDT 2026



On 6/12/26 19:20, sashiko-bot at kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
> 
> New issues:
> - [Critical] `renesas_i3c_group_devs_in_slots` assumes the target swap slot is occupied by an I3C device, which crashes if the slot is free. It also fails to update the free slot bitmask.
> 
> Pre-existing issues:
> - [High] The DATBAS registers and device address trackers for unused slots are left dirty after Dynamic Address Assignment (DAA), which can cause hardware TX/RX logic issues.
> --
> 
> commit bcdea49e3d9ced6f5b774a208065f0889dbb7c12
> Author: Claudiu Beznea <claudiu.beznea.uj at bp.renesas.com>
> 
> i3c: renesas: Clean DATBAS register on detach
> 
> The controller uses DATBAS registers on TX/RX logic. Clean the DATBAS
> register for the detached I3C device to avoid issues.
> 
>> diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-i3c.c
>> index a63edddbc9fe0..abe24e563d217 100644
>> --- a/drivers/i3c/master/renesas-i3c.c
>> +++ b/drivers/i3c/master/renesas-i3c.c
>> @@ -1042,6 +1042,8 @@ static void renesas_i3c_detach_i3c_dev(struct i3c_dev_desc *dev)
>>   	struct i3c_master_controller *m = i3c_dev_get_master(dev);
>>   	struct renesas_i3c *i3c = to_renesas_i3c(m);
>>   
>> +	renesas_writel(i3c->regs, DATBAS(data->index), 0);
>> +
>>   	i3c_dev_set_master_data(dev, NULL);
>>   	i3c->addrs[data->index].addr = 0;
>>   	i3c->addrs[data->index].i3c_dev = NULL;
> 
> [Severity: Critical]
> Since we are allowing I3C devices to be detached and free their slots here,
> will this cause a null pointer dereference in
> renesas_i3c_group_devs_in_slots() during resume?

We are allowing detaching when the bus is cleaned up and on re-attaching.

In case the bus is cleaned up, all the devices on the bus are detached.

On re-attaching, I considered that will happen as a result of a previously 
detach operation which will free a slot, but looking again at the code, all the 
detach and re-attach logic are under different conditions. I will re-consider 
and update it accordingly.

Thank you,
Claudiu



More information about the linux-i3c mailing list