Re: [PATCH 1/2] Introduce scsi_get_vpd_buf()

2017-08-28 Thread Christoph Hellwig
On Fri, Aug 25, 2017 at 01:36:00PM -0700, Bart Van Assche wrote: > > if (pg80_supported) { > -retry_pg80: > - vpd_buf = kmalloc(vpd_len, GFP_KERNEL); > - if (!vpd_buf) > - return; > - > - result = scsi_vpd_inquiry(sdev, vpd_buf, 0x80,

Re: [PATCH 2/2] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Christoph Hellwig
This looks generally good. But I wonder if there is a way to factor the assining/clearing sequence into little helpers instead of duplicating it?

[PATCH] qlogicpti: fixup qlogicpti_reset() definition

2017-08-28 Thread Hannes Reinecke
A merge error crept in when formatting commit af167bc ("scsi: qlogicpti: move bus reset to host reset") Fixes: af167bc ("scsi: qlogicpti: move bus reset to host reset") Signed-off-by: Hannes Reinecke --- drivers/scsi/qlogicpti.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git

Re: [PATCH v3 04/20] lpfc: Fix oops when NVME Target is discovered in a nonNVME environment

2017-08-28 Thread Johannes Thumshirn
Reviewed-by: Johannes Thumshirn -- Johannes Thumshirn Storage jthumsh...@suse.de+49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Ke

Re: [PATCH v3 07/20] lpfc: Fix handling of FCP and NVME FC4 types in Pt2Pt topology

2017-08-28 Thread Johannes Thumshirn
Reviewed-by: Johannes Thumshirn -- Johannes Thumshirn Storage jthumsh...@suse.de+49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Ke

Re: [PATCH v3 12/20] lpfc: Limit amount of work processed in IRQ

2017-08-28 Thread Johannes Thumshirn
Reviewed-by: Johannes Thumshirn -- Johannes Thumshirn Storage jthumsh...@suse.de+49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Ke

Re: [PATCH v3 11/20] lpfc: Correct issues with FAWWN and FDISCs

2017-08-28 Thread Johannes Thumshirn
Reviewed-by: Johannes Thumshirn -- Johannes Thumshirn Storage jthumsh...@suse.de+49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Ke

Re: [PATCH v3 13/20] lpfc: Fix MRQ > 1 context list handling

2017-08-28 Thread Johannes Thumshirn
Reviewed-by: Johannes Thumshirn -- Johannes Thumshirn Storage jthumsh...@suse.de+49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Ke

Re: [PATCH v3 15/20] lpfc: Fix nvme target failure after 2nd adapter reset

2017-08-28 Thread Johannes Thumshirn
Reviewed-by: Johannes Thumshirn -- Johannes Thumshirn Storage jthumsh...@suse.de+49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Ke

[PATCH] scsi: ufs: Make use of UFS_BIT macro wherever possible

2017-08-28 Thread Alim Akhtar
This entire file uses UFS_BIT macro for bits definition, expect for few places. This patch convert those defines to use UFS_BIT macro to be aligned with reset of the file. Signed-off-by: Alim Akhtar --- drivers/scsi/ufs/ufshci.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff -

[PATCH] lpfc: Don't return internal MBXERR_ERROR code from probe function

2017-08-28 Thread Stefano Brivio
Internal error codes happen to be positive, thus the PCI driver core won't treat them as failure, but we do. This would cause a crash later on as lpfc_pci_remove_one() is called (e.g. as shutdown function). Fixes: 6d368e532168 ("[SCSI] lpfc 8.3.24: Add resource extent support") Signed-off-by: Stef

Re: [PATCH] scsi: ufs: Make use of UFS_BIT macro wherever possible

2017-08-28 Thread Bart Van Assche
On Mon, 2017-08-28 at 17:49 +0530, Alim Akhtar wrote: > This entire file uses UFS_BIT macro for bits definition, expect for few > places. This patch convert those defines to use UFS_BIT macro to be aligned > with reset of the file. This is the definition of the UFS_BIT() macro I found in drivers/s

ALPSS: reminder and submission deadline

2017-08-28 Thread Christoph Hellwig
Just one more month to go until the Alpine Linux Persistence and Storage Summit (ALPSS) will be held from September 27-29 at the Lizumerhuette in Austria! If you want to submit a 30-minute talk please do so until Sep 1st, as we plan to finalize our schedule. BOFs and team meetings will be schedul

Re: linux-next: manual merge of the scsi tree with the staging tree

2017-08-28 Thread James Bottomley
On Mon, 2017-08-28 at 18:44 +0200, g...@kroah.com wrote: > On Mon, Aug 28, 2017 at 04:36:06PM +, Bart Van Assche wrote: > > > > On Mon, 2017-08-28 at 18:05 +0200, g...@kroah.com wrote: > > > > > > On Mon, Aug 28, 2017 at 03:41:28PM +, Bart Van Assche wrote: > > > > > > > > * Most SCSI dr

RE: [PATCH 2/4] hpsa: remove the smp_handler stub

2017-08-28 Thread Don Brace
From: linux-scsi-ow...@vger.kernel.org [linux-scsi-ow...@vger.kernel.org] on behalf of Christoph Hellwig [h...@lst.de] Sent: Friday, August 25, 2017 8:37 AM To: Chaitra Basappa; linux-scsi@vger.kernel.org Cc: Bart Van Assche Subject: [PATCH 2/4] hpsa: remov

Re: linux-next: manual merge of the scsi tree with the staging tree

2017-08-28 Thread g...@kroah.com
On Mon, Aug 28, 2017 at 06:51:59PM +0100, James Bottomley wrote: > On Mon, 2017-08-28 at 18:44 +0200, g...@kroah.com wrote: > > On Mon, Aug 28, 2017 at 04:36:06PM +, Bart Van Assche wrote: > > > > > > On Mon, 2017-08-28 at 18:05 +0200, g...@kroah.com wrote: > > > > > > > > On Mon, Aug 28, 201

[PATCH v3 0/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Hello Martin, The conclusion of a recent discussion about the handling of SCSI device VPD data is that the code should be reworked such that that data is freed through kfree_rcu() instead of kfree(). The three patches in this series realize this and also simplify the VPD code. Please consider thes

[PATCH v3 2/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Introduce struct scsi_vpd for the VPD page length, data and the RCU head that will be used to free the VPD data. Use kfree_rcu() instead of kfree() to free VPD data. Move the VPD buffer pointer check inside the RCU read lock in the sysfs code. Only annotate pointers that are shared across threads w

[PATCH v3 1/3] Rework the code for caching Vital Product Data (VPD)

2017-08-28 Thread Bart Van Assche
Introduce the scsi_get_vpd_buf() and scsi_update_vpd_page() functions. The only functional change in this patch is that if updating page 0x80 fails that it is attempted to update page 0x83. Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Shan

[PATCH v3 1/3] Rework the code for caching Vital Product Data (VPD)

2017-08-28 Thread Bart Van Assche
Introduce the scsi_get_vpd_buf() and scsi_update_vpd_page() functions. The only functional change in this patch is that if updating page 0x80 fails that it is attempted to update page 0x83. Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Shan

[PATCH v3 3/3] scsi_transport_sas: Fix error handling in sas_smp_request()

2017-08-28 Thread Bart Van Assche
sas_function_template.smp_handler implementations either return 0 or a Unix error code. Convert that error code into a SCSI result. This patch is what I came up with after having analyzed the following sparse warnings: drivers/scsi/scsi_transport_sas.c:187:21: warning: incorrect type in assignment

[PATCH v3 2/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Introduce struct scsi_vpd for the VPD page length, data and the RCU head that will be used to free the VPD data. Use kfree_rcu() instead of kfree() to free VPD data. Move the VPD buffer pointer check inside the RCU read lock in the sysfs code. Only annotate pointers that are shared across threads w

[PATCH v3 0/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Hello Martin, The conclusion of a recent discussion about the handling of SCSI device VPD data is that the code should be reworked such that that data is freed through kfree_rcu() instead of kfree(). The three patches in this series realize this and also simplify the VPD code. Please consider thes

[PATCH v3 3/3] scsi_transport_sas: Fix error handling in sas_smp_request()

2017-08-28 Thread Bart Van Assche
sas_function_template.smp_handler implementations either return 0 or a Unix error code. Convert that error code into a SCSI result. This patch is what I came up with after having analyzed the following sparse warnings: drivers/scsi/scsi_transport_sas.c:187:21: warning: incorrect type in assignment

Re: [PATCH v3 0/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
On Mon, 2017-08-28 at 13:41 -0700, Bart Van Assche wrote: > The conclusion of a recent discussion about the handling of SCSI device VPD > [ ... ] Please ignore this patch series - my working directory was not clean when I ran the command to post these patches. Bart.

[PATCH v3 0/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Hello Martin, The conclusion of a recent discussion about the handling of SCSI device VPD data is that the code should be reworked such that that data is freed through kfree_rcu() instead of kfree(). The three patches in this series realize this and also simplify the VPD code. Please consider thes

[PATCH v3 2/3] Rework the code for caching Vital Product Data (VPD)

2017-08-28 Thread Bart Van Assche
Introduce the scsi_get_vpd_buf() and scsi_update_vpd_page() functions. The only functional change in this patch is that if updating page 0x80 fails that it is attempted to update page 0x83. Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Shan

[PATCH v3 1/3] rcu: Introduce rcu_swap_protected()

2017-08-28 Thread Bart Van Assche
A common pattern in RCU code is to assign a new value to an RCU pointer after having read and stored the old value. Introduce a macro for this pattern. Signed-off-by: Bart Van Assche Cc: Paul E. McKenney Cc: Ingo Molnar Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Sha

[PATCH v3 3/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Introduce struct scsi_vpd for the VPD page length, data and the RCU head that will be used to free the VPD data. Use kfree_rcu() instead of kfree() to free VPD data. Move the VPD buffer pointer check inside the RCU read lock in the sysfs code. Only annotate pointers that are shared across threads w

[PATCH v3 0/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Hello Martin, The conclusion of a recent discussion about the handling of SCSI device VPD data is that the code should be reworked such that that data is freed through kfree_rcu() instead of kfree(). The three patches in this series realize this and also simplify the VPD code. Please consider thes

[PATCH v3 0/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Hello Martin, The conclusion of a recent discussion about the handling of SCSI device VPD data is that the code should be reworked such that that data is freed through kfree_rcu() instead of kfree(). The three patches in this series realize this and also simplify the VPD code. Please consider thes

[PATCH v3 1/3] rcu: Introduce rcu_swap_protected()

2017-08-28 Thread Bart Van Assche
A common pattern in RCU code is to assign a new value to an RCU pointer after having read and stored the old value. Introduce a macro for this pattern. Signed-off-by: Bart Van Assche Cc: Paul E. McKenney Cc: Ingo Molnar Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Sha

[PATCH v3 1/3] rcu: Introduce rcu_swap_protected()

2017-08-28 Thread Bart Van Assche
A common pattern in RCU code is to assign a new value to an RCU pointer after having read and stored the old value. Introduce a macro for this pattern. Signed-off-by: Bart Van Assche Cc: Paul E. McKenney Cc: Ingo Molnar Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Sha

[PATCH v3 3/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Introduce struct scsi_vpd for the VPD page length, data and the RCU head that will be used to free the VPD data. Use kfree_rcu() instead of kfree() to free VPD data. Move the VPD buffer pointer check inside the RCU read lock in the sysfs code. Only annotate pointers that are shared across threads w

[PATCH v3 2/3] Rework the code for caching Vital Product Data (VPD)

2017-08-28 Thread Bart Van Assche
Introduce the scsi_get_vpd_buf() and scsi_update_vpd_page() functions. The only functional change in this patch is that if updating page 0x80 fails that it is attempted to update page 0x83. Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Shan

[PATCH v3 3/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Introduce struct scsi_vpd for the VPD page length, data and the RCU head that will be used to free the VPD data. Use kfree_rcu() instead of kfree() to free VPD data. Move the VPD buffer pointer check inside the RCU read lock in the sysfs code. Only annotate pointers that are shared across threads w

[PATCH v3 2/3] Rework the code for caching Vital Product Data (VPD)

2017-08-28 Thread Bart Van Assche
Introduce the scsi_get_vpd_buf() and scsi_update_vpd_page() functions. The only functional change in this patch is that if updating page 0x80 fails that it is attempted to update page 0x83. Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Shan

[PATCH v3 1/3] rcu: Introduce rcu_swap_protected()

2017-08-28 Thread Bart Van Assche
A common pattern in RCU code is to assign a new value to an RCU pointer after having read and stored the old value. Introduce a macro for this pattern. Signed-off-by: Bart Van Assche Cc: Paul E. McKenney Cc: Ingo Molnar Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Sha

Re: [PATCH v3 0/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
On Mon, 2017-08-28 at 13:44 -0700, Bart Van Assche wrote: > The conclusion of a recent discussion about the handling of SCSI device VPD > [ ... ] Please ignore this patch series too - same problem as last time. Bart.

[PATCH v3 0/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Hello Martin, The conclusion of a recent discussion about the handling of SCSI device VPD data is that the code should be reworked such that that data is freed through kfree_rcu() instead of kfree(). The three patches in this series realize this and also simplify the VPD code. Please consider thes

[PATCH v3 0/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Hello Martin, The conclusion of a recent discussion about the handling of SCSI device VPD data is that the code should be reworked such that that data is freed through kfree_rcu() instead of kfree(). The three patches in this series realize this and also simplify the VPD code. Please consider thes

[PATCH v3 1/3] rcu: Introduce rcu_swap_protected()

2017-08-28 Thread Bart Van Assche
A common pattern in RCU code is to assign a new value to an RCU pointer after having read and stored the old value. Introduce a macro for this pattern. Signed-off-by: Bart Van Assche Cc: Paul E. McKenney Cc: Ingo Molnar Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Sha

[PATCH v3 3/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Introduce struct scsi_vpd for the VPD page length, data and the RCU head that will be used to free the VPD data. Use kfree_rcu() instead of kfree() to free VPD data. Move the VPD buffer pointer check inside the RCU read lock in the sysfs code. Only annotate pointers that are shared across threads w

[PATCH v3 2/3] Rework the code for caching Vital Product Data (VPD)

2017-08-28 Thread Bart Van Assche
Introduce the scsi_get_vpd_buf() and scsi_update_vpd_page() functions. The only functional change in this patch is that if updating page 0x80 fails that it is attempted to update page 0x83. Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Shan

[PATCH v3 2/3] Rework the code for caching Vital Product Data (VPD)

2017-08-28 Thread Bart Van Assche
Introduce the scsi_get_vpd_buf() and scsi_update_vpd_page() functions. The only functional change in this patch is that if updating page 0x80 fails that it is attempted to update page 0x83. Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Shan

Re: [PATCH v3 0/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
On Mon, 2017-08-28 at 13:45 -0700, Bart Van Assche wrote: > The conclusion of a recent discussion about the handling of SCSI device VPD > [ ... ] Please ignore this series too. I think I finally found and fixed the bug in the script I use to post patches ... Bart.

[PATCH v3 3/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Bart Van Assche
Introduce struct scsi_vpd for the VPD page length, data and the RCU head that will be used to free the VPD data. Use kfree_rcu() instead of kfree() to free VPD data. Move the VPD buffer pointer check inside the RCU read lock in the sysfs code. Only annotate pointers that are shared across threads w

Re: [PATCH v3 1/3] rcu: Introduce rcu_swap_protected()

2017-08-28 Thread Paul E. McKenney
On Mon, Aug 28, 2017 at 01:46:13PM -0700, Bart Van Assche wrote: > A common pattern in RCU code is to assign a new value to an RCU > pointer after having read and stored the old value. Introduce a > macro for this pattern. > > Signed-off-by: Bart Van Assche > Cc: Paul E. McKenney > Cc: Ingo Moln

[PATCH v2 17/30] scsi: Define usercopy region in scsi_sense_cache slab cache

2017-08-28 Thread Kees Cook
From: David Windsor SCSI sense buffers, stored in struct scsi_cmnd.sense and therefore contained in the scsi_sense_cache slab cache, need to be copied to/from userspace. cache object allocation: drivers/scsi/scsi_lib.c: scsi_select_sense_cache(...): return ... ? scsi_sens

Re: [PATCH v3 1/3] rcu: Introduce rcu_swap_protected()

2017-08-28 Thread Bart Van Assche
On Mon, 2017-08-28 at 14:26 -0700, Paul E. McKenney wrote: > On Mon, Aug 28, 2017 at 01:46:13PM -0700, Bart Van Assche wrote: > > A common pattern in RCU code is to assign a new value to an RCU > > pointer after having read and stored the old value. Introduce a > > macro for this pattern. > > > >

Re: [PATCH v2 17/30] scsi: Define usercopy region in scsi_sense_cache slab cache

2017-08-28 Thread Bart Van Assche
On Mon, 2017-08-28 at 14:34 -0700, Kees Cook wrote: > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index f6097b89d5d3..f1c6bd56dd5b 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -77,14 +77,15 @@ int scsi_init_sense_cache(struct Scsi_Host *shost) >

Re: [PATCH v2 17/30] scsi: Define usercopy region in scsi_sense_cache slab cache

2017-08-28 Thread Kees Cook
On Mon, Aug 28, 2017 at 2:42 PM, Bart Van Assche wrote: > On Mon, 2017-08-28 at 14:34 -0700, Kees Cook wrote: >> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c >> index f6097b89d5d3..f1c6bd56dd5b 100644 >> --- a/drivers/scsi/scsi_lib.c >> +++ b/drivers/scsi/scsi_lib.c >> @@ -77,14

Re: [PATCH v3 1/3] rcu: Introduce rcu_swap_protected()

2017-08-28 Thread Paul E. McKenney
On Mon, Aug 28, 2017 at 09:39:18PM +, Bart Van Assche wrote: > On Mon, 2017-08-28 at 14:26 -0700, Paul E. McKenney wrote: > > On Mon, Aug 28, 2017 at 01:46:13PM -0700, Bart Van Assche wrote: > > > A common pattern in RCU code is to assign a new value to an RCU > > > pointer after having read an

[PATCH] storvsc: fix memory leak on ring buffer busy

2017-08-28 Thread Long Li
From: Long Li When storvsc is sending I/O to Hyper-v, it may allocate a bigger buffer descriptor for large data payload that can't fit into a pre-allocated buffer descriptor. This bigger buffer is freed on return path. If I/O request to Hyper-v fails due to ring buffer busy, the storvsc allocate

Re: [PATCH] scsi: qedi: off by one in qedi_get_cmd_from_tid()

2017-08-28 Thread Martin K. Petersen
Dan, > The > here should be >= or we end up reading one element beyond the > end of the qedi->itt_map[] array. The qedi->itt_map[] array is > allocated in qedi_alloc_itt(). Applied to 4.13/scsi-fixes. Thank you! -- Martin K. Petersen Oracle Linux Engineering

Re: [PATCH] qlogicpti: fixup qlogicpti_reset() definition

2017-08-28 Thread Martin K. Petersen
Hannes, > A merge error crept in when formatting commit af167bc ("scsi: > qlogicpti: move bus reset to host reset") Applied to 4.14/scsi-queue. Thank you! -- Martin K. Petersen Oracle Linux Engineering

Re: [PATCH v3 1/3] Rework the code for caching Vital Product Data (VPD)

2017-08-28 Thread Hannes Reinecke
On 08/28/2017 10:41 PM, Bart Van Assche wrote: > Introduce the scsi_get_vpd_buf() and scsi_update_vpd_page() > functions. The only functional change in this patch is that if > updating page 0x80 fails that it is attempted to update page 0x83. > > Signed-off-by: Bart Van Assche > Cc: Christoph Hel

Re: [PATCH v3 2/3] Rework handling of scsi_device.vpd_pg8[03]

2017-08-28 Thread Hannes Reinecke
On 08/28/2017 10:41 PM, Bart Van Assche wrote: > Introduce struct scsi_vpd for the VPD page length, data and the > RCU head that will be used to free the VPD data. Use kfree_rcu() > instead of kfree() to free VPD data. Move the VPD buffer pointer > check inside the RCU read lock in the sysfs code.