• Stefan Richter's avatar
    firewire: core: fix Model_ID in modalias · 5ae73518
    Stefan Richter authored
    The modalias string of devices that represent units on a FireWire node
    did not show Module_ID entries within unit directories.  This was
    because firewire-core searched only the root directory of the
    configuration ROM for a Model_ID entry.
    
    We now search first the root directory, then the unit directory.  IOW
    honor a unit directory's Model_ID if present, otherwise fall back to the
    root directory's model ID (if present).
    
    Furthermore, apply the same change to Vendor_ID.  This had the same
    issue but it was less apparent because most devices provide Vendor_ID
    only in the root directory.
    
    And finally, also use this strategy for the remaining two IDs in the
    modalias, Specifier_ID and Version.  It does not actually make sense to
    look for them elsewhere than in the unit directory because they are
    mandatory there.  However, a uniform search order simplifies the
    implementation and has no adverse affect in practice.
    
    Side notes:
      - The older counterpart of this, nodemgr.c of ieee1394, looked for
        Vendor_ID first in the root directory, then in the unit directory,
        and for Model_ID only in the unit directory.
      - There is a single mainline driver which requires Vendor_ID and
        Model_ID --- the firedtv driver.  This one worked because FireDTVs
        provide Vendor_ID in the root directory and Model_ID identically in
        root directory and unit directory.
      - Apart from firedtv, there are currently no drivers known to me
        (including userspace drivers) that look at the Vendor_ID or Model_ID
        of the modalias.
    Reported-by: default avatarMaciej Żenczykowski <zenczykowski@gmail.com>
    Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    5ae73518
core-device.c 33.2 KB