Re: Setting variable NULL after freeing it.

From: A
Date: Sat Nov 12 2022 - 06:58:43 EST


On Sat, Nov 12, 2022 at 5:04 PM Willy Tarreau <w@xxxxxx> wrote:
>
> On Sat, Nov 12, 2022 at 04:18:37PM +0530, A wrote:
> > >
> > > It depends. What's important is not to let a pointer exist to a freed
> > > location, so if you're doing:
> > >
> > > kfree(card->pool);
> > >
> > > then it's usually important to follow this by:
> > >
> > > card->pool = NULL;
> > >
> >
> > I checked in kernel but at many places this is not being done. I can
> > change all that code. But, will the patch be accepted?
> >
> > So, if someone is doing -
> >
> > kfree(x)
> > ._some_code_
> > ._some_code_
> > ._some_code_
> >
> > Then I can change it to -
> >
> > kfree(x)
> > x = NULL;
> > ._some_code_
> > ._some_code_
> > ._some_code_
> >
> > But, will the patch be accepted for this change?
>
> I don't think so, for the reasons I explained previously,
> unless you spot real bugs there during your reviews, of
> course. Better focus on your own driver for now in my
> opinion.
>

I was just thinking that when this is good practice (where its usage
is genuine), then why is there not a kernel wide macro that would call
kfree(x) and then set (x) = NULL. So, this will be done automatically
for everyone and the developer will not have to decide whether to do
this or not.

Amit