Re: [PATCH net-next] net/mlx5: Devcom, only use devcom after NULL check in mlx5_devcom_send_event()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 04/08/2023 23:53, Vadim Fedorenko wrote:
> On 04/08/2023 10:26, Li Zetao wrote:
>> There is a warning reported by kernel test robot:
>>
>> smatch warnings:
>> drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c:264
>>      mlx5_devcom_send_event() warn: variable dereferenced before
>>     IS_ERR check devcom (see line 259)
>>
>> The reason for the warning is that the pointer is used before check, put
>> the assignment to comp after devcom check to silence the warning.
>>
>> Fixes: 88d162b47981 ("net/mlx5: Devcom, Infrastructure changes")
>> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>> Reported-by: Dan Carpenter <error27@xxxxxxxxx>
>> Closes: https://lore.kernel.org/r/202308041028.AkXYDwJ6-lkp@xxxxxxxxx/
>> Signed-off-by: Li Zetao <lizetao1@xxxxxxxxxx>
>> ---
>>   drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c b/drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c
>> index feb62d952643..2bc18274858c 100644
>> --- a/drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c
>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c
>> @@ -256,7 +256,7 @@ int mlx5_devcom_send_event(struct mlx5_devcom_comp_dev *devcom,
>>                  int event, int rollback_event,
>>                  void *event_data)
>>   {
>> -    struct mlx5_devcom_comp *comp = devcom->comp;
>> +    struct mlx5_devcom_comp *comp;
>>       struct mlx5_devcom_comp_dev *pos;
> 
> The code should end up with reverse x-mas tree order.
> The change itself LGTM.
> 


Hi Li,

Are you going to submit v2 ?

Thanks,
Roi


>>       int err = 0;
>>       void *data;
>> @@ -264,6 +264,7 @@ int mlx5_devcom_send_event(struct mlx5_devcom_comp_dev *devcom,
>>       if (IS_ERR_OR_NULL(devcom))
>>           return -ENODEV;
>>   +    comp = devcom->comp;
>>       down_write(&comp->sem);
>>       list_for_each_entry(pos, &comp->comp_dev_list_head, list) {
>>           data = rcu_dereference_protected(pos->data, lockdep_is_held(&comp->sem));
> 



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux