• J
    scsi: sd: fix entropy gathering for most rotational disks · 7b1c7959
    James Bottomley 提交于
    commit e4a056987c86f402f1286e050b1dee3f4ce7c7eb upstream.
    
    The problem is that the default for MQ is not to gather entropy, whereas
    the default for the legacy queue was always to gather it.  The original
    attempt to fix entropy gathering for rotational disks under MQ added an
    else branch in sd_read_block_characteristics().  Unfortunately, the entire
    check isn't reached if the device has no characteristics VPD page.  Since
    this page was only introduced in SBC-3 and its optional anyway, most less
    expensive rotational disks don't have one, meaning they all stopped
    gathering entropy when we made MQ the default.  In a wholly unrelated
    change, openssl and openssh won't function until the random number
    generator is initialised, meaning lots of people have been seeing large
    delays before they could log into systems with default MQ kernels due to
    this lack of entropy, because it now can take tens of minutes to initialise
    the kernel random number generator.
    
    The fix is to set the non-rotational and add-randomness flags
    unconditionally early on in the disk initialization path, so they can be
    reset only if the device actually reports being non-rotational via the VPD
    page.
    Reported-by: NMikael Pettersson <mikpelinux@gmail.com>
    Fixes: 83e32a59 ("scsi: sd: Contribute to randomness when running rotational device")
    Cc: stable@vger.kernel.org
    Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
    Reviewed-by: NJens Axboe <axboe@kernel.dk>
    Reviewed-by: NXuewei Zhang <xueweiz@google.com>
    Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    7b1c7959
sd.c 99.0 KB