From: Ralph Corderoy <ralph@inputplus.co.uk>
To: Jesper Juhl <juhl-lkml@dif.dk>
Cc: linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] don't do pointless NULL checks and casts before kfree() in security/
Date: Mon, 21 Mar 2005 10:17:06 +0000 [thread overview]
Message-ID: <200503211017.j2LAH7r04610@blake.inputplus.co.uk> (raw)
In-Reply-To: <Pine.LNX.4.62.0503201528290.2501@dragon.hyggekrogen.localhost>
Hi Jesper,
> > > the short version also have the real bennefits of generating
> > > shorter and faster code as well as being shorter "on-screen".
> >
> > Faster code? I'd have thought avoiding the function call outweighed
> > the overhead of checking before calling.
>
> I haven't actually measured it, but that would be my guess from
> looking at the actual code gcc generates.
> ...
> void cond_policydb_destroy(struct policydb *p)
> {
> 220: 55 push %ebp
> 221: 89 e5 mov %esp,%ebp
> 223: 53 push %ebx
> 224: 89 c3 mov %eax,%ebx
> if (p->bool_val_to_struct)
> 226: 8b 40 78 mov 0x78(%eax),%eax
> 229: 85 c0 test %eax,%eax
> 22b: 75 13 jne 240 <cond_policydb_destroy+0x20>
> kfree(p->bool_val_to_struct);
> avtab_destroy(&p->te_cond_avtab);
> 22d: 8d 43 7c lea 0x7c(%ebx),%eax
> 230: e8 fc ff ff ff call 231 <cond_policydb_destroy+0x11>
> cond_list_destroy(p->cond_list);
> 235: 8b 83 84 00 00 00 mov 0x84(%ebx),%eax
> 23b: 5b pop %ebx
> 23c: c9 leave
> 23d: eb c1 jmp 200 <cond_list_destroy>
> 23f: 90 nop
> 240: e8 fc ff ff ff call 241 <cond_policydb_destroy+0x21>
> 245: 8d 43 7c lea 0x7c(%ebx),%eax
> 248: e8 fc ff ff ff call 249 <cond_policydb_destroy+0x29>
> 24d: 8b 83 84 00 00 00 mov 0x84(%ebx),%eax
> 253: 5b pop %ebx
> 254: c9 leave
> 255: eb a9 jmp 200 <cond_list_destroy>
> 257: 89 f6 mov %esi,%esi
> 259: 8d bc 27 00 00 00 00 lea 0x0(%edi),%edi
>
> [...]
> ...
> First of all that's significantly shorter, so we'll gain a bit of
> memory and I'd guess it would improve cache behaviour as well (but I
> don't know enough to say for sure).
Yes, the original's awful isn't it. I'm used to ARM rather than x86 and
so didn't expect such bloat by having the condition.
> I'm also assuming that in the vast majority of cases (not just here,
> but all over the kernel) the pointer being tested will end up being
> !=NULL so we'll end up doing the function call in any case, so saving
> the conditional should be an overall win.
Fair enough, you've persuaded me. Thanks for taking the time.
Cheers,
Ralph.
next prev parent reply other threads:[~2005-03-21 10:17 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-20 12:29 [PATCH] don't do pointless NULL checks and casts before kfree() in security/ Jesper Juhl
2005-03-20 12:50 ` Ralph Corderoy
2005-03-20 13:18 ` Jesper Juhl
2005-03-20 13:31 ` Ralph Corderoy
2005-03-20 14:04 ` YOSHIFUJI Hideaki / 吉藤英明
2005-03-20 14:39 ` Jesper Juhl
2005-03-21 10:17 ` Ralph Corderoy [this message]
2005-03-22 15:00 ` Stephen Smalley
2005-03-22 15:00 ` Stephen Smalley
2005-03-22 20:57 ` [PATCH] don't do pointless NULL checks and casts before kfree() in security/selinux/ Jesper Juhl
2005-03-22 15:34 ` [PATCH] don't do pointless NULL checks and casts before kfree() in security/ David Howells
2005-03-22 20:46 ` Jesper Juhl
[not found] <fa.p25ihnj.4026at@ifi.uio.no>
[not found] ` <fa.iqmuavi.o6kfai@ifi.uio.no>
2005-03-20 13:18 ` Bodo Eggert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200503211017.j2LAH7r04610@blake.inputplus.co.uk \
--to=ralph@inputplus.co.uk \
--cc=juhl-lkml@dif.dk \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.