Jeremy,
I noticed drivers/s390/block/dasd_ioctl.c calls set_disk_ro() to set the policy, where-as the policy is set with set_device_ro() in the generic ioctl.
There's a subtle distinction here:
- set_disk_ro() sets the policy for a whole disk
- set_device_ro() sets the policy for a block_device (typically partition)
It's not setting the policy to DISK_POLICY_USER_WRITE_PROTECT so I think it would only be a problem if the user set it to 2 instead of 1 assuming any truthy value is acceptable. Then the user wouldn't be able to mark the disk as writable again since this would be true. Perhaps it's a somewhat far-fetched scenario.
OK, I missed that particular entry point. Will fix.