Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752651AbcDZIaT (ORCPT ); Tue, 26 Apr 2016 04:30:19 -0400 Received: from mga01.intel.com ([192.55.52.88]:15176 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752506AbcDZIaQ (ORCPT ); Tue, 26 Apr 2016 04:30:16 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,536,1455004800"; d="scan'208";a="92033918" Date: Tue, 26 Apr 2016 11:30:14 +0300 From: Jarkko Sakkinen To: Sudip Mukherjee Cc: Peter Huewe , Marcel Selhorst , Jason Gunthorpe , linux-kernel@vger.kernel.org, tpmdd-devel@lists.sourceforge.net Subject: Re: [PATCH] tpm: use devm_add_action_or_reset Message-ID: <20160426083014.GA29628@intel.com> References: <1461617198-32351-1-git-send-email-sudipm.mukherjee@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1461617198-32351-1-git-send-email-sudipm.mukherjee@gmail.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1142 Lines: 36 On Mon, Apr 25, 2016 at 09:46:38PM +0100, Sudip Mukherjee wrote: > If devm_add_action() fails we are explicitly calling the cleanup function > in the error path. Lets use the helper function devm_add_action_or_reset() > and return directly as we know the cleanup has been done by the helper. Have you verified that this compiles against my tree? /Jarkko > Signed-off-by: Sudip Mukherjee > --- > drivers/char/tpm/tpm-chip.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c > index 5bc530c..aca4505 100644 > --- a/drivers/char/tpm/tpm-chip.c > +++ b/drivers/char/tpm/tpm-chip.c > @@ -212,11 +212,10 @@ struct tpm_chip *tpmm_chip_alloc(struct device *pdev, > if (IS_ERR(chip)) > return chip; > > - rc = devm_add_action(pdev, (void (*)(void *)) put_device, &chip->dev); > - if (rc) { > - put_device(&chip->dev); > + rc = devm_add_action_or_reset(pdev, (void (*)(void *)) put_device, > + &chip->dev); > + if (rc) > return ERR_PTR(rc); > - } > > dev_set_drvdata(pdev, chip); > > -- > 1.9.1 >