public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad
@ 2014-09-19 21:29 Anton Blanchard
  2014-09-19 21:30 ` [PATCH 2/2] tpm/tpm_ibmvtpm: Remove unnecessary casts Anton Blanchard
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Anton Blanchard @ 2014-09-19 21:29 UTC (permalink / raw)
  To: Peter Huewe, Ashley Lai, Marcel Selhorst; +Cc: tpmdd-devel, linux-kernel

I'm looking at an oops in tpm_ibmvtpm_get_desired_dma:

  28:	00 00 20 39 	li      r9,0
  2c:	10 00 01 e8 	ld      r0,16(r1)
  30:	28 00 69 80 	lwz     r3,40(r9)

We set r9 to 0 then load r9+40. The problem is actually in
ibmvtpm_get_data, it can return NULL but the rest of the driver
never expects it.

Add a BUG_ON in ibmvtpm_get_data. We still need to identify the root
cause but at least this makes it obvious what went wrong.

Cc: stable@vger.kernel.org
Signed-off-by: Anton Blanchard <anton@samba.org>
---

diff --git a/drivers/char/tpm/tpm_ibmvtpm.c b/drivers/char/tpm/tpm_ibmvtpm.c
index af74c57..0d1eeba 100644
--- a/drivers/char/tpm/tpm_ibmvtpm.c
+++ b/drivers/char/tpm/tpm_ibmvtpm.c
@@ -63,9 +63,9 @@ static int ibmvtpm_send_crq(struct vio_dev *vdev, u64 w1, u64 w2)
 static struct ibmvtpm_dev *ibmvtpm_get_data(const struct device *dev)
 {
 	struct tpm_chip *chip = dev_get_drvdata(dev);
-	if (chip)
-		return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
-	return NULL;
+
+	BUG_ON(!chip);
+	return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
 }
 
 /**

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/2] tpm/tpm_ibmvtpm: Remove unnecessary casts
  2014-09-19 21:29 [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad Anton Blanchard
@ 2014-09-19 21:30 ` Anton Blanchard
  2014-09-22 17:49   ` Ashley Lai
  2014-09-24 16:18   ` [tpmdd-devel] " Jason Gunthorpe
  2014-09-22 17:43 ` [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad Ashley Lai
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 13+ messages in thread
From: Anton Blanchard @ 2014-09-19 21:30 UTC (permalink / raw)
  To: Peter Huewe, Ashley Lai, Marcel Selhorst; +Cc: tpmdd-devel, linux-kernel

There is no need to cast from a void pointer to another pointer.

Signed-off-by: Anton Blanchard <anton@samba.org>
---

Index: b/drivers/char/tpm/tpm_ibmvtpm.c
===================================================================
--- a/drivers/char/tpm/tpm_ibmvtpm.c
+++ b/drivers/char/tpm/tpm_ibmvtpm.c
@@ -65,7 +65,7 @@ static struct ibmvtpm_dev *ibmvtpm_get_d
 	struct tpm_chip *chip = dev_get_drvdata(dev);
 
 	BUG_ON(!chip);
-	return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
+	return TPM_VPRIV(chip);
 }
 
 /**
@@ -83,7 +83,7 @@ static int tpm_ibmvtpm_recv(struct tpm_c
 	u16 len;
 	int sig;
 
-	ibmvtpm = (struct ibmvtpm_dev *)TPM_VPRIV(chip);
+	ibmvtpm = TPM_VPRIV(chip);
 
 	if (!ibmvtpm->rtce_buf) {
 		dev_err(ibmvtpm->dev, "ibmvtpm device is not ready\n");
@@ -127,7 +127,7 @@ static int tpm_ibmvtpm_send(struct tpm_c
 	u64 *word = (u64 *) &crq;
 	int rc;
 
-	ibmvtpm = (struct ibmvtpm_dev *)TPM_VPRIV(chip);
+	ibmvtpm = TPM_VPRIV(chip);
 
 	if (!ibmvtpm->rtce_buf) {
 		dev_err(ibmvtpm->dev, "ibmvtpm device is not ready\n");
@@ -521,7 +521,7 @@ static void ibmvtpm_crq_process(struct i
  **/
 static irqreturn_t ibmvtpm_interrupt(int irq, void *vtpm_instance)
 {
-	struct ibmvtpm_dev *ibmvtpm = (struct ibmvtpm_dev *) vtpm_instance;
+	struct ibmvtpm_dev *ibmvtpm = vtpm_instance;
 	struct ibmvtpm_crq *crq;
 
 	/* while loop is needed for initial setup (get version and

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad
  2014-09-19 21:29 [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad Anton Blanchard
  2014-09-19 21:30 ` [PATCH 2/2] tpm/tpm_ibmvtpm: Remove unnecessary casts Anton Blanchard
@ 2014-09-22 17:43 ` Ashley Lai
  2014-09-22 18:03   ` [tpmdd-devel] " Jason Gunthorpe
  2014-09-22 17:45 ` Ashley Lai
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Ashley Lai @ 2014-09-22 17:43 UTC (permalink / raw)
  To: Anton Blanchard
  Cc: Peter Huewe, Ashley Lai, Marcel Selhorst, tpmdd-devel,
	linux-kernel

Hi Anton,

Thanks for the patch.  Is this oops easy to recreate?  If so could 
you give us the steps to reproduce?

Thanks,
--Ashley Lai

On Sat, 20 Sep 2014, Anton Blanchard wrote:

> I'm looking at an oops in tpm_ibmvtpm_get_desired_dma:
>
>  28:	00 00 20 39 	li      r9,0
>  2c:	10 00 01 e8 	ld      r0,16(r1)
>  30:	28 00 69 80 	lwz     r3,40(r9)
>
> We set r9 to 0 then load r9+40. The problem is actually in
> ibmvtpm_get_data, it can return NULL but the rest of the driver
> never expects it.
>
> Add a BUG_ON in ibmvtpm_get_data. We still need to identify the root
> cause but at least this makes it obvious what went wrong.
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Anton Blanchard <anton@samba.org>
> ---
>
> diff --git a/drivers/char/tpm/tpm_ibmvtpm.c b/drivers/char/tpm/tpm_ibmvtpm.c
> index af74c57..0d1eeba 100644
> --- a/drivers/char/tpm/tpm_ibmvtpm.c
> +++ b/drivers/char/tpm/tpm_ibmvtpm.c
> @@ -63,9 +63,9 @@ static int ibmvtpm_send_crq(struct vio_dev *vdev, u64 w1, u64 w2)
> static struct ibmvtpm_dev *ibmvtpm_get_data(const struct device *dev)
> {
> 	struct tpm_chip *chip = dev_get_drvdata(dev);
> -	if (chip)
> -		return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> -	return NULL;
> +
> +	BUG_ON(!chip);
> +	return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> }
>
> /**
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad
  2014-09-19 21:29 [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad Anton Blanchard
  2014-09-19 21:30 ` [PATCH 2/2] tpm/tpm_ibmvtpm: Remove unnecessary casts Anton Blanchard
  2014-09-22 17:43 ` [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad Ashley Lai
@ 2014-09-22 17:45 ` Ashley Lai
  2014-12-02 19:22 ` Ashley Lai
  2014-12-02 20:39 ` Peter Hüwe
  4 siblings, 0 replies; 13+ messages in thread
From: Ashley Lai @ 2014-09-22 17:45 UTC (permalink / raw)
  To: Anton Blanchard
  Cc: Peter Huewe, Ashley Lai, Marcel Selhorst, tpmdd-devel,
	linux-kernel



On Sat, 20 Sep 2014, Anton Blanchard wrote:

> I'm looking at an oops in tpm_ibmvtpm_get_desired_dma:
>
>  28:	00 00 20 39 	li      r9,0
>  2c:	10 00 01 e8 	ld      r0,16(r1)
>  30:	28 00 69 80 	lwz     r3,40(r9)
>
> We set r9 to 0 then load r9+40. The problem is actually in
> ibmvtpm_get_data, it can return NULL but the rest of the driver
> never expects it.
>
> Add a BUG_ON in ibmvtpm_get_data. We still need to identify the root
> cause but at least this makes it obvious what went wrong.
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Anton Blanchard <anton@samba.org>
> ---
>
> diff --git a/drivers/char/tpm/tpm_ibmvtpm.c b/drivers/char/tpm/tpm_ibmvtpm.c
> index af74c57..0d1eeba 100644
> --- a/drivers/char/tpm/tpm_ibmvtpm.c
> +++ b/drivers/char/tpm/tpm_ibmvtpm.c
> @@ -63,9 +63,9 @@ static int ibmvtpm_send_crq(struct vio_dev *vdev, u64 w1, u64 w2)
> static struct ibmvtpm_dev *ibmvtpm_get_data(const struct device *dev)
> {
> 	struct tpm_chip *chip = dev_get_drvdata(dev);
> -	if (chip)
> -		return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> -	return NULL;
> +
> +	BUG_ON(!chip);
> +	return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> }
>
> /**
>

Acked-by: Ashley Lai <ashley@ashleylai.com>


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] tpm/tpm_ibmvtpm: Remove unnecessary casts
  2014-09-19 21:30 ` [PATCH 2/2] tpm/tpm_ibmvtpm: Remove unnecessary casts Anton Blanchard
@ 2014-09-22 17:49   ` Ashley Lai
  2014-09-24 16:18   ` [tpmdd-devel] " Jason Gunthorpe
  1 sibling, 0 replies; 13+ messages in thread
From: Ashley Lai @ 2014-09-22 17:49 UTC (permalink / raw)
  To: Anton Blanchard
  Cc: Peter Huewe, Ashley Lai, Marcel Selhorst, tpmdd-devel,
	linux-kernel



On Sat, 20 Sep 2014, Anton Blanchard wrote:

> There is no need to cast from a void pointer to another pointer.
>
> Signed-off-by: Anton Blanchard <anton@samba.org>

Acked-by: Ashley Lai <ashley@ashleylai.com>




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [tpmdd-devel] [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad
  2014-09-22 17:43 ` [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad Ashley Lai
@ 2014-09-22 18:03   ` Jason Gunthorpe
  0 siblings, 0 replies; 13+ messages in thread
From: Jason Gunthorpe @ 2014-09-22 18:03 UTC (permalink / raw)
  To: Ashley Lai; +Cc: Anton Blanchard, tpmdd-devel, linux-kernel

On Mon, Sep 22, 2014 at 12:43:27PM -0500, Ashley Lai wrote:
> Hi Anton,
> 
> Thanks for the patch.  Is this oops easy to recreate?  If so could 
> you give us the steps to reproduce?

This looks like it is probably related to the uninitialization mess in
the TPM core (resource held during module unload?). A driver should
not have to defend itself against null drvdata, so the BUG makes
more sense than the if it is replacing.

Jason

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [tpmdd-devel] [PATCH 2/2] tpm/tpm_ibmvtpm: Remove unnecessary casts
  2014-09-19 21:30 ` [PATCH 2/2] tpm/tpm_ibmvtpm: Remove unnecessary casts Anton Blanchard
  2014-09-22 17:49   ` Ashley Lai
@ 2014-09-24 16:18   ` Jason Gunthorpe
  1 sibling, 0 replies; 13+ messages in thread
From: Jason Gunthorpe @ 2014-09-24 16:18 UTC (permalink / raw)
  To: Anton Blanchard
  Cc: Peter Huewe, Ashley Lai, Marcel Selhorst, tpmdd-devel,
	linux-kernel

On Sat, Sep 20, 2014 at 07:30:14AM +1000, Anton Blanchard wrote:
> There is no need to cast from a void pointer to another pointer.

Looks reasonable to me:

Reviewed-By: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
 
> Signed-off-by: Anton Blanchard <anton@samba.org>
> 
> Index: b/drivers/char/tpm/tpm_ibmvtpm.c
> ===================================================================
> +++ b/drivers/char/tpm/tpm_ibmvtpm.c
> @@ -65,7 +65,7 @@ static struct ibmvtpm_dev *ibmvtpm_get_d
>  	struct tpm_chip *chip = dev_get_drvdata(dev);
>  
>  	BUG_ON(!chip);
> -	return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> +	return TPM_VPRIV(chip);
>  }
>  
>  /**
> @@ -83,7 +83,7 @@ static int tpm_ibmvtpm_recv(struct tpm_c
>  	u16 len;
>  	int sig;
>  
> -	ibmvtpm = (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> +	ibmvtpm = TPM_VPRIV(chip);
>  
>  	if (!ibmvtpm->rtce_buf) {
>  		dev_err(ibmvtpm->dev, "ibmvtpm device is not ready\n");
> @@ -127,7 +127,7 @@ static int tpm_ibmvtpm_send(struct tpm_c
>  	u64 *word = (u64 *) &crq;
>  	int rc;
>  
> -	ibmvtpm = (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> +	ibmvtpm = TPM_VPRIV(chip);
>  
>  	if (!ibmvtpm->rtce_buf) {
>  		dev_err(ibmvtpm->dev, "ibmvtpm device is not ready\n");
> @@ -521,7 +521,7 @@ static void ibmvtpm_crq_process(struct i
>   **/
>  static irqreturn_t ibmvtpm_interrupt(int irq, void *vtpm_instance)
>  {
> -	struct ibmvtpm_dev *ibmvtpm = (struct ibmvtpm_dev *) vtpm_instance;
> +	struct ibmvtpm_dev *ibmvtpm = vtpm_instance;
>  	struct ibmvtpm_crq *crq;
>  
>  	/* while loop is needed for initial setup (get version and
> 
> Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
> Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
> Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
> Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
> http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
> _______________________________________________
> tpmdd-devel mailing list
> tpmdd-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/tpmdd-devel

-- 
Jason Gunthorpe <jgunthorpe@obsidianresearch.com>        (780)4406067x832
Chief Technology Officer, Obsidian Research Corp         Edmonton, Canada

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad
  2014-09-19 21:29 [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad Anton Blanchard
                   ` (2 preceding siblings ...)
  2014-09-22 17:45 ` Ashley Lai
@ 2014-12-02 19:22 ` Ashley Lai
  2014-12-02 19:46   ` Peter Hüwe
  2014-12-02 20:39 ` Peter Hüwe
  4 siblings, 1 reply; 13+ messages in thread
From: Ashley Lai @ 2014-12-02 19:22 UTC (permalink / raw)
  To: Anton Blanchard
  Cc: Peter Huewe, Ashley Lai, Marcel Selhorst, tpmdd-devel,
	linux-kernel

> @@ -63,9 +63,9 @@ static int ibmvtpm_send_crq(struct vio_dev *vdev, u64 w1, u64 w2)
> static struct ibmvtpm_dev *ibmvtpm_get_data(const struct device *dev)
> {
> 	struct tpm_chip *chip = dev_get_drvdata(dev);
> -	if (chip)
> -		return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> -	return NULL;
> +
> +	BUG_ON(!chip);

With the recent patch from Vicky, it is possible to have a NULL value for 
chip which will trigger a false positive for BUG_ON(!chip).

> +	return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> }
>
> /**
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad
  2014-12-02 19:22 ` Ashley Lai
@ 2014-12-02 19:46   ` Peter Hüwe
  2014-12-02 20:09     ` Ashley Lai
  0 siblings, 1 reply; 13+ messages in thread
From: Peter Hüwe @ 2014-12-02 19:46 UTC (permalink / raw)
  To: Ashley Lai; +Cc: Anton Blanchard, Marcel Selhorst, tpmdd-devel, linux-kernel

Hi,

so shall I apply this patch? or not?

Thanks,
Peter

Am Dienstag, 2. Dezember 2014, 20:22:35 schrieb Ashley Lai:
> > @@ -63,9 +63,9 @@ static int ibmvtpm_send_crq(struct vio_dev *vdev, u64
> > w1, u64 w2) static struct ibmvtpm_dev *ibmvtpm_get_data(const struct
> > device *dev) {
> > 
> > 	struct tpm_chip *chip = dev_get_drvdata(dev);
> > 
> > -	if (chip)
> > -		return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> > -	return NULL;
> > +
> > +	BUG_ON(!chip);
> 
> With the recent patch from Vicky, it is possible to have a NULL value for
> chip which will trigger a false positive for BUG_ON(!chip).
> 
> > +	return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> > }
> > 
> > /**


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad
  2014-12-02 19:46   ` Peter Hüwe
@ 2014-12-02 20:09     ` Ashley Lai
  0 siblings, 0 replies; 13+ messages in thread
From: Ashley Lai @ 2014-12-02 20:09 UTC (permalink / raw)
  To: Peter Hüwe
  Cc: Ashley Lai, Anton Blanchard, Marcel Selhorst, tpmdd-devel,
	linux-kernel

[-- Attachment #1: Type: TEXT/PLAIN, Size: 815 bytes --]

I recommend not applying this patch until we hear back from IBM.

Thanks,
--Ashley

On Tue, 2 Dec 2014, Peter Hüwe wrote:

> Hi,
>
> so shall I apply this patch? or not?
>
> Thanks,
> Peter
>
> Am Dienstag, 2. Dezember 2014, 20:22:35 schrieb Ashley Lai:
>>> @@ -63,9 +63,9 @@ static int ibmvtpm_send_crq(struct vio_dev *vdev, u64
>>> w1, u64 w2) static struct ibmvtpm_dev *ibmvtpm_get_data(const struct
>>> device *dev) {
>>>
>>> 	struct tpm_chip *chip = dev_get_drvdata(dev);
>>>
>>> -	if (chip)
>>> -		return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
>>> -	return NULL;
>>> +
>>> +	BUG_ON(!chip);
>>
>> With the recent patch from Vicky, it is possible to have a NULL value for
>> chip which will trigger a false positive for BUG_ON(!chip).
>>
>>> +	return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
>>> }
>>>
>>> /**
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad
  2014-09-19 21:29 [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad Anton Blanchard
                   ` (3 preceding siblings ...)
  2014-12-02 19:22 ` Ashley Lai
@ 2014-12-02 20:39 ` Peter Hüwe
  2014-12-02 21:20   ` Anton Blanchard
  4 siblings, 1 reply; 13+ messages in thread
From: Peter Hüwe @ 2014-12-02 20:39 UTC (permalink / raw)
  To: Anton Blanchard, Hon Ching (Vicky) Lo
  Cc: Ashley Lai, Marcel Selhorst, tpmdd-devel, linux-kernel

Hi Anton,

is this patchset still needed after Vicky's patch 
"[tpmdd-devel] Fix NULL return in tpm_ibmvtpm_get_desired_dma"
https://patchwork.ozlabs.org/patch/402315/

Ashley raised some concerns.

Since merge window is coming up, a fast reply is appreciated.


Thanks,
Peter

Am Freitag, 19. September 2014, 23:29:42 schrieb Anton Blanchard:
> I'm looking at an oops in tpm_ibmvtpm_get_desired_dma:
> 
>   28:	00 00 20 39 	li      r9,0
>   2c:	10 00 01 e8 	ld      r0,16(r1)
>   30:	28 00 69 80 	lwz     r3,40(r9)
> 
> We set r9 to 0 then load r9+40. The problem is actually in
> ibmvtpm_get_data, it can return NULL but the rest of the driver
> never expects it.
> 
> Add a BUG_ON in ibmvtpm_get_data. We still need to identify the root
> cause but at least this makes it obvious what went wrong.
> 
> Cc: stable@vger.kernel.org
> Signed-off-by: Anton Blanchard <anton@samba.org>
> ---
> 
> diff --git a/drivers/char/tpm/tpm_ibmvtpm.c
> b/drivers/char/tpm/tpm_ibmvtpm.c index af74c57..0d1eeba 100644
> --- a/drivers/char/tpm/tpm_ibmvtpm.c
> +++ b/drivers/char/tpm/tpm_ibmvtpm.c
> @@ -63,9 +63,9 @@ static int ibmvtpm_send_crq(struct vio_dev *vdev, u64 w1,
> u64 w2) static struct ibmvtpm_dev *ibmvtpm_get_data(const struct device
> *dev) {
>  	struct tpm_chip *chip = dev_get_drvdata(dev);
> -	if (chip)
> -		return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
> -	return NULL;
> +
> +	BUG_ON(!chip);
> +	return (struct ibmvtpm_dev *)TPM_VPRIV(chip);
>  }
> 
>  /**


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad
  2014-12-02 20:39 ` Peter Hüwe
@ 2014-12-02 21:20   ` Anton Blanchard
  2014-12-03 23:11     ` Hon Ching (Vicky) Lo
  0 siblings, 1 reply; 13+ messages in thread
From: Anton Blanchard @ 2014-12-02 21:20 UTC (permalink / raw)
  To: Peter Hüwe
  Cc: Hon Ching (Vicky) Lo, Ashley Lai, Marcel Selhorst, tpmdd-devel,
	linux-kernel

Hi,

> is this patchset still needed after Vicky's patch 
> "[tpmdd-devel] Fix NULL return in tpm_ibmvtpm_get_desired_dma"
> https://patchwork.ozlabs.org/patch/402315/
> 
> Ashley raised some concerns.
> 
> Since merge window is coming up, a fast reply is appreciated.

We definitely need a way to catch an invalid driver data pointer, but it
looks like that needs to be reworked after Vicky's patch.

Vicky could you look at all uses of ibmvtpm_get_data and make
sure we don't blindly dereference it? eg:

static int tpm_ibmvtpm_resume(struct device *dev)
{
        struct ibmvtpm_dev *ibmvtpm = ibmvtpm_get_data(dev);
...

                rc = plpar_hcall_norets(H_ENABLE_CRQ,
                                        ibmvtpm->vdev->unit_address);

Anton

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad
  2014-12-02 21:20   ` Anton Blanchard
@ 2014-12-03 23:11     ` Hon Ching (Vicky) Lo
  0 siblings, 0 replies; 13+ messages in thread
From: Hon Ching (Vicky) Lo @ 2014-12-03 23:11 UTC (permalink / raw)
  To: Anton Blanchard
  Cc: Peter Hüwe, Ashley Lai, Marcel Selhorst, tpmdd-devel,
	linux-kernel

Hi Anton,


vio_bus_probe now calls vio_cmo_bus_probe before calling probe.
This results in calling get_desired_dma to get rtce buf size 
before we have called probe which initializes vtpm driver and 
sets up the tpm data, i.e. rtce buf size.

ibmvtpm_get_data returns NULL in get_desired_dma is a special 
case where the device is not initialized.


Regards,
Vicky

On Wed, 2014-12-03 at 08:20 +1100, Anton Blanchard wrote:
> Hi,
> 
> > is this patchset still needed after Vicky's patch 
> > "[tpmdd-devel] Fix NULL return in tpm_ibmvtpm_get_desired_dma"
> > https://patchwork.ozlabs.org/patch/402315/
> > 
> > Ashley raised some concerns.
> > 
> > Since merge window is coming up, a fast reply is appreciated.
> 
> We definitely need a way to catch an invalid driver data pointer, but it
> looks like that needs to be reworked after Vicky's patch.
> 
> Vicky could you look at all uses of ibmvtpm_get_data and make
> sure we don't blindly dereference it? eg:
> 
> static int tpm_ibmvtpm_resume(struct device *dev)
> {
>         struct ibmvtpm_dev *ibmvtpm = ibmvtpm_get_data(dev);
> ...
> 
>                 rc = plpar_hcall_norets(H_ENABLE_CRQ,
>                                         ibmvtpm->vdev->unit_address);
> 
> Anton
> 



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2014-12-03 23:11 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-19 21:29 [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad Anton Blanchard
2014-09-19 21:30 ` [PATCH 2/2] tpm/tpm_ibmvtpm: Remove unnecessary casts Anton Blanchard
2014-09-22 17:49   ` Ashley Lai
2014-09-24 16:18   ` [tpmdd-devel] " Jason Gunthorpe
2014-09-22 17:43 ` [PATCH 1/2] tpm/tpm_ibmvtpm: Fail in ibmvtpm_get_data if driver_data is bad Ashley Lai
2014-09-22 18:03   ` [tpmdd-devel] " Jason Gunthorpe
2014-09-22 17:45 ` Ashley Lai
2014-12-02 19:22 ` Ashley Lai
2014-12-02 19:46   ` Peter Hüwe
2014-12-02 20:09     ` Ashley Lai
2014-12-02 20:39 ` Peter Hüwe
2014-12-02 21:20   ` Anton Blanchard
2014-12-03 23:11     ` Hon Ching (Vicky) Lo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox