From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751571AbcBMNri (ORCPT ); Sat, 13 Feb 2016 08:47:38 -0500 Received: from mga09.intel.com ([134.134.136.24]:58965 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751550AbcBMNrf (ORCPT ); Sat, 13 Feb 2016 08:47:35 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,440,1449561600"; d="scan'208";a="902159090" From: Jarkko Sakkinen To: Peter Huewe , Marcel Selhorst , David Howells Cc: jmorris@namei.org, Jason Gunthorpe , stable@vger.kernel.org, Jarkko Sakkinen , tpmdd-devel@lists.sourceforge.net (moderated list:TPM DEVICE DRIVER), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v2 3/4] tpm: Hold the kref during tpm_chip_find_get Date: Sat, 13 Feb 2016 15:47:06 +0200 Message-Id: <1455371228-20431-4-git-send-email-jarkko.sakkinen@linux.intel.com> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1455371228-20431-1-git-send-email-jarkko.sakkinen@linux.intel.com> References: <1455371228-20431-1-git-send-email-jarkko.sakkinen@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jason Gunthorpe This was missed during the struct device conversion, we need to hold a kref on the chip to make sure it isn't freed. Signed-off-by: Jason Gunthorpe Reviewed-by: Jarkko Sakkinen Fixes: afb5abc262e9 ("tpm: two-phase chip management functions") cc: stable@vger.kernel.org --- drivers/char/tpm/tpm-chip.c | 2 ++ drivers/char/tpm/tpm.h | 1 + 2 files changed, 3 insertions(+) diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c index 274dd01..84a54a2 100644 --- a/drivers/char/tpm/tpm-chip.c +++ b/drivers/char/tpm/tpm-chip.c @@ -53,6 +53,8 @@ struct tpm_chip *tpm_chip_find_get(int chip_num) chip = pos; break; } + + get_device(&chip->dev); } rcu_read_unlock(); return chip; diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h index 28b477e..f6bc0b3 100644 --- a/drivers/char/tpm/tpm.h +++ b/drivers/char/tpm/tpm.h @@ -200,6 +200,7 @@ struct tpm_chip { static inline void tpm_chip_put(struct tpm_chip *chip) { module_put(chip->pdev->driver->owner); + put_device(&chip->dev); } static inline int tpm_read_index(int base, int index) -- 2.7.0