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] [day] [month] [year] [list]
Message-ID: <ea68d96d-a77e-aa68-0850-31bc232d4946@loongson.cn>
Date:   Fri, 4 Nov 2022 18:43:33 +0800
From:   Liu Peibao <liupeibao@...ngson.cn>
To:     Christophe JAILLET <christophe.jaillet@...adoo.fr>,
        Bjorn Helgaas <bhelgaas@...gle.com>,
        Rob Herring <robh+dt@...nel.org>,
        Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
        Lorenzo Pieralisi <lpieralisi@...nel.org>,
        Krzysztof Wilczyński <kw@...ux.com>,
        Jiaxun Yang <jiaxun.yang@...goat.com>
Cc:     Huacai Chen <chenhuacai@...ngson.cn>,
        Jianmin Lv <lvjianmin@...ngson.cn>,
        Yinbo Zhu <zhuyinbo@...ngson.cn>, linux-pci@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 1/1] PCI: loongson: skip scanning unavailable child
 device

On 11/4/22 4:43 PM, Christophe JAILLET wrote:
> Le 04/11/2022 à 08:27, Liu Peibao a écrit :
>>   +#ifdef CONFIG_OF
>> +    /* Don't access devices in masklist */
>> +    if (pci_is_root_bus(bus)) {
>> +        struct list_head *list;
>> +        struct mask_entry *entry;
>> +
>> +        list_for_each(list, &priv->masklist) {
>> +            entry = list_entry(list, struct mask_entry, entry);
> 
> Hi,
> 
> list_for_each_entry() is slighly less verbose.
> 

OK, I will update the patch with list_for_each_entry().

>> +            if (devfn == entry->devfn)
>> +                return NULL;
>> +        }
>> +    }
>> +#endif
>> +
>>       /* CFG0 can only access standard space */
>>       if (where < PCI_CFG_SPACE_SIZE && priv->cfg0_base)
>>           return cfg0_map(priv, bus, devfn, where);
>> @@ -206,6 +230,36 @@ static void __iomem *pci_loongson_map_bus(struct pci_bus *bus,
>>   }
>>     #ifdef CONFIG_OF
>> +static int setup_masklist(struct loongson_pci *priv)
>> +{
>> +    struct device *dev = &priv->pdev->dev;
>> +    struct device_node *dn, *parent = dev->of_node;
>> +    struct mask_entry *entry;
>> +    int devfn;
>> +
>> +    INIT_LIST_HEAD(&priv->masklist);
>> +
>> +    for_each_child_of_node(parent, dn) {
>> +        /*
>> +         * if device is not available, add this to masklist
>> +         * to avoid scanning it.
>> +         */
>> +        if (!of_device_is_available(dn)) {
>> +            devfn = of_pci_get_devfn(dn);
>> +            if (devfn < 0)
>> +                continue;
>> +
>> +            entry = devm_kzalloc(dev, sizeof(entry), GFP_KERNEL);
> 
> sizeof(*entry)?
>

That really is a bug, thanks!

BR,
Peibao
 
>> +            if (!entry)
>> +                return -ENOMEM;
>> +

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ