Re: [PATCH] net: ocelot_board: fix a NULL pointer dereference

From: Kangjie Lu
Date: Fri Mar 22 2019 - 23:33:49 EST




> On Mar 11, 2019, at 9:14 AM, Eric Dumazet <eric.dumazet@xxxxxxxxx> wrote:
>
>
>
> On 03/11/2019 03:26 AM, Alexandre Belloni wrote:
>> On 11/03/2019 01:36:32-0500, Kangjie Lu wrote:
>>> In case devm_kcalloc fails, the fix returns -ENOMEM to avoid
>>> NULL pointer dereference.
>>>
>>> Signed-off-by: Kangjie Lu <kjlu@xxxxxxx>
>> Reviewed-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx>
>>
>
> A proper error path is needed to avoid memory leaks.

Which objects require free specifically? The memory allocated with
devm_kzalloc() is freed automatically. No need to explicitly free it
again.

-Kangjie

>
>>> ---
>>> drivers/net/ethernet/mscc/ocelot_board.c | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/drivers/net/ethernet/mscc/ocelot_board.c b/drivers/net/ethernet/mscc/ocelot_board.c
>>> index e7f90101d2e0..af68abf1632a 100644
>>> --- a/drivers/net/ethernet/mscc/ocelot_board.c
>>> +++ b/drivers/net/ethernet/mscc/ocelot_board.c
>>> @@ -256,6 +256,8 @@ static int mscc_ocelot_probe(struct platform_device *pdev)
>>>
>>> ocelot->ports = devm_kcalloc(&pdev->dev, ocelot->num_phys_ports,
>>> sizeof(struct ocelot_port *), GFP_KERNEL);
>>> + if (!ocelot->ports)
>>> + return -ENOMEM;
>>>
>>> INIT_LIST_HEAD(&ocelot->multicast);
>>> ocelot_init(ocelot);
>>> --
>>> 2.17.1
>>>
>>