All of lore.kernel.org
 help / color / mirror / Atom feed
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.


  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.