ata fixes for 6.10-rc4

- Fix a bug where the SCSI Removable Media Bit (RMB) was incorrectly set
    for hot-plug capable (and eSATA) ports. The RMB bit means that the
    media is removable (e.g. floppy or CD-ROM), not that the device server
    is removable. If the RMB bit is set, SCSI will set the removable media
    sysfs attribute.
    If the removable media sysfs attribute is set on a device, GNOME/udisks
    will automatically mount the device on boot.
    We only want to set the SCSI RMB bit (and thus the removable media
    sysfs attribute) for devices where the ATA removable media device bit
    is set.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQRN+ES/c4tHlMch3DzJZDGjmcZNcgUCZm6u6AAKCRDJZDGjmcZN
 cuyRAP42njwfV/t9IK6cAqUG15v4keX2AN9PDHvZNhn0QeJ7cwEA9bXu7OPjGsFk
 1J6jWbxmgSNk0RC9HNXQ4wFlFz+JJgk=
 =4VB1
 -----END PGP SIGNATURE-----

Merge tag 'ata-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux

Pull ata fix from Niklas Cassel:
 "Fix a bug where the SCSI Removable Media Bit (RMB) was incorrectly set
  for hot-plug capable (and eSATA) ports.

  The RMB bit means that the media is removable (e.g. floppy or CD-ROM),
  not that the device server is removable. If the RMB bit is set, SCSI
  will set the removable media sysfs attribute.

  If the removable media sysfs attribute is set on a device,
  GNOME/udisks will automatically mount the device on boot.

  We only want to set the SCSI RMB bit (and thus the removable media
  sysfs attribute) for devices where the ATA removable media device bit
  is set"

* tag 'ata-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux:
  ata: libata-scsi: Set the RMB bit only for removable media devices
This commit is contained in:
Linus Torvalds 2024-06-16 10:20:18 -07:00
commit e8b0264d6f

View File

@ -1831,11 +1831,11 @@ static unsigned int ata_scsiop_inq_std(struct ata_scsi_args *args, u8 *rbuf)
2
};
/* set scsi removable (RMB) bit per ata bit, or if the
* AHCI port says it's external (Hotplug-capable, eSATA).
/*
* Set the SCSI Removable Media Bit (RMB) if the ATA removable media
* device bit (obsolete since ATA-8 ACS) is set.
*/
if (ata_id_removable(args->id) ||
(args->dev->link->ap->pflags & ATA_PFLAG_EXTERNAL))
if (ata_id_removable(args->id))
hdr[1] |= (1 << 7);
if (args->dev->class == ATA_DEV_ZAC) {