On Thu, Feb 24, 2011 at 5:25 PM, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > On Thu, 2011-02-24 at 09:06 -0800, Greg KH wrote: >> On Thu, Feb 24, 2011 at 11:08:29AM -0500, Steven Rostedt wrote: >> > On Tue, Feb 22, 2011 at 03:53:40AM -0500, Ilia Mirkin wrote: >> > > This patch was created with the following semantic patch: >> > > >> > > // <smpl> >> > > @@ >> > > expression E; >> > > @@ >> > > >> > > - if (E != NULL) kfree(E); >> > > + kfree(E); >> > > // </smpl> >> > >> > OK, so when will we be removing the unlikely() from the implementations >> > of kfree()? >> > >> > if (unlikely(ZERO_OR_NULL_PTR(block))) >> > return; >> >> Have you run the tool that checks for unlikely being true here? Odds >> are, even with all of these changes, the large majority of the time >> kfree is called, it has a valid pointer. > > Crap, all my saved output files were in the /tmp directory and has since > been purged. I can reboot into the unlikely tracing kernel again, but > that may have to wait. I usually just do that at end of year as a > cleanup. > > I can't remember exactly where kfree came in, but IIRC it was on the > list. Maybe not that high though. FWIW my reasoning for doing this was that generally the reason you're freeing something is because you allocated it, so kfree(NULL) happens rarely -- error paths, conditional features, etc. If you actually expect the argument to be NULL often, then you would do something like if (unlikely(x)) kfree(x). This is done a few times in the core kernel. I think it makes more sense for kfree to keep the unlikely since in cold paths it won't matter and in hot paths where it is often NULL, there should be a conditional at the call site. [I'm sure you'll note the lack of an attached benchmark... this is just what makes sense to me.] -ilia _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel