aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/sd.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index ab75ebd518a7..3b45f7fc5620 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -2624,6 +2624,7 @@ sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
2624 int res; 2624 int res;
2625 struct scsi_device *sdp = sdkp->device; 2625 struct scsi_device *sdp = sdkp->device;
2626 struct scsi_mode_data data; 2626 struct scsi_mode_data data;
2627 int disk_ro = get_disk_ro(sdkp->disk);
2627 int old_wp = sdkp->write_prot; 2628 int old_wp = sdkp->write_prot;
2628 2629
2629 set_disk_ro(sdkp->disk, 0); 2630 set_disk_ro(sdkp->disk, 0);
@@ -2664,7 +2665,7 @@ sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
2664 "Test WP failed, assume Write Enabled\n"); 2665 "Test WP failed, assume Write Enabled\n");
2665 } else { 2666 } else {
2666 sdkp->write_prot = ((data.device_specific & 0x80) != 0); 2667 sdkp->write_prot = ((data.device_specific & 0x80) != 0);
2667 set_disk_ro(sdkp->disk, sdkp->write_prot); 2668 set_disk_ro(sdkp->disk, sdkp->write_prot || disk_ro);
2668 if (sdkp->first_scan || old_wp != sdkp->write_prot) { 2669 if (sdkp->first_scan || old_wp != sdkp->write_prot) {
2669 sd_printk(KERN_NOTICE, sdkp, "Write Protect is %s\n", 2670 sd_printk(KERN_NOTICE, sdkp, "Write Protect is %s\n",
2670 sdkp->write_prot ? "on" : "off"); 2671 sdkp->write_prot ? "on" : "off");