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:   Tue, 30 Jan 2018 07:43:21 +1000
From:   Dave Airlie <airlied@...il.com>
To:     Sinan Kaya <okaya@...eaurora.org>
Cc:     Linux PCI <linux-pci@...r.kernel.org>, timur@...eaurora.org,
        linux-arm-msm <linux-arm-msm@...r.kernel.org>,
        linux-arm-kernel@...ts.infradead.org,
        David Airlie <airlied@...ux.ie>, Arnd Bergmann <arnd@...db.de>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        open list <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH V4 05/26] agp: nvidia: deprecate pci_get_bus_and_slot()

On 3 January 2018 at 22:44, Sinan Kaya <okaya@...eaurora.org> wrote:
> On 12/19/2017 12:37 AM, Sinan Kaya wrote:
>> pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as
>> where a PCI device is present. This restricts the device drivers to be
>> reused for other domain numbers.

So not a major problem, but it would be pretty much impossible for either
of these agp drivers to be used in any other domain ever.

What does this buy us, maybe just rename pci_get_bus_and_slot to
pci_get_domain0_bus_and_slot as a helper, or just pass the pdev in
and have it do the right thing always.

Dave.

>>
>> Getting ready to remove pci_get_bus_and_slot() function in favor of
>> pci_get_domain_bus_and_slot().
>>
>> Replace pci_get_bus_and_slot() with pci_get_domain_bus_and_slot()
>> and extract the domain number from struct pci_dev.
>>
>> Signed-off-by: Sinan Kaya <okaya@...eaurora.org>
>> ---
>>  drivers/char/agp/nvidia-agp.c | 12 +++++++++---
>>  drivers/char/agp/sworks-agp.c |  3 ++-
>>  2 files changed, 11 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c
>> index 828b344..623205b 100644
>> --- a/drivers/char/agp/nvidia-agp.c
>> +++ b/drivers/char/agp/nvidia-agp.c
>> @@ -340,11 +340,17 @@ static int agp_nvidia_probe(struct pci_dev *pdev,
>>       u8 cap_ptr;
>>
>>       nvidia_private.dev_1 =
>> -             pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(0, 1));
>> +             pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
>> +                                         (unsigned int)pdev->bus->number,
>> +                                         PCI_DEVFN(0, 1));
>>       nvidia_private.dev_2 =
>> -             pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(0, 2));
>> +             pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
>> +                                         (unsigned int)pdev->bus->number,
>> +                                         PCI_DEVFN(0, 2));
>>       nvidia_private.dev_3 =
>> -             pci_get_bus_and_slot((unsigned int)pdev->bus->number, PCI_DEVFN(30, 0));
>> +             pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
>> +                                         (unsigned int)pdev->bus->number,
>> +                                         PCI_DEVFN(30, 0));
>>
>>       if (!nvidia_private.dev_1 || !nvidia_private.dev_2 || !nvidia_private.dev_3) {
>>               printk(KERN_INFO PFX "Detected an NVIDIA nForce/nForce2 "
>> diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c
>> index 03be4ac..4dbdd3b 100644
>> --- a/drivers/char/agp/sworks-agp.c
>> +++ b/drivers/char/agp/sworks-agp.c
>> @@ -474,7 +474,8 @@ static int agp_serverworks_probe(struct pci_dev *pdev,
>>       }
>>
>>       /* Everything is on func 1 here so we are hardcoding function one */
>> -     bridge_dev = pci_get_bus_and_slot((unsigned int)pdev->bus->number,
>> +     bridge_dev = pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus),
>> +                     (unsigned int)pdev->bus->number,
>>                       PCI_DEVFN(0, 1));
>>       if (!bridge_dev) {
>>               dev_info(&pdev->dev, "can't find secondary device\n");
>>
>
> Any feedback here? most of the remaining patches have the ACK except these.
>
>
> --
> Sinan Kaya
> Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
> Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ