Re: [PATCH] ath9k: remove useless if-before-kfree; correct misleading indentation

From: Jim Meyering
Date: Sat Aug 23 2008 - 07:29:06 EST


Marcel Holtmann <holtmann@xxxxxxxxxxxxxxx> wrote:
>> >> Alternatively, you could remove the nowadays-useless
>> >> "if-before-kfree" test and leave the sometimes-redundant
>> >> assignment as-is: unconditional.
>> >
>> > actually the later one is preferred. Just remove the NULL check.
>>
>> I prefer it, too, but the indentation suggested that
>> adding braces would match the author's intent.
>>
>> In case anyone is interested, I have been maintaining a patch
>> that removes *all* useless if-before-kfree tests. I have not
>> posted it because such changes have a reputation for provoking
>> flames on this list, but now you've provoked me ;-)
>>
>> http://meyering.net/code/remove-useless-if-before-kfree.patch
>> 74 files changed, 127 insertions(+), 250 deletions(-)
>
> I am all for this patch.
>
> Even the Glibc free() function will do an "if-before-free" :)

Hi Marcel,

Thanks for the support.

Yes, with glibc, free(NULL) is a no-op, and POSIX has required that
behavior for long enough that *all* implementations of free on reasonable
porting targets are NULL-safe these days. There has been plenty of
discussion as I've helped a few projects clean up in this regard, e.g.,

http://thread.gmane.org/gmane.comp.version-control.git/74187
http://thread.gmane.org/gmane.emacs.devel/98144
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/12712

Here are most of the projects that have endured this janitorial work:
git
emacs
glibc
gnulib
coreutils
freeIPA
libvirt
util-linux-ng
idutils

There's even a tool to help ensure that no new useless if-before-kfree
tests sneak back in later.

http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=build-aux/useless-if-before-free
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/