diff mbox series

PCI/VPD: Treat tag 0xff as indicator for missing VPD EPROM

Message ID 8de8c906-9284-93b9-bb44-4ffdc3470740@gmail.com (mailing list archive)
State Accepted
Delegated to: Bjorn Helgaas
Headers show
Series PCI/VPD: Treat tag 0xff as indicator for missing VPD EPROM | expand

Commit Message

Heiner Kallweit July 15, 2021, 8:41 a.m. UTC
First tag being read as 0xff indicates a missing VPD EPROM, same as 0x00.
The latter case we handle properly already, so let's handle 0x00 here too.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/pci/vpd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Bjorn Helgaas Aug. 2, 2021, 10:31 p.m. UTC | #1
On Thu, Jul 15, 2021 at 10:41:08AM +0200, Heiner Kallweit wrote:
> First tag being read as 0xff indicates a missing VPD EPROM, same as 0x00.
> The latter case we handle properly already, so let's handle 0x00 here too.
> 
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

Applied to pci/vpd for v5.15 with small tweak so the error message can
be shared with other errors, thanks!

> ---
>  drivers/pci/vpd.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/vpd.c b/drivers/pci/vpd.c
> index 26bf7c877..6a32d938d 100644
> --- a/drivers/pci/vpd.c
> +++ b/drivers/pci/vpd.c
> @@ -78,8 +78,8 @@ static size_t pci_vpd_size(struct pci_dev *dev, size_t old_size)
>  	while (off < old_size && pci_read_vpd(dev, off, 1, header) == 1) {
>  		unsigned char tag;
>  
> -		if (!header[0] && !off) {
> -			pci_info(dev, "Invalid VPD tag 00, assume missing optional VPD EPROM\n");
> +		if ((!header[0] || header[0] == 0xff) && !off) {
> +			pci_info(dev, "Invalid VPD tag 00/FF, assume missing optional VPD EPROM\n");
>  			return 0;
>  		}
>  
> -- 
> 2.32.0
>
diff mbox series

Patch

diff --git a/drivers/pci/vpd.c b/drivers/pci/vpd.c
index 26bf7c877..6a32d938d 100644
--- a/drivers/pci/vpd.c
+++ b/drivers/pci/vpd.c
@@ -78,8 +78,8 @@  static size_t pci_vpd_size(struct pci_dev *dev, size_t old_size)
 	while (off < old_size && pci_read_vpd(dev, off, 1, header) == 1) {
 		unsigned char tag;
 
-		if (!header[0] && !off) {
-			pci_info(dev, "Invalid VPD tag 00, assume missing optional VPD EPROM\n");
+		if ((!header[0] || header[0] == 0xff) && !off) {
+			pci_info(dev, "Invalid VPD tag 00/FF, assume missing optional VPD EPROM\n");
 			return 0;
 		}