• Tejun Heo's avatar
    libata: fix PMP initialization · 32f4683d
    Tejun Heo authored
    commit 4f7c2874 upstream.
    
    Commit 842faa6c fixed error handling
    during attach by not committing detected device class to dev->class
    while attaching a new device.  However, this change missed the PMP
    class check in the configuration loop causing a new PMP device to go
    through ata_dev_configure() as if it were an ATA or ATAPI device.
    
    As PMP device doesn't have a regular IDENTIFY data, this makes
    ata_dev_configure() tries to configure a PMP device using an invalid
    data.  For the most part, it wasn't too harmful and went unnoticed but
    this ends up clearing dev->flags which may have ATA_DFLAG_AN set by
    sata_pmp_attach().  This means that SATA_PMP_FEAT_NOTIFY ends up being
    disabled on PMPs and on PMPs which honor the flag breaks hotplug
    support.
    
    This problem was discovered and reported by Ethan Hsiao.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reported-by: default avatarEthan Hsiao <ethanhsiao@jmicron.com>
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    32f4683d
libata-eh.c 91 KB