• Grant Likely's avatar
    spi: make spi_board_info.modalias a char array · 102eb975
    Grant Likely authored
    Currently, 'modalias' in the spi_device structure is a 'const char *'.
    The spi_new_device() function fills in the modalias value from a passed in
    spi_board_info data block.  Since it is a pointer copy, the new spi_device
    remains dependent on the spi_board_info structure after the new spi_device
    is registered (no other fields in spi_device directly depend on the
    spi_board_info structure; all of the other data is copied).
    
    This causes a problem when dynamically propulating the list of attached
    SPI devices.  For example, in arch/powerpc, the list of SPI devices can be
    populated from data in the device tree.  With the current code, the device
    tree adapter must kmalloc() a new spi_board_info structure for each new
    SPI device it finds in the device tree, and there is no simple mechanism
    in place for keeping track of these allocations.
    
    This patch changes modalias from a 'const char *' to a fixed char array.
    By copying the modalias string instead of referencing it, the dependency
    on the spi_board_info structure is eliminated and an outside caller does
    not need to maintain a separate spi_board_info allocation for each device.
    
    If searched through the code to the best of my ability for any references
    to modalias which may be affected by this change and haven't found
    anything.  It has been tested with the lite5200b platform in arch/powerpc.
    
    [dbrownell@users.sourceforge.net: cope with linux-next changes: KOBJ_NAME_LEN obliterated, etc]
    Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    102eb975
spi.c 18.6 KB