--- /dev/null
+From: Hannes Reinecke <hare@suse.de>
+Subject: Send uevents for write_protect changes
+References: bnc#440959
+
+Whenever a block device changes it's read-only attribute
+we should notify the userspace about it.
+
+Signed-off-by: Hannes Reinecke <hare@suse.de>
+
+---
+ block/genhd.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+--- a/block/genhd.c
++++ b/block/genhd.c
+@@ -813,6 +813,16 @@ void put_disk(struct gendisk *disk)
+
+ EXPORT_SYMBOL(put_disk);
+
++static void set_disk_ro_uevent(struct gendisk *gd, int ro)
++{
++ char event[] = "DISK_RO=1";
++ char *envp[] = { event, NULL };
++
++ if (!ro)
++ event[8] = '0';
++ kobject_uevent_env(&gd->dev.kobj, KOBJ_CHANGE, envp);
++}
++
+ void set_device_ro(struct block_device *bdev, int flag)
+ {
+ if (bdev->bd_contains != bdev)
+@@ -826,6 +836,9 @@ EXPORT_SYMBOL(set_device_ro);
+ void set_disk_ro(struct gendisk *disk, int flag)
+ {
+ int i;
++ if (disk->policy != flag)
++ set_disk_ro_uevent(disk, flag);
++
+ disk->policy = flag;
+ for (i = 0; i < disk->minors - 1; i++)
+ if (disk->part[i]) disk->part[i]->policy = flag;