lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <4AD237E3.6000206@gmail.com>
Date:	Sun, 11 Oct 2009 13:54:11 -0600
From:	Robert Hancock <hancockrwd@...il.com>
To:	linux-kernel <linux-kernel@...r.kernel.org>,
	linux-scsi <linux-scsi@...r.kernel.org>
CC:	stable@...nel.org
Subject: [PATCH] scsi: properly export media change notification capability
 in block device flags

Due to some oversight, the SCSI capability for reporting media change
notifications was never actually translated into setting the appropriate
GENHD_FL_MEDIA_CHANGE_NOTIFY flag. HAL uses this flag to detect whether the
block device supports change notifications and so it never actually got
detected. Set the flag when appropriate in sd and sr.

Signed-off-by: Robert Hancock <hancockrwd@...il.com>

---

Gaah, am I disappointed in finding this one. Apparently people went to the
trouble of adding ATAPI AN support, and adding the appropriate flags to indicate
to userspace that it was supported, but nobody ever tested to make sure that
the support worked all the way through to actually make HAL stop polling
optical drives that support AN, which to my dismay, it doesn't. In fact even
with this patch it still doesn't seem to, but that's presumably some HAL bug.
HAL does now report that storage.removable.support_async_notification = true,
however.

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 8dd96dc..c1f474e 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -2012,6 +2012,8 @@ static void sd_probe_async(void *data, async_cookie_t cookie)
 	gd->flags = GENHD_FL_EXT_DEVT | GENHD_FL_DRIVERFS;
 	if (sdp->removable)
 		gd->flags |= GENHD_FL_REMOVABLE;
+	if (test_bit(SDEV_EVT_MEDIA_CHANGE, sdp->supported_events))
+		gd->flags |= GENHD_FL_MEDIA_CHANGE_NOTIFY;
 
 	dev_set_drvdata(dev, sdkp);
 	add_disk(gd);
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index eb61f7a..485898e 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -642,6 +642,8 @@ static int sr_probe(struct device *dev)
 
 	dev_set_drvdata(dev, cd);
 	disk->flags |= GENHD_FL_REMOVABLE;
+	if (test_bit(SDEV_EVT_MEDIA_CHANGE, sdev->supported_events))
+		disk->flags |= GENHD_FL_MEDIA_CHANGE_NOTIFY;
 	add_disk(disk);
 
 	sdev_printk(KERN_DEBUG, sdev,
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ