lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Fri, 22 Mar 2019 22:33:40 -0500
From:   Kangjie Lu <kjlu@....edu>
To:     Eric Dumazet <eric.dumazet@...il.com>
Cc:     Alexandre Belloni <alexandre.belloni@...tlin.com>,
        pakki001@....edu,
        Microchip Linux Driver Support <UNGLinuxDriver@...rochip.com>,
        "David S. Miller" <davem@...emloft.net>, netdev@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH] net: ocelot_board: fix a NULL pointer dereference



> On Mar 11, 2019, at 9:14 AM, Eric Dumazet <eric.dumazet@...il.com> 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@....edu>
>> Reviewed-by: Alexandre Belloni <alexandre.belloni@...tlin.com>
>> 
> 
> 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
>>> 
>> 

Powered by blists - more mailing lists