• Thomas Gleixner's avatar
    drivers: serial: apbuart: Handle OF failures gracefully · 35c64e5d
    Thomas Gleixner authored
    The apbuart driver depends on OF and relies on everything being
    available. So if it's probed on a platform which has OF support, but
    no device tree is available it crashes. Triggered by the upcoming x86
    OF support in randconfig testing.
    
    Further it's inconsistent vs. the probing and exiting from the
    of_match loop.
    
    Make it robust and consistent:
    
     - check the availablility of OF nodes before dereferencing
     - return -ENODEV when the device tree lookup fails
     - return -ENODEV when no uart port configuration is found
     - return -ENODEV when invalid uart port configuration is found
    
    Remove the enum_done check while at it. Driver init functions are only
    called once. Remove the pointless vendor and device queries as well.
    
    Reported-by: Ingo Molnar <mingo.elte.hu>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Grant Likely <grant.likely@secretlab.ca>
    Cc: Kristoffer Glembo <kristoffer@gaisler.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    35c64e5d
apbuart.c 16 KB