Linux Integrity Measurement development
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: "Michal Suchánek" <msuchanek@suse.de>
Cc: "SF Markus Elfring" <elfring@users.sourceforge.net>,
	linux-integrity@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	kernel-janitors@vger.kernel.org,
	"Stefan Berger" <stefanb@linux.vnet.ibm.com>,
	"Nayna Jain" <nayna@linux.vnet.ibm.com>,
	"Jerry Snitselaar" <jsnitsel@redhat.com>,
	LKML <linux-kernel@vger.kernel.org>,
	"Jarkko Sakkinen" <jarkko.sakkinen@linux.intel.com>,
	"Jason Gunthorpe" <jgunthorpe@obsidianresearch.com>,
	"Corentin Labbe" <clabbe.montjoie@gmail.com>,
	"Kenneth Goldman" <kgold@linux.vnet.ibm.com>,
	"Paul Mackerras" <paulus@samba.org>,
	"Peter Hüwe" <PeterHuewe@gmx.de>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>
Subject: Re: [PATCH 4/4] char/tpm: Less checks in tpm_ibmvtpm_probe() after error detection
Date: Thu, 19 Oct 2017 17:26:26 +0300	[thread overview]
Message-ID: <20171019142626.gwckkdbz7hsigakx@mwanda> (raw)
In-Reply-To: <20171019144655.7d06111c@kitsune.suse.cz>

tpm_ibmvtpm_probe() is an example of poor names.  It has the generic
ones like "cleanup" which don't say *what* is cleaned and the come-from
ones like "init_irq_cleanup" which don't say anything useful at all:

   647          rc = request_irq(vio_dev->irq, ibmvtpm_interrupt, 0,
   648                           tpm_ibmvtpm_driver_name, ibmvtpm);
   649          if (rc) {
   650                  dev_err(dev, "Error %d register irq 0x%x\n", rc, vio_dev->irq);
   651                  goto init_irq_cleanup;
   652          }
   653  
   654          rc = vio_enable_interrupts(vio_dev);
   655          if (rc) {
   656                  dev_err(dev, "Error %d enabling interrupts\n", rc);
   657                  goto init_irq_cleanup;
   658          }

Sadly, we never do call free_irq().

> It can do it automatically, in most cases better, and automatically
> adapt it to code changes.

I've heard this before that if you only have one label that does
everything then it's "automatic" and "future proof".  It's not true.
The best error handling is methodical error handling:

1) In the reverse order from how things were allocated
2) That mirrors the allocations exactly
3) That frees one thing at a time
4) With a proper, useful, readable label name which says what the goto
   does
5) That doesn't free anything which hasn't been allocated

regards,
dan carpenter

  reply	other threads:[~2017-10-19 14:27 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-16 17:30 [PATCH 0/4] char-TPM: Adjustments for ten function implementations SF Markus Elfring
2017-10-16 17:31 ` [PATCH 1/4] char/tpm: Delete an error message for a failed memory allocation in tpm_ascii_bios_measurements_show() SF Markus Elfring
2017-10-16 17:32 ` [PATCH 2/4] char/tpm: Delete an error message for a failed memory allocation in tpm_ibmvtpm_probe() SF Markus Elfring
2017-10-16 17:33 ` [PATCH 3/4] char/tpm: Improve a size determination in nine functions SF Markus Elfring
2017-10-17 11:03   ` Andy Shevchenko
2017-10-17 11:50     ` Alexander.Steffen
2017-10-17 12:52       ` Mimi Zohar
2017-10-17 12:58         ` Julia Lawall
2017-10-17 15:17           ` Mimi Zohar
2017-10-17 15:29             ` Julia Lawall
2017-10-18  9:16               ` Alexander.Steffen
2017-10-17 18:41             ` SF Markus Elfring
2017-10-17 19:28               ` Mimi Zohar
2017-10-17 20:04                 ` SF Markus Elfring
2017-10-17 19:36               ` Andy Shevchenko
2017-10-17 20:24                 ` SF Markus Elfring
2017-10-18 14:57               ` Jarkko Sakkinen
2017-10-18 15:22                 ` SF Markus Elfring
2017-10-18 15:59                   ` Jarkko Sakkinen
2017-10-18 16:43                     ` SF Markus Elfring
2017-10-18 17:18                       ` Jarkko Sakkinen
2017-10-18 17:22                         ` Jarkko Sakkinen
2017-10-18 17:54                           ` SF Markus Elfring
2017-10-18 17:48                         ` SF Markus Elfring
2017-10-18 17:54                           ` Jerry Snitselaar
2017-10-18 18:11                             ` char/tpm: Delete an error message for a failed memory allocation in tpm_…() SF Markus Elfring
2017-10-18 18:03                           ` char/tpm: Improve a size determination in nine functions Andy Shevchenko
2017-10-19 12:04                             ` Michal Suchánek
2017-10-19 12:16                           ` Jarkko Sakkinen
2017-10-17 15:22         ` [PATCH 3/4] " Alexander.Steffen
     [not found]         ` <1508245325.16112.478.camel@linux.intel.com>
2017-10-18 14:52           ` Jarkko Sakkinen
2017-10-18 14:48       ` Jarkko Sakkinen
2017-10-19 16:58         ` Alexander.Steffen
2017-10-20  9:01           ` Jarkko Sakkinen
2017-10-20 10:23             ` Jarkko Sakkinen
2017-10-20 12:03               ` Alexander.Steffen
2017-10-23 13:20           ` Dan Carpenter
2017-10-18 14:40     ` Jarkko Sakkinen
2017-10-16 17:34 ` [PATCH 4/4] char/tpm: Less checks in tpm_ibmvtpm_probe() after error detection SF Markus Elfring
2017-10-19 11:56   ` Michal Suchánek
2017-10-19 12:36     ` SF Markus Elfring
2017-10-19 12:46       ` Michal Suchánek
2017-10-19 14:26         ` Dan Carpenter [this message]
2017-10-19 13:36     ` Dan Carpenter
2017-10-19 14:16       ` Michal Suchánek
2017-10-19 14:59         ` Dan Carpenter
2017-10-19 20:44       ` SF Markus Elfring
2017-10-16 18:31 ` [PATCH 0/4] char-TPM: Adjustments for ten function implementations Jarkko Sakkinen
2017-10-16 18:35   ` Jarkko Sakkinen
2017-10-16 20:44     ` SF Markus Elfring
2017-10-18 15:04       ` Jarkko Sakkinen
2017-10-18 15:43         ` SF Markus Elfring
2017-10-16 22:46     ` [PATCH 0/4] " Joe Perches
2017-10-17  7:20       ` SF Markus Elfring
2017-10-17  8:51     ` Dan Carpenter
2017-10-17  8:56       ` Julia Lawall
2017-10-17  9:44         ` Dan Carpenter
2017-10-17 10:11           ` Julia Lawall
2017-10-17 11:52             ` Mimi Zohar
2017-10-18  3:18               ` Michael Ellerman
2017-10-19 13:16                 ` Mimi Zohar
2017-10-19 16:08                   ` Circumstances for using the tag “Fixes” (or not) SF Markus Elfring
2017-10-17 12:26           ` [PATCH 0/4] char-TPM: Adjustments for ten function implementations Michael Ellerman
2017-10-18 15:07           ` Jarkko Sakkinen
2017-10-17  9:25       ` SF Markus Elfring
     [not found]         ` <1508255833.3129.33.camel@HansenPartnership.com>
2017-10-17 16:32           ` SF Markus Elfring
2017-10-17 22:43           ` Joe Perches
2017-10-18  9:00             ` SF Markus Elfring
2017-10-18  9:18               ` Joe Perches
2017-10-18  9:50                 ` Alexander.Steffen
2017-10-18 10:00                   ` Julia Lawall
2017-10-18 10:28                     ` Joe Perches
2017-10-18 11:00                       ` Adjusting further size determinations? SF Markus Elfring
2017-10-18 11:49                         ` Joe Perches
2017-10-18 12:07                           ` SF Markus Elfring
2017-10-18 12:58                             ` David Laight
2017-10-18 13:32                               ` Julia Lawall
2017-10-18 13:50                                 ` SF Markus Elfring
2017-10-18 10:44                     ` char-TPM: Adjustments for ten function implementations Alexander.Steffen
2017-10-18 10:49                       ` Joe Perches
2017-10-18 11:07                         ` Alexander.Steffen
2017-10-18  9:55                 ` SF Markus Elfring
2017-10-18 18:27                 ` Michal Suchánek
2017-10-18 15:10           ` [PATCH 0/4] " Jarkko Sakkinen
2017-10-18 16:09             ` James Bottomley
2017-10-18 17:13               ` Jarkko Sakkinen

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=20171019142626.gwckkdbz7hsigakx@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=PeterHuewe@gmx.de \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=clabbe.montjoie@gmail.com \
    --cc=elfring@users.sourceforge.net \
    --cc=jarkko.sakkinen@linux.intel.com \
    --cc=jgunthorpe@obsidianresearch.com \
    --cc=jsnitsel@redhat.com \
    --cc=kernel-janitors@vger.kernel.org \
    --cc=kgold@linux.vnet.ibm.com \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=msuchanek@suse.de \
    --cc=nayna@linux.vnet.ibm.com \
    --cc=paulus@samba.org \
    --cc=stefanb@linux.vnet.ibm.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox