2021-04-01 07:37:59

by Muhammad Usama Anjum

[permalink] [raw]
Subject: [Discussion] Uninitialized variable in wiz_mode_select()

Hi,

`mode` remains uninitialized when `lane_phy_type` isn't PHY_TYPE_DP
or
PHY_TYPE_QSGMII. I've checked the dtsi (k3-j721e-common-proc-
board.dts)
and possible values of `lane_phy_type` are justPHY_TYPE_USB3 and
PHY_TYPE_PCIE. If this is correct, the mode will remain uninitialized with
garbage value. `mode` should be initialized to what? It seems like it is highly
implementation dependent.

/drivers/phy/ti/phy-j721e-wiz.c: 344 in wiz_mode_select()
338 for (i = 0; i < num_lanes; i++) {
339 if (wiz->lane_phy_type[i] == PHY_TYPE_DP)
340 mode = LANE_MODE_GEN1;
341 else if (wiz->lane_phy_type[i] == PHY_TYPE_QSGMII)
342 mode = LANE_MODE_GEN2;
343
>>> CID 1503592: Uninitialized variables (UNINIT)
>>> Using uninitialized value "mode" when calling "regmap_field_write".
344 ret = regmap_field_write(wiz->p_standard_mode[i], mode);
345 if (ret)
346 return ret;
347 }
348
349 return 0;

Thanks,
Usama


2021-04-01 07:40:15

by Kishon Vijay Abraham I

[permalink] [raw]
Subject: Re: [Discussion] Uninitialized variable in wiz_mode_select()

Hi Usama,

On 01/04/21 1:03 pm, Muhammad Usama Anjum wrote:
> Hi,
>
> `mode` remains uninitialized when `lane_phy_type` isn't PHY_TYPE_DP
> or
> PHY_TYPE_QSGMII. I've checked the dtsi (k3-j721e-common-proc-
> board.dts)
> and possible values of `lane_phy_type` are justPHY_TYPE_USB3 and
> PHY_TYPE_PCIE. If this is correct, the mode will remain uninitialized with
> garbage value. `mode` should be initialized to what? It seems like it is highly
> implementation dependent.
>
> /drivers/phy/ti/phy-j721e-wiz.c: 344 in wiz_mode_select()
> 338 for (i = 0; i < num_lanes; i++) {
> 339 if (wiz->lane_phy_type[i] == PHY_TYPE_DP)
> 340 mode = LANE_MODE_GEN1;
> 341 else if (wiz->lane_phy_type[i] == PHY_TYPE_QSGMII)
> 342 mode = LANE_MODE_GEN2;
> 343
>>>> CID 1503592: Uninitialized variables (UNINIT)
>>>> Using uninitialized value "mode" when calling "regmap_field_write".
> 344 ret = regmap_field_write(wiz->p_standard_mode[i], mode);
> 345 if (ret)
> 346 return ret;
> 347 }
> 348
> 349 return 0;

I've sent a follow-up patch fixing this.
http://lor.kernel.org/r/[email protected]

Thanks
Kishon

2021-04-01 07:42:09

by Kishon Vijay Abraham I

[permalink] [raw]
Subject: Re: [Discussion] Uninitialized variable in wiz_mode_select()

Hi,

On 01/04/21 1:08 pm, Kishon Vijay Abraham I wrote:
> Hi Usama,
>
> On 01/04/21 1:03 pm, Muhammad Usama Anjum wrote:
>> Hi,
>>
>> `mode` remains uninitialized when `lane_phy_type` isn't PHY_TYPE_DP
>> or
>> PHY_TYPE_QSGMII. I've checked the dtsi (k3-j721e-common-proc-
>> board.dts)
>> and possible values of `lane_phy_type` are justPHY_TYPE_USB3 and
>> PHY_TYPE_PCIE. If this is correct, the mode will remain uninitialized with
>> garbage value. `mode` should be initialized to what? It seems like it is highly
>> implementation dependent.
>>
>> /drivers/phy/ti/phy-j721e-wiz.c: 344 in wiz_mode_select()
>> 338 for (i = 0; i < num_lanes; i++) {
>> 339 if (wiz->lane_phy_type[i] == PHY_TYPE_DP)
>> 340 mode = LANE_MODE_GEN1;
>> 341 else if (wiz->lane_phy_type[i] == PHY_TYPE_QSGMII)
>> 342 mode = LANE_MODE_GEN2;
>> 343
>>>>> CID 1503592: Uninitialized variables (UNINIT)
>>>>> Using uninitialized value "mode" when calling "regmap_field_write".
>> 344 ret = regmap_field_write(wiz->p_standard_mode[i], mode);
>> 345 if (ret)
>> 346 return ret;
>> 347 }
>> 348
>> 349 return 0;
>
> I've sent a follow-up patch fixing this.
> http://lor.kernel.org/r/[email protected]

Fixed a typo in the link
https://lore.kernel.org/linux-phy/[email protected]/

Thanks
Kishon