Thanks, Bryce. About the bridge.pci pointer, as it stands the function will not go pass that pointer checking and always return with ENODEV. You see priv is a local variable (structure) and only its first member "base", which is a pci_device structure, gets filled in with valid data from caller by type casting (from pci_device* to pci_device_priv). The union member "bridge", which is a pointer, is not part of the pci_device structure. As such, the value will be null every time the function is called. So without fixing this pointer checking thing, the code below it will never get executed.
-----Original Message----- From: boun...@canonical.com [mailto:boun...@canonical.com] On Behalf Of Bryce Harrington Sent: Wednesday, December 01, 2010 6:57 PM To: Chihpin Wu Subject: [Bug 681207] Re: PCI device header type doesn't include bit7 Chih-Pin Wu thank you, I've incorporated your change into Ubuntu. I've also forwarded the patch upstream. I left out the removal of the bridge.pci since it appears this was deliberately added; instead I've emailed Jesse Barnes for clarification as to why that was added. I may follow up on this bug report later depending on his advice. -- You received this bug notification because you are a direct subscriber of the bug. https://bugs.launchpad.net/bugs/681207 Title: PCI device header type doesn't include bit7 Status in "libpciaccess" package in Ubuntu: Fix Released Bug description: Within the function pci_device_get_bridge_buses() in file common_bridge.c, "priiv->header_type" is used to detect the bridge type without bit 7 (indicating multi-function or not) stripped. As a result the detection would always fail for multi-function card. I see this error in both versions 0.10.6 and 0.12.0. Beside this problem, version 0.12.0 has a pointer check "priv->bridge.pci" upon fuction entrance and just return "ENODEV" if it is null. The problem is that the pointer never got initialized in the first place and will always be null. This checking should be removed. To unsubscribe from this bug, go to: https://bugs.launchpad.net/ubuntu/+source/libpciaccess/+bug/681207/+subs cribe -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/681207 Title: PCI device header type doesn't include bit7 -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs