|
@@ -2624,6 +2624,7 @@ sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
|
|
|
int res;
|
|
|
struct scsi_device *sdp = sdkp->device;
|
|
|
struct scsi_mode_data data;
|
|
|
+ int disk_ro = get_disk_ro(sdkp->disk);
|
|
|
int old_wp = sdkp->write_prot;
|
|
|
|
|
|
set_disk_ro(sdkp->disk, 0);
|
|
@@ -2664,7 +2665,7 @@ sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
|
|
|
"Test WP failed, assume Write Enabled\n");
|
|
|
} else {
|
|
|
sdkp->write_prot = ((data.device_specific & 0x80) != 0);
|
|
|
- set_disk_ro(sdkp->disk, sdkp->write_prot);
|
|
|
+ set_disk_ro(sdkp->disk, sdkp->write_prot || disk_ro);
|
|
|
if (sdkp->first_scan || old_wp != sdkp->write_prot) {
|
|
|
sd_printk(KERN_NOTICE, sdkp, "Write Protect is %s\n",
|
|
|
sdkp->write_prot ? "on" : "off");
|