lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 03 Oct 2008 16:21:43 +0800
From:	"Zhang, Yanmin" <yanmin_zhang@...ux.intel.com>
To:	Greg KH <greg@...ah.com>
Cc:	jbarnes@...tuousgeek.org, LKML <linux-kernel@...r.kernel.org>,
	czernecki@...il.com
Subject: Re: [PATCH] pci-e: ignore unknown capability and continue searching

Greg, Jesse,

Is there any issue with the patch? Tomasz need kernel to have the patch to work
on his machine.

Thanks,
Yanmin

On Tue, 2008-09-30 at 12:29 +0800, Zhang, Yanmin wrote:
> Subject: pci-e: ignore unknown capability and continue searching
> From: "Zhang, Yanmin" <yanmin_zhang@...ux.intel.com>
> 
> 
> Tomasz reported AER driver couldn't work on his machine. With the output
> of "lcpsi -vvv", I found the root port's extended capabilities are
>          Capabilities: [100] Unknown (11)
>          Capabilities: [150] Advanced Error Reporting
>          Capabilities: [190] Unknown (13)
> Such Unknown capability is not expected. During pci-e initialization,function
> get_port_device_capability just returns if it hits an unknown capability when
> searching the AER capability.
> 
> I worked out a patch against 2.6.27-rc7. When hitting an unkown capability,
> function get_port_device_capability continues the searching.
> 
> Tomasz tested it and the patch does work well.
> 
> Signed-off-by Zhang Yanmin <yanmin.zhang@...ux.intel.com>
> Reported-by Tomasz Czernecki <czernecki@...il.com>
> 
> ---
> 
> --- linux-2.6.27-rc7/drivers/pci/pcie/portdrv_core.c	2008-09-27 09:35:32.000000000 +0800
> +++ linux-2.6.27-rc7_aer/drivers/pci/pcie/portdrv_core.c	2008-09-27 10:10:39.000000000 +0800
> @@ -195,23 +195,25 @@ static int get_port_device_capability(st
>  	/* PME Capable - root port capability */
>  	if (((reg16 >> 4) & PORT_TYPE_MASK) == PCIE_RC_PORT)
>  		services |= PCIE_PORT_SERVICE_PME;
> -	
> +
>  	pos = PCI_CFG_SPACE_SIZE;
>  	while (pos) {
> -		pci_read_config_dword(dev, pos, &reg32);
> -		switch (reg32 & 0xffff) {
> +		if (pci_read_config_dword(dev, pos, &reg32))
> +			break;
> +
> +		/* some broken boards return ~0 */
> +		if (reg32 == 0xffffffff)
> +			break;
> +
> +		switch (PCI_EXT_CAP_ID(reg32)) {
>  		case PCI_EXT_CAP_ID_ERR:
>  			services |= PCIE_PORT_SERVICE_AER;
> -			pos = reg32 >> 20;
>  			break;
>  		case PCI_EXT_CAP_ID_VC:
>  			services |= PCIE_PORT_SERVICE_VC;
> -			pos = reg32 >> 20;
> -			break;
> -		default:
> -			pos = 0;
>  			break;
>  		}
> +		pos = PCI_EXT_CAP_NEXT(reg32);
>  	}
>  
>  	return services;
> 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ