All of lore.kernel.org
 help / color / mirror / Atom feed
From: jgunthorpe@obsidianresearch.com (Jason Gunthorpe)
To: linux-security-module@vger.kernel.org
Subject: [tpmdd-devel] [PATCH] tpm: Fix the ioremap() call for Braswell systems
Date: Thu, 22 Jun 2017 14:20:23 -0600	[thread overview]
Message-ID: <20170622202023.GA3579@obsidianresearch.com> (raw)
In-Reply-To: <1498156197-180919-1-git-send-email-azhar.shaikh@intel.com>

On Thu, Jun 22, 2017 at 11:29:57AM -0700, Azhar Shaikh wrote:
> ioremap() for Intel Braswell processors was done in
> tpm_tis_pnp_init(). But before this function gets called,
> platform driver 'tis_drv' gets registered and its probe function
> tpm_tis_plat_probe() is invoked, which does a TPM
> access. Now for Braswell processors tpm_platform_begin_xfer()
> will do an ioread32() without having a mapped address, which
> will lead to a bad I/O access warning.
> Hence move the ioremap() call from tpm_tis_pnp_init() to init_tis()
> before registering the 'tis_drv' or basically before any TPM access.
> Accordingly also move the iounmap() call from tpm_tis_pnp_remove()
> to cleanup_tis().
> 
> Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com>
>  drivers/char/tpm/tpm_tis.c | 21 +++++++++------------
>  1 file changed, 9 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
> index 506e62ca3576..3224db80816a 100644
> +++ b/drivers/char/tpm/tpm_tis.c
> @@ -330,12 +330,6 @@ static int tpm_tis_pnp_init(struct pnp_dev *pnp_dev,
>  	else
>  		tpm_info.irq = -1;
>  
> -#ifdef CONFIG_X86
> -	if (is_bsw())
> -		ilb_base_addr = ioremap(INTEL_LEGACY_BLK_BASE_ADDR,
> -					ILB_REMAP_SIZE);
> -#endif
> -
>  	return tpm_tis_init(&pnp_dev->dev, &tpm_info);
>  }
>  
> @@ -359,12 +353,6 @@ static void tpm_tis_pnp_remove(struct pnp_dev *dev)
>  
>  	tpm_chip_unregister(chip);
>  	tpm_tis_remove(chip);
> -
> -#ifdef CONFIG_X86
> -	if (is_bsw())
> -		iounmap(ilb_base_addr);
> -#endif
> -
>  }
>  
>  static struct pnp_driver tis_pnp_driver = {
> @@ -472,6 +460,11 @@ static int __init init_tis(void)
>  	if (rc)
>  		goto err_force;
>  
> +#ifdef CONFIG_X86
> +	if (is_bsw())
> +		ilb_base_addr = ioremap(INTEL_LEGACY_BLK_BASE_ADDR,
> +					ILB_REMAP_SIZE);
> +#endif

The iounmap needs to be in the goto unwind for init_tis as well, surely?

>  	rc = platform_driver_register(&tis_drv);
>  	if (rc)
>  		goto err_platform;

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
To: Azhar Shaikh <azhar.shaikh@intel.com>
Cc: jarkko.sakkinen@linux.intel.com,
	tpmdd-devel@lists.sourceforge.net,
	linux-security-module@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [tpmdd-devel] [PATCH] tpm: Fix the ioremap() call for Braswell systems
Date: Thu, 22 Jun 2017 14:20:23 -0600	[thread overview]
Message-ID: <20170622202023.GA3579@obsidianresearch.com> (raw)
In-Reply-To: <1498156197-180919-1-git-send-email-azhar.shaikh@intel.com>

On Thu, Jun 22, 2017 at 11:29:57AM -0700, Azhar Shaikh wrote:
> ioremap() for Intel Braswell processors was done in
> tpm_tis_pnp_init(). But before this function gets called,
> platform driver 'tis_drv' gets registered and its probe function
> tpm_tis_plat_probe() is invoked, which does a TPM
> access. Now for Braswell processors tpm_platform_begin_xfer()
> will do an ioread32() without having a mapped address, which
> will lead to a bad I/O access warning.
> Hence move the ioremap() call from tpm_tis_pnp_init() to init_tis()
> before registering the 'tis_drv' or basically before any TPM access.
> Accordingly also move the iounmap() call from tpm_tis_pnp_remove()
> to cleanup_tis().
> 
> Signed-off-by: Azhar Shaikh <azhar.shaikh@intel.com>
>  drivers/char/tpm/tpm_tis.c | 21 +++++++++------------
>  1 file changed, 9 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
> index 506e62ca3576..3224db80816a 100644
> +++ b/drivers/char/tpm/tpm_tis.c
> @@ -330,12 +330,6 @@ static int tpm_tis_pnp_init(struct pnp_dev *pnp_dev,
>  	else
>  		tpm_info.irq = -1;
>  
> -#ifdef CONFIG_X86
> -	if (is_bsw())
> -		ilb_base_addr = ioremap(INTEL_LEGACY_BLK_BASE_ADDR,
> -					ILB_REMAP_SIZE);
> -#endif
> -
>  	return tpm_tis_init(&pnp_dev->dev, &tpm_info);
>  }
>  
> @@ -359,12 +353,6 @@ static void tpm_tis_pnp_remove(struct pnp_dev *dev)
>  
>  	tpm_chip_unregister(chip);
>  	tpm_tis_remove(chip);
> -
> -#ifdef CONFIG_X86
> -	if (is_bsw())
> -		iounmap(ilb_base_addr);
> -#endif
> -
>  }
>  
>  static struct pnp_driver tis_pnp_driver = {
> @@ -472,6 +460,11 @@ static int __init init_tis(void)
>  	if (rc)
>  		goto err_force;
>  
> +#ifdef CONFIG_X86
> +	if (is_bsw())
> +		ilb_base_addr = ioremap(INTEL_LEGACY_BLK_BASE_ADDR,
> +					ILB_REMAP_SIZE);
> +#endif

The iounmap needs to be in the goto unwind for init_tis as well, surely?

>  	rc = platform_driver_register(&tis_drv);
>  	if (rc)
>  		goto err_platform;

Jason

  reply	other threads:[~2017-06-22 20:20 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-22 18:29 [PATCH] tpm: Fix the ioremap() call for Braswell systems Azhar Shaikh
2017-06-22 18:29 ` Azhar Shaikh
2017-06-22 20:20 ` Jason Gunthorpe [this message]
2017-06-22 20:20   ` [tpmdd-devel] " Jason Gunthorpe
2017-06-22 20:50   ` Shaikh, Azhar
2017-06-22 20:50     ` Shaikh, Azhar
2017-06-22 21:32 ` [PATCH v2] " Azhar Shaikh
2017-06-22 21:32   ` Azhar Shaikh
2017-06-28 22:11   ` Jarkko Sakkinen
2017-06-28 22:11     ` 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=20170622202023.GA3579@obsidianresearch.com \
    --to=jgunthorpe@obsidianresearch.com \
    --cc=linux-security-module@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.