lkml.org 
[lkml]   [2006]   [Jul]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: 2.6.17-mm6
    On Mon, 03 Jul 2006 23:00:34 +1200 Reuben Farrelly wrote:

    > Allocate Port Service[0000:00:1c.0:pcie0]
    > Allocate Port Service[0000:00:1c.0:pcie0]
    > kobject_add failed for 0000:00:1c.0:pcie0 with -EEXIST, don't try to register
    > things with the same name in the same directory.

    These names are truncated - they should end with two hex digits:

    snprintf(device->bus_id, sizeof(device->bus_id), "%s:pcie%02x",
    pci_name(parent), get_descriptor_id(port_type, service_type));

    Names were truncated at 18 characters, but sizeof(device->bus_id) is 20
    currently, so these names should just fit there. I see that snprintf()
    was changed recently - maybe there is some off-by-one bug there?

    And if you want, you can blame me for such long names:

    commit 8c9ad508c8737ca46a4c55b1062d159b86f7cee2
    Author: Sergey Vlasov <vsu@altlinux.ru>
    Date: Mon Nov 14 20:30:50 2005 +0300

    [PATCH] PCIE: make bus_id for PCI Express devices unique

    The bus_id string must be unique for all devices of that bus in the
    system, not just for devices with the same parent - otherwise multiple
    symlinks with identical names appear in /sys/bus/pci_express/devices.

    Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
    index 467a4ce..e4e5f1e 100644
    --- a/drivers/pci/pcie/portdrv_core.c
    +++ b/drivers/pci/pcie/portdrv_core.c
    @@ -238,8 +238,8 @@ static void pcie_device_init(struct pci_
    device->driver = NULL;
    device->driver_data = NULL;
    device->release = release_pcie_device; /* callback to free pcie dev */
    - sprintf(&device->bus_id[0], "pcie%02x",
    - get_descriptor_id(port_type, service_type));
    + snprintf(device->bus_id, sizeof(device->bus_id), "%s:pcie%02x",
    + pci_name(parent), get_descriptor_id(port_type, service_type));
    device->parent = &parent->dev;
    }

    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2006-07-03 14:32    [W:0.020 / U:29.664 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site