]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-4.4/revert-scsi-sd-keep-disk-read-only-when-re-reading-partition.patch
a2d5a210843df5db08fdd5ccceb83fbbcaff5568
[thirdparty/kernel/stable-queue.git] / queue-4.4 / revert-scsi-sd-keep-disk-read-only-when-re-reading-partition.patch
1 From 8acf608e602f6ec38b7cc37b04c80f1ce9a1a6cc Mon Sep 17 00:00:00 2001
2 From: "Martin K. Petersen" <martin.petersen@oracle.com>
3 Date: Mon, 20 May 2019 10:57:18 -0400
4 Subject: Revert "scsi: sd: Keep disk read-only when re-reading partition"
5
6 From: Martin K. Petersen <martin.petersen@oracle.com>
7
8 commit 8acf608e602f6ec38b7cc37b04c80f1ce9a1a6cc upstream.
9
10 This reverts commit 20bd1d026aacc5399464f8328f305985c493cde3.
11
12 This patch introduced regressions for devices that come online in
13 read-only state and subsequently switch to read-write.
14
15 Given how the partition code is currently implemented it is not
16 possible to persist the read-only flag across a device revalidate
17 call. This may need to get addressed in the future since it is common
18 for user applications to proactively call BLKRRPART.
19
20 Reverting this commit will re-introduce a regression where a
21 device-initiated revalidate event will cause the admin state to be
22 forgotten. A separate patch will address this issue.
23
24 Fixes: 20bd1d026aac ("scsi: sd: Keep disk read-only when re-reading partition")
25 Cc: <stable@vger.kernel.org>
26 Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
27 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28
29 ---
30 drivers/scsi/sd.c | 3 +--
31 1 file changed, 1 insertion(+), 2 deletions(-)
32
33 --- a/drivers/scsi/sd.c
34 +++ b/drivers/scsi/sd.c
35 @@ -2396,7 +2396,6 @@ sd_read_write_protect_flag(struct scsi_d
36 int res;
37 struct scsi_device *sdp = sdkp->device;
38 struct scsi_mode_data data;
39 - int disk_ro = get_disk_ro(sdkp->disk);
40 int old_wp = sdkp->write_prot;
41
42 set_disk_ro(sdkp->disk, 0);
43 @@ -2437,7 +2436,7 @@ sd_read_write_protect_flag(struct scsi_d
44 "Test WP failed, assume Write Enabled\n");
45 } else {
46 sdkp->write_prot = ((data.device_specific & 0x80) != 0);
47 - set_disk_ro(sdkp->disk, sdkp->write_prot || disk_ro);
48 + set_disk_ro(sdkp->disk, sdkp->write_prot);
49 if (sdkp->first_scan || old_wp != sdkp->write_prot) {
50 sd_printk(KERN_NOTICE, sdkp, "Write Protect is %s\n",
51 sdkp->write_prot ? "on" : "off");